Update the AIX known problems section.
[p5sagit/p5-mst-13.2.git] / pod / perl572delta.pod
index d0adc77..0dc191f 100644 (file)
@@ -36,26 +36,75 @@ used because it simply does not work with 8-byte pointers.  Also,
 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 the native dlopen interface of AIX,
+(given the AIX is recent enough) instead of the old emulated interface.
+This will probably break backward compatibility with compiled modules.
+
+=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.
+
 =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
 
@@ -67,18 +116,23 @@ B<between digits>.
 
 =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 *
 
@@ -86,19 +140,32 @@ The C<op_clear> and C<op_null> are now exported.
 
 =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.
+
 =back
 
 =head1 Modules and Pragmata
 
-=head2 New Modules and Distribution
+=head2 New Modules and Distributions
 
 =over 4
 
@@ -112,12 +179,18 @@ L<ExtUtils::Constant> - generate XS code to import C header constants
 
 =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
@@ -154,6 +227,16 @@ L<Time::HiRes> - high resolution ualarm, usleep, and gettimeofday
 
 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<Unicode::UCD> - Unicode Character Database
+
 =back
 
 =head2 Updated And Improved Modules and Pragmata
@@ -197,7 +280,13 @@ size of the returned list of filenames.
 
 =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
 
@@ -211,6 +300,10 @@ The F<emacs/e2ctags.pl> is now much faster.
 
 =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
@@ -307,13 +400,6 @@ The Amdahl UTS UNIX mainframe platform is now supported.
 
 =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>.
@@ -413,7 +499,17 @@ 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
 
@@ -423,6 +519,13 @@ original regex expression.  The information is attached to the new
 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.
@@ -437,7 +540,23 @@ Note that unlike other sections in this document (which describe
 changes since 5.7.0) this section is cumulative containing known
 problems for all the 5.7 releases.
 
-=head2 AIX vac 5.0.0.0 May Produce Buggy Code For Perl
+=head2 AIX
+
+=over 4
+
+=item *
+
+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 *
+
+vac 5.0.0.0 May Produce Buggy Code For Perl
 
 The AIX C compiler vac version 5.0.0.0 may produce buggy code,
 resulting in few random tests failing, but when the failing tests
@@ -445,11 +564,23 @@ are run by hand, they succeed.  We suggest upgrading to at least
 vac version 5.0.1.0, that has been known to compile Perl correctly.
 "lslpp -L|grep vac.C" will tell you the vac version.
 
+=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.
 
-=head2 lib/io_multihomed Fails In LP64-Configured HP-UX
+=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
 
 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
@@ -457,7 +588,7 @@ this test, HP-UX is suspect. All other tests pass in 64-bit HP-UX. The
 test attempts to create and connect to "multihomed" sockets (sockets
 which have multiple IP addresses).
 
-=head2 Test lib/posix Subtest 9 Fails In LP64-Configured HP-UX
+=head2  HP-UX lib/posix Subtest 9 Fails When LP64-Configured
 
 If perl is configured with -Duse64bitall, the successful result of the
 subtest 10 of lib/posix may arrive before the successful result of the
@@ -468,10 +599,33 @@ subtest 9 failed.
 
 No known fix.
 
-=head2 ext/POSIX/sigaction test 13 on VMS
-
-The test is known to fail; whether it's because of VMS of because
-of faulty test is not known.
+=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
 
@@ -493,18 +647,87 @@ the 5.005 threading implementation. These are not new failures--Perl
   lib/autouse.t                 4
   t/lib/thr5005.t               19-20
 
-=head2 Numerous numerical test failures on UNICOS
+=head2 UNICOS
+
+=over 4
+
+=item *
+
+ext/POSIX/sigaction subtests 6 and 13 may fail.
+
+=item *
+
+lib/ExtUtils may spuriously claim that subtest 28 failed,
+which is interesting since the test only has 27 tests.
+
+=item *
+
+Numerous numerical test failures
 
   op/numconvert                 209,210,217,218
+  op/override                   7
   ext/Time/HiRes/HiRes          9
   lib/Math/BigInt/t/bigintpm    1145
   lib/Math/Trig                 25
 
 These tests fail because of yet unresolved floating point inaccuracies.
 
-=head2 ext/IPC/SysV/t/sem test 8 on UNICOS/mk
+=back
 
-No known fix.
+=head2 UTS
+
+Many floating point inaccuracies:
+
+  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
+
+=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 
+
+  [-.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.
+
+Compac 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.
+
+=head2 Win32
+
+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
 
@@ -551,6 +774,18 @@ platform-dependent.
 The compiler suite is slowly getting better but is nowhere near
 working order yet.
 
+=head2 The Long Double Support is Still Experimental
+
+The ability to configure Perl's numbers to use "long doubles",
+floating point numbers of hopefully better accuracy, is still
+experimental.  The implementations of long doubles are not yet
+widespread and the existing implementations are not quite mature
+or standardised, therefore trying to support them is a rare
+and moving target.  The gain of more precision may also be offset
+by slowdown in computations (more bits to move around, and the
+operations are more likely to be executed by less optimised
+libraries).
+
 =head1 Reporting Bugs
 
 If you find what you think is a bug, you might check the articles