Because I've fixed some additional bugs and added new tests and rebased on recent master branch, I'm reposting the entire nofork (mksh ${|...} and ksh ${ ... }) substitution diffs rather than do another incremental patch. To make the individual patches a more reasonable size, I've split the C code and doc from the tests. These diffs now rely on the change to input.c posted in workers/52153 to properly handle trailing newlines in the output captured by ${ ... }.