Upstream changes:
Changes from 5.5.1-test-2 to 5.6
--------------------------------
CVE-2018-0502: Data from the second line of a #! script file might be passed to
execve(). For example, in the following situation -
.
printf '#!foo\nbar' > baz
./baz
.
the shell might take "bar" rather than "foo" for the argv[0] to be passed to
execve(). [ Reported by Anthony Sottile and Buck Evan. ]
CVE-2018-13259: A shebang line longer than 64 characters would be truncated.
For example, in the following situation:
.
( printf '#!'; repeat 64 printf 'x'; printf 'y' ) > foo
./foo
.
the shell might execute x...x (64 repetitions) rather than x...xy (64 x's,
one y). [ Reported by Daniel Shahaf. ]
Changes from 5.5.1 to 5.5.1-test-2
----------------------------------
Non-stop IEEE 754 arithmetic support - Inf and NaN are now returned
from floating point operations where errors were printed before.
Inf and NaN are also recognised in arithmetic expressions.
In shell patterns, [[:blank:]] now honours the locale instead of
matching exclusively on space and tab, like for the other POSIX
character classes or for extended regular expressions.
Nanosecond precision on file times is supported in the module
zsh/stat.
Changelog:
Changes from %.5 to 5.5.1
-------------------------
Apart from a fix for a configuration problem finding singal names from
(some) recent versions of glibc, there are only minor changes.
Changes from 5.4.2 to 5.5
-------------------------
The effect of the NO_INTERACTIVE_COMMENTS option extends into $(...) and
`...` command substitutions when used on the command line. Previously,
comments were always recognized within command substitutions unless the
comment character "#" was disabled via reset of $histchars.
An alternative assignment syntax for indicating indices for arrays
and keys for associative arrays:
typeset -a array=([1]=first [2]=second)
typeset -A assoc=([key1]=val1 [key2]=val2)
is allowed for compatibility with other shells. In the case of normal
arrays the new syntax can be mixed with the old.
pkgsrc changes:
- Use PRINT_PLIST_AWK to aid future upgrades.
- Support the "static" option on Darwin and SunOS.
Upstream changes from 5.3.1 to 5.4:
The 'exec' and 'command' precommand modifiers, and options to them, are
now parsed after parameter expansion. Previously, both the modifier and
any options to it were parsed between alias expansion and parameter
expansion (see zshexpn(1)), so they could neither be quoted nor be the
result of parameter expansion. Examples: 's=command; $s -V ls' and
'\command -V ls' now work as expected.
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.
There is an option WARN_NESTED_VAR, a companion to the existing
WARN_CREATE_GLOBAL that causes a warning if a function updates a
variable from an enclosing scope without using typeset -g. It can be
turned on for an individual function with "functions -W".
zmodload now has an option -s to be silent on a failure to find a module
but still print other errors.
- Get rid of useless Makefile.common and pointless variables since there is
no longer a zsh-current package.
- Remove non-standard per-OS non-checksummed patch file in FILESDIR.
Integrate it correctly in the normal way.
- Ensure our patched configure.ac is actually regenerated.
- Use REPLACE_INTERPRETER instead of homegrown subst replacements.
- Remove esoteric and fragile configuration variables, a bunch of legacy OS
based options, and simply depend correctly on terminfo and curses.
- Remove custom test targets and requirements for root access, the test suite
works fine as a non-root user and can be done in the normal way.
- Use options.mk
- Set maintainer to pkgsrc-users, uebayasi resigned.
Fixes build on at least SunOS. Tested on SunOS, Darwin, NetBSD (with and
without the "static" option), and Linux.
Changelog:
Changes from 5.2 to 5.3
-----------------------
It is possible to enable character width support for Unicode 9 by
configuring with `--enable-unicode9'; this compiles in some additional
tables. At some point this support may move into a module, in which
case the configure option will be changed to cause the module to be
permanently loaded. This option is not useful unless your terminal also
supports Unicode 9.
The new word modifier ':P' computes the physical path of the argument.
It is different from the existing ':a' modifier which always resolves
'/before/here/../after' to '/before/after', and differs from the
existing ':A' modifier which resolves symlinks only after 'here/..' is
removed, even when /before/here is itself a symbolic link. It is
recommended to review uses of ':A' and, if appropriate, convert them
to ':P' as soon as compatibility with 5.2 is no longer a requirement.
The output of "typeset -p" uses "export" commands or the "-g" option
for parameters that are not local to the current scope. Previously,
all output was in the form of "typeset" commands, never using "-g".
vi-repeat-change can repeat user-defined widgets if the widget calls
zle -f vichange.
The parameter $registers now makes the contents of vi register buffers
available to user-defined widgets.
New vi-up-case and vi-down-case builtin widgets bound to gU/gu (or U/u
in visual mode) for doing case conversion.
A new select-word-match function provides vim-style text objects with
configurable word boundaries using the existing match-words-by-style
mechanism.
Support for the conditional expression [[ -v var ]] to test if a
variable is set for compatibility with other shells.
The print and printf builtins have a new option -v to assign the output
to a variable. This is for bash compatibility but with the additional
feature that, for an array, a separate element is used each time the
format is reused.
New x: syntax in completion match specifications make it possible to
disable match specifications hardcoded in completion functions.
NEWS:
Changes from 5.1.1 to 5.2
-------------------------
The new module zsh/param/private can be loaded to allow the shell
to define parameters that are private to a function scope (i.e. are
not propagated to nested functions called within this function).
The parameter flag ${(P)...} is now more useful when it appears in
a nested expansion. For example,
typeset -A assoc=(one un two deux three trois)
name=assoc
print ${${(P)name}[one]}
now prints "un". In previous versions of the shell the value of the
substitution was fully expanded on return from ${(P)name}, making
associative array subscripting difficult. As a side effect, flags
for formatting appearing in the inner substitution now affect the
substitution of the name (into "assoc" in this case), which is not
normally useful: flags that should apply to the value must be in the
outer substitution.
The GLOB_STAR_SHORT option allows the pattern **/* to be shortened to
just ** if no / follows. so **.c searches recursively for a file whose
name has the suffix ".c".
The effect of the WARN_CREATE_GLOBAL option has been significantly
extended, so expect it to cause additional warning messages about
parameters created globally within function scope.
README:
Incompatibilities between 5.1 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
before. See NEWS for more.
pkgsrc changes:
removed patch:
patch-Completion_Unix_Command__du
patch-Completion_Unix_Command__sort
patch-Src_builtin.c
patch-Test_B03print.ztst
quote from zsh-5.1/ChangeLog:
* 36120: Completion/Unix/Command/_sort: Fix syntax error
* 35467: Completion/Unix/Command/_du: complete files for non-GNU du
* 35412: Src/builtin.c, Test/B03print.ztst: fix for - flag
when formating strings with printf that was broken in 34841
separate a patch ( $ mv patches/patch-ac files/patch-ac )
zsh-5.1/NEWS:
Changes from 5.0.8 to 5.1
-------------------------
The builtins declare, export, local, readonly and typeset
now have corresponding reserved words. When used in
this form, the builtin syntax is extended so that assignments
following the reserved word are treated similarly to
assignments that appear at the start of the command line.
For example,
local scalar=`echo one word` array=(several words)
creates a local "scalar" containing the text "one word"
and an array "array" containing the words "several"
"words".
- The print builtin has new options -x and -X to expand tabs.
- Several new command completions and numerous updates to others.
- Options to "fc" to segregate internal and shared history.
- All emulations including "sh" use multibyte by default; several
repairs to multibyte handling.
- ZLE supports "bracketed paste" mode to avoid interpreting pasted
newlines as accept-line. Pastes can be highlighted for visibility
and to make it more obvious whether accept-line has occurred.
- Improved (though still not perfect) POSIX compatibility for getopts
builtin when POSIX_BUILTINS is set.
- New setopt APPEND_CREATE for POSIX-compatible NO_CLOBBER behavior.
- Completion of date values now displays in a calendar format when
the complist module is available. Controllable by zstyle.
- New parameter UNDO_LIMIT_NO for more control over ZLE undo repeat.
- Several repairs/improvements to the contributed narrow-to-region
ZLE function.
- Many changes to child-process and signal handling to eliminate race
conditions and avoid deadlocks on descriptor and memory management.
- New builtin sysopen in zsh/system module for detailed control of
file descriptor modes.
zsh-5.1/README:
Incompatibilites between 5.0.8 and 5.1
--------------------------------------
The default behaviour when text is pasted into an X Windows terminal has
changed significantly (unless you are using a very old terminal emulator
that doesn't support this mode). Now, the new "bracketed paste mode"
treats all the pasted text as literal characters. This means, in
particular, that a newline is simply inserted as a visible newline; you
need to hit Return on the keyboard to execute the pasted text in one go.
See the description of zle_bracketed_paste in the zshparams manual for
more. "unset zle_bracketed_paste" restores the previous behaviour.
As noted in NEWS, the builtins declare, export, float, integer, local,
readonly and typeset now have corresponding reserved words that provide
true assignment semantics instead of an approximation by means of normal
command line arguments. It is hoped that this additional consistency
provides a more natural interface. However, compatbility with older
versions of zsh can be obtained by turning off the reserved word
interface, exposing the builtin interface:
disable -r declare export float integer local readonly typeset
This is also necessary in the unusual eventuality that the builtins are
to be overridden by shell functions, since reserved words take
precedence over functions.
* Include bugfix,
ac26fafa03/
Changelog:
Changes from 5.0.7 to 5.0.8
---------------------------
- Global aliases can be created for syntactic tokens such as command
separators (";", "&", "|", "&&", "||"), redirection operators, etc.
Use at your own risk! The POSIX_ALIASES option is interpreted more
strictly to prevent expansion of these and other alias names containing
quotes, glob metacharacters, parameter references, etc.
- There have been various further improvements to builtin handling
with the POSIX_BUILTINS option (off by default) for compatibility with
the POSIX standard.
- 'whence -v' is now more informative, and 'whence -S' shows you
how a full chain of symbolic links resolves to a command.
- The 'p' parameter flag now allows an argument to be specified
as a reference to a variable, e.g. ${(ps.$sep.)foo} to split $foo
on a string given by $sep.
- The option FORCE_FLOAT now forces variables, not just constants,
to floating point in arithmetic expressions.
- The type of an assignment in arithmetic expressions, e.g. the
type seen by the variable res in $(( res = a = b )), is now
more logical and C-like.
- The default binding of 'u' in vi command mode has changed to undo
multiple changes when invoked repeatedly. '^R' is now bound to redo
changes. To revert to toggling of the last edit use:
bindkey -a u vi-undo-change
- Compatibility with Vim has been improved for vi editing mode. Most
notably, Vim style text objects are supported and the region can be
manipulated with vi commands in the same manner as Vim's visual mode.
- Elements of the watch variable may now be patterns.
- The logic for retrying history locking has been improved.
- Some rationalisations have been made to the zsh/db/gdbm module that
should make it more useful and predictable in operation.
5.0.7
This is version 5.0.7 of the shell. This is a stable release.
There are minor new features as well as bug fixes since 5.0.6.
Note in particular there is a security fix to disallow evaluation
of the initial values of integer variables imported from the
environment (they are instead treated as literal numbers). That
could allow local privilege escalation, under some specific and
atypical conditions where zsh is being invoked in privilege elevation
contexts when the environment has not been properly sanitized, such
as when zsh is invoked by sudo on systems where "env_reset" has
been disabled.
5.0.6
This is version 5.0.6 of the shell. This is a stable release.
There are minor new features as well as bug fixes since 5.0.5.
* Fix build on Debian GNU/kFreeBSD 7.3
* Update MASTER_SITES
Changelog:
This is version 5.0.5 of the shell. This is a stable release.
There are minor new features as well as bug fixes since 5.0.2.
5.0.3 and 5.0.4 were short-lived releases with most of the features of
5.0.5 that were replaced owing to significant bugs.
Incompatibilities between 5.0.2 and 5.0.5
-----------------------------------------
The "zshaddhistory" hook mechanism documented in the zshmisc manual page
has been upgraded so that a hook returning status 2 causes a history
line to be saved on the internal history list but not written to the
history file. Previously any non-zero status return would cause
the line not to be saved on the history at all. It is recommended
to use status 1 for this (indeed most shell users would naturally do
so).
Changelog:
Changes since 5.0.0
-------------------
Numeric constants encountered in mathematical expressions (but not other
contexts) can contain underscores as separators that will be ignored on
evaluation, as allowed in other scripting languages. For example,
0xFFFF_FFFF, or 3.141_592_654.
"functions -T" turns on tracing for the specified function(s) only,
similar to "functions -t" except that tracing is turned off for any
functions called from the specified one(s) that don't also have the -t
or -T flag.
In file completion, the recursive-files style can be set to an array of
patterns to match against "$PWD/". In any matched location, it is
possibly to complete files in arbitrarily deep subdirectories without
needing to type the directory prefix. See example in the zshcompsys
manual.
The _user_expand completer now allows expansion functions in the
user-expand files to return a string in REPLY that will be used to name
the set of expansions returned.
* PLIST.xattr is moved to Makefile.common
* Patches are introduced from zsh-current
Tested on NetBSD 6.99.8 and 5.1.
Changelog:
* Many improvements.
In detail, see NEWS
Changes since zsh version 4.2.0
-------------------------------
- The autoload and related builtins take options -k and -z to indicate
ksh or zsh autoloading style for given functions, making it possible
to mix and match.
- Assignments to associative arrays can use the i and r index flags.
For example,
assoc[(i)alpha*]=bravo
sets the value for the element whose key matches the pattern `alpha*';
assoc[(r)activ*]=passive
sets the value for the element whose current value matches the pattern
`activ*'.
- The glob qualifier F indicates a non-empty directory. Hence *(F)
indicates all subdirectories with entries, *(/^F) means all
subdirectories with no entries.
- fc -p and fc -P provide push/pop for the status of the shell's
history (both internal and using the history file). With automatic
scoping (fc -ap) it becomes easy to use a temporary history in a
function. This has been added to the calculator function zcalc to make
its internal history work more seamlessly.
- A new `try block' and `always block' syntax has been introduced
to make it easier to ensure the shell runs important tidy-up code
in the event of an error. It also runs after a break, continue, or
return, including a return forced by the ERR_RETURN option
(but not an exit, which is immediate). The syntax is:
`{' try-block-list `}' `always' `{' always-block-list `}'
where no newline or semicolon may appear between `}' and `always'.
This is compatible with all previous valid zsh syntax as an `always'
at that point used to be a syntax error. For example,
{ echo Code run in current shell } always { echo Tidy-up code }
- A new zle widget reset-prompt has been added to re-expand the current
prompt. Changes to the variable in use as well as changes in its
expanions are both taken into account. The same effect is now forced by
a job change notification, making the %j prompt escape and %(j..) ternary
expression more useful.
- The zftp module supports ports following the hostname in the normal suffix
notation, `host:port'. This requires IPv6 colon-style addresses to be
specified in suitably quoted square brackets, for example:
zftp open '[f000::baaa]'
zftp open '[f000::baaa]:ftp'
(the two are equivalent).
- Special traps, those that don't correspond to signals, i.e. ZERR, DEBUG
and EXIT are no longer executed inside other traps. This caused
unnecessary confusion if, for example, both DEBUG and EXIT traps
were set. The new behaviour is more compatible with other shells.
- New option TRAPS_ASYNC which if set allows traps to run while the
shell is waiting for a child process. This is the traditional zsh
behaviour; POSIX requires the option to be unset. In sh/ksh
compatibility mode the option is turned off by default and the option
letter -T turns it on, for compatibility with FreeBSD sh.
Patch provided by Geoff C. Wing in PR 24918
ok'd by uebayasi@
New features between zsh versions 4.0 and 4.2
Configuration:
* upgraded to use autoconf post-2.50
* improved compatibility with other shells through shell options, builtin
arguments and improved builtin option parsing
Syntax and builtins:
* new printf builtin
* `+=' to append to parameters which works for scalars, arrays and (with
pairs) associative arrays.
* enhanced multiple parameter `for' loops: for key value in key1 value1 key2
value2 ... maintaining full compatibility with POSIX syntax.
* Suffix aliases allow the shell to run a command on a file by suffix, e.g
`alias -s ps=gv' makes `foo.ps' execute `gv foo.ps'. Supplied function
zsh-mime-setup uses existing mailcap and mime.types files to set up suitable
aliases. Supplied function pick-web-browser is suitable for finding a browser
to show .html etc. files by suffix alias.
* new option `no_case_glob' for case-insensitive globbing.
Add-on modules and functions:
* zsh/datetime modules makes date formatting and seconds since EPOCH available
inside the shell.
* zsh/net/tcp module provides builtin interface to TCP through ztcp builtin.
Function suite for interactive and script use with expect-style pattern
matching.
* zsh/net/socket module provides zsocket builtin.
* zcalc calculator function with full line editing.
* builtin interface to pcre library
* zsh/zselect module provides zselect builtin as interface to select system call
Completion system:
* general improvements to command and context support, low-level functions,
display code.
* in verbose mode, matches with the same description are grouped
* highly configurable completions for values of specific parameters, specific
redirections for specific commands
* support for bash completion functions (typically zsh native functions are more
powerful where available)
* New completions provided for (some of these may be in later 4.0 releases):
valgrind, tidy, texinfo, infocmp, Java classes, larch, limit, locale
parameters, netcat, mysqldiff, mt, lsof, elinks, ant, debchange (dch), email
addresses, file system types, Perforce, xsltproc. Plus many others.
Line editor:
* special parameters $PREDISPLAY, $POSTDISPLAY available in function widgets
to configure uneditable text (for narrowing)
* recursive editing
* supplied widgets read-from-minibuffer, replace-string use these features
(more intuitive prompting and argument reading than 4.0)
* access to killed text via $CUTBUFFER and $killring
* supplied highly configurable word widgets forward-word-match etc., can set
what constitutes a word interactively or in startup script (implement
bash-style behaviour, replacing previous bash-* word widgets)
* interface to incremental search via $LASTSEARCH
* better handling of keymaps in zle and widgets
* better support for output from user-defined widgets while zle is active
* tetris game which runs entirely in zle
* several other contributed widgets
Local internal improvements:
* disowned jobs are automatically restarted
* \u and \U print escapes for Unicode
* read -d allows a custom line ending.
* read -t .
* line numbers in error messages and $PS4 output are more consistent
* `=prog' expands only paths, no longer aliases for consistency
* job display in prompts; `jobs' command output can be piped
* prompts: new $RPROMPT2, %^, %j, %y, enhanced %{, %}, %_.
* rand48() function in zsh/mathfunc for better randomness in arithmetic
(if the corresponding math library function is present)
* $SECONDS parameter can be made floating point via `typeset -F SECONDS'
for better timing accuracy
* improvements to command line history mechanism
* job table is dynamically sized, preventing overflow (typically seen
previously in complex completions).
* many bugfixes
Use INSTALL_TARGET to install info files: this gives a proper
environment for USE_NEW_TEXINFO framework to work.
Fix makeinfo invocation for zsh-current via patch file so that
only _one_ info file is generated as PLIST seems to want it.
Bug fix release for stable version as well as a few completion
improvements. Also includes more current MASTER_SITES.
PR21938 by Geoff Wing <gcw at primenet dot com dot au>.
Bugfix release. Some added completion functions: e.g. rsync,
mozilla, some bash builtin functions.
From Geoff C. Wing, gcw at primenet dot com dot au in pkg/17946.
Summary of changes:
- removal of USE_GTEXINFO
- addition of mk/texinfo.mk
- inclusion of this file in package Makefiles requiring it
- `install-info' substituted by `${INSTALL_INFO}' in PLISTs
- tuning of mk/bsd.pkg.mk:
removal of USE_GTEXINFO
INSTALL_INFO added to PLIST_SUBST
`${INSTALL_INFO}' replace `install-info' in target rules
print-PLIST target now generate `${INSTALL_INFO}' instead of `install-info'
- a couple of new patch files added for a handful of packages
- setting of the TEXINFO_OVERRIDE "switch" in packages Makefiles requiring it
- devel/cssc marked requiring texinfo 4.0
- a couple of packages Makefiles were tuned with respect of INFO_FILES and
makeinfo command usage
See -newly added by this commit- section 10.24 of Packages.txt for
further information.
This is a minor bug-fix release, though some new functions have been added:
_bts Completion for Debian BTS
_chflags Completion for chflags(1)
_links Completion for links web browser
_samba
_sysctl
_user_admin
bash-backward-kill-word