POSIX further requires that 'set' used without parameters shall have the following property:
"The output shall be suitable for reinput to the shell, setting or resetting, as far as possible, the variables that are currently set;"
which means 'eval $(set)' should be safe; but trying to eval "a|b=''" tries to invoke the command named 'a', which is NOT safe.
Upstream dash.git has this commit which fixes things:
46d3c1a614f11f0d40a7e73376359618ff07abcd
(not in 0.5.7, and there hasn't been another upstream release since then).
(In reply to Eric Blake from comment #3)
> Upstream dash.git has this commit which fixes things:
> 46d3c1a614f11f0d40a7e73376359618ff07abcd
>
> (not in 0.5.7, and there hasn't been another upstream release since then).
Actually 0.5.8 was released four days ago :)