MirBSD Korn Shell Changelog

What's new in MirBSD Korn Shell R49

Jan 14, 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 MirBSD Korn Shell R47 (Jul 25, 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 MirBSD Korn Shell R44 (Mar 8, 2013)

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

New in MirBSD Korn Shell R40d (Dec 13, 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 MirBSD Korn Shell R40c (Nov 23, 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 MirBSD Korn Shell R40b (Jul 19, 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 MirBSD Korn Shell R40 (Jun 13, 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 MirBSD Korn Shell R39 (Oct 10, 2009)

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

New in MirBSD Korn Shell R38c (Jun 11, 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

New in MirBSD Korn Shell R38 (May 28, 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

New in MirBSD Korn Shell R36b (Dec 14, 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.

New in MirBSD Korn Shell R36 (Oct 25, 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.