Subject: Perl v5.6.0 released
To: None <,>
From: Gurusamy Sarathy <>
List: tech-pkg
Date: 03/28/2000 07:46:13
After almost two years of intense deliberation, patching, troubleshooting,
and testing, the Perl Porters are proud to bring you the newest major
release of Perl.  Welcome to Perl v5.6.0!

Perl v5.6.0 is a major release that incorporates all maintenance and
development changes since the last major release, 5.005.  As you may have
noticed, the version numbering has changed.  Releases will henceforth
be numbered as revision.version.subversion triples.  Maintenance releases
will have an even version component, while the version component for
development releases will be odd.  For example, the next maintenance
update of Perl 5.6.0 will be v5.6.1, and the development series will begin
life at v5.7.0.

There is much more to Perl v5.6.0 than just the fancy version number.
A brief summary of the significant changes and known issues is included
at the end.  A more expansive overview of these changes can be found in
the file "pod/perldelta.pod".  Specific logs are in the "Changes" file.

You can find Perl v5.6.0 from any of the Comprehensive Perl Archive Network
(CPAN) sites worldwide.  For example:

and also:

Perl continues to build and run on a vast number of platforms.  Virtually
all known and current Unix derivatives are supported, as are VMS, DOS,
OS/2, Windows, QNX, BeOS, and Darwin.  (But see below for platforms that
use the EBCDIC character set.)  There is a full list of supported platforms
in the file "pod/perlport.pod".  If you find that your platform is
unsupported, do let us know.

To build and install Perl, read the "INSTALL" document for Unix-like
platforms, and the port-specific "" files for others.

If everything went well, and all the tests passed, "make ok" will mail us
a report of your build configuration.  If not, run "make nok" and describe
your problems in detail.  Those two make targets run the "perlbug" utility,
located at "utils/perlbug".  If "perlbug" cannot determine how to send mail
from your system, you may have to let it save the report to a file, and
mail it to us at <>.

The "perlbug" program obviously cannot be used if you were unable to build
perl by the suggested methods.  If this is the case, please include the
output of the "myconfig" script, along with a detailed summary of what went
wrong, and send it to <>.  If Perl can be built fine, but
you have been unable to install it properly, "perlbug" can also be run as
"./perl -Ilib utils/perlbug".  Run it with the "-h" option to see a short
usage summary, and see the detailed documentation within the program
itself for more information on sending well-formed bug reports.

If after having successfully installed Perl, you find any bugs or
incompatibilities that aren't already mentioned in the documentation,
please use "perlbug" to report the problem.

Once again, be sure to read the "", "INSTALL", and
"pod/perldelta.pod" files for important information about this release.

Share and Enjoy!

--The Perl Porters

Short Summary of Changes

Here's a list of the significant changes since the 5.005 release.  If you
are running a Perl release older than 5.005, be sure to read through the
"pod/perl5005delta.pod" file for other important changes that are not
listed here.

For a more detailed overview of these changes, see "pod/perldelta.pod" in
the source distribution.  Incompatibilities and other known issues are
summarized further down.

    + Several experimental features, including: support for Unicode,
      fork() emulation on Windows, 64-bit support, lvalue subroutines,
      weak references, and new regular expression constructs.  See below
      for the full list.

    + Standard internal representation for strings is UTF-8.  (EBCDIC
      support has been discontinued because of this.)

    + Better support for interpreter concurrency.

    + Lexically scoped warning categories.

    + "our" declarations for global variables.

    + String literals can be written using character ordinals.  For example,
      v102.111.111 is the same as "foo".

    + New syntax for subroutine attributes.  (The attrs pragma is now

    + Filehandles can be autovivified.  For example:

          open my $foo, $file or die;

    + open() may be called with three arguments to avoid magic behavior.

    + Support for large files, where available (will be enabled by

    + CHECK blocks.  These are like END blocks, but will be called when
      the compilation of the main program ends.

    + POSIX character class syntax supported, e.g. /[[:alpha:]]/

    + pack() and unpack() support null-terminated strings, native data
      types, counted strings, and comments in templates

    + Support for binary numbers.

    + exists() and delete() work on array elements.  Existence of a
      subroutine (as opposed to its defined-ness) may also be checked with

    + Where possible, Perl does the sane thing to deal with buffered data

    + binmode() can be used to set :crlf and :raw modes on dosish platforms.
      The open pragma does the same in the lexical scope, allowing the
      mode to be set for backticks.

    + Many modules now come standard, including Devel::DProf, Devel::Peek,
      and Pod::Parser.

    + Many modules have been substantially revised or rewritten.

    + The JPL ("Java Perl Lingo") distribution comes bundled with Perl.

    + Most platform ports have improved functionality.  Support for EBCDIC
      platforms has been withdrawn due to standardization on UTF-8.

    + Much new documentation in the form of tutorials and reference
      information has been added.

    + Plenty of bug fixes.

The following features are considered experimental.  Their interfaces and
implementation are subject to change in future versions.  Some of these
are new features, and others were experimental features in earlier releases
that haven't yet made the grade.

    + Support for Unicode.  This is still incomplete, and has known bugs
      and limitations.

    + Support for threading, and the fork() emulation on Windows. The new
      "interpreter threads" support is not yet user-visible (except for the
      fork() emulation).  The 5.005 model of threads may be eventually

    + 64-bit support.  Mileage may vary among individual platforms.

    + The B Compiler suite, and the perlcc utility.

    + Lvalue subroutines.  Behavior of array and hash return values is

    + Weak references.  This isn't user-visible unless you get the WeakRef
      extension from CPAN.

    + The pseudo-hash data type.  This has improved much, but changes are
      still to be expected.

    + Internal implementation of file globbing via the File::Glob extension.
      Changes to improve compatibility with the older, external csh glob 
      may yet occur.

    + The DB module for access to the source level debugging API.

    + The regular expression constructs (?{ CODE }) and (??{ CODE }).

Tested Platforms

This release is known to build and pass all tests (with some expected
exceptions) on the following platforms:

    ARCHNAME                     OSVER     CC              NOTES
    alpha-dec_osf                4.0       cc
    alpha-dec_osf                4.0       gcc 2.95.1      lib/sdbm fails
    alpha-dec_osf-thread         4.0       cc              
    aix                   cc
    aix                   cc
    aix-64all             cc
    CRAY_T3E-unicosmk    cc
    cygwin                       1.1.0     gcc 2.95.2
    dos-djgpp                    DOS       gcc 2.95.2      posix.t#4 fails
    i386-AT386-gnu               0.2       gcc 2.95.2      warnings.t#370 fails
    i386-freebsd                 5.0-cur   gcc 2.95.2
    i386-freebsd                 4.0-cur   gcc 2.95.2
    i386-freebsd                 4.0-sta   gcc 2.95.2
    i386-freebsd                 3.3-sta   gcc
    i386-freebsd                 3.4-sta   gcc
    i386-freebsd                 3.2-sta   gcc
    i386-freebsd-thread          5.0-cur   gcc 2.95.2      thr5005.t#19 fails
    i386-freebsd-thread          4.0-sta   gcc 2.95.2      thr5005.t#19 fails
    i386-freebsd-thread          3.4-sta   gcc     thr5005.t#19 fails
    i386-freebsd-thread          3.3-sta   gcc     thr5005.t#19 fails
    i386-freebsd-thread          3.2-sta   gcc     thr5005.t#19 fails
    i386-freebsd-thread-multi    5.0-cur   gcc 2.95.2
    i386-freebsd-thread-multi    4.0-sta   gcc 2.95.2
    i386-freebsd-thread-multi    3.4-sta   gcc
    i386-freebsd-thread-multi    3.3-sta   gcc
    i386-freebsd-thread-multi    3.2-sta   gcc
    i386-linux                   2.2.12-20 egcs 2.91.66
    i386-lynxos-coff             3.1.0     gcc 2.9-gnupro-98r2
    i586-linux                   2.2.4     egcs 2.91.60
    i686-linux                   2.2.5-15  egcs 2.91.66
    i686-linux                   2.2.13    egcs 2.91.66
    i686-linux                   2.0.36    gcc
    i686-linux                   2.2.14    gcc 2.95.2
    i686-linux-64int             2.2.14    gcc
    i686-linux-multi             2.2.5     egcs 2.91.66
    i686-linux-thread            2.2.14    gcc 2.95.2
    i686-linux-thread-multi      2.2.5-15  egcs 2.91.66
    i686-linux-thread-multi      2.0.36    gcc
    i686-linux-thread-64int      2.2.14    gcc 2.95.2
    i86pc-solaris                2.7       gcc 2.95.1
    IP27-irix                    6.5       cc -n32
    IP27-irix-64bit              6.5       cc -n32
    IP27-irix-64all              6.5       cc -64
    MSWin32-x86                  NT4.0     Borland C 5.02
    MSWin32-x86                  NT4.0     gcc 2.95.2      io_xs.t may fail
    MSWin32-x86                  NT4.0     Visual C 6.0
    MSWin32-x86-multi            NT4.0     Borland C 5.02
    MSWin32-x86-multi            NT4.0     gcc 2.95.2      io_xs.t may fail
    MSWin32-x86-multi            NT4.0     Visual C 6.0
    MSWin32-x86-thread           NT4.0     Borland C 5.02  thr5005.t#19 fails
    MSWin32-x86-thread           NT4.0     gcc 2.95.2      thr5005.t#19, io_xs.t may fail
    MSWin32-x86-thread           NT4.0     Visual C 6.0    thr5005.t#19 fails
    MSWin32-x86-multi-thread     NT4.0     Borland C 5.02
    MSWin32-x86-multi-thread     NT4.0     gcc 2.95.2      io_xs.t may fail
    MSWin32-x86-multi-thread     NT4.0     Visual C 6.0
    os2                          2.30      gcc 2.8.1
    ppc-linux                    2.2.14    gcc 2.95.2
    ppc-linux                    2.2.15p3  gcc 2.95.2
    ppc-linux-64int              2.2.15p3  gcc 2.95.2
    ppc-linux-thread-multi       2.2.15p3  gcc 2.95.2
    ppc-linux-thread-multi-64int 2.2.15p3  gcc 2.95.2
    ppc-powerux                  4.3       ec
    powerpc-machten              4.1.4     gcc 2.8.1       warnings.t#257 fails
    PA-RISC1.1                   10.20     gcc 2.95.2
    PA-RISC1.1                   11.00     gcc 2.95.2
    PA-RISC1.1                   11.00     cc              lib/odbm fails
    PA-RISC2.0                   10.20     gcc 2.95.2
    PA-RISC2.0                   11.00     cc
    PA-RISC2.0-64bitall          11.00     cc              lib/io_multihomed may hang
    RM600-svr4                   5.42      cc
    sun4-solaris                 2.8       gcc 2.8.1
    sun4-solaris                 2.7       gcc 2.8.1
    sun4-solaris                 2.7       gcc 2.95.2
    sun4-solaris                 2.6       cc
    sun4-solaris                 2.6       gcc
    sun4-solaris                 2.6       gcc 2.8.1
    sun4-solaris-64bit           2.6       gcc 2.8.1
    sun4-solaris-64int           2.7       gcc 2.95.1
    sun4-solaris-multi           2.6       gcc
    sun4-solaris-thread          2.6       gcc     thr5005.t#19 fails
    sun4-solaris-thread-multi    2.6       gcc
    sun4-solaris                 2.5.1     gcc 2.95.2
    x86-qnx                      424       cc


Note that any new warnings that have been introduced are not considered
incompatibilities.  For details and potential workarounds, see

    + Compatibility macros for global variables are not available by
      default, to control namespace pollution.  If older extensions don't
      build because of missing symbols, try "perl Makefile.PL POLLUTE=1"

    + Subroutines named CHECK are considered special, and will be
      automatically executed when the compilation of the main program ends.
      Rename such functions to lower/mixed case.

    + $English::PERL_VERSION is now an alias for $^V (a string) rather
      than $] (a number).  You may need to use the "%vd" sprintf format
      to display this correctly.

    + Literals of the form 1.2.3 parse as C<chr(1) . chr(2) . chr(3)>
      rather than as C<"1.2" . 3>.

    + rand() may yield a different (but usually more random) sequence due
      to internal changes.

    + Iterating over hashes may yield a different order than before due
      to changes in the hashing function used.

    + The C<undef> operator raises an exception when applied to read-only

    + The close-on-exec bit is now set on pipe and socket handles as well,
      if you set $^F high enough.

    + C<"$$1"> always means C<"${$1}" now, rather than C<$$ . "1"> (which
      was deprecated in 5.004).

    + delete(), each(), values() and \(%h) operate on aliases to values,
      instead of on copies.  You may need to copy the values explicitly
      where needed.

    + vec() will raise an exception if the BITS argument is not a
      power-of-two integer.

    + C<not> followed by parentheses behaves like a list operator.  This
      allows C<grep not($_), @things> to work as expected, but also changes
      C<not (1,2,3)[0]> to mean C<(not(1,2,3))[0]> instead of

    + The semantics of the bareword prototype (*) has changed to make it
      possible to pass barewords, as in many builtins.

    + Bitwise operators on 64-bit platforms operate on the entire native
      width rather than just the lower 32 bits.  (You must mask off the
      excess bits if you don't want them.)

    + More builtins taint their results due to higher security paranoia.
      Run Configure with -Accflags=-DINCOMPLETE_TAINTS if you don't want
      the excess tainting behaviors.

    + Specifying one of usemultiplicity, usethreads or any of the 64-bit
      support options to Configure will build a perl that will not be
      binary compatible with 5.005.  You will need to recompile all
      extensions if you do this.  Accepting all the Configure defaults
      should generally provide binary compatibility with a perl 5.005
      built in the same way.
    + If you have a perl installation older than 5.005, note that 5.6.0
      won't be binary compatible with it.  You will need to recompile
      all extensions when upgrading from installations older than 5.005.

Known Issues

The following issues have come to our attention at the time of writing,
and since the 5.6.0 release.  They will be addressed in a future maintenance
version of Perl.

    + UNIVERSAL::isa() may report a bogus value after the base pragma has
      been used.  This is due to a bug in the caching done by
      UNIVERSAL::isa() that also exists in 5.005_0x.  The problem is
      now tickled by the new version of, which happens to use
      UNIVERSAL::isa() internally.

    + Unicode support still has various known bugs.

       * join() misinterprets its first argument as bytes even if the
         bytes pragma has not been enabled.  (This only impacts results
         if the first argument is Unicode.)

       * $str1 eq $str2 may not compare correctly if only one of the
         arguments came from a Unicode source.

       * A literal such as v2000 may be incorrectly parsed as a bareword
         rather than as a Unicode character if Perl is expecting to read
         a statement.  Use +v2000 if you hit this bug.

    + Results of building Perl on AIX (in particular, 4.2.x) have been
      mixed.  Disabling compiler optimizations seems to build a working