From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from euclid.skiles.gatech.edu (list@euclid.skiles.gatech.edu [130.207.146.50]) by melb.werple.net.au (8.7.5/8.7.3) with ESMTP id LAA03561 for ; Tue, 7 May 1996 11:15:53 +1000 (EST) Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id VAA03047; Mon, 6 May 1996 21:02:00 -0400 (EDT) Resent-Date: Mon, 6 May 1996 20:32:42 -0400 (EDT) From: Zoltan Hidvegi Message-Id: <199605070032.CAA00165@hzoli.ppp.cs.elte.hu> Subject: zsh-2.6-beta17 released To: zsh-announce@math.gatech.edu Date: Tue, 7 May 1996 02:32:42 +0200 (MET DST) X-Mailer: ELM [version 2.4ME+ PL11 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Resent-Message-ID: <"YOC3S2.0.PS.gefZn"@euclid> Resent-From: zsh-announce@math.gatech.edu X-Mailing-List: archive/latest/30 X-Loop: zsh-announce@math.gatech.edu X-Loop: zsh-users@math.gatech.edu X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu The zsh-2.6-beta17 release is now available on my ftp site. From now on the official site for zsh distribution is ftp://ftp.cs.elte.hu/pub/zsh/. The distribution files are: -rw-r--r-- 128144 May 6 16:37 zsh-2.6-beta17.diff.gz -rw-r--r-- 629782 May 6 16:51 zsh-2.6-beta17.tar.gz -rw-r--r-- 1120653 May 6 16:37 zsh-RCS.tar.gz The md5 checksums for these files: 9be348b2b72cb607a205a5fad486f597 zsh-2.6-beta17.diff.gz fc5f8f1b1395b680e1aabc706a3f7e42 zsh-2.6-beta17.tar.gz 79bffbbf10eba2709f7741b588010260 zsh-RCS.tar.gz I made a mirror of ftp://ftp.math.gatech.edu/pub/zsh/ in this directory but I rearranged the directory structure. I moved everything form the src directory to the main directory and removed the src and diff directories (the later was empty anyway). I will always provide patches against the previous release when a new release comes out. I will only keep the most recent zsh release in the archive as the patches and the RCS distribution can always be used to reconstruct previous releases. In the rcs distribution I use symbolic names for that. Eg. if you want beta16, you can do co -rbeta16 RCS/*. Unfortunately are no patches and symbolic names for the releases before beta16 so the complete source for beta10 through beta15 is still available but these will probably be removed sometime. The RCS distribution contains every changes in zsh since 24 August 1994. Richard will change ftp://ftp.math.gatech.edu/pub/zsh/ to be a mirror of my site. The other zsh mirrors will probably also change to mirror my site soon. This release is mainly based on my non-official beta15-hzoli14 release but of course it contains the changes made between the beta15 and beta16 releases. * In this release I fixed problems with the limit builtin on Linux-1.3.97 and IRIX-5.3 and possibly on other systems. The problem was that limit was unable to pair symbolic names with the real system resources so eg. on Linux when you wanted to limit the number of file descriptors you really set the `memorylocked' limit. I added some preprocessor hacks to make sure that the correspondence between real resources and symbolic names are correct. The compilation will abort with an arror if for some reason this correspondence cannot be determined. (But it is very unlikely to happen. I tested this on SunOS 4.1.2, Solaris 2.4, Linux-1.3.97, AIX 3.2, HP-UX (forgot the version), IRIX 5.3, OSF/1 V2.0 and Ultrix 4.2). * I also rewote the <(...) and >(...) process substitution code for systems that support the /dev/fd directory for naming open files. The new code will be used if configure detects that /dev/fd is directory or a symbolic link to a directory. On Linux you must have a symbolic link to /proc/self/fd from /dev/fd if you want to use this (this link must exist anyway according to the FSSTND). The advantages of using /dev/fd rather than named pipes is that it will not leave behind any garbage in /tmp if an interrupt comes in an unfortunate moment. It also removes the possibility of hanging in pipe open (which did happened sometimes in earlier releases when and interrupt came in a bad moment). Another nice side effect is that process substitution parameters can now be used with shell functions. That should also be possible with named pipes but it seems that by the time the function is executed the named pipe is already removed which is certainly a bug. It is interesting that bash has the same bug. It means that you should not use process substitution arguments to a function if you want to write a portable zsh script. Other important changes since beta16 (these were there in my earlier non-official releases): * $#foo when foo is an array returns the array length even in double quoted substitutions. To get back the old behaviour use ${(c)#foo} * There are some important changes in the new substitution code. The right hand side of parameter assignments is no longer globbed by default (note that tidle and equals substitution is not globbing). This is compatible with sh/ksh/bash. I added an option, GLOB_ASSIGN which can be set to restore the old behaviour but I do not recommend the usage of this option. If GLOB_ASSIGN is not set, it is guaranteed that foo=... assignments assign a scalar value. In earlier versions foo=* or foo=$bar where bar is an array created scalars if the result had zero or one words and an array otherwise. You should always consider using the foo=( * ) syntax instead of setting GLOB_ASSIGN. * The shell behaviour is slightly changed when the globsubst option is set. Now globsubst is really globsubst, ie. only tidle and equals substitution and globbing is done on the result of parameter expansion and command substitution which makes it more sh-compatible. It means that foo='$bar' ; echo $foo no longer prints the value of bar. It also prevents infinite uninterruptable loops like foo='$foo' ; echo $foo. Also globsubst no longer removes single and double quotes from the value of parameters and a backshlash is only removed if it followed by a glob special character or a backslash. The result of a command substitution is handled in the same way. * Parsing of mathematical substitutions are now done like double quoted strings. The body of a math substiturion is first expanded using parameter, command and arithmetic substitution and only the result is evaluated. This means that modifyers, backquote substitution and ${foo##$bar} type expansions can be used. This makes ((...)), $((...)) and $[...] completely equivalent. * $((foo) ; bar) will no longer work as a command substitution. You should leave a space after `$('. * zsh now correctly handles all of the 256 characters (including the null character!) in most cases. This is not yet complete as zle still cannot handle null and character codes between 131 and 155. Also some builtins do not print these characters properly. But in most cases there are no problems with these. echo and print, parameter assignems and substring indexes work. The null character is added to IFS which is now four bytes long. * Array and string indexes are always expanded like double quoted text. This makes the `e' flag in indexes redundant. If this flag is given it is simply ignored. * There are some new parameter substitution flags: @, A, e, p, f, F, W. See the manual for more information about these. Here is a nince example about is. On Linux /proc/pid/environ contains the environment of the process `pid' as a null separated list of strings. You can print this using print -c "${(ps:\0:)$(