summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
authorJoe Rayhawk <jrayhawk@fairlystable.org>2025-04-30 02:07:56 -0700
committerJoe Rayhawk <jrayhawk@fairlystable.org>2025-04-30 02:07:56 -0700
commit26e09889646be3ea65b4a3dfeda26213e4bb6a27 (patch)
tree4f3c73a9416bf47ad7e125383d23cf42879e38d7 /README
parent841bce705a58b04220b1f257abcc00ae71cbdbdc (diff)
parent001cba48ce3b964cf01fb3e2af54b20eacbc9bf5 (diff)
downloadzsh-26e09889646be3ea65b4a3dfeda26213e4bb6a27.tar.gz
zsh-26e09889646be3ea65b4a3dfeda26213e4bb6a27.zip
Merge branch 'upstream' into debian
Diffstat (limited to 'README')
-rw-r--r--README112
1 files changed, 107 insertions, 5 deletions
diff --git a/README b/README
index 21142e17c..993a79abd 100644
--- a/README
+++ b/README
@@ -5,12 +5,12 @@ THE Z SHELL (ZSH)
Version
-------
-This is version 5.9 of the shell. This is a security and feature release.
-There are several visible improvements since 5.8.1, as well as bug fixes.
+This is version 5.10 of the shell. This is a security and feature release.
+There are several visible improvements since 5.9, as well as bug fixes.
All zsh installations are encouraged to upgrade as soon as possible.
Note in particular the changes highlighted under "Incompatibilities since
-5.8.1" below. See NEWS for more information.
+5.9" below. See NEWS for more information.
Installing Zsh
--------------
@@ -31,8 +31,105 @@ Zsh is a shell with lots of features. For a list of some of these, see the
file FEATURES, and for the latest changes see NEWS. For more
details, see the documentation.
-Incompatibilities since 5.8.1
------------------------------
+Incompatibilities since 5.9
+---------------------------
+
+The line editor's default keymap is now the "emacs" keymap regardless of the
+value of the environment variables $VISUAL and $EDITOR. This only affects you
+if your $VISUAL or $EDITOR environment variable is set to a value that
+contains the string "vi". To get the previous behaviour, add
+
+ bindkey -v
+
+or, if your $VISUAL and $EDITOR environment variables vary,
+
+ if [[ ${VISUAL} == *vi* || ${EDITOR} == *vi* ]]; then
+ bindkey -v
+ else
+ bindkey -e
+ fi
+
+to your .zshrc file. These snippets are compatible with previous
+versions of the shell.
+
+The ERR_EXIT and ERR_RETURN options were refined to be more self-
+consistent and better aligned with the POSIX-2017 specification of
+`set -e`:
+
+ - Function calls or anonymous functions prefixed with `!` now never
+ trigger exit or return. Negated function calls or anonymous
+ functions used to trigger exit or return if ERR_EXIT or ERR_RETURN
+ was set and the function call or anonymous function returned a
+ zero exit status. Example:
+
+ setopt ERR_EXIT
+ f() { true }
+ ! f
+ echo "This is printed only since 5.10."
+
+ - The `always` command now ignores ERR_EXIT and ERR_RETURN, as other
+ complex commands do, if its exit status comes from a command
+ executed while the option is ignored. Example:
+
+ setopt ERR_EXIT
+ { false && true } always { echo "This was and still is printed." }
+ echo "This is printed only since 5.10."
+
+ - Function calls, anonymous functions, and the `eval`, `.`, and
+ `source` builtins now never ignore ERR_EXIT and ERR_RETURN on
+ their own. These commands used to ignore ERR_EXIT and ERR_RETURN
+ if their result came from a complex command (if, for, ...) whose
+ result came from a command executed while the option is
+ ignored. Example:
+
+ setopt ERR_EXIT
+ f() { if true; then false && true; fi }
+ f
+ echo "This is printed only prior to 5.10."
+
+ - The `&&` and `||` operators now always ignore ERR_RETURN in their
+ left operand. Until this version, the operators failed to ignored
+ ERR_RETURN in their left operand if they were executed as part of
+ a function call or an anonymous function that was itself executed
+ in a context where ERR_RETURN is ignored. Example:
+
+ setopt ERR_RETURN
+ f() { { false; echo "This is printed only since 5.10." } || true }
+ if f; then true; fi
+
+PCRE support is now PCRE2.
+
+Parameter names may begin with a "." and follow a relaxed implementation
+of ksh namespace syntax. Expansion of such parameters must use braces,
+that is, in ${.param.name} form. Parameters so named are excluded from
+`typeset` and `set` output unless explicitly listed in `typeset` arguments
+or matched by a pattern with `typeset -m`.
+
+Interpretation of exclusion-patterns following alternation-patterns has
+been rationalised. This means for example that `[[ ab = (|a*)~^(*b) ]]`
+is true where previously it was false.
+
+Improvements to handling of terminal colors and attributes in prompts
+may change the behavior of some prompt sequences, most notably in
+cases where `esq=${(%)...}` is used to capture an escape sequence.
+
+The `which` and `functions` commands output function definitions in a
+format independent of the MULTI_FUNC_DEF option.
+
+Math context no longer interprets a leading underscore as part of a
+numeric constant.
+
+Nul and characters greater than \x77 are correctly handled by `read -d`.
+
+Return values of `sysopen` from the zsh/system module have been updated
+to be more similar to other commands in that module.
+
+Tied parameters created with the zsh/db/gdbm module may not be re-tied
+as locals in nested function scope. This prevents database corruption
+when a function scope ends.
+
+Incompatibilities between 5.8.1 and 5.9
+---------------------------------------
compinit: A "y" response to the "Ignore ... and continue?" prompt removes
insecure elements from the set of completion functions, where previously
@@ -120,6 +217,11 @@ The ${name:offset:length} expansion syntax now behaves more similarly to
other shells in that the offset and length are applied as array indices
prior to scalar conversion in e.g. "${*:0:2}".
+The optimization for the =(<<<foo) construct with no command, which
+creates a temporary file with contents "foo", now adds a newline byte
+after "foo" for consistency with the behaviour of the <<< redirection
+everywhere else.
+
Incompatibilities between 5.7.1 and 5.8.1
-----------------------------------------