FEDORA-EPEL-2011-3949 created by robert 12 years ago for Fedora EPEL 5

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 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 -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 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 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 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 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

This update has been submitted for testing by robert.

12 years ago

This update has been pushed to testing

12 years ago

This update has been submitted for stable by robert.

12 years ago

This update has been pushed to stable

12 years ago

Please login to add feedback.

Content Type
Test Gating
Unstable by Karma
Stable by Karma
Stable by Time
12 years ago
in testing
12 years ago
in stable
12 years ago

Automated Test Results