From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 101528 invoked by alias); 20 Dec 2016 16:24:27 -0000 Mailing-List: contact cygwin-announce-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-announce-owner@cygwin.com Reply-To: The Cygwin Mailing List Mail-Followup-To: cygwin-announce@cygwin.com Received: (qmail 53956 invoked by uid 89); 19 Dec 2016 20:52:07 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=3.3 required=5.0 tests=AWL,BAYES_50,KAM_ASCII_DIVIDERS,SPF_PASS,TVD_RCVD_IP,UNSUBSCRIBE_BODY autolearn=no version=3.3.2 spammy=yourdomaincom, yourdomain.com, dating, Enter X-HELO: ripple.fruitbat.org Date: Tue, 20 Dec 2016 16:24:00 -0000 From: "Peter A. Castro" To: Cygwin Announcements Subject: Updated: zsh-5.3-1 Message-ID: User-Agent: Alpine 2.00 (LNX 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-SW-Source: 2016-12/txt/msg00039.txt.bz2 An updated version of zsh (zsh-5.3-1) has been released and should be at a mirror near you real soon. This is an upstream release. NOTICE: ======= Version 5.3 has just been released for both 32-bit and 64-bit Cygwin. (Version 5.2 was skipped for stability reasons, but the change/release info included for history). NEWS: ===== (From the release notes: http://zsh.sourceforge.net/releases.html) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Changes between versions 5.2 and 5.3 Incompatibilities * In character classes delimited by "[" and "]" within patterns, whether used for filename generation (globbing) or other forms of pattern matching, it used not to be possible to quote "-" when used for a range, or "^" and "!" when used for negating a character set. The characters can now be quoted by any of the standard shell means, but note that the "[" and "]" must not be quoted. For example, [[ $a = ['a-z'] ]] matches if the variable a contains just one of the characters "a", "-" or "z" only. Previously this would have matched any lower case ASCII letter. Note therefore the useful fact that [[ $a = ["$cset"] ]] matches any character contained in the variable "cset". A consequence of this change is that variables that should have active ranges need (with default zsh options) to be indicated explicitly, e.g. cset="a-z" [[ b = [${~cset}] ]] The "~" causes the "-" character to be active. In sh emulation the "~" is unncessary in this example and double quotes must be used to suppress the range behaviour of the "-". * The first argument to 'repeat' is now evaluated as an arithmetic expression. It was always documented to be an arithmetic expression, but until now the decimal integer at the start of the value was used and the remainder of the value discarded. This could lead to different behaviour if the argument contains non-numeric characters, or if the argument has leading zeroes and the OCTAL_ZEROES option is set. * For some time the shell has had a POSIX_TRAPS option which determines whether the EXIT trap has POSIX behaviour (the trap is only run at shell exit) or traditional zsh behaviour (the trap is run once and discarded when the enclosing fuction or shell exits, whichever happens first). The use of this option has now been made "sticky" on the EXIT trap --- in other words, the setting of the option at the point where the trap is set now determines whether the trap has POSIX or traditional zsh behaviour. This means that changing the option after the trap was set no longer has any effect. Other aspects of EXIT trap handling have not changed --- there is still only one EXIT trap at any point in a programme, so it is not generally useful to combine POSIX and non-POSIX behaviour in the same script. * There was an undocumented feature dating from the early days of zsh that glob qualifiers consisting only of the digits 0 to 7 were treated as an octal file mode to "and" with the modes of files being tested. This has been removed in order to be more sensitive to syntax errors. The "f" qualifier has for many years been the documented way of testing file modes; it allows the "and" test ("*(f+1)" is the documented equivalent of "*(1)") as well as many other forms. * The completion helper function _arguments now escapes both backslashes and colons in the values of option arguments when populating the $opt_args associative array. Previously, colons were escaped with a backslash but backslashes were not themselves escaped with a backslash, which lead to ambiguity: '-x foo\:bar' (one argument with a backslashed colon) and '-x foo\\ bar' (two arguments, and the first one ends in a backslash) would both set $opt_args[-x] to the same value. This example assumes the -x option's spec declared two arguments, as in: _arguments : -x:foo:${action}:bar:$action For the more common case of non-repeatable options that take a single argument, completion functions now have to unescape not only colons but also backslashes when obtaining the option's argument from $opt_args. * Previously, if the function command_not_found_handler was run in place of a command-not-found error, and the function returned non-zero status, zsh set the status to 127 and printed an error message anyway. Now, the status from the handler is retained and no additional message is printed. The main reasons for this change are that it was not possible to return a non-zero status to the parent shell from a command executed as a replacement, and the new implementation is more consistent with other shells. * The output of "typeset -p" (and synonyms) now takes into account the function scope and export state of each parameter. Exported parameters are output as "export" commands unless the parameter is also local, and other parameters not local to the scope are output with the "-g" option. Previously, only "typeset" commands were output, never using "-g". * At spelling-correction prompt ($SPROMPT), where the choices offered are [nyae], previously would be accepted to mean [N] and and would be accepted to mean [Y]. Now and are invalid choices: typing either of them remains at the prompt. * The $ary[i,j] subscript syntax to take a slice of an array behaves differently when both i and j are larger than the number of elements in the array. When i == j, such a slice always yields an empty array, and when i < j it always yields an array of one empty string element. The following example illustrates how this differs from past versions. nargs() { print $# } a=(one two) for i in 1 2 3 4; do for j in 1 2 3 4 5; do print -n "$i $j => " nargs "${(@)a[i,j]}" done done 5.2 | 5.3 ** ----------+---------- 1 1 => 1 | 1 1 => 1 1 2 => 2 | 1 2 => 2 1 3 => 2 | 1 3 => 2 1 4 => 2 | 1 4 => 2 1 5 => 2 | 1 5 => 2 2 1 => 0 | 2 1 => 0 2 2 => 1 | 2 2 => 1 2 3 => 1 | 2 3 => 1 2 4 => 1 | 2 4 => 1 2 5 => 1 | 2 5 => 1 3 1 => 0 | 3 1 => 0 3 2 => 0 | 3 2 => 0 3 3 => 0 | 3 3 => 0 3 4 => 0 | 3 4 => 1 ** 3 5 => 0 | 3 5 => 1 ** 4 1 => 0 | 4 1 => 0 4 2 => 0 | 4 2 => 0 4 3 => 0 | 4 3 => 0 4 4 => 1 | 4 4 => 0 ** 4 5 => 1 | 4 5 => 1 Changes * 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. Changes between versions 5.1.1 and 5.2 Incompatibilities 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. Changes * 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. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- See ChangeLogs for full details. ChangeLogs: http://www.fruitbat.org/Cygwin/zsh/ChangeLog-5.3 http://www.fruitbat.org/Cygwin/zsh/ChangeLog-5.2 Homepage: http://www.zsh.org DESCRIPTION: ============ Zsh is a UNIX command interpreter (shell) usable as an interactive login shell and as a shell script command processor. Of the standard shells, zsh most closely resembles `ksh' but includes many enhancements. Zsh has command line editing, builtin spelling correction, programmable command completion, shell functions (with autoloading), a history mechanism, and a host of other features. UPDATE: ======= To update your installation, click on the "Install Cygwin now" link on the http://cygwin.com/ web page. This downloads setup.exe to your system. Save it and run setup, answer the questions and pick up 'zsh' in the 'Shell' category (you will have select it). DOWNLOAD: ========= Note that downloads from sources.redhat.com (aka cygwin.com) aren't allowed due to bandwidth limitations. This means that you will need to find a mirror which has this update, please choose the one nearest to you: http://cygwin.com/mirrors.html QUESTIONS: ========== If you want to make a point or ask a question the Cygwin mailing list is the appropriate place. CYGWIN-ANNOUNCE UNSUBSCRIBE INFO: ================================= To unsubscribe from the cygwin-announce mailing list, look at the "List-Unsubscribe: " tag in the email header of this message. Send email to the address specified there. It will be in the format: cygwin-announce-unsubscribe-YOU=YOURDOMAIN.COM at cygwin.com If you need more information on unsubscribing, start reading here: http://sourceware.org/lists.html#unsubscribe-simple Please read *all* of the information on unsubscribing that is available starting at that URL. -- --=> Peter A. Castro Email: doctor at fruitbat dot org / Peter dot Castro at oracle dot com "Cats are just autistic Dogs" -- Dr. Tony Attwood