ksh 93u+m/1.0.9
Here is the ninth ksh 93u+m/1.0 bugfix release. This release contains many fixes of old and not-so-old bugs (including a couple of regressions in the printf built-in introduced in 93u+m/1.0.5), adds Android/Termux as a supported platform, and reintroduces the ability to build a dynamically linked ksh (with libast, libdll, libcmd, and libshell available for other applications to use) on most supported platforms.
Main changes between ksh 93u+m/1.0.8 and 93u+m/1.0.9:
- Android/Termux is now a supported platform. Build dependencies: binutils, clang, getconf. Runtime dependencies (optional): ncurses-utils, getconf.
- Reintroduced support for building a dynamically linked
ksh
(1)/shcomp
(1), with libast, libdll, libcmd, and libshell available to other programs as dynamic libraries.bin/package install /your/basepath
will install development headers. The dynamically linked version is built in adyn
subdirectory; there are no changes to the statically linked version. Dynamic linking is currently tested and supported on Linux, Android, macOS, all the BSDs, illumos, Solaris, QNX, and Haiku. - On systems where the external
printf
(1) utility supports deprecated pre-POSIX syntax for formatters starting with-
, ksh now adapts its built-inprintf
to match, for compatibility with system scripts. However, ksh's built-in printf options such as-v
or--man
are not affected. - Fixed a regression in the
printf
built-in, introduced in 93u+m/1.0.5, where each instance of\0
or%Z
in the format operand caused a string argument to be incorrectly skipped. - Fixed a regression, introduced in 93u+m/1.0.5, in ordinal specifiers in
printf %T
date specifications. For example,printf '%(%F)T\n' '4th tuesday in march 2016'
wrongly printed '2016-04-09' and now again correctly prints '2016-03-22'. - Fixed a regression of
return
within traps, reintroduced in 93u+m/1.0.8 after being fixed in 93u+m/1.0.0. The regression caused areturn
orexit
with no arguments to assume the before-trap exit status instead of that of the last-run command. This broke the shippedautocd
function. - Fixed a longstanding bug in shell arithmetic: the representation of negative integers with a base other than 10 was incorrectly treated as unsigned long. For example,
typeset -i16 n=-12; echo $n
now correctly outputs-16#c
and no longer ouputs16#fffffffffffffff4
. - Fixed a bug, introduced in ksh93q+ 2005-05-22, that stopped an append assignment from working together with a declaration command. For example,
typeset var+=value
orexport var+=value
now again work as expected. - Fixed a longstanding bug where the default terminal width for
typeset -L
,-R
, or-Z
, if not given, was miscalculated for multibyte or control characters. - Fixed: expansions of name references in loops were incorrectly treated as invariant so they yielded the wrong values.
- If a
.get
or.getn
discipline function is set for a variable, it is no longer incorrectly triggered when performing an arithmetic assignment on that variable; only the.set
discipline is now triggered (as documented). - Many other bug fixes (see the
NEWS
file).
Full Changelog: v1.0.8...v1.0.9