Commit graph

9 commits

Author SHA1 Message Date
vins
f7a2b4f5f4 shells/ksh93: update to ksh 93u+m/1.0.6
CHANGES

# ksh 93u+m/1.0.6:

*    Fixed a serious regression in pathname expansion where quoted
     wildcard characters were incorrectly expanded if a pattern contains
     both a brace expansion and a variable expansion.
*    Fixed a bug where the command to launch a full-screen editor (^X^E
     in emacs and v in vi) could cause the wrong command line to be
     edited if two shell sessions share a .sh_history file.

# ksh 93u+m/1.0.5:

*	Fixed various bugs causing crashes.
*	Fixed many bugs in the emacs and vi line editors, in command
	 completion, and in file name completion.
*	Fixed various bugs in the handling of quotes, backslash escapes and
	braces when processing shell glob patterns (e.g. in pathname expansion
	and case).
*	ksh now throws a panic and exits if a read error (such as an I/O
	error) occurs while trying to read the next command(s) from a running
	script.
*	Fixed many bugs in printf and print -f built-in commands, including:

	- Multiple bugs causing incorrect output for relative date
	  specifications, e.g., printf %T\\n 'exactly 20 months ago' now
	  outputs a correct result.
	- More printf bugs with mix and match of % and %x$.
	- A data corruption bug when using %B with printf -v varname.
	- A bug causing double evaluation of arithmetic expressions.

*	Fixed a bug where unset -f commandname, executed in a subshell, hides
	any built-in command by the same name for the duration of that subshell.
*	Fixed ${var/#/string} and ${var/%/string} (with anchored empty pattern)
	to work as on mksh, bash and zsh; these are no longer ineffective.
*	Fixed incorrect result of array slicing ${array[@]:offset:length} where
	length is a nested expansion involving an array.
*	Command names can now end in : as they can on other shells.
*	Fixed a spurious syntax error in compound assignments upon encountering
	a pair of repeated opening parentheses ((.
*	Fixed spurious syntax error in ${parameter:offset:length}: the
	arithmetic expressions offset and length may now contain the
	operators () & |.
*	Fixed a parsing bug in the declaration of .sh.math.* arithmetic
	functions.
*	Fixed nameref self-reference loop detection for more than two namerefs
*	Several improvements to the POSIX compatibility mode.
*	Many more minor and/or esoteric bugfixes.
2023-07-03 10:44:08 +00:00
vins
89f0fa7479 Reset maintainer for my packages to reflect new mail address. 2022-12-06 14:41:38 +00:00
pin
bbed00745b shells/ksh93: fix broken build 2022-11-09 04:28:37 +00:00
pin
38c3e413fd ksh93: update to 1.0.4.
Main changes between 1.0.3 and 1.0.4:

- Fixed multiple scoping-related bugs in the += additive assignment
  operator.
- A number of crashing bugs have been fixed.
- Various fixes for the Haiku operating system, notably 'ulimit -a'
  now works.
- Fixed the expansion of out-of-range \n back references in the
  string part of ${parameter//pattern/string}. For example:
	v=AB; echo "${v/@(A)B/\0:\1:\2}"
  now yields 'AB:A:' instead of 'AB:A:\2'.
- Fixed quoted '!', '^' and '-' within [bracket] expressions in
  glob patterns; single or double quotes failed to disable their
  operator behaviour.
- Fixed a bug introduced on 2021-04-04 that incorrectly allowed
  'typeset' to turn off the readonly and export attributes on a
  readonly variable.
- In the emacs line editor, the Ctrl+R reverse-search prompt is
  now visually distinct from a literal control character ("^R: "
  instead of "^R").
- In the vi line editor, fixed the behaviour of 'C', 'c$' and 'I'
  to be consistent with standard vi(1) and with Bolsky & Korn
  (1995, p. 121).
- Aliases for many GNU long options have been added to the
  /opt/ast/bin built-in commands. Additionally, 'kill -s' now has
  a --signal long option alias compatible with the util-linux
  option.
- Backported support for 'print -u p' from ksh 93v- for
  compatibility with scripts written for 93v-/ksh2020 (this is
  equivalent to 'print -p').
2022-11-05 16:10:40 +00:00
pin
6ea72b23f6 shells/ksh93: update to ksh93-1.0.3.
Submmited by Paolo Vincenzo Olivo through private e-mail.

This a stability update incorporating crucial bug fixes.

Changes since version 1.0.1:

# Release 1.0.3

This point release mainly fixes the following:
- A bug in history expansion (set -H) where any use of the history
  comment character caused processing to be aborted as if it were an
  invalid history expansion. Affected e.g. 'echo ${#v}'.
- A bug in command line options processing that caused short-form option
  equivalents on some built-in commands to be ignored after one use,
  e.g., the new read -a equivalent of read -A.
- Ksh freezing or using excessive memory if HISTSIZE is assigned a
  pathologically large value.
- A bug that caused ksh in the vi editor mode to crash or produce
  invalid completions if ESC = was used at the beginning of a line.

# Release 1.0.2

This release fixes the interactive shell crashing when one of the
predefined aliases (currently 'history' and 'r') is redefined, whether
from a profile/kshrc script or manually. This crash occurred in two
scenarios:

1. when redefining and then unsetting a predefined alias;

2. when redefining a predefined alias and then executing a shell script
that does not begin with a #! path.
2022-09-04 14:35:34 +00:00
pin
523a57ffa2 shells/ksh93: update to 1.0.1
Submitted by Paolo Vincenzo Olivo on pkgsrc-users.

## ksh 93u+m/1.0.1

This is an urgent bugfix release that removes an incorrect exec
optimization that was capable of terminating the execution of scripts
prematurely in certain corner cases. It is known to make the build
scripts of GNU binutils produce corrupted results if ksh is used as
/bin/sh. See #507 for more information.

No other breakage resulting from this bug is known yet, but other
breakage probably exists. Every 1.0.0 user should update to 1.0.1 ASAP.

## ksh 93u+m/1.0.0

Roughly a thousand bugs have been fixed, including many serious/critical
bugs. 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 counts can now also be used for
  arrow keys and the forward-delete key, e.g., <ESC> 7 <left-arrow> works.

- Various keys on extended PC keyboards are now handled as expected in the
  emacs and vi built-in line editors.

New shell language features:

- Pathname expansion (a.k.a. globbing) now never matches the special 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. See the manual for details.

- The &>file redirection shorthand (for >file 2>&1) is now available for all
  scripts and interactive sessions and not only for profile/login scripts.

- 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 $((...)). If the POSIX mode is turned on,
  a leading zero now denotes an octal number in all arithmetic contexts.

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

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

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

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

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

- 'return', 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 a shell or subshell exits.

- 'suspend' now refuses to suspend a login shell, as there is probably no
  parent shell to return to and the login session would freeze.

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

- 'times' now gives high precision output in a POSIX compliant format.

- 'type'/'whence': Two bash-like flags 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.

- 'typeset' has a new '-g' flag that forces variables to be created or
  modified at the global scope regardless of context, as on bash 4.2+.

- 'typeset' now gives an informative error message if an incompatible
  combination of options is given.

- 'ulimit': Added three options inspired by 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 not all operating systems support the limits set by these options.

- 'whence -v/-a' now reports the location of autoloadable functions.

New features in shell options:

- When the -b/--notify shell option is on and the vi or emacs/gmacs shell
  line editor is in use, 'Done' and similar notifications from completed
  background jobs are now inserted directly above the line you're typing,
  without affecting your command line display.

- A new --functrace long-form shell option causes the -x/--xtrace option's
  state and the DEBUG trap action to be inherited by function scopes instead
  of being reset to default. Changes made to them within a function scope
  still do not propagate back to the parent scope. Similarly, this option
  also causes the DEBUG trap action to be inherited by subshells.

- A new --globcasedetect shell option is added on operating systems where
  we can check for a case-insensitive file system (currently Linux, macOS,
  QNX 7.0+, and Windows/Cygwin). When this option is turned on, pathname
  expansion (globbing), as well as tab completion on interactive shells,
  automatically become case-insensitive depending on the file system.
  This is separately determined for each pathname component.

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

- The new --histreedit and --histverify options modify history expansion
  (--histexpand). If --histreedit is on and a history expansion fails, the
  command line is reloaded into the next prompt's edit buffer, allowing
  corrections. If --histverify is on, the results of a history expansion are
  not immediately executed but instead loaded into the next prompt's edit
  buffer, allowing further changes.

- 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 back,
  insert a forgotten backslash into a command, and then continue editing
  without having your next arrow key replace your backslash with garbage.

- 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.
2022-08-09 06:37:32 +00:00
leot
e0f40547b5 ksh93: Remove not needed USE_LANGUAGES
It is already `c' by default.

No functional change.
2022-07-03 21:19:31 +00:00
leot
89ae38f4ce ksh93: Downgrade to 1.0.0beta.2
Simplify distname handling and downgrade to 1.0.0beta.2 to match actual
upstream version.
2022-07-03 21:18:31 +00:00
pin
6992de351f shells/ksh93: import package
Packaged in wip by Paolo Vincenzo Olivo.

Between 2017 and 2020 there was an ultimately unsuccessful attempt to breathe
new life into the KornShell by extensively refactoring the last unstable AST
beta version (93v-). While that ksh2020 effort is now abandoned and still has
many critical bugs, it also had a lot of bugs fixed. More importantly, the AST
issue tracker now contains a lot of documentation on how to fix those bugs,
which made it possible to backport many of them to the last stable release
instead. This ksh 93u+m reboot now incorporates many of these bugfixes, plus
patches from OpenSUSE, Red Hat, and Solaris, as well as many new fixes from the
community (1, 2). Though there are many bugs left to fix, we are confident at
this point that 93u+m is already the least buggy version of ksh93 ever
released. As of late 2021, distributions such as Debian and Slackware have
begun to package it as their default version of ksh93.
2022-07-03 20:57:38 +00:00