-New things
-----------
- The -w switch is much more informative.
+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.)
- References. See t/op/ref.t for examples. All entities in Perl 5 are
- reference counted so that it knows when each item should be destroyed.
+----------------
+Version 5.003_03
+----------------
- Objects. See t/op/ref.t for examples.
+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:
- => is now a synonym for comma. This is useful as documentation for
- arguments that come in pairs, such as initializers for associative arrays,
- or named arguments to a subroutine.
+o Visible Changes to Core Functionality
- All functions have been turned into list operators or unary operators,
- meaning the parens are optional. Even subroutines may be called as
- list operators if they've already been declared.
+ -Support for tied filehandles.
- More embeddible. See main.c and embed_h.sh. Multiple interpreters
- in the same process are supported (though not with interleaved
- execution yet).
+o Configure enhancements
- The interpreter is now flattened out. Compare Perl 4's eval.c with
- the perl 5's pp.c. Compare Perl 4's 900 line interpreter loop in cmd.c
- with Perl 5's 1 line interpreter loop in run.c. Eventually we'll make
- everything non-blocking so we can interface nicely with a scheduler.
+ -How to build and install a shared libperl.so is now documented
+ and supported, though it's not the default for most platforms.
- eval is now treated more like a subroutine call. Among other things,
- this means you can return from it.
+o Bug fixes
- Format value lists may be spread over multiple lines by enclosing in
- a do {} block.
+ -Support bit operations on strings longer than 15 bytes.
- You may now define BEGIN and END subroutines for each package. The BEGIN
- subroutine executes the moment it's parsed. The END subroutine executes
- just before exiting.
+ -If a regex supplied to split() contains paranthesized subpatterns
+ that can result in null matches, perl no longer coredumps.
- Flags on the #! line are interpreted even if the script wasn't
- executed directly. (And even if the script was located by "perl -x"!)
+ -Fix problems with each() on tied hashes.
- The ?: operator is now legal as an lvalue.
+ -Make h2ph architecture-independent by using Config at run-time
+ rather than extraction time.
- List context now propagates to the right side of && and ||, as well
- as the 2nd and 3rd arguments to ?:.
+o Specific Changes
- The "defined" function can now take a general expression.
+Here are the specific file-by-file changes.
- Lexical scoping available via "my". eval can see the current lexical
- variables.
+# 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>
- The preferred package delimiter is now :: rather than '.
+# Absorbed into Changes5.002
+rm -f Changes.Conf
- tie/untie are now preferred to dbmopen/dbmclose. Multiple DBM
- implementations are allowed in the same executable, so you can
- write scripts to interchange data among different formats.
+# Not needed.
+rm -f ext/POSIX/mkposixman.pl
- New "and" and "or" operators work just like && and || but with
- a precedence lower than comma, so they work better with list operators.
+# Moved to README.os2. I'm not sure why the README files are
+# here rather than in the appropriate subdirectories.
+rm -f os2/README
- New functions include: abs(), chr(), uc(), ucfirst(), lc(), lcfirst(),
- chomp(), glob()
+# Not needed.
+rm -f pod/Makefile.PL
- require with a number checks to see that the version of Perl that is
- currently running is at least that number.
+# New test for bit ops.
+touch t/op/bob.t
- Dynamic loading of external modules is now supported.
+# Patches that create new tests don't always make them executable.
+chmod +x t/*/*.t
- There is a new quote form qw//, which is equivalent to split(' ', q//).
+# Create a new directory for Porting and Patching info.
+mkdir Porting
- Assignment of a reference to a glob value now just replaces the
- single element of the glob corresponding to the reference type:
- *foo = \$bar, *foo = \&bletch;
+exit 0
- Filehandle methods are now supported:
- output_autoflush STDOUT 1;
+This is patch perl5.003_03.pat to perl version 5.003_02.
+This takes you from 5.003_02 to 5.003_03.
- There is now an "English" module that provides human readable translations
- for cryptic variable names.
+To apply this patch, run the above commands,
+cd to your perl source directory and then type
- Autoload stubs can now call the replacement subroutine with goto &realsub.
+ patch -p1 -N < perl5.003_03.pat
- Subroutines can be defined lazily in any package by declaring an AUTOLOAD
- routine, which will be called if a non-existent subroutine is called in
- that package.
+The changes are described after each /^Index/ line below. This is
+designed so you can examine each change with a command such as
- Several previously added features have been subsumed under the new
- keywords "use" and "no". Saying "use Module LIST" is short for
- BEGIN { require Module; import Module LIST; }
- The "no" keyword is identical except that it calls "unimport" instead.
- The earlier pragma mechanism now uses this mechanism, and two new
- modules have been added to the library to implement "use integer"
- and variations of "use strict vars, refs, subs".
+ csplit -k perl5.003_03.pat '/^Index:/' '{99}'
- Variables may now be interpolated literally into a pattern by prefixing
- them with \Q, which works just like \U, but backwhacks non-alphanumerics
- instead. There is also a corresponding quotemeta function.
+Patch and enjoy,
- Any quantifier in a regular expression may now be followed by a ? to
- indicate that the pattern is supposed to match as little as possible.
+ Andy Dougherty doughera@lafcol.lafayette.edu
+ Dept. of Physics
+ Lafayette College, Easton PA 18042
- Pattern matches may now be followed by an m or s modifier to explicitly
- request multiline or singleline semantics. An s modifier makes . match
- newline.
+Index: Changes
- Patterns may now contain \A to match only at the beginning of the string,
- and \Z to match only at the end. These differ from ^ and $ in that
- they ignore multiline semantics. In addition, \G matches where the
- last interation of m//g or s///g left off.
+ Include 5.003_03 change notes.
- Non-backreference-producing parens of various sorts may now be
- indicated by placing a ? directly after the opening parenthesis,
- followed by a character that indicates the purpose of the parens.
- An :, for instance, indicates simple grouping. (?:a|b|c) will
- match any of a, b or c without producing a backreference. It does
- "eat" the input. There are also assertions which do not eat the
- input but do lookahead for you. (?=stuff) indicates that the next
- thing must be "stuff". (?!nonsense) indicates that the next thing
- must not be "nonsense".
+ Move older change notes to separate files.
- The negation operator now treats non-numeric strings specially.
- A -"text" is turned into "-text", so that -bareword is the same
- as "-bareword". If the string already begins with a + or -, it
- is flipped to the other sign.
+Index: Changes5.000
-Incompatibilities
------------------
- @ now always interpolates an array in double-quotish strings. Some programs
- may now need to use backslash to protect any @ that shouldn't interpolate.
+ New file. Changes from perl4.036 to 5.000.
- Ordinary variables starting with underscore are no longer forced into
- package main.
+Index: Changes5.001
- s'$lhs'$rhs' now does no interpolation on either side. It used to
- interplolate $lhs but not $rhs.
+ New file. Changes from 5.000 to 5.001
- The second and third arguments of splice are now evaluated in scalar
- context (like the book says) rather than list context.
+Index: Changes5.002
- Saying "shift @foo + 20" is now a semantic error because of precedence.
+ New file. Changes from 5.001 to 5.002
- "open FOO || die" is now incorrect. You need parens around the filehandle.
+Index: Changes5.003
- The elements of argument lists for formats are now evaluated in list
- context. This means you can interpolate list values now.
+ New file. Changes from 5.002 to 5.003
- You can't do a goto into a block that is optimized away. Darn.
+Index: Configure
- It is no longer syntactically legal to use whitespace as the name
- of a variable, or as a delimiter for any kind of quote construct.
+ Relaxed warning about ksh on exotic machines.
- Some error messages will be different.
+ Changed usesafe to useopcode.
- The caller function now returns a false value in a scalar context if there
- is no caller. This lets library files determine if they're being required.
+ Add search for gzip and zip.
- m//g now attaches its state to the searched string rather than the
- regular expression.
+ Look more carefully for $sh (the Bourne-ish shell).
+ Use that info to set $startsh correctly.
- "reverse" is no longer allowed as the name of a sort subroutine.
+ 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.
- taintperl is no longer a separate executable. There is now a -T
- switch to turn on tainting when it isn't turned on automatically.
+ Don't look for sigvec() since we don't actually use it.
+ (Plus, it used to print an alarming misleading message about
+ race conditions.)
- Symbols starting with _ are no longer forced into package main, except
- for $_ itself (and @_, etc.).
+ Look for stdio's _filbuf under the possible names of
+ _filbuf, __filbuf, and _fill.
- Double-quoted strings may no longer end with an unescaped $ or @.
+ 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.
- Negative array subscripts now count from the end of the array.
+ Check for <sys/resource.h> and <sys/wait.h> for NetBSD.
- The comma operator in a scalar context is now guaranteed to give a
- scalar context to its arguments.
+ 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).
- The ** operator now binds more tightly than unary minus.
+ Remove 'ln' for the list of essential commands. Simulate
+ it with 'cp' if necessary.
- Setting $#array lower now discards array elements so that destructors
- work reasonably.
+ Change `logname` prompts to handle extra gratuitous spaces in
+ Ultrix output.
- delete is not guaranteed to return the old value for tied arrays,
- since this capability may be onerous for some modules to implement.
+ Autodetect os2.
- Attempts to set $1 through $9 now result in a run-time error.
+ 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).