MirBSD Korn Shell Changelog

New in version R49

January 14th, 2014
  • [tg] dot.mkshrc: fix two issues with the cd wrapper
  • [tg] Unbreak set +p (wider issue still to be addressed)
  • [Steffen Daode Nurpmeso] Use WCONTINUED with waitpid(2)
  • [millert] Add proper suspend builtin handling tty(4) and setpgrp(2)
  • [tg] Sanitise and slightly optimise control character handling
  • [tg] Add O_BINARY to all open(2) calls for OS/2 kLIBC support
  • [tg] Generate option strings for shell, set, ulimit at compile time
  • [Steffen Daode Nurpmeso] Drop ISTRIP termios(4) mode
  • [tg] Mention negative history numbers, octals in the manpage
  • [tg] Make check.pl work with Perl < 5.6.1 again
  • [tg] Detect getsid(2) and skip the oksh suspend builtin otherwise
  • [tg] Document that set -o noclobber is unsafe for tempfiles
  • [tg] Update to Unicode 6.3.0
  • [RT] Restore some portability
  • [tg] Fix parsing positional argument variable names
  • [tg] Sprinkle a few __attribute__((__pure__)); fix warnings
  • [tg] Fix build on OSX: always use our wcwidth code; only use our strlcpy(3) code if the OE doesn’t provide one (prompted by jonthn on IRC)
  • [tg] Optimise sh -c to exec even in MKSH_SMALL
  • [tg] Use new BAFH for hashing

New in version R47 (July 25th, 2013)

  • R47 is a must-have bugfix update which corrects most issues popping up with R45/R46 as well as some much older bugs.
  • It is now even more aligned with POSIX behavior, removes the need for cttyhack on Linux, and introduces the new “set ±o inherit-xtrace”, with which the behaviour of “set -x” upon entering a function can be controlled.
  • Character widths are now calculated per the Unicode 6.2.0 standard.

New in version R44 (March 8th, 2013)

  • [tg] "$@" always generates words; bug spotted by engla in IRC
  • [tg] Optimise print_columns display to use the screen space better

New in version R40d (December 13th, 2011)

  • [tg] New test.sh ‘-f’ option (same as ‘-C fastbox’)
  • [tg] Drop using set -o noglob inside pushd/popd/dirs
  • [tg] Use += more in dot.mkshrc and keep strings shorter
  • [tg] Correct interworking between local and set -A
  • [tg] Fix out-of-bounds memory access on strings of 32 KiB length
  • [tg] MKSH_DISABLE_DEPRECATED (for integrators)
  • [tg, Jilles Tjoelker] test(1) built-in behaves exactly as POSIX says
  • [tg] Move compile-time assertions to Build.sh from misc.c#ifdef DEBUG
  • [tg] Invocation documentation is at the bottom of Build.sh
  • [tg] test.sh: verbosely look for perl(1) interpreter to use
  • [tg] New tests for integers (base 1‥36, base unspecified, base OOB)
  • [tg] Correct error paths for typeset -n global state
  • [tg] Deprecate interpreting "010" as octal number, will go
  • [tg] Improvements re. integer handling; more explicit manpage text
  • [tg] Do not use caddr_t on Linux, so dietlibc stops bitching
  • [tg, Jilles Tjoelker] Catch division/modulo overflow 0x80000000/-1
  • [tg] Emacs mode ^O regression fix when the fetched lines are edited

New in version R40c (November 23rd, 2011)

  • This version fixes several small bugs in sh compatibility, UTF-8 handling, Emacs mode, and the build system.
  • It includes some additions to the man page as well as portability fixes for Openstep, Interix, and Hurd and a new port to MSYS.

New in version R40b (July 19th, 2011)

  • This version fixes several obscure ways the shell could crash the tty, freeze, or refuse to start.
  • The tab completion user experience was improved to allow ^Cing out of cat.
  • The setenv function was added to the default ~/.mkshrc file.
  • The documentation better explains that echo is not portable and which startup files are read.
  • Manpage legibility was improved.
  • The new “global” special built-in command was added, doing the same as “typeset” (“local”) except making every touched parameter local to the function even if it existed before.
  • Compiler/linker errors are caught earlier.
  • Some compiler warnings were fixed.

New in version R40 (June 13th, 2011)

  • cat and sleep were added as builtins.
  • The Android, FreeMiNT, and Haiku platforms are now supported.
  • Many interactive improvements were made.
  • The behavior was aligned with POSIX/SUSv4 (parameter expansions, etc).
  • Link time optimization and LLVM Dragonegg are supported.
  • Overly complicated code was replaced with simpler, smaller, faster, and more correct code.
  • Unicode support was synchronized with version 6.0.0 of the standard.
  • A lot of bash/ksh93/zsh extensions are supported: %CONTENT%amp;quot;…", ${PIPESTATUS[*]}, case ;& and ;|, x+=y, x+=(y z), etc.
  • A new recursive parser fixes command substitution.
  • Functions inherit “set -x”.
  • The "read" builtin can read (up to) n bytes into an array of words or char, with a timeout.
  • "Here document" handling was improved.

New in version R39 (October 10th, 2009)

  • Stable update; R40 will become a major update with new features and syntax changes.

New in version R38c (June 11th, 2009)

  • [tg] Fix regression tests on OSes insisting on a shebang (Cygwin)
  • [Sean Boudreau] QNX 6.4.2 ed(1) is said to have the bugs fixed
  • [tg] Build.sh bugfixes: -DMKSH_BINSHREDUCED can also be given without -DMKSH_SMALL; allow HAVE_REALPATH=x and HAVE_REVOKE=x in the environment to re-enable these even if -DMKSH_SMALL disables them by default, like mknod already did
  • [tg] -DMKSH_ASSUME_UTF8=0 skips the environment checks, like -DMKSH_ASSUME_UTF8=1, but disables the utf8-mode
  • [tg] Apply some more KNF – style(9) – to the source; clean it up and further optimise for small size
  • [OpenBSD] Fix segfaults caused by missing check for end of input in the tokeniser on “let --” and other input
  • [OpenBSD] Make Vi editing mode ^W behave like Emacs mode’s
  • [tg] If no killpg(3) is avaiable, use kill(2) and hope it works
  • [tg] -DMKSH_NO_LIMITS skips trying to build the ulimit code