Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
zsh-2.6-beta17 released
- From: Zoltan Hidvegi <hzoli@xxxxxxxxxx>
- To: zsh-announce@xxxxxxxxxxxxxxx
- Subject: zsh-2.6-beta17 released
- Date: Tue, 7 May 1996 02:32:42 +0200 (MET DST)
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:)$(</proc/pid/environ)}"
The p and f flags can also be used in indexes.
There are a lot of other changes and bugfixes and a few new features as
well. Consult the manual pages and the ChangeLog for details. People
who develop zsh should really read the ChangeLog. There are some longer
ChangeLog entries explaining important internal changes. For
developers it might be useful to use --enable-zsh-debug when
configuring zsh. It will add `-DDEBUG -g' to CFLAGS and it disbles
optimization. -DDEBUG enables some internal sanity checks.
Zoltan
Messages sorted by:
Reverse Date,
Date,
Thread,
Author