Fedora 15 Update: mksh-40b-2.fc15

updates at fedoraproject.org updates at fedoraproject.org
Wed Aug 10 03:23:35 UTC 2011

Fedora Update Notification
2011-07-31 03:00:08

Name        : mksh
Product     : Fedora 15
Version     : 40b
Release     : 2.fc15
URL         : http://www.mirbsd.de/mksh.htm
Summary     : MirBSD enhanced version of the Korn Shell
Description :
mksh is the MirBSD enhanced version of the Public Domain Korn shell (pdksh),
a bourne-compatible shell which is largely similar to the original AT&T Korn
shell. It includes bug fixes and feature improvements in order to produce a
modern, robust shell good for interactive and especially script use, being a
bourne shell replacement, pdksh successor and an alternative to the C shell.

Update Information:

mksh R40b introduces several desired fixes:

 * Don’t busy-loop on nameref ARY=ARY (LHS = RHS)
 * Tabcomplete ~foo like $FOO (LP: #710539)
 * Code cleanup, style, and minor assorted fixes
 * Tabcomplete ~foo/M↹ (with slash) economically
 * Add new experimental global builtin, doing the same as local (typeset, really – but that doesn’t deserve its name) does, except localising all parameters it touches
 * Better error messages with non-integral environment imports
 * $RANDOM environment import accepts any string now
 * Add setenv cshism to dot.mkshrc
 * Allow ^C to interrupt the built-in cat(1)
 * Fix mksh taking down the entire terminal, hard, when scripts use $COLUMNS and fork off utilities; regression introduced in mksh R37 (sorry, no regression test possible)
 * Properly mark need-ctty regression tests
 * MKSH_NO_EXTERNAL_CAT – Quell the external cat(1) calls magic
 * Yes, “echo” is not portable, document
 * Improve content and look of the manual page
 * Move /etc/{,suid_}profile to /system/etc/ on Android
 * Prevent more compiler warnings; catch build errors earlier

mksh R40 is a major everything release:

 * Correct small mistakes in manpage and build script
 * Port to Haiku (and probably, implicitly, BeOS; this is not tested though)
 * Add Haiku specific RLIMIT_NOVMON as ‘V’ to ulimit builtin
 * Let Build.sh cope with dirname(1) unavailability
 * In the Emacs editing mode, hi-bit7 octets are now considered “motion characters” for word boundaries – Esc+b, Esc+f, ^W, …
 * Make EXECSHELL default configurable at compile time (embedded)
 * If MKSH_SMALL do not compile in “set -o bgnice” by default
 * Rework how RLIMIT_{AS,RSS,VMEM} map to ‘m’ and ‘v’ ulimits
 * Add some more OS specific limits seen in zsh
 * SUSv4 ${v=a\ b} and "${v=a\ b}" and ${v-a\ b} compliance, tests
 * Make "~/.mkshrc" path configurable at compile time (embedded)
 * Fix SUNWcc 12.1 error message scan in build phase=u
 * Fix variable assignment scope during command execution (expansion vs. assignment execution environment); [Herbert Xu, Geoff Clare] Add more regression tests for this
 * Fix single quotes in "${foo#bar}" (differs from "${foo-bar}")
 * Fix mknod(8) usage message: b|c are not optional
 * Fix "${x#?}" expansion when quoted (quotes, space)
 * Make default temporary directory configurable at compile time
 * Fix performance deficiencies in the built-in realpath function
 * Deprecate Build.sh -longoptions in favour of short ones: -valgrind becomes -g (like debug), -combine and -llvm become -c {combine,llvm} and the LLVM optimiser flags are passed via -O = -o -std-compile-opts
 * New Build.sh options -c dragonegg (for using the LLVM plugin to GCC 4.5 with inter-module optimisation), -v (version)
 * Document another way to get a coloured PS1 in the manpage
 * Disallow some more kinds to trim a vector; Debian #581867
 * Simplify some code; RCSID and comment sync with OpenBSD ksh
 * Apply diff from manuel giraud to keep track of LINENO in a trap
 * Remove arc4random(3) functionality; seed an LCG depending on the OS doing Address Space Layout Randomisation; speed up (we will use either arc4random_pushb_fast(3) if it exists or arc4random_pushb(3) if forced by the user with -DMKSH_A4PB e.g. on Cygwin)
 * Fix spelling mistakes in dot.mkshrc
 * Implement “live” window resize for the Emacs editing mode
 * More fixes for bugs found by Valgrind and LLVM+Clang scan-build
 * For script compatibility support “set ±o arc4random” during a transition period until R40 is out (but issue a warning to stderr)
 * Add (, ), (( to reserved words in the manual page and fix some formatting errors with GNU groff’s mdoc
 * Make printf.c.1.15 use mksh’s shf_* routines instead of stdio
 * Fix -Wc++-compat except implicit casts from/to "void *"
 * Correct shf buffer I/O routines to avoid a memory corruption bug discovered by Waldemar Brodkorb and other bad effects
 * Fix NULL pointer dereference during iteration loop when checking for alias recursion; discovered by Michal Hlavinka
 * More int → bool conversion, whitespace and general code cleanup
 * Fix window size not being checked during runtime of external programmes by not relying on SIGWINCH so much but instead checking before every interactive editing of a command line
 * Improve mksh(1) manpage coverage, remove mentions of not-mksh
 * Use wcwidth() from system on MirBSD
 * u_int32_t is no longer needed (only for OpenBSD’s pre-ISO-C99 arc4random API, which we no longer call), so don’t provide it from Build.sh any longer
 * Scan for uint8_t and provide if not found
 * Fix realpath builtin for “/file/” arguments wrt. POSIX
 * Do not generate <stdint.h> from Build.sh as file any more if it is missing; rather let sh.h define the types appropriately and fix related compiler warnings
 * Add “cat” builtin (defers to external if options are given)
 * Reduce size by improved string pooling, improving struct packing, lowering size of some allocation chunks, and better code
 * Document 「x=$(eval $(cat)) <<'EOF'」 workaround for the $(…) parsing bug in the mksh(1) manual page and on the Red Hat Bugzilla
 * Add support for handling a “--” argument to more builtins
 * Correct some error messages and typos
 * Don’t alias stop, suspend on Android (system specific conflict for stop; suspend just joined the boat)
 * Address what few concerns Chris Palmer (Android security team) had: check all multiplications and some additions for integer overflows, mostly in allocation context, and check setres{u,g}id/setuid for EAGAIN iff the target OS is known to be returning it (Linux only, right now)
 * Some small manpage fixes
 * Clean up mirtoconf and build warnings with some compilers
 * Fix \c? vs. \c~ mis-documentation in mksh(1)
 * Remove the somewhat-portable setmode.c from the mksh source distribution and demote mknod(8) to an optional builtin, disabled by default, manually re-enabled in the installer only on MirBSD
 * Regenerate wcwidth table from Unicode 6.0.0
 * Change behaviour of argument-less exit in traps to match SUSv4, original patch from Jonathan Nieder (Debian Closes: #599484)
 * dot.mkshrc no longer exports $PS1, as recommended by Frank Terbeck, to avoid confusing other shells
 * The character width table is now in sync with Unicode 6.0.0
 * MKSH_SMALL doesn’t imply HAVE_REVOKE=0 any longer
 * Ignore a ‘$’ preceding ‘"…"’ (like bash, ksh93)
 * Make “foo=<<EOF” a direct assignment of here document (or here string) to string variable
 * Add KSHEGID, KSHGID, KSHUID variables (idea from Richard K.)
 * Option -d to read specifies a delimiter, like ksh93 (10x dgk)
 * Extension ${foo@#} expands to hash of $foo (mksh specific)
 * Emacs prev-hist-word resets the counter if other editing commands were run in between; repeat calling works, even together with arguments, now; arguments are 0-based (Debian Closes: #603801)
 * Introduce MKSH_NOPROSPECTOFWORK which implies MKSH_UNEMPLOYED and additionally disables job signals, |&, sigprocmask(2), etc.
 * POSIX: trap 'echo foo' UNKNOWN is not a syntax error
 * Do not use <sys/file.h> unless it exists
 * dot.mkshrc: When we set a UTF-8 locale (e.g. for the GNU OS), we must also set -o utf8-mode to match it
 * Don’t append a space after tab-completing a parameter substitution that doesn’t contain a glob/extglob (LP: #710539)
 * Limit history file size to 1 GiB for sanity
 * Add smores, a more(1)-like pager, as shell function to dot.mkshrc (not control character safe but tty aware)
 * Make builtins directly callable; utf8-mode is determined by LC_ALL/LC_CTYPE/LANG environment variables in that case
 * If the interactive shell uses setlocale(3)/nl_langinfo(3) to divine utf8-mode, fall back to environment variables unless success
 * From a direct builtin call, echo(1) behaves POSIXish
 * Replace some MirBSD utilities with links to mksh(1) and ensure some integration to keep compatibility
 * Add a microsecond capable sleep(1) builtin [updated 20110213]
 * If the built-in cat is invoked from a direct builtin call, it now properly handles the POSIXly demanded ‘-u’ option (as a no-op)
 * Support the PIPESTATUS array (like GNU bash)
 * Port to MiNT / FreeMiNT (Atari m68k operating system)
 * Do not close filedescriptor #3 (controlling tty) on UWIN
 * Make the tree printing code safe for re-entrancy of output
 * Implement recursive parser for $(…) to fix RedHat BZ#496791
 * Use the existing state machine, a recursive parser and retracing the input stream for correct x=(…$((…$(…)…))…) parsing
 * complain about ${x:1:2:3} instead of crashing
 * make optional printf(1) builtin __CRAZY=Yes clean and prevent it from crashing by reading past end of (invalid) format strings
 * abort(3) on rogue pointers #ifdef DEBUG
 * Correct some documentation, code commentary, etc.
 * Handle the UTF-8 Byte Order Mark in $(…) expressions
 * Speed up reading input by checking for the BOM only once
 * Fix mis-detection of gcc format attribute (false negative)
 * Include some Android specific hacks (no change on other OEs)
 * In ${foo/bar/baz} expressions, when adjourning empty patterns to avoid running into a busy-wait loop, remember to skip the anchor characters (‘#’ or ‘%’) at the beginning, yet keep the special meaning replacing a string begin or end with a string has
 * Write a pattern optimiser that is run internally before calls to the pattern matching code always (currently, replaces a@(b@(c)d)e with abcde but keeps @(a|a), then (in a second pass) collapses adjacent asterisk (‘*’) wildcards into a single one; this fixes some of the symptoms of severe performance issues our pattern matching code has to the extent that it can prevent busy-looping (found by Jb_boin)
 * Handle pathnames with exactly two leading slashes well (SUSv4 3.266)
 * Fix here documents, add testcases
 * Fix corner case ${##1}, add tests for that and ${##} and ${#?}
 * Bring back “test -H” ifdef S_ISCDF (for HP-UX) from pdksh
 * Align read-only variable behaviour with (future) POSIX
 * Permit ${foo%(*} on FSH (Debian Closes: #619947)
 * Allow skipping testcases that need a controlling tty
 * Correct skipping the UTF-8 BOM when identifying a file
 * Do not use <stdbool.h> any longer
 * Use double-underscore-framed __attribute__s
 * Always catch SIGALRM (for the sleep builtin)
 * Functions now inherit a global set -x
 * Do not explicitly initialise static globals to 0/NULL
 * Eliminate some dead code (functions, globals)
 * Correct more tree handling bugs and merge similar code
 * Add “+=” to concatenate scalars and append to arrays
 * Support empty here document delimiters
 * Fix the four-argument form of test(1)
 * Drop the pre-POSIX ability to “test -t” without specifying “fd”
 * Defer dropping an alias in favour of a POSIX function to when the function is actually defined and check for the closing parenthesis too
 * Implement a new regression test attribute need-pass: {yes|no} and exit 1 if unexpected fails occur
 * Add ;& and ;| for case
 * Rewrite the read builtin and its documentation; adding -A (read IFS words into array), -a (read octets/wide characters into array), -N/-n (read only / up to z bytes), -t (read with timeout)
 * Add -e option to cd -P (POSIX 2011)
 * Update dot.mkshrc to use the new features
 * Fix gsf’s ifs.sh tests of the read builtin
 * Improve support for AIX, Cygwin, IBM XL C
 * Add tests for x+=(y z) and ;;& extensions
 * Fix regression in tab completion result display
 * Fix parsing x=(…) expressions
 * Increase hash table limit; don’t crash when reaching the limit; work around bug in GCC 4.1 on Debian Etch
 * New -c lto option to use Link Time Optimisation (GCC) with automatic fallback to -c combine if unavailable
 * Improvements for -c dragonegg, -c llvm (with gcc+dragonegg, or llvm-gcc and clang, respectively), and TenDRA
 * Let code samples in check.t and dot.mkshrc take care of the new features; fix some longstanding bugs in them
 * Add missing flush in rewritten read builtin for prompting
 * Minix builds now automatically disable the ulimit builtin

* Thu Jul 28 2011 Robert Scheck <robert at fedoraproject.org> 40b-2
- Use new "Build.sh -r -c lto" rather "Build.sh -r -combine"
* Thu Jul 28 2011 Robert Scheck <robert at fedoraproject.org> 40b-1
- Upgrade to 40b
* Tue Feb  8 2011 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 39c-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild

This update can be installed with the "yum" update program.  Use 
su -c 'yum update mksh' at the command line.
For more information, refer to "Managing Software with yum",
available at http://docs.fedoraproject.org/yum/.

All packages are signed with the Fedora Project GPG key.  More details on the
GPG keys used by the Fedora Project can be found at

More information about the package-announce mailing list