I think these features are worth adding:
{{ }} - Similar to { }, but runs like a function so variables can be
declared local
return n [x] - Assigns n to $? and x to $: if specified
${{ }} - Executes like {{ }} but also expands to the value of $:
$: will be reset to an empty string at the beginning of any
non-assignment execution context. The string can be a constant static
for the sake of efficiency.
Alternatively, $. can be used instead of $:.
I discarded the idea of returning arrays since it would be inefficient
to reassign and confusing to expand. People should just use named
references or a temporary global for that. Return by string is ok
since it makes ${{ }} a bit similar to $( ).
The greatest goal of these features is to help eradicate the
inefficient var=$(echo "returned value") practice people do. Second
would be so I'm sure I don't unset a global variable when unsetting an
iterator in an initialization script to keep the variables clean, even
just by theory.
--
konsolebox