ANNOUNCE 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. Announcing: KornShell 93u+m/1.0.0
  2. https://github.com/ksh93/ksh
  3. _ _ ___ _____ ___ ___ ___
  4. | | _____| |__ / _ \___ / _ _ _ _ __ ___ / / | / _ \ / _ \
  5. | |/ / __| '_ \ | (_) ||_ \| | | |_| |_| '_ ` _ \ / /| || | | | | | |
  6. | <\__ \ | | | \__, |__) | |_| |_ _| | | | | |/ / | || |_| | |_| |
  7. |_|\_\___/_| |_| /_/____/ \__,_| |_| |_| |_| |_/_/ |_(_)___(_)___/
  8. It may have been exactly a decade since the last one, but here it is at last:
  9. a proper new ksh release. :) Many thanks to all contributors for their hard
  10. work! Compared to an unpatched ksh 93u+ 2012-08-01, this release has roughly
  11. a thousand bugs fixed. It incorporates a fair number of enhancements as well.
  12. This being an initial release, not all known bugs have been worked out yet.
  13. Let's hope this release will rekindle interest and attract more bug hunters.
  14. ### CONTRIBUTORS ###
  15. Work on ksh 93u+m started in May 2020.
  16. Main developers: Martijn Dekker, Johnothan King, hyenias
  17. Direct contributors: Andy Fiddaman, Anuradha Weeraman, atheik, Chase,
  18. Govind Kamat, Harald van Dijk, K. Eugene Carlson, Lev Kujawski, Marc
  19. Wilson, Ryan Schmidt, Sterling Jensen, Trey Valenta, Vincent Mihalkovic
  20. Also includes backported contributions by: David Korn, Glenn Fowler,
  21. Lefteris Koutsofios, Siteshwar Vashisht, Kurtis Rader, Roland Mainz,
  22. Finnbarr P. Murphy, Lijo George, OpenSUSE ksh 93u+ patch authors, Red Hat
  23. ksh 93u+ path authors, Solaris ksh 93u+ patch authors, Debian ksh 93u+
  24. patch authors, Apple ksh 93u+ patch authors
  25. Many fixes have also been backported from the AT&T 93v- beta as well as
  26. the former ksh2020 project lead by Kurtis Rader and Siteshwar Vashisht;
  27. we appreciate and benefit from their work. Many thanks also to Siteshwar
  28. for graciously donating his 'ksh93' GitHub organisation account!
  29. ### HOW TO GET IT ###
  30. Please download the source code tarball from our GitHub releases page:
  31. https://github.com/ksh93/ksh/releases
  32. To build, follow the instructions in README.md or src/cmd/ksh93/README.
  33. Or ask your distribution package manager to upgrade ksh93 to this version.
  34. ### HOW TO GET INVOLVED ###
  35. To report a bug, please open an issue at our GitHub page (see above).
  36. Alternatively, email me at martijn@inlv.org with your report.
  37. To get involved in development, read the brief policy information in
  38. README.md and then jump right in with a pull request or email a patch.
  39. See the TODO file in the top-level directory for a to-do list.
  40. ### MAIN CHANGES between ksh 93u+ 2012-08-01 and 93u+m/1.0.0 ###
  41. Roughly a thousand bugs have been fixed, including many serious/critical
  42. bugs. See the NEWS file for more information, and the git commit log for
  43. complete documentation of every fix. Incompatible changes have been
  44. minimised, but not at the expense of fixing bugs. For a list of
  45. potentially incompatible changes, see src/cmd/ksh93/COMPATIBILITY.
  46. Though there was a "no new features, bugfixes only" policy, some new
  47. features were found necessary, either to fix serious design flaws or to
  48. complete functionality that was evidently intended, but not finished.
  49. Below is a summary of these new features.
  50. New command line editor features:
  51. - The forward-delete and End keys are now handled as expected in the
  52. emacs and vi built-in line editors.
  53. - In the vi and emacs line editors, repeat counts can now also be used for
  54. arrow keys and the forward-delete key, e.g., <ESC> 7 <left-arrow> works.
  55. - Various keys on extended PC keyboards are now handled as expected in the
  56. emacs and vi built-in line editors.
  57. New shell language features:
  58. - Pathname expansion (a.k.a. globbing) now never matches the special names
  59. '.' (current directory) and '..' (parent directory). This change makes a
  60. pattern like .* useful; it now matches all hidden files (dotfiles) in the
  61. current directory, without the harmful inclusion of '.' and '..'.
  62. - Tilde expansion can now be extended or modified by defining a .sh.tilde.get
  63. or .sh.tilde.set discipline function. See the manual for details.
  64. - The &>file redirection shorthand (for >file 2>&1) is now available for all
  65. scripts and interactive sessions and not only for profile/login scripts.
  66. - Arithmetic expressions in native ksh mode no longer interpret a number
  67. with a leading zero as octal in any context. Use 8#octalnumber instead
  68. (e.g. 8#400 == 256). Arithmetic expressions now also behave identically
  69. within and outside ((...)) and $((...)). If the POSIX mode is turned on,
  70. a leading zero now denotes an octal number in all arithmetic contexts.
  71. New features in built-in commands:
  72. - Usage error messages now show the --help/--man self-documentation options.
  73. - Path-bound built-ins (such as /opt/ast/bin/cat) can now be executed by
  74. invoking the canonical path, so the following will now work as expected:
  75. $ /opt/ast/bin/cat --version
  76. version cat (AT&T Research) 2012-05-31
  77. - 'cd' now supports an -e option that, when combined with -P, verifies
  78. that $PWD is correct after changing directories; this helps detect
  79. access permission problems. See:
  80. https://www.austingroupbugs.net/view.php?id=253
  81. - 'command -x' now looks for external commands only, skipping built-ins.
  82. In addition, its xargs-like functionality no longer freezes the shell on
  83. Linux and macOS, making it effectively a new feature on these systems.
  84. - 'printf' now supports a -v option as in bash. This assigns formatted
  85. output directly to variables, which is very fast and will not strip
  86. final newline (\n) characters.
  87. - 'redirect' now checks if all arguments are valid redirections before
  88. performing them. If an error occurs, it issues an error message instead
  89. of terminating the shell.
  90. - 'return', when used to return from a function, can now return any
  91. status value in the 32-bit signed integer range, like on zsh. However,
  92. due to a traditional Unix kernel limitation, $? is still trimmed to its
  93. least significant 8 bits whenever a shell or subshell exits.
  94. - 'suspend' now refuses to suspend a login shell, as there is probably no
  95. parent shell to return to and the login session would freeze.
  96. - 'test'/'[' now supports all the same operators as [[ (including =~,
  97. \<, \>) except for the different 'and'/'or' operators. Note that
  98. 'test'/'[' remains deprecated due to its unfixable pitfalls;
  99. [[ ... ]] is recommended instead.
  100. - 'times' now gives high precision output in a POSIX compliant format.
  101. - 'type'/'whence': Two bash-like flags were backported from ksh 93v-:
  102. - 'whence -P/type -P' is an alias to the existing -p flag.
  103. - 'whence -t/type -t' will print only the type of a command in a
  104. simple format that is designed to be easy to use for scripts.
  105. - 'typeset' has a new '-g' flag that forces variables to be created or
  106. modified at the global scope regardless of context, as on bash 4.2+.
  107. - 'typeset' now gives an informative error message if an incompatible
  108. combination of options is given.
  109. - 'ulimit': Added three options inspired by bash:
  110. - 'ulimit -k' sets the maximum number of kqueues.
  111. - 'ulimit -P' sets the maximum number of pseudo-terminals.
  112. - 'ulimit -R' sets the maximum time in microseconds a real-time process
  113. can run before blocking.
  114. Note that not all operating systems support the limits set by these options.
  115. - 'whence -v/-a' now reports the location of autoloadable functions.
  116. New features in shell options:
  117. - When the -b/--notify shell option is on and the vi or emacs/gmacs shell
  118. line editor is in use, 'Done' and similar notifications from completed
  119. background jobs are now inserted directly above the line you're typing,
  120. without affecting your command line display.
  121. - A new --functrace long-form shell option causes the -x/--xtrace option's
  122. state and the DEBUG trap action to be inherited by function scopes instead
  123. of being reset to default. Changes made to them within a function scope
  124. still do not propagate back to the parent scope. Similarly, this option
  125. also causes the DEBUG trap action to be inherited by subshells.
  126. - A new --globcasedetect shell option is added on operating systems where
  127. we can check for a case-insensitive file system (currently Linux, macOS,
  128. QNX 7.0+, and Windows/Cygwin). When this option is turned on, pathname
  129. expansion (globbing), as well as tab completion on interactive shells,
  130. automatically become case-insensitive depending on the file system.
  131. This is separately determined for each pathname component.
  132. - Enhancement to -G/--globstar: symbolic links to directories are now
  133. followed if they match a normal (non-**) glob pattern. For example, if
  134. '/lnk' is a symlink to a directory, '/lnk/**' and '/l?k/**' now work as
  135. you would expect.
  136. - The new --histreedit and --histverify options modify history expansion
  137. (--histexpand). If --histreedit is on and a history expansion fails, the
  138. command line is reloaded into the next prompt's edit buffer, allowing
  139. corrections. If --histverify is on, the results of a history expansion are
  140. not immediately executed but instead loaded into the next prompt's edit
  141. buffer, allowing further changes.
  142. - A new --nobackslashctrl shell option disables the special escaping
  143. behaviour of the backslash character in the emacs and vi built-in editors.
  144. Particularly in the emacs editor, this makes it much easier to go back,
  145. insert a forgotten backslash into a command, and then continue editing
  146. without having your next arrow key replace your backslash with garbage.
  147. - A new --posix shell option has been added to ksh 93u+m that makes the
  148. ksh language more compatible with other shells by following the POSIX
  149. standard more closely. See the manual page for details. It is enabled by
  150. default if ksh is invoked as sh, otherwise it is disabled by default.