Remove ksh 1.0.0beta
This commit is contained in:
@@ -1,249 +0,0 @@
|
||||
Announcing: KornShell 93u+m 1.0.0-beta.2
|
||||
https://github.com/ksh93/ksh
|
||||
|
||||
In May 2020, when every KornShell (ksh93) development project was
|
||||
abandoned, development was rebooted in a new fork based on the last
|
||||
stable AT&T version: ksh 93u+. This new fork is called ksh 93u+m as a
|
||||
permanent nod to its origin. We're restarting it at version 1.0. Seven
|
||||
months after the first beta, the second one is ready. Please test this
|
||||
second beta and report any bugs you find, or help us fix known bugs.
|
||||
|
||||
We're now the default ksh93 in some OS distributions, at least Debian
|
||||
and Slackware! Even though we don't think it's stable release quality
|
||||
yet, the consensus seems to be that 93u+m is already much better than
|
||||
the last AT&T release.
|
||||
|
||||
Main developers: Martijn Dekker, Johnothan King, hyenias
|
||||
|
||||
Contributors: Andy Fiddaman, Anuradha Weeraman, Chase, Gordon Woodhull,
|
||||
Govind Kamat, Harald van Dijk, Lev Kujawski, Marc Wilson, Ryan Schmidt,
|
||||
Sterling Jensen
|
||||
|
||||
HOW TO GET IT
|
||||
|
||||
Please download the source code tarball from our GitHub releases page:
|
||||
|
||||
https://github.com/ksh93/ksh/releases
|
||||
|
||||
To build, follow the instructions in README.md or src/cmd/ksh93/README.
|
||||
|
||||
HOW TO GET INVOLVED
|
||||
|
||||
To report a bug, please open an issue at our GitHub page (see above).
|
||||
Alternatively, email me at martijn@inlv.org with your report.
|
||||
To get involved in development, read the brief policy information in
|
||||
README.md and then jump right in with a pull request or email a patch.
|
||||
See the TODO file in the top-level directory for a to-do list.
|
||||
|
||||
### MAIN CHANGES between 1.0.0-beta.2 and 1.0.0-(unreleased) ###
|
||||
|
||||
New features in built-in commands:
|
||||
|
||||
- Two bash-like flags for 'whence' were backported from ksh 93v-:
|
||||
- 'whence -P/type -P' is an alias to the existing -p flag.
|
||||
- 'whence -t/type -t' will print only the type of a command in a simple
|
||||
format that is designed to be easy to use for scripts. Example:
|
||||
$ type -t typeset; whence -t sh
|
||||
builtin
|
||||
file
|
||||
|
||||
- Added three options to the ulimit builtin with the same names and
|
||||
functionality as in Bash:
|
||||
- 'ulimit -k' sets the maximum number of kqueues.
|
||||
- 'ulimit -P' sets the maximum number of pseudo-terminals.
|
||||
- 'ulimit -R' sets the maximum time in microseconds a real-time process
|
||||
can run before blocking.
|
||||
Note that to use these options the operating system must support the
|
||||
corresponding resource limit.
|
||||
|
||||
### MAIN CHANGES between 1.0.0-beta.1 and 1.0.0-beta.2 ###
|
||||
|
||||
New features in built-in commands:
|
||||
|
||||
- 'cd' now supports an -e option that, when combined with -P, verifies
|
||||
that $PWD is correct after changing directories; this helps detect
|
||||
access permission problems. See:
|
||||
https://www.austingroupbugs.net/view.php?id=253
|
||||
|
||||
- 'printf' now supports a -v option as in bash. This assigns formatted
|
||||
output directly to variables, which is very fast and will not strip
|
||||
final newline (\n) characters.
|
||||
|
||||
- The 'return' command, when used to return from a function, can now
|
||||
return any status value in the 32-bit signed integer range, like on
|
||||
zsh. However, due to a traditional Unix kernel limitation, $? is
|
||||
still trimmed to its least significant 8 bits whenever leaving a
|
||||
(sub)shell environment.
|
||||
|
||||
- 'test'/'[' now supports all the same operators as [[ (including =~,
|
||||
\<, \>) except for the different 'and'/'or' operators. Note that
|
||||
'test'/'[' remains deprecated due to its unfixable pitfalls;
|
||||
[[ ... ]] is recommended instead.
|
||||
|
||||
Shell language changes:
|
||||
|
||||
- Several improvements were made to the --noexec shell code linter.
|
||||
|
||||
- Arithmetic expressions in native ksh mode no longer interpret a
|
||||
number with a leading zero as octal in any context. Use 8#octalnumber
|
||||
instead (e.g. 8#400 == 256). Arithmetic expressions now also behave
|
||||
identically within and outside ((...)) and $((...)).
|
||||
|
||||
- POSIX compatibility mode fixes (only applicable with the --posix shell
|
||||
option on):
|
||||
- A leading zero is now consistently recognised as introducing an octal
|
||||
number in all arithmetic contexts.
|
||||
- $((inf)) and $((nan)) are now interpreted as regular variables.
|
||||
- The '.' built-in no longer runs ksh functions and now only runs
|
||||
files.
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- '.' and '..' are now once again completed by tab completion.
|
||||
|
||||
- If SIGINT is set to ignore, the interactive shell no longer exits on
|
||||
Ctrl+C.
|
||||
|
||||
- ksh now builds and runs on Apple's new M1 hardware.
|
||||
|
||||
- The 'return' and 'exit' commands no longer risk triggering actual
|
||||
signals by returning or exiting with a status > 256.
|
||||
|
||||
- Ksh no longer behaves badly when parsing a type definition command
|
||||
('typeset -T' or 'enum') without executing it or when executing it in
|
||||
a subshell. Types can now safely be defined in subshells and defined
|
||||
conditionally as in 'if condition; then enum ...; fi'.
|
||||
|
||||
- Discipline functions, especially those applied to PS2 or .sh.tilde,
|
||||
will no longer crash your shell upon being interrupted or throwing an
|
||||
error.
|
||||
|
||||
- Fixed a bug that could corrupt output if standard output is closed
|
||||
upon initialising the shell.
|
||||
|
||||
- Fixed a bug in the [[ ... ]] compound command: the '!' logical
|
||||
negation operator now correctly negates another '!', e.g.,
|
||||
[[ ! ! 1 -eq 1 ]] now returns 0/true. Note that this has always been
|
||||
the case for 'test'/'['.
|
||||
|
||||
- Fixed SHLVL so that replacing ksh by itself (exec ksh) will not
|
||||
increase it.
|
||||
|
||||
- Arithmetic expressions are no longer allowed to assign out-of-range
|
||||
values to variables of types declared with enum.
|
||||
|
||||
- The 'time' keyword no longer makes the --errexit shell option
|
||||
ineffective.
|
||||
|
||||
- Various bugs in libcmd built-in commands (those bound to the
|
||||
/opt/ast/bin path by default) have been fixed.
|
||||
|
||||
- Various other crashing bugs have been fixed.
|
||||
|
||||
Fixes for the shcomp byte code compiler:
|
||||
|
||||
- shcomp is now able to compile scripts that define types using enum.
|
||||
|
||||
- shcomp now refuses to mess up your terminal by writing bytecode
|
||||
to it.
|
||||
|
||||
### MAIN CHANGES between ksh 93u+ 2012-08-01 and 93u+m 1.0.0-beta.1 ###
|
||||
|
||||
Hundreds of bugs have been fixed, including many serious/critical bugs.
|
||||
This includes upstreamed patches from OpenSUSE, Red Hat, and Solaris, fixes
|
||||
backported from the abandoned 93v- beta and ksh2020 fork, as well as many
|
||||
new fixes from the community. See the NEWS file for more information, and
|
||||
the git commit log for complete documentation of every fix. Incompatible
|
||||
changes have been minimised, but not at the expense of fixing bugs. For a
|
||||
list of potentially incompatible changes, see src/cmd/ksh93/COMPATIBILITY.
|
||||
|
||||
Though there was a "no new features, bugfixes only" policy, some new
|
||||
features were found necessary, either to fix serious design flaws or to
|
||||
complete functionality that was evidently intended, but not finished.
|
||||
Below is a summary of these new features.
|
||||
|
||||
New command line editor features:
|
||||
|
||||
- The forward-delete and End keys are now handled as expected in the
|
||||
emacs and vi built-in line editors.
|
||||
|
||||
- In the vi and emacs line editors, repeat count parameters can now also
|
||||
be used for the arrow keys and the forward-delete key. E.g., in emacs
|
||||
mode, <ESC> 7 <left-arrow> will now move the cursor seven positions to
|
||||
the left. In vi control mode, this would be entered as: 7 <left-arrow>.
|
||||
|
||||
New shell language features:
|
||||
|
||||
- The &>file redirection shorthand (for >file 2>&1) is now available for
|
||||
all scripts and interactive sessions and not only for profile/login
|
||||
scripts, bringing ksh 93u+m in line with mksh, bash, and zsh.
|
||||
|
||||
- File name generation (a.k.a. pathname expansion, a.k.a. globbing) now
|
||||
never matches the special navigational names '.' (current directory)
|
||||
and '..' (parent directory). This change makes a pattern like .*
|
||||
useful; it now matches all hidden files (dotfiles) in the current
|
||||
directory, without the harmful inclusion of '.' and '..'.
|
||||
|
||||
- Tilde expansion can now be extended or modified by defining a
|
||||
.sh.tilde.get or .sh.tilde.set discipline function. This replaces a
|
||||
2004 undocumented attempt to add this functionality via a .sh.tilde
|
||||
command, which never worked and crashed the shell. See the manual for
|
||||
details on the new method.
|
||||
|
||||
New features in built-in commands:
|
||||
|
||||
- Usage error messages now show the --help/--man self-documentation options.
|
||||
|
||||
- Path-bound built-ins (such as /opt/ast/bin/cat) can now be executed by
|
||||
invoking the canonical path, so the following will now work as expected:
|
||||
$ /opt/ast/bin/cat --version
|
||||
version cat (AT&T Research) 2012-05-31
|
||||
|
||||
- 'command -x' now looks for external commands only, skipping built-ins.
|
||||
In addition, its xargs-like functionality no longer freezes the shell on
|
||||
Linux and macOS, making it effectively a new feature on these systems.
|
||||
|
||||
- 'redirect' now checks if all arguments are valid redirections before
|
||||
performing them. If an error occurs, it issues an error message instead
|
||||
of terminating the shell.
|
||||
|
||||
- 'suspend' now refuses to suspend a login shell, as there is probably no
|
||||
parent shell to return to and the login session would freeze.
|
||||
|
||||
- 'times' now gives high precision output in a POSIX compliant format.
|
||||
|
||||
- 'typeset' now gives an informative error message if an incompatible
|
||||
combination of options is given.
|
||||
|
||||
- 'whence -v/-a' now reports the location of autoloadable functions.
|
||||
|
||||
New features in shell options:
|
||||
|
||||
- A new --globcasedetect shell option is added on OSs where we can
|
||||
check for a case-insensitive file system (currently Windows/Cygwin,
|
||||
macOS, Linux and QNX 7.0+). When this option is turned on, file name
|
||||
generation (globbing), as well as file name tab completion on
|
||||
interactive shells, automatically become case-insensitive on file
|
||||
systems where the difference between upper and lower case is ignored
|
||||
for file names. This is transparently determined for each directory, so
|
||||
a path pattern that spans multiple file systems can be part
|
||||
case-sensitive and part case-insensitive.
|
||||
|
||||
- A new --nobackslashctrl shell option disables the special escaping
|
||||
behaviour of the backslash character in the emacs and vi built-in
|
||||
editors. Particularly in the emacs editor, this makes it much easier to
|
||||
go backward, insert a forgotten backslash into a command, and then
|
||||
continue editing without having your next cursor key replace your
|
||||
backslash with garbage. Note that Ctrl+V (or whatever other character
|
||||
was set using 'stty lnext') always escapes all control characters in
|
||||
either editing mode.
|
||||
|
||||
- A new --posix shell option has been added to ksh 93u+m that makes the
|
||||
ksh language more compatible with other shells by following the POSIX
|
||||
standard more closely. See the manual page for details. It is enabled by
|
||||
default if ksh is invoked as sh, otherwise it is disabled by default.
|
||||
|
||||
- Enhancement to -G/--globstar: symbolic links to directories are now
|
||||
followed if they match a normal (non-**) glob pattern. For example, if
|
||||
'/lnk' is a symlink to a directory, '/lnk/**' and '/l?k/**' now work as
|
||||
you would expect.
|
||||
Reference in New Issue
Block a user