=head1 NAME
-perl571delta - what's new for perl v5.7.2
+perl572delta - what's new for perl v5.7.2
=head1 DESCRIPTION
usually the system malloc on such platforms are much better optimized
for such large memory models than the Perl malloc.
-=head2 Future Deprecations
+=head2 AIX Dynaloading
+
+The AIX dynaloading now uses in AIX releases 4.3 and newer the native
+dlopen interface of AIX instead of the old emulated interface. This
+change will probably break backward compatibility with compiled
+modules. The change was made to make Perl more compliant with other
+applications like modperl which are using the AIX native interface.
+
+=head2 Socket Extension Dynamic in VMS
+
+The Socket extension is now dynamically loaded instead of being
+statically built in. This may or may not be a problem with ancient
+TCP/IP stacks of VMS: we do not know since we weren't able to test
+Perl in such configurations.
+
+=head2 Different Definition of the Unicode Character Classes \p{In...}
+
+As suggested by the Unicode consortium, the Unicode character classes
+now prefer I<scripts> as opposed to I<blocks> (as defined by Unicode);
+in Perl, when the C<\p{In....}> and the C<\p{In....}> regular expression
+constructs are used. This has changed the definition of some of those
+character classes.
+
+The difference between scripts and blocks is that scripts are the
+glyphs used by a language or a group of languages, while the blocks
+are more artificial groupings of 256 characters based on the Unicode
+numbering.
+
+In general this change results in more inclusive Unicode character
+classes, but changes to the other direction also do take place:
+for example while the script C<Latin> includes all the Latin
+characters and their various diacritic-adorned versions, it
+does not include the various punctuation or digits (since they
+are not solely C<Latin>).
+
+Changes in the character class semantics may have happened if a script
+and a block happen to have the same name, for example C<Hebrew>.
+In such cases the script wins and C<\p{InHebrew}> now means the script
+definition of Hebrew. The block definition in still available,
+though, by appending C<Block> to the name: C<\p{InHebrewBlock}> means
+what C<\p{InHebrew}> meant in perl 5.6.0. For the full list
+of affected character classes, see L<perlunicode/Blocks>.
+
+=head2 Deprecations
The current user-visible implementation of pseudo-hashes (the weird
use of the first array element) is deprecated starting from Perl 5.8.0
-and will be removed in Perl 5.10.0, and the feature will be implemented
-differently. Not only is the current interface rather ugly, but the
-current implementation slows down normal array and hash use quite
-noticeably. The 'fields' pragma interface will remain available.
+and will be removed in Perl 5.10.0, and the feature will be
+implemented differently. Not only is the current interface rather
+ugly, but the current implementation slows down normal array and hash
+use quite noticeably. The C<fields> pragma interface will remain
+available.
+
+The syntaxes C<< @a->[...] >> and C<< @h->{...} >> have now been deprecated.
The suidperl is also considered to be too much a risk to continue
maintaining and the suidperl code is likely to be removed in a future
release.
+The C<package;> syntax (C<package> without an argument has been
+deprecated. Its semantics were never that clear and its
+implementation even less so. If you have used that feature to
+disallow all but fully qualified variables, C<use strict;> instead.
+
+The chdir(undef) and chdir('') behaviors to match chdir() has been
+deprecated. In future versions, chdir(undef) and chdir('') will
+simply fail.
+
=head1 Core Enhancements
-In general a lot of fixing has happened in the area of Perl's understanding
-of numbers, both integer and floating point. Since in many systems the
-standard number parsing functions like C<strtoul()> and C<atof()> seem
-to have bugs, Perl tries to work around their deficiencies. This results
-hopefully in more accurate numbers.
+In general a lot of fixing has happened in the area of Perl's
+understanding of numbers, both integer and floating point. Since in
+many systems the standard number parsing functions like C<strtoul()>
+and C<atof()> seem to have bugs, Perl tries to work around their
+deficiencies. This results hopefully in more accurate numbers.
=over 4
=item *
-VMS now works under PerlIO.
+GMAGIC (right-hand side magic) could in many cases such as string
+concatenation be invoked too many times.
=item *
-GMAGIC (right-hand side magic) could in many cases such as concatenation
-of string be invoked too many times.
+Lexicals I: lexicals outside an eval "" weren't resolved
+correctly inside a subroutine definition inside the eval "" if they
+were not already referenced in the top level of the eval""ed code.
=item *
-The MAGIC constants (e.g. C<'P'>) have been macrofied
-(e.g. C<PERL_MAGIC_TIED>) for better source code readability
-and maintainability.
+Lexicals II: lexicals leaked at file scope into subroutines that
+were declared before the lexicals.
+
+=item *
+
+Lvalue subroutines can now return C<undef> in list context.
=item *
=item *
+A new special regular expression variable has been introduced:
+C<$^N>, which contains the most-recently closed group (submatch).
+
+=item *
+
L<utime> now supports C<utime undef, undef, @files> to change the
-times to the current time.
+file timestamps to the current time.
=item *
The Perl parser has been stress tested using both random input and
Markov chain input.
+=item *
+
+C<eval "v200"> now works.
+
+=item *
+
+VMS now works under PerlIO.
+
+=item *
+
+END blocks are now run even if you exit/die in a BEGIN block.
+The execution of END blocks is now controlled by
+PL_exit_flags & PERL_EXIT_DESTRUCT_END. This enables the new
+behaviour for perl embedders. This will default in 5.10. See
+L<perlembed>.
+
=back
=head1 Modules and Pragmata
-=head2 New Modules and Distribution
+=head2 New Modules and Distributions
=over 4
=item *
+L<I18N::Langinfo> - query locale information
+
+=item *
+
L<I18N::LangTags> - functions for dealing with RFC3066-style language tags
=item *
L<libnet> - a collection of perl5 modules related to network programming
+Perl installation leaves libnet unconfigured, use F<libnetcfg> to configure.
+
=item *
L<List::Util> - selection of general-utility list subroutines
L<Time::Piece> - Object Oriented time objects
+(Previously known as L<Time::Object>.)
+
+=item *
+
+L<Time::Seconds> - a simple API to convert seconds to other date values
+
+=item *
+
+L<UnicodeCD> - Unicode Character Database
+
=back
=head2 Updated And Improved Modules and Pragmata
=item *
-L<vars> now supports declaring qualified variables.
+L<IO::Socket::INET> now supports C<LocalPort> of zero (usually meaning
+that the operating system will make one up.)
+
+=item *
+
+The L<vars> pragma now supports declaring fully qualified variables.
+(Something that C<our()> does not and will not support.)
=back
=item *
+L<h2ph> now supports C trigraphs.
+
+=item *
+
L<h2xs> uses the new L<ExtUtils::Constant> module which will affect
newly created extensions that define constants. Since the new code is
more correct (if you have two constants where the first one is a
old code that used floating point numbers even for integer constants),
and slightly faster, you might want to consider regenerating your
extension code (the new scheme makes regenerating easy).
+L<h2xs> now also supports C trigraphs.
=item *
=item *
-AIX should now work better with gcc. Also longdouble support in AIX
-should be better now. See L<perlaix>.
+AIX should now work better with gcc, threads, and 64-bitness. Also the
+long doubles support in AIX should be better now. See L<perlaix>.
=item *
-AtheOS (http://www.atheos.cx/) is a new platform.
+AtheOS ( http://www.atheos.cx/ ) is a new platform.
=item *
=item *
-Several MacOS (Classic) portability patches have been applied. We
+DYNIX/ptx platform (a.k.a. dynixptx) is supported at or near osvers 4.5.2.
+
+=item *
+
+Several Mac OS (Classic) portability patches have been applied. We
hope to get a fully working port by 5.8.0. (The remaining problems
relate to the changed IO model of Perl.) See L<perlmacos>.
=item *
-MacOS X (or Darwin) should now be able to build Perl even on HFS+
+Mac OS X (or Darwin) should now be able to build Perl even on HFS+
filesystems. (The case-insensitivity confused the Perl build process.)
=item *
=item *
-The C code has been made much more C<gcc -Wall> clean. Some warning
-messages still remain, though, so if you are compiling with gcc you
-will see some warnings about dubious practices. The warnings are
-being worked on.
-
-=item *
-
In AFS installations one can configure the root of the AFS to be
somewhere else than the default F</afs> by using the Configure
parameter C<-Dafsroot=/some/where/else>.
=item *
-Using arrays or hashes as references (e.g. C<%foo->{bar}> has been
+Using arrays or hashes as references (e.g. C<< %foo->{bar} >> has been
deprecated for a while. Now you will get an optional warning.
=back
-=head1 Changed Internals
+=head1 Source Code Enhancements
+
+=head2 MAGIC constants
+
+The MAGIC constants (e.g. C<'P'>) have been macrofied
+(e.g. C<PERL_MAGIC_TIED>) for better source code readability
+and maintainability.
+
+=head2 Better commented code
+
+F<perly.c>, F<sv.c>, and F<sv.h> have now been extensively commented.
=head2 Regex pre-/post-compilation items matched up
C<offsets> member of the C<struct regexp>. See L<perldebguts> for more
complete information.
+=head2 gcc -Wall
+
+The C code has been made much more C<gcc -Wall> clean. Some warning
+messages still remain, though, so if you are compiling with gcc you
+will see some warnings about dubious practices. The warnings are
+being worked on.
+
=head1 New Tests
Several new tests have been added, especially for the F<lib> subsection.
=item *
-If Perl is configured to use long doubles the op/int subtests 13 and
-14 and the ext/POSIX subtest 14 may fail.
-
-=item *
-
-If Perl is configured to use threads the op/magic subtest 28 may fail.
+In AIX 4.2 Perl extensions that use C++ functions that use statics
+may have problems in that the statics are not getting initialized.
+In newer AIX releases this has been solved by linking Perl with
+the libC_r library, but unfortunately in AIX 4.2 the said library
+has an obscure bug where the various functions related to time
+(such as time() and gettimeofday()) return broken values, and
+therefore in AIX 4.2 Perl is not linked against the libC_r.
=item *
=back
+=head2 Amiga Perl Invoking Mystery
+
+One cannot call Perl using the C<volume:> syntax, that is, C<perl -v>
+works, but for example C<bin:perl -v> doesn't. The exact reason is
+known but the current suspect is the F<ixemul> library.
+
=head2 lib/ftmp-security tests warn 'system possibly insecure'
Don't panic. Read INSTALL 'make test' section instead.
-=head Cygwin intermittent failures of lib/Memoize/t/expire_file 11 and 12
+=head2 Cygwin intermittent failures of lib/Memoize/t/expire_file 11 and 12
The subtests 11 and 12 sometimes fail and sometimes work.
-=head2 HP-UX lib/io_multihomed Fails When LP64-Configur
+=head2 HP-UX lib/io_multihomed Fails When LP64-Configured
The lib/io_multihomed test may hang in HP-UX if Perl has been
configured to be 64-bit. Because other 64-bit platforms do not hang in
No known fix.
+=head2 OS/390
+
+OS/390 has rather many test failures but the situation is actually
+better than it was in 5.6.0, it's just that so many new modules and
+tests have been added.
+
+ Failed Test Stat Wstat Total Fail Failed List of Failed
+ -----------------------------------------------------------------------------
+ ../ext/B/Deparse.t 14 1 7.14% 14
+ ../ext/B/Showlex.t 1 1 100.00% 1
+ ../ext/Encode/Encode/Tcl.t 610 13 2.13% 592 594 596 598
+ 600 602 604-610
+ ../ext/IO/lib/IO/t/io_unix.t 113 28928 5 3 60.00% 3-5
+ ../ext/POSIX/POSIX.t 29 1 3.45% 14
+ ../ext/Storable/t/lock.t 255 65280 5 3 60.00% 3-5
+ ../lib/locale.t 129 33024 117 19 16.24% 99-117
+ ../lib/warnings.t 434 1 0.23% 75
+ ../lib/ExtUtils.t 27 1 3.70% 25
+ ../lib/Math/BigInt/t/bigintpm.t 1190 1 0.08% 1145
+ ../lib/Unicode/UCD.t 81 48 59.26% 1-16 49-64 66-81
+ ../lib/User/pwent.t 9 1 11.11% 4
+ op/pat.t 660 6 0.91% 242-243 424-425
+ 626-627
+ op/split.t 0 9 ?? ?? % ??
+ op/taint.t 174 3 1.72% 156 162 168
+ op/tr.t 70 3 4.29% 50 58-59
+ Failed 16/422 test scripts, 96.21% okay. 105/23251 subtests failed, 99.55% okay.
+
=head2 op/sprintf tests 129 and 130
The op/sprintf tests 129 and 130 are known to fail on some platforms.
Examples include any platform using sfio, and Compaq/Tandem's NonStop-UX.
The failing platforms do not comply with the ANSI C Standard, line
19ff on page 134 of ANSI X3.159 1989 to be exact. (They produce
-something else than "1" and "-1" when formatting 0.6 and -0.6 using
+something other than "1" and "-1" when formatting 0.6 and -0.6 using
the printf format "%.0f", most often they produce "0" and "-0".)
=head2 Failure of Thread tests
=back
-=head2 UNICOS/mk ext/IPC/SysV/t/sem test 8
+=head2 UTS
-No known fix.
+There are a few known test failures, see L<perluts>.
-=head2 UTS
+=head2 VMS
+
+Rather many tests are failing in VMS but that actually more tests
+succeed in VMS than they used to, it's just that there are many,
+many more tests than there used to be.
+
+Here are the known failures from some compiler/platform combinations.
+
+DEC C V5.3-006 on OpenVMS VAX V6.2
+
+ [-.ext.list.util.t]tainted..............FAILED on test 3
+ [-.ext.posix]sigaction..................FAILED on test 7
+ [-.ext.time.hires]hires.................FAILED on test 14
+ [-.lib.file.find]taint..................FAILED on test 17
+ [-.lib.math.bigint.t]bigintpm...........FAILED on test 1183
+ [-.lib.test.simple.t]exit...............FAILED on test 1
+ [.lib]vmsish............................FAILED on test 13
+ [.op]sprintf............................FAILED on test 12
+ Failed 8/399 tests, 91.23% okay.
+
+DEC C V6.0-001 on OpenVMS Alpha V7.2-1 and
+Compaq C V6.2-008 on OpenVMS Alpha V7.1
+
+ [-.ext.list.util.t]tainted..............FAILED on test 3
+ [-.lib.file.find]taint..................FAILED on test 17
+ [-.lib.test.simple.t]exit...............FAILED on test 1
+ [.lib]vmsish............................FAILED on test 13
+ Failed 4/399 tests, 92.48% okay.
+
+Compaq C V6.4-005 on OpenVMS Alpha 7.2.1
+
+ [-.ext.b]showlex........................FAILED on test 1
+ [-.ext.list.util.t]tainted..............FAILED on test 3
+ [-.lib.file.find]taint..................FAILED on test 17
+ [-.lib.test.simple.t]exit...............FAILED on test 1
+ [.lib]vmsish............................FAILED on test 13
+ [.op]misc...............................FAILED on test 49
+ Failed 6/401 tests, 92.77% okay.
-Many floating point inaccuracies:
+=head2 Win32
- op/numconvert 511,657,658,659,665-667,831,991,1151
- op/pack 10,22,149,156
- op/sprintf 8,10,13,102-107,134-135,146-153,159-162
- lib/Math/BigInt/bigintpm 1145,1183
- lib/Math/Complex 250,257,514,521,722-724,
- 934,935,945,949,955,956,975,976
- ext/POSIX/POSIX 14
+In multi-CPU boxes there are some problems with the I/O buffering:
+some output may appear twice.
=head2 Localising a Tied Variable Leaks Memory
If you find what you think is a bug, you might check the articles
recently posted to the comp.lang.perl.misc newsgroup and the perl
-bug database at http://bugs.perl.org. There may also be
-information at http://www.perl.com/perl/, the Perl Home Page.
+bug database at http://bugs.perl.org/ There may also be
+information at http://www.perl.com/perl/ , the Perl Home Page.
If you believe you have an unreported bug, please run the B<perlbug>
program included with your release. Be sure to trim your bug down