| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
Add curlies to nested expression for clarity
Rename keyword 'explicit' to eliminate C++ collision
Rename chsize() function to avoid collision with libc on some systems
Use macro for shell name as part of OS/2 support
Support 64-bit times
|
|
|
|
|
| |
[editor's note: changes seem to be mostly module updates,
documentation changes and some perl API macro additions]
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[editor's note: no patch file was found for this release, so no
fine-grained changes]
I can't find the password for our ftp server, so I had to drop it into
ftp://ftp.sems.com/pub/incoming/perl5.002b3.tar.gz, which is a drop
directory you can't ls.
The current plan is that Andy is gonna whack on this a little more, and
then release a gamma in a few days when he's happy with it. So don't get
carried away. This is now *late* beta.
In other words, have less than the appropriate amount of fun. :-)
Larry
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If you're adventurous, have a look at
ftp://ftp.sems.com/pub/outgoing/perl5.0/perl5.002beta1.tar.gz
Many thanks to Andy for doing the integration.
Obviously, if you consult the bugs database, you'll note there are
still plenty of buglets that need fixing, and several enhancements that
I've intended to put in still haven't made it in (Hi, Tim and Ilya).
But I think it'll be pretty stable. And you can start to fiddle around
with prototypes (which are, of course, still totally undocumented).
Packrats, don't worry too much about readvertising this widely.
Nowadays we're on a T1 here, so our bandwidth is okay.
Have the appropriate amount of jollity.
Larry
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To apply, change to your perl directory and apply with
patch -p1 -N < thispatch.
After you apply this patch, I would recommend:
rm config.sh
sh Configure [whatever options you use]
make depend
make
make test
Here are the highlights:
Linux fixes: Now correctly sets & uses stdio _ptr and _cnt
tricks only when feasible (Configure, config_h.SH, config_H,
doio.c, sv.c x2p/str.c)
#!path-to-perl fixed to use $binexp instead of $bin. This should
really be fixed to do the correct perl start-up stuff. Volunteers?
(c2ph.SH, h2ph.SH, h2xs.SH, makeaperl.SH, perldoc.SH,
pod/pod2*.SH, x2p/find2perl.SH, x2p/s2p.SH)
hint updates: hints/apollo.sh, hints/linux.sh, hints/freebsd.sh,
hints/sco_3.sh.
xsubpp version 1.7. (includes CASE support)
pod/perlbot updates.
my lib/AutoLoader patch (to use @INC).
[ON]DBM_File/Makefile.PL now have a few hint files.
Other sundry small things.
Patch and enjoy,
Andy Dougherty doughera@lafcol.lafayette.edu
Dept. of Physics
Lafayette College Easton, PA 18042
Here's the file-by-file breakdown of what's included:
Configure
Checks if File_ptr(fp) and File_cnt(fp) can be assigned to.
Fix typo: s/sytem/system/
MANIFEST
Include new extension hint files.
README
Some clarifications, thanks to John Stoeffel. Tell users how to
not use dynamic loading.
c2ph.SH
Use $binexp instead of $bin.
config_H
Updated to match config_h.SH.
config_h.SH
Include defines for whether File_ptr(fp) and File_cnt(fp)
can be assigned to.
doio.c
Use defines for whether File_ptr(fp) and File_cnt(fp) can be assigned to.
ext/DynaLoader/DynaLoader.pm
Improve error messages and a little documentation.
ext/NDBM_File/hints/solaris.pl
New hint file.
ext/ODBM_File/Makefile.PL
Removed -ldbm.nfs, since it's now in the sco hint file.
ext/ODBM_File/hints/sco.pl
ext/ODBM_File/hints/solaris.pl
ext/ODBM_File/hints/svr4.pl
New hint files.
h2ph.SH
h2xs.SH
Use $binexp instead of $bin.
hints/apollo.sh
hints/freebsd.sh
hints/linux.sh
hints/sco_3.sh
Updated.
lib/AutoLoader.pm
Eliminate else clause in sub import.
Handle case where @INC contains relative paths.
lib/ExtUtils/xsubpp
Update to version 1.7. This includes CASE support.
lib/I18N/Collate.pm
Updated documentation.
lib/ftp.pl
Look for socket.ph or sys/socket.ph
lib/getcwd.pl
Use defined().
makeaperl.SH
Use $binexp instead of $bin.
perl.c
fputs("\tUnofficial patchlevel 1j.\n",stdout);
perldoc.SH
Use $binexp instead of $bin.
Turn off debugging messages.
pod/perlbot.pod
Updated.
pod/pod2html.SH
pod/pod2latex.SH
pod/pod2man.SH
Use $binexp instead of $bin.
sv.c
Use defines for whether File_ptr(fp) and File_cnt(fp) can be assigned to.
toke.c
Fix spelling of ambiguous.
x2p/find2perl.SH
x2p/s2p.SH
Use $binexp instead of $bin.
x2p/str.c
Use defines for whether File_ptr(fp) and File_cnt(fp) can be assigned to.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To apply, change to your perl directory, run the commands above, then
apply with
patch -p1 -N < thispatch.
After you apply this patch, I would recommend:
rm config.sh
sh Configure [whatever options you use]
make depend
make
make test
Here are the highlights:
All pod documentation now installed, along with corresponding man
pages, if possible (Configure allows you to change this).
cppstdin no longer points back to the build directory. This
necessitated two changes to the test suite: comp/cpp.t is now a
front end that punts if cppstdin is not yet available (the old
perl4 trick doesn't work for perl5). The op/misc.t test
./perl -P -e 'use POSIX;' has been dropped since I couldn't think
of an elegant way to bypass it for systems that need the cppstdin
wrapper.
Grand autoload patch included (minus the installperl, lib/, and
ext/ changes). The lib/ changes are in patch.1g, and the
ext/ changes are in patch.1h.
Better detection and use of stdio variants, especially on SVR4.
Sarathy's consolidated patches (for ties) included.
New filter stuff included.
Three patches from Larry (gv.c, toke.c, pp_ctl.c)
Patch and enjoy,
Andy Dougherty doughera@lafcol.lafayette.edu
Dept. of Physics
Lafayette College Easton, PA 18042
Here's the file-by-file breakdown of what's included:
Changes.Conf
Document changes in the Configure & build process.
Configure
Upgrade to metaconfig PL55.
Add /opt hierarchy to paths searched for programs.
Tye McQueen's updated std stdio testing.
Prompting for installation info for perl module pages.
Add possible SITELIB to include site-specific include directories.
By default this is disabled, but it seemed a neat idea now that
the standard perl library is getting so big.
Check that the compiler chosen exists and actually supports the
options the user specified.
Correctly sort multiple shared library version numbers.
Use a compile & link test for gconvert(), dlopen(), and dlerror().
Do not include build directory name in cppstdin wrapper.
MANIFEST
Updated.
Makefile.SH
Reorganized a bit to support separate install.perl and install.man
targets to use the new installman script and to accomodate those who
don't want to install the man pages.
Organize cleanup of .SH files a little better.
No longer automatically make the pod/*.man files. This is done by
installman only if requested.
Include additional error messages and info for regenerating the
automatically maintained header files.
Add 'minitest' target.
README
Updated.
README.vms
Fix perl5-porters subscription info.
config_H
Updated.
config_h.SH
Updated.
configpm
Embedded pod.
configure
GNU configure-like front end to metaconfig's Configure.
Only supports a few options.
doio.c
Updated to use new std stdio testing.
embed.h
Add new symbols for filtering.
global.sym
see embed.h.
gv.c
C<sub method;> patch from lwall.
hints/README.hints
Updated.
hints/aux.sh
Updated.
hints/cxux.sh
Updated.
hints/epix.sh
New file.
hints/freebsd.sh
Updated.
hints/irix_4.sh
Updated.
hints/irix_5.sh
Updated.
hints/irix_6.sh
Updated.
hints/linux.sh
Updated.
hints/powerunix.sh
Updated.
installman
New file to install pod/*.pod and lib/*.p(m|od) man pages.
installperl
Move installation of man pages over to installman script.
Install pod/*.pod files in $privlib/pod/.
Preserve timestamps on .a files.
makedepend.SH
Now includes . and .. in PATH to explicitly find cppstdin wrapper.
opcode.h
opcode.pl
shmwrite fix.
perl.c
Changed unofficial patchlevel message.
Included optional SITELIB directory.
perl.h
#include <memory.h>
cryptswitch gone/filters added.
EUNICE replaced by UNLINK_ALL_VERSIONS. Only matters for VMS.
perldoc.SH
New file.
pod/perl.pod
Describe where modpods are.
pp_ctl.c
sort bug fix from lwall.
pp_hot.c
csh glob bug fix from tchrist.
Sarathy's consolidated "tie" patch for NETaa13753 N 2 trey
pp_sys.c
Emulate flock with lockf, if possible.
Use new std stdio unit.
proto.h
Filters stuff.
prototype for unlnk() is only needed #if UNLINK_ALL_VERSIONS
sv.c
Sarathy's consolidated "tie" patch for NETaa13753 N 2 trey
Sarathy's consolidated patch for nested ties.
Use new std stdio unit.
t/comp/cpp.aux
New file. This only gets called if cppstdin is avaiable.
t/comp/cpp.t
Calls cpp.aux test only if cppstdin is available.
t/op/misc.t
Drop
perl -P -e 'use POSIX;' test.
it couldn't work on systems without the cppstdin wrapper
installed, and is usually misleading when it fails anyway.
toke.c
filter stuff.
fix for NETaa13798 from lwall.
unixish.h
undef UNLINK_ALL_VERSIONS since it's irrelevant for unix.
util.c
s/EUNICE/UNLINK_ALL_VERSIONS/ for the unlnk() function.
vms/config.vms
VMS updates from Charles Bailey.
std stdio updates to match changes in perl sources.
add UNLINK_ALL_VERSIONS constant, but leave it #undef.
vms/ext/MM_VMS.pm
vms/ext/VMS/stdio/stdio.xs
vms/perlvms.pod
vms/vms.c
VMS updates from Charles Bailey.
x2p/Makefile.SH
Updated to match man page Configure questions.
Slight clean-up on .SH targets.
x2p/str.c
Use new std stdio unit.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Configure
Updated to dist PL53.
Fix overlapping memcpy test.
Add check for ld. Use $cc instead, if on an ELF system.
With -d, don't reuse config.sh unless $myuname matches.
Warn more explicitly about changing compilers before reloading
old config.sh.
Detect Linux ELF format in nm scan.
Better detection of d_castneg. (ISC 4.1 was passing the test,
but couldn't cast in an argument list.)
Suggest -fpic for dynamic loading if you're using GNU CC under any
name.
No longer test for byacc, fmod, or drem, since they are not used.
Makefile.SH
Use $ld, not ld (only matters for SVR4)
Silence some byacc-related harmless error messages.
README
Suggest using -Dcc=gcc (or whatever).
Warn about reusing old config.sh. (The warning was already there
in 5.001; I've just expanded it a little.)
Warn against using GNU as and GNU ld on SunOS & Solaris.
config.H
config_h.SH
Updated to match Configure.
doio.c
Add socket includes.
ext/Fcntl/Fcntl.xs
Fix typo: s/SETFL/F_SETFL/;
handy.h
Check _G_HAVE_BOOL, not just if it's defined.
hints/dynix.sh
hints/hpux_9.sh
hints/linux.sh
hints/netbsd.sh
hints/titanos.sh
Updated. ELF on linux should probably work.
installperl
Install pod2html, pod2latex, and pod2man.
lib/ExtUtils/MakeMaker.pm
Updated to 4.091. (4.09 + a small writedoc() patch.)
myconfig
Now includes 'ld' command.
perl.c
Revised an #elif clause since Pyramid's cpp doesn't understand
#elif.
perl.h
Fix U_L, I_V, and I_32 cast macros to ensure that
the cast_ulong(), cast_iv(), and cast_i32() functions (if used)
are passed a double. In particular, the FIXSTATUS macros were
handing int's to U_L().
Remove unnecessary HAS_FMOD testing (See util.c).
proto.h
Remove my_fmod() prototype. (See util.c)
sv.h
Fix GV/CV typo.
util.c
Simplified cast_i32() and cast_iv() to mimic what *actually*
happens on a SPARC running SunOS 4.1.3. (Previously, they did
some complicated fmod() calculation. I've since discovered that's
not what happens on the SPARC.)
With this change, fmod() is no longer necessary. Hence my_fmod
is removed. This also means the HAS_FMOD and HAS_DREM tests are
no longer needed in Configure, so they are gone too.
vms/config.vms
Remove unnecessary HAS_FMOD and HAS_DREM defines.
x2p/Makefile.SH
Silence byacc-related things.
|
|
|
|
| |
[See the Changes file for a list of changes]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch addresses a few more Configure and build nits. Full
details are given below, but the main hightligths are (slightly)
better support for nested extensions and DLD and AIX MakeMaker fixes.
Configure
Detect MachTen. Thanks to Mark Pease <peasem@primenet.com>.
Delete some tabs that caused a MachTen /bin/sh core dump!
Detect extensions nested 1 level deep, e.g. Devel/DProf/DProf.xs
MANIFEST
MANIFEST.new
Include new hints/machten.sh hint file.
Makefile.SH
Document why we use ./makedir instead of mkdir.
U/Extensions.U
Detect extensions nested 1 level deep, e.g. Devel/DProf/DProf.xs
U/dist3_051.pat
Include MachTen patches.
configpm
Convert nested extension names from filesytem-dependent Devel/DProf
to perl5's internal naming scheme Devel::DProf.
doio.c
A dup-related buglet fix from Hallvard B. Furuseth
<h.b.furuseth@usit.uio.no>.
ext/DB_File/DB_File.pm
ext/DynaLoader/DynaLoader.pm
ext/Fcntl/Fcntl.pm
ext/GDBM_File/GDBM_File.pm
ext/POSIX/POSIX.pm
ext/Socket/Socket.pm
Throw a qw() around @ISA elements to show "good style".
hints/machten.sh
new file.
lib/ExtUtils/MakeMaker.pm
Bump version number to 4.086.
Fix AIX buglet -- needed to specify NAME.
Linux/DLD/gcc-2.6.2: We no longer load .sa libraries (except
libm.sa, which is apparently still o.k.
util.c
Another dup-related buglet fix.
|
|
|
|
|
|
|
|
|
|
|
| |
[editor's note: this commit combines approximate 4 months of furious
releases of Andy Dougherty and Larry Wall - see pod/perlhist.pod for
details. Andy notes that;
Alas neither my "Irwin AccuTrack" nor my DC 600A quarter-inch cartridge
backup tapes from that era seem to be readable anymore. I guess 13 years
exceeds the shelf life for that backup technology :-(.
]
|
|
|
|
| |
[editor's note: the sparc executables have not been included,
and emacs backup files have been removed]
|
|
|
|
|
| |
[the last one taken from the September '94 InfoMagic CD; a similar
style of cleanup as the previous commits was performed]
|
|
|
|
| |
[editor's note: cleaned up from the September '94 InfoMagic CD, just
like the last commit]
|
|
|
|
|
|
| |
[editor's note: the sparc executables have not been included,
and emacs backup files and other cruft such as patch backup files have
been removed. This was reconstructed from a tarball found on the
September 1994 InfoMagic CD]
|
|
|
|
|
|
|
| |
[editor's note: the sparc executables have not been included, and
emacs backup files have been removed. This was reconstructed from a
tarball found on the September 1994 InfoMagic CD; the date of this is
approximate]
|
|
|
|
|
| |
[editor's note: the sparc executables have not been included,
and emacs backup files have been removed]
|
|
|
|
| |
[editor's note: from history.perl.org. The sparc executables
originally included in the distribution are not in this commit.]
|
|
|
|
|
|
| |
Here's the typical cleanup patch that follows any large
set of patches. My testing organization is either too large
or too small, depending on how you look at it, sigh...
|
|
|
|
| |
See patch #20.
|
|
|
|
| |
See patch #11.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Subject: pack(hh,1) dumped core
Subject: read didn't work from character special files open for writing
Subject: close-on-exec wrongly set on system file descriptors
Subject: //g only worked first time through
Subject: perl -v printed incorrect copyright notice
Subject: certain pattern optimizations were botched
Subject: documented some newer features in addenda
Subject: $) and $| incorrectly handled in run-time patterns
Subject: added tests for case-insensitive regular expressions
Subject: m'$foo' now treats string as single quoted
|
|
|
|
| |
See patch #4.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Subject: Configure now handles defaults much better
Subject: Configure now knows if config.sh was built on this machine
Subject: Configure now checks file existence more efficiently
Subject: Configure now handles stupid SCO csh
Configure has been heavily revised. Many of the tests that used
to simply force a decision now check that decision against the
previous value of the variable, and offer to let you change it.
The default now is to keep the old value, so that you don't lose
information from your previous run.
Because of this, it's now more important to know whether, in fact,
config.sh was produced on this machine and on this version of
the operating system. config.sh now contains a lastuname variable
which contains the output of uname -a. If this matches the current
output of uname -a, Configure defaults to including the old config.sh.
Otherwise not. If there is no valid config.sh, then Configure looks
defaults for the current architecture in the hints/ subdirectory
instead. The guesswork I've done in this section of code is
phenomenal, so you'll have to instruct me where I've misparsed
the output of uname (a problem in portability all of its own).
Subject: Configure now differentiates getgroups() type from getgid() type
Subject: Configure now figures out malloc ptr type
Subject: Configure now does better on sprintf()
Configure was assuming that the array of values returned from
getgroups was the same type as the gids returned by other system
calls. Unfortunately, reality set in. Likewise for malloc() and
sprintf(), which there is only one portable way to find out the return
value of: try it one way or the other, and see if it blows up.
Subject: C flags are now settable on a per-file basis
Subject: reduced maximum branch distance in eval.c
Certain compilers and/or optimizers get bozoed out by large
compilation units, or by large structures within those units.
Previously, you either had to change the compiler flags for all
the files, or do hairy editing in Makefile.SH and remake the Makefile,
necessitating a make depend. Now there is a script called cflags.SH
whose duty it is to return the proper CFLAGS for any given C file.
You can change the flags in just one spot now and they will be
immediately reflected in the next make (or even in the current
make, if one is running). Eventually I expect that any of the hints
files could modify cflags.SH, but I haven't done that yet.
The particular problem of long jump offsets in eval.c has been at
least partially alleviated by locating some of the labels in the
middle of the function instead of at the end. This still doesn't
help the poor Vax when you compile with -g, since it puts a jump
to the end of the function to allocate the stack frame and then
jumps back to the beginning of the function to execute it. For
now Vaxen will have to stick with -O or hand assemble eval.c and
teval.c with a -J switch.
Subject: fixed "Bad free" error
Subject: fixed debugger coredump on subroutines
Subject: regexec only allocated space for 9 subexpresssions
These are problems that were reported on the net and had unofficial
patches. Now they have official patches. Be sure to patch a
copy of your files without the unofficial patches, or the patch
program will get confused.
Subject: you may now use "die" and "caller" in a signal handler
Someone pointed out that using die to raise an exception out
of a signal handler trashed the expression value stack if the
exception was caught by eval. While fixing that, I also fixed
the longstanding problem that signal handlers didn't have a normal
call frame, which prevented the caller function from working.
Subject: fixed undefined environ problem
Subject: hopefully straightened out some of the Xenix mess
Subject: random cleanup in cpp namespace
Just keeping up with the current progress in non-standardization.
Subject: fixed failed fork to return undef as documented
The open function returns undef on failed implicit forks. The Book
assumed that the same was true of an explicit fork. I've made the
function behave like the Book says. It's a pity there's no way
to have an undefined value that returns -1 in a numeric context
but false in a boolean context...
Subject: generalized the yaccpar fixer some
Thanks to Andy Dougherty, perly.fixer now knows how to fix SVR3 2.2's
yaccpar code to do dynamic parse stack allocation. He also made it
easy for other people to insert their code there. Hooray!
Subject: find2perl sometimes needs to stat on the 2nd leg of a -o
Subject: find2perl didn't correctly handle switches with an argument of 0
In attempting to delay the lstat to the last moment, in case a filename
could be rejected on the basis of its name, find2perl neglected to
take into account the fact that control might pass to the 2nd half
of a -o without executing all of the 1st half, in particular without
executing the lstat.
find2perl was wisely removing leading zeroes from numbers that would
mistakenly be interpreted as octal numbers by Perl. Unfortunately,
this caused it to delete the number 0 entirely.
Subject: fixed dumpvar not to dump internal debugging info
Subject: substr($ENV{"PATH"},0,0) = "/foo:" didn't modify environment
Subject: $foo .= <BAR> could cause core dump for certain lengths of $foo
Subject: perl -de "print" wouldn't stop at the first statement
Random glitchy little things.
Subject: I'm at NetLabs now
I'm now working for NetLabs, Inc., and I hadn't changed my
address everywhere.
|
|
|
|
| |
So far, 4.0 is still a beta test version. For the last production
version, look in pub/perl.3.0/kits@44.
|
|
|
|
| |
See patch #42.
|
|
|
|
| |
See patch #38.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I tried to take the strlen of an integer on systems without wait4()
or waitpid(). For some reason this didn't work too well...
In hash.c there was a call to dbm_nextkey() which needed to be
ifdefed on old dbm systems.
A pattern such as /foo.*bar$/ was wrongly optimized to do
tail matching on "foo". This was a longstanding bug that
was unmasked by patch 36.
Some systems have some SYS V IPC but not all of it. Configure
now figures this out.
Patch 36 put the user's PATH in front of Configures, but to make
it work right I needed to change all calls of loc to ./loc in
Configure.
$cryptlib needed to be mentioned in the Makefile.
Apollo 10.3 and Sun 3.5 have some compilation problems, so I
mentioned them in README.
Cray has weird restrictions on setjmp locations--you can't say
if (result = setjmp(...))
Random typos and cleanup.
|
|
|
|
| |
See patch #29.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Certain systems, notable Ultrix, set the close-on-exec flag
by default on dup'ed file descriptors. This is anti-social
when you're creating a new STDOUT. The flag is now forced
off for STDIN, STDOUT and STDERR.
Some yaccs report 29 shift/reduce conflicts and 59 reduce/reduce
conflicts, while other yaccs and bison report 27 and 61. The
Makefile now says to expect either thing. I'm not sure if there's
a bug lurking there somewhere.
The defined(@array) and defined(%array) ended up defining
the arrays they were trying to determine the status of. Oops.
Using the status of NSIG to determine whether <signal.h> had
been included didn't work right on Xenix. A fix seems to be
beyond Configure at the moment, so we've got some OS dependent
#ifdefs in there.
There were some syntax errors in the new code to determine whether
it is safe to emulate rename() with unlink/link/unlink. Obviously
heavily tested code... :-)
Patch 27 introduced the possibility of using identifiers as
unquoted strings, but the code to warn against the use of
totally lowercase identifiers looped infinitely.
I documented that you can't interpolate $) or $| in pattern.
It was actually implied under s///, but it should have been
more explicit.
Patterns with {m} rather than {m,n} didn't work right.
Tests io.fs and op.stat had difficulties under AFS. They now
ignore the tests in question if they think they're running under
/afs.
The shift/reduce expectation message was off for a2p's Makefile.
|
|
|
|
| |
See patch #19.
|
|
|
|
| |
See patch #16.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In patch 13, there was a fix to make the VAR=value construct
in a command force interpretation by the shell. This was botched,
causing an argv list to be occasionally allocated with too small
a size. This problem is hidden on some machines because of
BSD malloc's semantics.
The lib/dumpvar.pl file was missing final 1; which made it
difficult to tell if it loaded right.
The lib/termcap.pl Tgetent subroutine didn't interpret ^x right
due to a missing ord().
In the section of the man page that gives hints for C programmers,
it falsely declared that you can't subscript array values. As of
patch 13, this statement is "inoperative".
The t/op.sleep test assumed that a sleep of 2 seconds would always
return a value of 2 seconds slept. Depending on the load and
the whimsey of the scheduler, it could actually sleep longer than
2 seconds upon occasion. It now allows sleeps of up to 10 seconds.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I added the list slice operator: (LIST)[LIST]
$hexdigit = (0..9,'a','b','c','d','e','f')[$fourbits]
There was no way to cut stuff out of the middle of an array
or to insert stuff without copying the head and tail of the array,
which is gross. I added the splice operator to do this:
@oldelems = splice(@array,$offset,$len,LIST)
Equivalencies:
splice(@array,0,1)
splice(@array,0,0,$x,$y)
splice(@array,-1,1)
splice(@array,$#array+1,0,$x,$y)
splice(@array,$x,1,$y)
Having -lPW as one of the libraries that Configure looks for
was causing lots of people grief. It was only there for
people using bison who otherwise don't have alloca(), so I
zapped it.
Some of the questions that supported the ~name syntax didn't
say so, and some that should have supported it didn't. Now they do.
If you selected the manp directory for your man pages, the manext
variable was left set to 'n'.
When Configure sees that the optional libraries have previously
been determined in config.sh, it now believes it rather than using
the list it generates.
In the test for byteorder, some compilers get indigestion on the
constant 0x0807060504030201. It's now split into two parts.
Some compilers don't like it if you put CCFLAGS after the .c file
on the command line. Some of the Configure tests did this.
On some systems, the test for vprintf() needs to have stdio.h
included in order to give valid results.
Some machines don't support the volatile declaration as applied
to a pointer. The Configure test now checks for this.
Also, cmd.c had some VOLATILE declarations on pointed-to items
rather than the pointers themselves, causing MIPS heartburn.
In Makefile.SH, some of the t*.c files needed to have dependencies
on perly.h. Additionally, some parallel makes can't handle a
dependency line with two targets, so the perly.h and perl.c lines
have been separated. Also, when perly.h is generated, it will
now have a declaration added to it for yylval--bison wasn't supplying
this.
The construct "while (s/x//) {}" was partially fixed in patch 9, but
there were still some weirdnesses about it. Hopefully these are
ironed out now.
If you did a switch structure based on numeric value, and there
was some action attached to when the variable is greater than
the maximum specified value, that action would not happen. Instead,
any action for values under the minimum value happened.
The debugger had some difficulties after patch 9, due to changes
in the meaning of @array in a scalar context, and because of
an pointer error in patch 9.
Because of the fix in patch 9 to let return () work right, the
construct "return (@array)" did counter-intuitive things. It
now returns an array value. "return @array" and "return (@array)"
now mean the same thing.
A pack of ascii strings could call str_ncat() with negative length
when the length of the string was greater than the length specified
for the field.
Patch 9 fixed *name values so that the wouldn't collide with ordinary
string values, but there were two places I missed, one in perldb,
and one in the sprintf code.
Perl looks at commands it is going to execute to see if it can
bypass /bin/sh and execute them directly. Ordinarily = is not
a shell metacharacter, but in a command like "system 'FOO=bar command'"i
it indicates that /bin/sh should be used, since it's setting an
environment variable. It now does that (other than that construct,
the = character is still not a shell metacharacter).
If a runtime pattern to split happens to be null, it was being
interpreted as if it were a space, that is, as the awk-emulating
split. It now splits all characters apart, since that's more in
line with what people expect, and the other behavior wasn't documented.
Patch 9 added the reserved word "pipe". The scripts eg/g/gsh and
/eg/scan/scanner used pipe as filehandle since they were written
before the recommendation of upper-case filehandles was devised.
They now use PIPE.
The undef $/ command was supposed to let you slurp in an entire
binary file with one <>, but it didn't work as advertised.
Xenix systems have been having problems with Configure setting
up ndir right. Hopefully this will work better now, but it's
possible the changes will blow someone else up. Such is life...
The construct (LIST,) is now legal, so that you can say
@foo = (
1,
2,
3,
);
Various changes were made to the documentation.
In double quoted strings, you could say \0 to mean the null
character. In pattern matches, only \000 was allowed since
\0 was taken to be a \<digit> backreference. Since it doesn't
make sense to refer to the whole matched string before it's done,
there's no reason \0 can't mean null in a pattern too. So now
it does.
You could modify a numeric variable by using substr as an lvalue,
and if you then reference the variable numerically, you'd get
the old number out rather than one derived from the new string.
Now the old number is invalidated on lvalued substr.
The test t/op.mkdir should create directories 0777 rather than 0666.
As Randal requested, the last semicolon of a program is now optional.
Actually, he just asked for -e 'prog' to have that behaviour, but
it seemed reasonable to generalize it slightly. It's been that
way with eval for some time.
|
|
|
|
| |
See patch #9.
|
|
|
|
| |
See patch 7.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some machines have bcopy() but not bzero(), so Configure
tests for them separately now. Likewise for symlink() and lstat().
Some systems have dirent.h but not readdir(). The symbols BZERO,
LSTAT and READDIR are now used to differentiate.
Some machines have <time.h> including <sys/time.h>. Some do
the opposite. Some don't even have <sys/time.h>. Configure
now looks for both kinds of include, and the saga continues...
Configure tested twice for the presence of -lnm because x2p/Makefile.SH
had a reference to the obsolete $libnm variable. It now tests
only once.
Some machines have goodies stashed in /usr/include/sun,
/usr/include/bsd, -lsun and -lbsd. Configure now checks those
locations.
Configure could sometimes add an option to a default of none,
producing [none -DDEBUGGING] prompts. This is fixed.
Many of the units in metaconfig used the construct
if xxx=`loc...`; then
On most machines the exit status of loc ends up in $?, but on
a few machines, the assignment apparently sets $? to 0, since
it always succeeds. Oh well...
The tests for byte order had difficulties with illegal octal
digits and constants that were too long, as well as not defining
the union in try.c correctly.
When <dirent.h> was missing, it was assumed that the field d_namlen
existed. There is now an explicit check of <sys/dir.h> for the field.
The tests of <signal.h> to see how signal() is declared needed to have
signal.h run through the C preprocessor first because of POSIX ifdefs.
The type returned by getgroups() was defaulting wrong on Suns and
such. Configure now checks against the lint library if it exists
to produce a better default.
The construct
foreach $elem (@array) {
foreach $elem (@array) {
...
}
}
didn't work right because the iterator for the array was stored
with the array rather than with the node in the syntax tree.
If you said
defined $foo{'bar'}
it would create the element $foo{'bar'} while returning the
correct value. It now no longer creates the value.
The grep() function was occasionally losing arguments or dumping core.
This was because it called eval() on each argument but didn't
account for the fact that eval() is capable of reallocating the
stack.
If you said
$something ? $foo[1] : $foo[2]
you ended up (usually) with
$something ? $foo[0] : $foo[0]
because of the way the ?: operator tries to fool the stack into
thinking there's only one argument there instead of three. This
only happened to constant subscripts. Interestingly enough,
$abc[1] ? $foo[1] : $bar[1]
would have worked, since the first argument has the same subscript.
Some machines already define TRUE and FALSE, so we have to undef
them to avoid warnings.
Several people sent in some fixes for manual typos and indent problems.
There was a reqeust to clarify the difference between $! and $@, and
I added a gratuitous warning about print making an array context for
its arguments, since people seem to run into that frequently.
suidperl could correctly emulate a setgid script, but then it could
get confused about what the actual effective gid was.
Some machine or other defines sighandler(), so perl's sighandler()
needed to be made static.
We changed uchar to unchar for Crays, and it turns out that lots
of SysV machines typedef unchar instead. Sigh. It's now un_char.
If you did substitutions to chop leading components off a string,
and then set the string from <filehandle>, under certain circumstances
the input string could be corrupted because str_gets() called
str_grow() without making sure to change the strings current length to
be the number of characters just read, rather than the old length.
op.stat occasionally failed with NFS race condition, so it now waits
two seconds instead of one to guarantee that the NFS server advances
its clock at least one second.
IBM PC/RT compiler can't deal with UNI() and LOP() macros. If you
define CRIPPLED_CC it now will recast those macros as subroutines,
which runs a little slower but doesn't give the compiler heartburn.
The } character can terminate either an associative array subscript
or a BLOCK. These set up different expectations as to whether the
next token might be a term or an operator. There was a faulty
heuristic based on whether there was an intervening newline.
It turns out that if } simply leaves the current expectations along,
the right thing happens.
The command y/abcde// didn't work because the length of the first
part was not correctly copied to the second part.
In s2p, line labels without a subsequent statement were done wrong,
since an extra semicolon needs to be supplied. It wasn't always
suppplied, and when it was supplied, it was in the wrong place.
S2p also needed to remove its /tmp files better.
A2p translates
for (a in b)
to
foreach $a} (keys(%b))
on Pyramids, because index(s, '}' + 128) doesn't find a } with the
top bit set. This has been fixed.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Configure had difficulties if the user's path had weird components.
Now Configure appends the user's path to its own.
Some machines need <netinet/in.h> included in order to define
certain macros for packing or unpacking network order data.
On Suns, the shared library is used by default. If it doesn't
contain something contained in /lib/libc.a, then Configure was
getting things wrong (such as gethostent()). Now Configure uses
the shared library if it's there in preference to libc.a.
When gcc was selected as the compiler, the cc flags defaulted to
-fpcc_struct_return. Unfortunately, the underlines should be hyphens.
Configure figures out if BSD shadow passwords are installed and
the getpw* routines now return slightly different data in the
affected fields.
Some of the prompts in Configure with regard to gid and uid types
were unclear as to their intended use. They are now a little
clearer.
Sometimes you could change a .h file and taintperl and suidperl
didn't get remade correctly because of missing dependencies
in the Makefile.
The README file was misleading about the fact that you have to
say "make test" before you can "cd t; TEST"
The reverse operator was busted in two different ways. Should work
better now. There are now regression tests for it.
Some of the optimizations that perl does are disabled after period
of time if perl decides they aren't doing any good. One of these
caused a string to be freed that was later referenced via another
pointer, causing core dumps. The free turned out to be unnecessary,
so it was removed.
The unless modifier was broken when run under the debugger, due to
the invert() routine in perl.y inverting the logic on the DB
subroutine call instead of the command the unless was modifying.
Configure vfork test was backwards. It now works like other defines.
The numeric switch optimization was broken, and caused code to be
bypassed. This has been fixed.
A split in a subroutine that has no target splits into @_.
Unfortunately, this wrongly freed any referenced arguments passed
in through @_, causing confusing behavior later in the program.
File globbing (<foo.*>) left one orphaned string each time it
called the shell to do the glob.
RCS expanded an unintended $Header in lib/perldb.pl. This has
been fixed simply by replacing the $ with a .
Some forward declarations of static functions were missing from
malloc.c.
There's a strut in malloc for mips machines to extend the overhead
union to the size of a double. This was also enabled for sparc
machines.
DEC risc machines are reported to have a buggy memcmp. I've put
some conditional code into perl.h which I think will undef MEMCMP
appropriately.
In perl.man.4, I documented the desirability of using parens even
where they aren't strictly necessary.
I've grandfathered "format stdout" to be the same as "format STDOUT".
Unary operators can be called with no argument. The corresponding
function call form using empty parens () didn't work right, though
it did for certain functions in 2.0. It now works in 3.0.
The string ordering tests were wrong for pairs of strings in which
one string was a prefix of the other. This affected lt, le, gt,
ge, and the sort operator when used with no subroutine.
$/ didn't work with the stupid code used when STDSTDIO was undefined.
The stupid code has been replaced with smarter code that can do
it right. Special thanks to Piet van Oostrum for the code.
Goulds work better if the union in STR is at an 8 byte boundary.
The fields were rearranged somewhat to provide this.
"sort keys %a" should now work right (though parens are still
desirable for readability).
bcopy() needed a forward declaration on some machines.
In x2p/Makefile.SH, added dependency on ../config.sh so that it
gets linked down from above if it got removed for some reason.
|
|
A few of the new features: (18 Oct)
* Perl can now handle binary data correctly and has functions to pack and unpack binary structures into arrays or lists. You can now do arbitrary ioctl functions.
* You can now pass things to subroutines by reference.
* Debugger enhancements.
* An array or associative array may now appear in a local() list.
* Array values may now be interpolated into strings.
* Subroutine names are now distinguished by prefixing with &. You can call subroutines without using do, and without passing any argument list at all.
* You can use the new -u switch to cause perl to dump core so that you can run undump and produce a binary executable image. Alternately you can use the "dump" operator after initializing any variables and such.
* You can now chop lists.
* Perl now uses /bin/csh to do filename globbing, if available. This means that filenames with spaces or other strangenesses work right.
* New functions: mkdir and rmdir, getppid, getpgrp and setpgrp, getpriority and setpriority, chroot, ioctl and fcntl, flock, readlink, lstat, rindex, pack and unpack, read, warn, dbmopen and dbmclose, dump, reverse, defined, undef.
|