March 8th, 2013· [tg] "$@" always generates words; bug spotted by engla in IRC
· [tg] Optimise print_columns display to use the screen space better
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
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.
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.
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.
October 10th, 2009· Stable update; R40 will become a major update with new features and syntax changes.
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
May 28th, 2009· Improve regression test output debugging
· Fix < libutil.h > prerequisites on MidnightBSD in mirtoconf
· Mention that RedHat BZ#496791 cannot currently be fixed in the manpage by discouraging use of apostrophes in comments in comsubs; add appropriate (expected-fail) regression tests
· Sync with OpenBSD ksh (mostly a no-op)
· [James Butler] Add search-history-up and search-history-down keybindings (tcsh-like) to the Emacs command line editing mode
· Bind new search-history-{up,down} to ANSI PgUp and PgDn keys
· Document ANSI default keybindings (↑↓←→ Home End Del PgUp PgDn) in the mksh(1) manual page as well
· Optimise internal UTF-8 handling code for size and reusability
· Incompatible change: ${foo:1:2} and ${#foo} now operate on characters, not on bytes. Characters are octets (set +U) or (utf8-mode) MirOS OPTU-8 multibyte characters (set -U)
· Improve regression tests relating to ${foo:1:2} and $foo} and let wc=1#x and utf8-mode
· Use per-file copyright notices, move global text to manpage
· Expose new MKSH_MIDNIGHTBSD01ASH_COMPAT ifdef; change it to only trigger if FPOSIX (or MKSH_BINSHREDUCED and /bin/sh)
· Remove already-dead “#if 0” style debugging code
· Change some code into a more portable fashion, optimise
· Allow [[ $foo ]] (ksh93 extension) mentioned by pgas
· Clean up mksh and the contributed arc4random.c for some conversion, enum and other warnings for gcc-snapshot trunk r147610
· Ensure no function uses more than 768 bytes of stack either
· [tg, wbx] Add extension to make “!string” lines work like in GNU bash
December 14th, 2008· New ports were made for QNX, nwcc, and (an incomplete one) for Haiku.
· A native LLVM build was added (with either llvm-gcc or clang).
· autoconf-time compiler errors are hidden from build scanners.
· MKSH_SMALL builds were shrunk even more. __typeof__ is not used.
· Statements can be used as expressions.
· An alias expansion bug was fixed.
· bashiop use inside a function was fixed.
· strings.h is pulled if it exists.
· Some format string warnings, dead code, and casts were cleaned up.
· Lint hints were added.
· The dot.mkshrc and regression test suite were optimized.
October 25th, 2008· OSF/1 V2.0 and AIX 5.2 are supported.
· Portability fixes were made.
· Work was done on both Emacs and Vi input line editing modes and on improving command line history.
· A compile-time option was added to have the shell check itself if called as "sh" and reduce functionality in that case (mostly for broken scripts such as debconf).
· Stack space usage was reduced and dead code was removed.
· A bugfix sync was done with OpenBSD 4.4-current ksh.
· The OpenSuSE Build Service RPM, Debian, and pkgsrc packages supersede the inofficial ones due to being maintained actively enough.