summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README68
1 files changed, 58 insertions, 10 deletions
diff --git a/README b/README
index 5646ff00a..7f81b1ed9 100644
--- a/README
+++ b/README
@@ -5,10 +5,11 @@ THE Z SHELL (ZSH)
Version
-------
-This is version 5.3.1 of the shell. This is a stable release. There are
-a few visible improvements since 5.2 as well as many bugfixes. Note
-in particular the changs highlighted under "Incompatibilites
-between 5.2 and 5.3.1" below. See NEWS for more information.
+This is version 5.4,1 of the shell. This is a stable release. There
+are a few visible improvements since 5.3.1, the last widely released
+version, as well as many bugfixes. Note in particular the changs
+highlighted under "Incompatibilites since 5.3.1" below. See NEWS for
+more information.
Installing Zsh
--------------
@@ -29,8 +30,59 @@ 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 between 5.2 and 5.3.1
----------------------------------------
+Incompatibilities since 5.3.1
+-----------------------------
+
+1) The default behaviour of code like the following has changed:
+
+ alias foo='noglob foo'
+ foo() { print function body; }
+
+When this is encountered in a start-up file, or other place where input
+was read line by line, "foo" is in command position and is expanded as
+an alias before the function definition takes place. In previous
+versions of the shell, this caused two functions "noglob" and "foo" to
+be defined. Any expansion of an alias in a function definition is
+nearly always an unintended effect, as well as hard to detect, so has
+been made an error. (The option setting NO_MULTI_FUNC_DEF turned this
+case into an error, but did not help with other cases and is off by
+default.) The alternative, of not expanding the alias, was rejected as
+it was more difficult to achieve in the parser and also would silently
+change the shell's behaviur between versions. A new option,
+ALIAS_FUNC_DEF, has been added, which can be set to make the shell
+behave as in previous versions. It is in any case recommended to use
+the "function" keyword, as aliases are not expanded afterwards.
+
+2) It was an undocumented, and largely useless, feature that a function
+autoloaded with an absolute path was searched for along the normal fpath
+(as if the leading / was missing) and, if found, loaded under the full
+name including the leading slash. This has been replaced with the more
+useful feature that the function is searched for only at the given
+absolute path; the name of the function is the base name of the file.
+Note that functions including a non-leading / behave as before,
+e.g. if `dir/name' is found anywhere under a directory in $fpath it is
+loaded as a function named `dir/name'.
+
+3) vcs_info: When neither a set-patch-format nor a gen-applied-string
+(resp. gen-unapplied-string) hook is set, vcs_info now '%'-escapes the
+applied-string (resp. unapplied-string) before interpolating it into the
+patch-format string, to prevent literal `%' signs in the interpolated
+value from being interpreted as prompt escape sequences. If you use
+${vcs_info_msg_0_} in a context other than the shell prompt, you may need
+to undo the escaping with:
+
+ print -v vcs_info_msg_0_ -Pr -- "${vcs_info_msg_0_}"
+
+This is also needed if $vcs_info_msg_0_ is used to set $psvar.
+
+4) functions executed by ZLE widgets no longer have their standard input
+closed, but redirected from /dev/null instead. That still guards
+against user defined widgets inadvertently reading from the tty device,
+and addresses the antisocial behaviour of running a command with its
+stdin closed.
+
+Incompatibilities between 5.0.8 and 5.3
+----------------------------------------
1) In character classes delimited by "[" and "]" within patterns, whether
used for filename generation (globbing) or other forms of pattern
@@ -159,10 +211,6 @@ following example illustrates how this differs from past versions.
4 4 => 1 | 4 4 => 0 **
4 5 => 1 | 4 5 => 1
-
-Incompatibilities between 5.0.8 and 5.2
----------------------------------------
-
The behaviour of the parameter flag (P) has changed when it appears
in a nested parameter group, in order to make it more useful in
such cases. A (P) in the outermost parameter group behaves as