- Originally, ksh buffered output of a subshell, flushing it when the subshell completed. This slowed certain processes that waited for a particular output, because they had to wait for the subshell to complete. Moreover, it made it difficult to determine the order of events. The new version of ksh flushes output of the subshell every time the subshell executes a new command. Thanks to this change, processes waiting for the subshell output receive their data after every subshell command and the order of events is preserved.
- Previously, the sfprints() function was unsafe to be called during the shell initialization, which could corrupt the memory. Consequently, assigning a right-aligned variable to a smaller size could result in inappropriate output format. With this update, the sfprints() call is no longer used in the described scenario, which fixes the format of the output.
- Due to a bug in the typeset command, when executed with the -Z option, output was being formatted to an incorrect width. As a result, exporting a right-aligned variable of a smaller size than the predefined field size caused it to not be prepended with the "0" character. A patch has been provided and the typeset command now works as expected in the aforementioned scenario.
- With this update, ksh has been enhanced to support logging of the shell output.