This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl 5.003_03: [patch introduction and re-organisation]
[perl5.git] / Changes
diff --git a/Changes b/Changes
index fdd452d..c4e6c73 100644 (file)
--- a/Changes
+++ b/Changes
-Changes to perl
----------------
-
-Apart from little bug fixes, here are the new features:
-
-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 do i/o with sockets and select.
-
-You can now write packages with their own namespace.
-
-You can now pass things to subroutines by reference.
-
-The debugger now has hooks in the perl parser so it doesn't get confused.
-The debugger won't interfere with stdin and stdout.  New debugger commands:
-       n               Single step around subroutine call.
-       l min+incr      List incr+1 lines starting at min.
-       l               List incr+1 more lines.
-       l subname       List subroutine.
-       b subname       Set breakpoint at first line of subroutine.
-       S               List subroutine names.
-       D               Delete all breakpoints.
-       A               List line actions.
-       < command       Define command before prompt.
-       > command       Define command after prompt.
-       ! number        Redo command (default previous command).
-       ! -number       Redo numberth to last command.
-       h -number       Display last number commands (default all).
-       p expr          Same as \"print DBout expr\".
-
-The rules are more consistent about where parens are needed and
-where they are not.  In particular, unary operators and list operators now
-behave like functions if they're called like functions.
-
-There are some new quoting mechanisms:
-       $foo = q/"'"'"'"'"'"'"/;
-       $foo = qq/"'"''$bar"''/;
-       $foo = q(hi there);
-       $foo = <<'EOF' x 10;
-       Why, it's the old here-is mechanism!
-       EOF
-
-You can now work with array slices (note the initial @):
-       @foo[1,2,3];
-       @foo{'Sun','Mon','Tue','Wed','Thu','Fri','Sat'} = (1,2,3,4,5,6,7);
-       @foo{split} = (1,1,1,1,1,1,1);
-
-There's now a range operator that works in array contexts:
-       for (1..15) { ...
-       @foo[3..5] = ('time','for','all');
-       @foo{'Sun','Mon','Tue','Wed','Thu','Fri','Sat'} = 1..7;
-
-You can now reference associative arrays as a whole:
-       %abc = %def;
-       %foo = ('Sun',1,'Mon',2,'Tue',3,'Wed',4,'Thu',5,'Fri',6,'Sat',7);
-
-Associative arrays can now be bound to a dbm or ndbm file.  Perl automatically
-caches references to the dbm file for you.
-
-An array or associative array can now be assigned to as part of a list, if
-it's the last thing in the list:
-       ($a,$b,@rest) = split;
-
-An array or associative array may now appear in a local() list.
-       local(%assoc);
-       local(@foo) = @_;
+Please note: This file provides a summary of significant changes
+between versions and sub-versions of Perl, not a complete list
+of each modification.  If you'd like more detailed information,
+please consult the comments in the patches on which the relevant
+release of Perl is based.  (Patches can be found on any CPAN
+site, in the .../src/5.0 directory for full version releases,
+or in the .../src/5/0/unsupported directory for sub-version
+releases.)
 
-Array values may now be interpolated into strings:
-       `echo @ARGV`;
-       print "first three = @list[0..2]\n";
-       print "@ENV{keys(ENV)}";
-       ($" is used as the delimiter between array elements)
-
-Array sizes may be interpolated into strings:
-       print "The last element is $#foo.\n";
-
-Array values may now be returned from subroutines, evals, and do blocks.
-
-Lists of values in formats may now be arbitrary expressions, separated
-by commas.
-
-Subroutine names are now distinguished by prefixing with &.  You can call
-subroutines without using do, and without passing any argument list at all:
-       $foo = &min($a,$b,$c);
-       $num = &myrand;
-
-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.
-
-Perl now optimizes splits that are assigned directly to an array, or
-to a list with fewer elements than the split would produce, or that
-split on a constant string.
-
-Perl now optimizes on end matches such as /foo$/;
-
-Perl now recognizes {n,m} in patterns to match preceding item at least n times
-and no more than m times.  Also recognizes {n,} and {n} to match n or more
-times, or exactly n times.  If { occurs in other than this context it is
-still treated as a normal character.
-
-Perl now optimizes "next" to avoid unnecessary longjmps and subroutine calls.
-
-Perl now optimizes appended input: $_ .= <>;
-
-Substitutions are faster if the substituted text is constant, especially
-when substituting at the beginning of a string.  This plus the previous
-optimization let you run down a file comparing multiple lines more
-efficiently. (Basically the equivalents of sed's N and D are faster.)
-
-Similarly, combinations of shifts and pushes on the same array are much
-faster now--it doesn't copy all the pointers every time you shift (just
-every n times, where n is approximately the length of the array plus 10,
-more if you pre-extend the array), so you can use an array as a shift
-register much more efficiently:
-       push(@ary,shift(@ary));
-or
-       shift(@ary); push(@ary,<>);
-
-The shift operator used inside subroutines now defaults to shifting
-the @_ array.  You can still shift ARGV explicitly, of course.
-
-The @_ array which is passed to subroutines is a local array, but the
-elements of it are passed by reference now.  This means that if you
-explicitly modify $_[0], you are actually modifying the first argument
-to the routine.  Assignment to another location (such as the usual
-local($foo) = @_ trick) causes a copy of the value, so this will not
-affect most scripts.  However, if you've modified @_ values in the
-subroutine you could be in for a surprise.  I don't believe most people
-will find this a problem, and the long term efficiency gain is worth
-a little confusion.
-
-Perl now detects sequences of references to the same variable and builds
-switch statements internally wherever reasonable.
-
-The substr function can take offsets from the end of the string.
-
-The substr function can be assigned to in order to change the interior of a
-string in place.
-
-The split function can return as part of the returned array any substrings
-matched as part of the delimiter:
-       split(/([-,])/, '1-10,20')
-returns
-       (1,'-',10,',',20)
-
-If you specify a maximum number of fields to split, the truncation of
-trailing null fields is disabled.
-
-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.
-
-Perl can now report multiple syntax errors with a single invocation.
-
-Perl syntax errors now give two tokens of context where reasonable.
-
-Perl will now report the possibility of a runaway multi-line string if
-such a string ends on a line with a syntax error.
-
-The assumed assignment in a while now works in the while modifier as
-well as the while statement.
-
-Perl can now warn you if you use numeric == on non-numeric string values.
-
-New functions:
-       mkdir and rmdir
-       getppid
-       getpgrp and setpgrp
-       getpriority and setpriority
-       chroot
-       ioctl and fcntl
-       flock
-       readlink
-       lstat
-       rindex                  - find last occurrence of substring
-       pack and unpack         - turn structures into arrays and vice versa
-       read                    - just what you think
-       warn                    - like die, only not fatal
-       dbmopen and dbmclose    - bind a dbm file to an associative array
-       dump                    - do core dump so you can undump
-       reverse                 - turns an array value end for end
-        defined                 - does an object exist?
-        undef                   - make an object not exist
-       vec                     - treat string as a vector of small integers
-       fileno                  - return the file descriptor for a handle
-       wantarray               - was subroutine called in array context?
-       opendir
-       readdir
-       telldir
-       seekdir
-       rewinddir
-       closedir
-       syscall
-       socket
-       bind
-       connect
-       listen
-       accept
-       shutdown
-       socketpair
-       getsockname
-       getpeername
-       getsockopt
-       setsockopt
-       getpwnam
-       getpwuid
-       getpwent
-       setpwent
-       endpwent
-       getgrnam
-       getgrgid
-       getgrent
-       setgrent
-       endgrent
-       gethostbyname
-       gethostbyaddr
-       gethostent
-       sethostent
-       endhostent
-       getnetbyname
-       getnetbyaddr
-       getnetent
-       setnetent
-       endnetent
-       getprotobyname
-       getprotobynumber
-       getprotoent
-       setprotoent
-       endprotoent
-       getservbyname
-       getservbyport
-       getservent
-       setservent
-       endservent
-
-Changes to s2p
---------------
-
-In patterns, s2p now translates \{n,m\} correctly to {n,m}.
-
-In patterns, s2p no longer removes backslashes in front of |.
-
-In patterns, s2p now removes backslashes in front of [a-zA-Z0-9].
-
-S2p now makes use of the location of perl as determined by Configure.
-
-
-Changes to a2p
---------------
-
-A2p can now accurately translate the "in" operator by using perl's new
-"defined" operator.
-
-A2p can now accurately translate the passing of arrays by reference.
+----------------
+Version 5.003_03
+----------------
 
+Most of the changes in 5.003_03 are to make the build and installation
+process more robust.  The details are described below.  A very brief
+summary is:
+
+o Visible Changes to Core Functionality
+
+   -Support for tied filehandles.
+
+o Configure enhancements
+
+   -How to build and install a shared libperl.so is now documented
+    and supported, though it's not the default for most platforms.
+
+o Bug fixes
+
+   -Support bit operations on strings longer than 15 bytes.
+
+   -If a regex supplied to split() contains paranthesized subpatterns
+    that can result in null matches, perl no longer coredumps.
+
+   -Fix problems with each() on tied hashes.
+
+   -Make h2ph architecture-independent by using Config at run-time
+    rather than extraction time.
+
+o Specific Changes
+
+Here are the specific file-by-file changes.
+
+# This is my patch perl5.003_03.pat to perl5.003_02
+# The full description is below.
+# Please execute the following commands before applying this patch.
+# (You can feed this patch to 'sh' to do so.)
+#  Andy Dougherty              <doughera@lafcol.lafayette.edu>
+
+# Absorbed into Changes5.002
+rm -f Changes.Conf
+
+# Not needed.
+rm -f ext/POSIX/mkposixman.pl
+
+# Moved to README.os2.  I'm not sure why the README files are
+# here rather than in the appropriate subdirectories.
+rm -f os2/README
+
+# Not needed.
+rm -f pod/Makefile.PL
+
+# New test for bit ops.
+touch t/op/bob.t
+
+# Patches that create new tests don't always make them executable.
+chmod +x t/*/*.t
+
+# Create a new directory for Porting and Patching info.
+mkdir Porting
+
+exit 0
+
+This is patch perl5.003_03.pat to perl version 5.003_02.
+This takes you from 5.003_02 to 5.003_03.
+
+To apply this patch, run the above commands,
+cd to your perl source directory and then type
+
+       patch -p1 -N < perl5.003_03.pat
+
+The changes are described after each /^Index/ line below.  This is
+designed so you can examine each change with a command such as
+
+       csplit -k perl5.003_03.pat '/^Index:/' '{99}'
+
+Patch and enjoy,
+
+    Andy Dougherty             doughera@lafcol.lafayette.edu
+    Dept. of Physics
+    Lafayette College, Easton PA 18042
+
+Index: Changes
+
+       Include 5.003_03 change notes.
+
+       Move older change notes to separate files.
+
+Index: Changes5.000
+
+       New file.  Changes from perl4.036 to 5.000.
+
+Index: Changes5.001
+
+       New file.  Changes from 5.000 to 5.001
+
+Index: Changes5.002
+
+       New file.  Changes from 5.001 to 5.002
+
+Index: Changes5.003
+
+       New file.  Changes from 5.002 to 5.003
+
+Index: Configure
+
+       Relaxed warning about ksh on exotic machines.
+
+       Changed usesafe to useopcode.
+
+       Add search for gzip and zip.
+
+       Look more carefully for $sh (the Bourne-ish shell).
+       Use that info to set $startsh correctly.
+
+       Change prompts for PerlIO interface.  See INSTALL
+       for how this is supposed to work.  The default is
+       still the same as in 5.003_02, namely don't use
+       any fancy new PerlIO stuff.
+
+       Don't look for sigvec() since we don't actually use it.
+       (Plus, it used to print an alarming misleading message about
+       race conditions.)
+
+       Look for stdio's _filbuf under the possible names of
+       _filbuf, __filbuf, and _fill.
+
+       New $useshrplib variable to control whether we build a shared
+       libperl.so.  The name of the library is in $libperl.
+       Always install it in $installarchlib/CORE/$libperl.
+
+       Check for <sys/resource.h> and <sys/wait.h> for NetBSD.
+
+       Replace old $altmake stuff with newer autoconf-ish
+       $make_set_make, which checks if $make sets $(MAKE).  Now you
+       choose an alternate make with sh Configure -Dmake=gmake (or
+       whatever).
+
+       Remove 'ln' for the list of essential commands.  Simulate
+       it with 'cp' if necessary.
+
+       Change `logname` prompts to handle extra gratuitous spaces in
+       Ultrix output.
+
+       Autodetect os2.
+
+       Fix silly bug in checking for fully-qualified names in /etc/hosts.
+
+       Generalize Gconvert tests.  Give correct and more useful
+       error messages.
+
+       Use $obj_ext instead of literal '.o' in the dynaloader test.
+
+       Include appropriate header files in bcopy() and memcpy()
+       tests.  Note whether memmove is available.
+
+       Check whether struct sigaction works (needed for Solaris 2.5
+       with -Xc).
+
+       Include appropriate header files for randbits test.
+
+Index: INSTALL
+
+       Add note about space requirements.
+
+       Update to match Configure changes (Opcode vs. Safe,
+       useperlio, useshrplib, etc.)
+
+       Reorganize the structure of some of the hints.
+
+       Miscellaneous clarifications.
+
+Index: MANIFEST
+
+       Updated.  5.003_02 introduced some massive patches, mostly
+       due to spacing changes.  I didn't bother to sort them all out;
+       I just started with 5.003's MANIEFST.
+
+Index: Makefile.SH
+
+       Support the new simplified shared libperl mechanism.
+
+       Use new $make_set_make directive.
+
+       Remove redundant libperl Make variable.
+
+       Remove unnecessary MAB variable.
+
+       Remove dependency of minitest on lib/Config.pm, since it could
+       well have been a failure of configpm that inspired testing
+       miniperl in the first place!
+
+Index: Porting/Glossary
+
+       New file describing all the config.sh variables.
+       Eventually, I hope to fill this directory with other useful
+       stuff.
+
+Index: README.os2
+
+       Replace old README.os2 with more up-to-date os2/README.
+
+Index: config_H
+
+       Updated to match current Configure and config_h.SH.
+       Some rearrangement of parts has occurred due to new
+       dependencies in the metaconfig units.
+
+Index: config_h.SH
+
+       Updated to match current Configure and config_h.SH.
+       Some rearrangement of parts has occurred due to new
+       dependencies in the metaconfig units.
+
+       Include full descriptions of ARCHLIB, OLDARCHLIB, PRIVLIB,
+       SITEARCH, and SITELIB.  Previous versions just included the
+       ~-expanded names (with unhelpful descriptions).  No functionality
+       is changed, but maybe it's a little better documented now.
+
+Index: doio.c
+
+       Possibly Include <signal.h> and <unistd.h>
+
+Index: doop.c
+
+       No longer prefer bcmp over memcmp when order doesn't matter.
+
+       Support bit operations on strings longer than 15 bytes.
+
+Index: embed.h
+
+       Auto-generated.
+
+Index: embed.pl
+
+       Expand warning at the top.
+
+Index: ext/IO/IO.pm
+
+       Clean up docmentation installation errors.
+
+Index: ext/IO/lib/IO/Seekable.pm
+
+       Clean up docmentation installation errors.
+
+Index: ext/IO/lib/IO/Select.pm
+
+       Clean up docmentation installation errors.
+
+Index: ext/Opcode/Opcode.xs
+
+       Add support for tied filehandles.
+
+Index: ext/SDBM_File/sdbm/sdbm.h
+
+       Change the Mymalloc to match Perl_malloc in perl.h.
+
+Index: ext/util/make_ext
+
+       Typo change.
+       Get rid of unused altmake.
+
+Index: global.sym
+
+       Fix problems with each() on tied hashes.
+
+Index: handy.h
+
+       Change safe*alloc functions to have prototypes that
+       match the system's malloc and free types.  That is, use
+       Malloc_t instead of char *, and Free_t instead of void.
+       This is necessary so . . .
+
+       Safefree cast matches type of free() whether it's perl's
+       malloc/free or the system's malloc/free.
+
+Index: hints/README.hints
+
+       Remove out-of-date info.
+
+       Document a bit about how hint files work.
+
+Index: hints/aix.sh
+
+       qmaxmem hint doesn't apply to gcc.
+
+Index: hints/dgux.sh
+
+       Configure will now automatically detect shared libperl stuff.
+
+Index: hints/dynixptx.sh
+
+       Fix typo in comment.
+       
+       Configure will now automatically detect shared libperl stuff.
+
+Index: hints/epix.sh
+
+       Use glibpth instead of libpth.  This allows Configure to
+       add local directories, such as /opt/local/lib, etc.
+
+Index: hints/irix_6_2.sh
+
+       Include some info on cc -n32 compile.
+
+Index: hints/linux.sh
+
+       Configure now tests gcvt() more thoroughly.
+
+Index: hints/machten_2.sh
+
+       Update where to find dld.
+
+Index: hints/mips.sh
+
+       Use glibpth instead of libpth.
+
+Index: hints/next_3.sh
+
+       Build up $mab dynamically.  Since $mab isn't used anywhere
+       anymore, this is useless.  However, $mab was never used for
+       next_3.sh anyway, so there's been no change in functionality.
+
+Index: hints/next_4.sh
+
+       Get rid of extraneous isnext_4 variable.  Configure and
+       Makefile.SH will use $osname and $osvers instead.
+
+       Build up $mab dynamically based on available architectures.
+
+       Absorb $mab into ccflags and ccdlflags.  I hope that will
+       cover everything.  (Configure should automatically remove
+       the -arch stuff from cppflags.)
+
+       Configure now knows next4 needs to use a shared libperl.5.so.
+
+       Allow users to use -Dprefix.
+
+Index: hints/os2.sh
+
+       Try to update to reflect newer shared libperl stuff.
+       I probably goofed :-).
+
+Index: hints/sco.sh
+
+       Additional notes on using icc.
+
+       Additional flags for dynamic loading.
+
+Index: hints/solaris_2.sh
+
+       Perl.h no longer prefers bcmp, so it's again ok if Configure
+       finds them, since perl will prefer the mem* versions anyway.
+
+Index: hints/sunos_4_0.sh
+
+       Don't include <unistd.h>
+
+Index: hints/sunos_4_1.sh
+
+       Add brief note about GNU as and ld.
+
+       Don't include <unistd.h>
+
+       Add notes about WHOA THERE messages.
+
+Index: hints/titanos.sh
+
+       Include sfio in libswanted.
+
+       Don't set libpth any more.
+
+Index: hints/umips.sh
+
+       New hint file.
+
+Index: hv.c
+
+       Use memcmp even in cases where ordering doesn't matter.
+
+       Fix problems with each() on tied hashes.
+
+Index: installperl
+
+       Simplify installation of shared libperl.so.
+
+       Avoid reaching Command Failed!!! with /usr/bin/perl.
+
+Index: lib/AutoSplit.pm
+
+       Clean up docmentation installation errors.
+
+Index: lib/ExtUtils/MM_Unix.pm
+
+       Remove MAB references.
+
+       Use 'useshrplib' instead of 'd_shrplib'
+
+Index: lib/ExtUtils/MakeMaker.pm
+
+       Remove mab references.
+
+Index: lib/FindBin.pm
+
+       Clean up docmentation installation errors.
+
+Index: lib/Symbol.pm
+
+       Put back in the BEGIN { require 5.002; }.  The version in
+       5.003_02 wouldn't work in 5.002 anyway.  Further, the whole
+       point of the construct is to catch 5.001m, so we can't use
+       syntax introduced after 5.001m to do that.
+
+Index: lib/Text/Wrap.pm
+
+       Remove double 'use strict'.
+
+Index: lib/perl5db.pl
+
+       Add explicit '&' to avoid warnings under strict refs.
+
+Index: lib/sigtrap.pm
+
+       Clean up docmentation installation errors.
+
+Index: makedepend.SH
+
+       Use Configure's $sh and $make_set_make variables.
+
+Index: mg.c
+
+       Include <unistd.h>
+
+       Use Safefree() macro instead of safefree() function with
+       a (possibly) incorrect cast.  The whole point of the
+       Safefree() macro is that it does the correct cast for you.
+
+
+Index: patchlevel.h
+
+       Change to SUBVERSION 3.
+
+Index: perl.c
+
+       Include <unistd.h>
+
+Index: perl.h
+
+       No longer prefer bcmp slightly for comparisons that don't care
+       about ordering.
+
+       Rely on Configure setting SH_PATH.
+
+       Change the function name to Pause() instead of pause() to
+       avoid potential prototype problems.  (This naming convention
+       is similar to the Fwrite and Fflush macros.)
+
+       Fix problems with each() on tied hashes.
+
+       Work around crypt prototype problem on NeXT.
+
+Index: perlio.c
+
+       Fixes to support non-std stdio.
+
+Index: perlio.h
+
+       Try to document the various #defines a bit.  This is far from
+       finished.
+
+       Remove a lot of trailing whitespace.  (It's of no consequence, but
+       but I'm not going to redo the patch just to put back in the trailing
+       whitespace either.)
+
+Index: perlsdio.h
+
+       Fixes to support non-std stdio.
+
+Index: perly.c
+
+       Restore use of Safefree() macro.
+
+Index: perly.c.diff
+
+       Restore use of Safefree() macro.
+
+Index: perly.h
+
+       Delete duplicate line.
+
+Index: plan9/buildinfo
+
+       Update.
+
+Index: pod/perlapio.pod
+
+       Clean up docmentation installation errors.
+
+Index: pod/perlipc.pod
+
+       Fix typo.
+
+       Untaint port number.
+
+Index: pod/perlmod.pod
+
+       Fix a minor nit regarding Exporter.
+
+Index: pod/perlre.pod
+
+       Clean up docmentation installation errors.
+
+Index: pod/perltie.pod
+
+       Add support for tied filehandles.
+
+Index: pod/perltrap.pod
+
+       Clean up docmentation installation errors.
+
+Index: pod/perlxstut.pod
+
+       Clean up docmentation installation errors.
+
+Index: pod/pod2man.PL
+
+       Clean up docmentation installation errors.
+
+Index: pp.c
+
+       Add support for tied filehandles.
+
+       If a regex supplied to split() contains paranthesized subpatterns
+       that can result in null matches, perl coredumps.
+
+Index: pp_hot.c
+
+       Use memcmp instead of bcmp even when we don't care about order.
+
+       Add support for tied filehandles.
+
+Index: pp_sys.c
+
+       Include <unistd.h>, <sys/wait.h>, and <sys/resource.h>.
+       (The latter two are especially for NetBSD.)
+
+       Don't assume sys/time.h and sys/select.h can't coexist.
+
+       Use Pause macro.
+
+Index: proto.h
+
+       Fix safe*alloc and safefree prototypes.
+
+Index: regexec.c
+
+       Use memcmp instead of bcmp even when we don't care about order.
+
+Index: sv.c
+
+       Use memcmp instead of bcmp even when we don't care about order.
+
+Index: t/lib/opcode.t
+
+       Add support for tied filehandles.
+
+Index: t/op/bop.t
+
+       Support bit operations on strings longer than 15 bytes.
+
+Index: t/op/misc.t
+
+       Add support for tied filehandles.
+
+Index: t/op/split.t
+
+       If a regex supplied to split() contains paranthesized subpatterns
+       that can result in null matches, perl coredumps.
+
+Index: toke.c
+
+       Include <unistd.h>.
+
+       Use memcmp instead of bcmp even when we don't care about order.
+
+Index: util.c
+
+       Include <unistd.h>.
+
+       Use correct types for safe*alloc and safefree functions.
+
+Index: utils/h2ph.PL
+
+       Make h2ph architecture-independent by using Config at run-time
+       rather than extraction time.
+
+Index: writemain.SH
+
+       Remove unnecessary curlies.  (They are a leftover from
+       an older auto_init mechanism.)
+
+Index: x2p/Makefile.SH
+
+       Use Configure's $sh and $make_set_make.
+
+       Remove MAB stuff, since it's now in ccflags.
+
+       Keep 5.003's RCS info.
+
+Index: x2p/a2p.h
+
+       Keep 5.003's RCS info.
+
+Index: x2p/str.c
+
+       Use Configure's FILE_filbuf macro instead of a raw _filbuf.
+
+----------------
+Version 5.003_02
+----------------
+o Visible Changes to Core Functionality
+  - Redefining constant subs, or changing sub's prototype now give warnings.
+  - Fixes for ++/-- of values close to max/min size of an integer 
+  - Warning for un-qualified bareword as handler in $SIG{}. 
+  - UNIVERSAL::isa can now be called as static method. 
+
+o Changes in Core Internals
+  - PerlIO abstraction added.
+    Perl core and standard extensions no longer assume ANSI C's stdio is IO
+    mechanism, Default Configure mode is still to use stdio via set of C macros.
+    Alternate modes are to use stdio via one perlio.c module, or 
+    to use sfio if available.
+    
+  - Several bug fixs from perl5-porters
+      - Make sources non-ANSI C correct again.
+      - SUPER in gv.c 
+      - Last of shared-hash-key patches
+      - eval '(0,1..3)'; # --> SegFault
+      - coredumps after simple subsitutes.
+      - Correction to UNIVERSAL::VERSION docs.
+      - Fixed io_udp test.
+      - Fixed another abuse of malloc'ed memory.
+  - Enabled DEBUGING_MSTATS whenever perl's malloc() is used.
+  - Reverted to default of not hiding perl's malloc (if used). 
+
+o Changes in the Standard Library and Utilities
+  - Fixed MakeMaker for static SDBM and builing in a link tree.
+  - Upgraded to IO-1.09, and includes latest (still experimental) IO::Select. 
+  - Documentation/test tweak to DB_File
+  - h2xs upgrade to allow use C::Scan module 
+
+o Changes in OS-specific and Build-time Support
+  - Attempted to re-created 5.003_01's NeXT support with metaconfig units.
+  - Updated MANIFEST 
+  - make minitest now depends on lib/Config.pm, as some of tests require it. 
+  - Included latest plan9 sub-directory
+  - Applied OS/2 patches.
+  - Typo patch for VMS.
+
+----------------
+Version 5.003_01
+----------------
+
+Version 5.003_01 contains bugfixes and additions accumulated since
+version 5.002_01, since the patch to version 5.003 was deliberately
+kept simple.  In addition to numerous small bugfixes in the core,
+library files, and documentation, this patch contains several
+significant revisions, summarized below:
+
+o Visible Changes to Core Functionality
+
+  - A port to Plan9 has been started, and changes are integrated into
+    the standard distribution.  As of this release, the Perl core
+    and several common extensions are working.
+
+  - A set of basic methods in the UNIVERSAL class have been added to
+    the Perl core.  Since UNIVERSAL is an implicit member of every
+    class's @ISA, the methods can be called via any object.
+
+  - A mandatory warning has been added for 'declarations' of lexical
+    variables using the "my" operator which mask an existing lexical
+    variable declared in the same scope, making the previous variable
+    inaccessible by its name.
+
+  - The "use" and "require" operators have been extended to allow
+    checking of the required module's version.  The "use" operator
+    can now be used for an immediate version check of Perl itself.
+
+  - A new "strict" pragma, "strict untie", has been added, which
+    produces an error if a tied value is untied when other references
+    exist to the internal object implementing the tie.
+
+  - Barewords used as associative array keys (i.e. when specifying
+    an associative array element like $foo{__BAR} or on the left
+    side of the => operator) may now begin with an underscore as
+    well as an alphabetic character.
+
+  - Some of the configuration information previously produced by the
+    -v switch has been moved to the -V switch, in order to keep -v
+    output concise.
+
+o Changes in Core Internals
+
+  - Symbol table and method lookups have been made faster.
+
+  - Perl subroutines which just return a constant value are now
+    optimized at compile time into inline constants.
+
+  - Management of keys for associative arrays has been improved to
+    conserve space when the same keys are reused frequently, and
+    to pass true Perl values to tie functions, instead of stringified
+    representations.
+
+  - Messages normally output to stderr may be directed to another
+    stream when Perl is built.  This allows some platforms to
+    present diagnostic output in a separate window from normal
+    program results.
+
+  - A bug which caused suiperl to fail silently, albeit securely,
+    in version 5.003 on some systems has been fixed.
+
+  - Management of Unix-style signal handlers via the %SIG associative
+    array has been made safer.
+
+  - Several global C symbols have been renamed to eliminate collisions
+    with system C header files or libraries on some platforms.
+    Unfortunately, this means that dynamic extensions compiled under
+    previous versions of Perl will need to be rebuilt for Perl
+    5.003_01.  We're in the process of cleaning up Perl's C
+    namespace to make it easier to link Perl with other binaries,
+    so this will probably happen again between now and version 5.004.
+    After that, we'll do our best to maintain binary compatibility
+    between versions.
+
+  - An alternate allocation strategy has been added to Perl's
+    optional private memory management routines.  This strategy,
+    which may be selected when Perl is built, is designed to
+    conserve memory in programs which allocate many small
+    chunks of memory with sizes near a power of 2, as is often
+    the case in Perl programs.
+
+  - Several memory leaks in the creation and destruction of
+    multiple interpreters have been fixed.
+
+o Changes in the Standard Library and Utilities
+
+  - The Opcode extension, which allows you to control a program's
+    access to Perl operations, has been added to the standard
+    distribution.  This extends the work begun in the original
+    Safe extension, and subsumes it.  The Safe interface is still
+    available.
+
+  - The IO extension, which provides a set of classes for object-
+    oriented handling of common I/O tasks, has been added to the
+    standard distribution.  The IO classes will form the basis
+    for future development of Perl's I/O interface, and will
+    subsume the FileHandle class in the near future.  The default
+    class to which all Perl I/O handles belong is now IO::Handle,
+    rather than FileHandle.
+
+  - The ExtUtils::Embed library module, which provides a set
+    of utility function to help in embedding Perl in other
+    applications, has been added to the standard distribution.
+
+  - The Fatal library module, which provides a simple interface
+    for creating "do-or-die" equivalents of existing functions,
+    has been added to the standard distribution.
+
+  - The FindBin library module, which determines the full path
+    to the currently executing program, has been added to the
+    standard distribution.
+
+  - The DB_File extension, and the Getopt::Long, Test::Harness,
+    Text::Tabs, Text::Wrap, Time::Local and sigtrap library modules
+    have been updated to the authors' latest versions.
+
+  - The Carp library module now considers the @ISA chain when
+    determining the caller's package for inclusion in error messages.
+
+  - The h2xs, perlbug, and xsubpp utilities have been updated.
+
+  - The standard Perl debugger has been updated, and the information
+    provided to the debugger when an XSUB is called has been improved,
+    making it possible for alternate debuggers (such as Devel::DProf)
+    to do a better job of tracking XSUB calls.
+
+  - The pod documentation formatting tools in the standard distribution
+    can now handle characters in the input stream whose high bit is set.
+
+  - The cperl-mode EMACS editing mode has been updated.
+
+o Changes in Documentation
+
+  - Typographic and formatting errors have been corrected in the pod
+    documentation for the core and standard library files
+
+  - Explanations of several core operators have been improved
+
+  - The perldebug, perlembed, perlipc, perlsec, and perltrap documents
+    extensively revised.
+
+o Changes in OS-specific and Build-time Support
+
+  - Support for the NeXT platform has been extended through
+    NeXTSTEP/OPENSTEP 4.0, and now includes the ability to create MABs.
+
+  - Support for OS/2 has been extended as well, and now includes
+    options for building a.out binaries.
+
+  - Support for VMS has also been extended, incorporating improved
+    processing of file specification strings, optional suppression of
+    carriage control interpretation for record-structured files,
+    improved support for the -S command line switch, a number of
+    VMS-specific bugfixes, and significantly improved performance
+    in line-oriented reading of files.
+
+  - Several hints files have been added or updated: aux.sh (updated),
+    convexos.sh (updated), irix_4.sh (updated), irix_5.sh (updated),
+    irix_6_2.sh (updated), next_3.sh (updated), next_3_2.sh (new),
+    next_3_3.sh (new), next_4.sh (new), os2/sh (updated),
+    sco.sh (updated), and solaris_2.sh (updated).
+
+  - The test driver for the regression tests now reports when a set
+    of tests have been skipped (presumable because the operation
+    they're designed to test isn't supported on the current system).