In my understanding, Ada allows you to return unsized values, but it's generally implemented via a secondary stack.
You also might be interested in this old RFC for Rust, which described something similar https://github.com/PoignardAzur/placement-by-return/blob/pla...