From: Gurusamy Sarathy To: clpa@stonehenge.com, perl-release-announce@perl.org cc: perl5-porters@perl.org, vmsperl@newman.upenn.edu, macperl-porters@macperl.org, perl-win32-porters@perl.org Message-Id: <200003281546.HAA20474@maul.ActiveState.com> Subject: Perl v5.6.0 released Date: Tue, 28 Mar 2000 07:46:13 -0800 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: http://www.cpan.org/src/perl-5.6.0.tar.gz and also: http://www.cpan.org/authors/id/GSAR/perl-5.6.0.tar.gz 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 "README.xxx" 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 "README.xxx", "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 deprecated.) + 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 default.) + 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 exists(&sub)). + Where possible, Perl does the sane thing to deal with buffered data automatically. + 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 deprecated. + 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 undefined. + 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 4.1.5.0 cc aix 4.3.1.0 cc aix-64all 4.3.2.0 cc CRAY_T3E-unicosmk 2.0.5.24 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 2.7.2.3 i386-freebsd 3.4-sta gcc 2.7.2.3 i386-freebsd 3.2-sta gcc 2.7.2.1 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 2.7.2.3 thr5005.t#19 fails i386-freebsd-thread 3.3-sta gcc 2.7.2.3 thr5005.t#19 fails i386-freebsd-thread 3.2-sta gcc 2.7.2.1 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 2.7.2.3 i386-freebsd-thread-multi 3.3-sta gcc 2.7.2.3 i386-freebsd-thread-multi 3.2-sta gcc 2.7.2.1 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 2.7.2.3 i686-linux 2.2.14 gcc 2.95.2 i686-linux-64int 2.2.14 gcc 2.7.2.3 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 2.7.2.3 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 2.7.2.3 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 2.7.2.3 sun4-solaris-thread 2.6 gcc 2.7.2.3 thr5005.t#19 fails sun4-solaris-thread-multi 2.6 gcc 2.7.2.3 sun4-solaris 2.5.1 gcc 2.95.2 x86-qnx 424 cc ---------------------------------------------------------------------------- Incompatibilities ---------------------------------------------------------------------------- Note that any new warnings that have been introduced are not considered incompatibilities. For details and potential workarounds, see "pod/perldelta.pod". + 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" first. + 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 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 operator raises an exception when applied to read-only values. + 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 followed by parentheses behaves like a list operator. This allows C to work as expected, but also changes C to mean C<(not(1,2,3))[0]> instead of C. + 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 base.pm, 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 perl.