I know bash tries very hard to keep new versions compatible with previous ones.
However they sometime introduced (minor, but still) breaking changes:
for exemple when we could no longer have : { foo } # which now hangs
but instead had to have : { foo ;} # ie have a ; or a newline before the closing }
(not sure which version introduced that, it was more than 20 years ago ^^)
My question is : how to find out which other "breaking" changes occured along the whole history of bash updates?
{ foo }is (and AFAIK always has been in bash) the{keyword (which introduces a command group) followed by thefoocommand with}as argument (and you'll need a}closing keyword (in command position, so for instance following a;or&or newline) later to close the command group). Can you clarify what you mean by it hangs?}in{ foo }as an argument tofooas the Bourne or Korn shell did and as POSIX requires. That's mentioned in theCOMPATfile from 2.0.