X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperldelta.pod;h=65f4612c01e295e89f97e800c63c6073855d691c;hb=6e5a998b1cc5eddc2fb262c2e2e7f989bfb76f23;hp=ec5d9ed0f0ac47da3320b7a97129b42880633b22;hpb=02e156f1155b2bac532ab2ae2c0876f06f180344;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perldelta.pod b/pod/perldelta.pod index ec5d9ed..65f4612 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -46,6 +46,27 @@ More Extensive Regression Testing =head1 Incompatible Changes +=head2 Binary Incompatibility + +B + +B + +(Pure Perl modules should continue to work.) + +The major reason for the discontinity is the new IO architecture +called PerlIO. PerlIO is the default configuration because +without it many new features of Perl 5.8 cannot be used. In other +words: you just have to recompile your modules, sorry about that. + +In future releases of Perl, non-PerlIO aware XS modules may become +completely unsupported. This shouldn't be too difficult for module +authors, however: PerlIO has been designed as a drop-in replacement +(at the source code level) for the stdio interface. + +Depending on your platform, there are also other reasons why +we decided to break binary compatibility, please read on. + =head2 64-bit platforms and malloc If your pointers are 64 bits wide, the Perl malloc is no longer being @@ -222,6 +243,12 @@ to be removed in a future release. =item * +The 5.005 threads model (module C) is deprecated and expected +to be removed in Perl 5.10. Multithreaded code should be migrated to +the new ithreads model (see L and L). + +=item * + The long deprecated uppercase aliases for the string comparison operators (EQ, NE, LT, LE, GE, GT) have now been removed. @@ -523,6 +550,11 @@ errors so consider starting laundering now. =item * +Tied hash interfaces are now required to have the EXISTS and DELETE +methods (either own or inherited). + +=item * + If tr/// is just counting characters, it doesn't attempt to modify its target. @@ -864,7 +896,12 @@ C is a new pragma for controlling the behaviour of sort(). C gives persistence to Perl data structures by allowing the storage and retrieval of Perl data to and from files in a fast and -compact binary format, from Raphael Manfredi. See L. +compact binary format. Because in effect Storable does serialisation +of Perl data structues, with it you can also clone deep, hierarchical +datastructures. Storable was created by Raphael Manfredi but it is +now maintained by the Perl development team. Storable has been +enhanced to understand the two new hash features, Unicode keys and +restricted hashes. See L. =item * @@ -1013,6 +1050,10 @@ is called with an array/hash element as the B argument. =item * +The return value of Cwd::fastcwd() is now tainted. + +=item * + Data::Dumper has now an option to sort hashes. =item * @@ -1027,6 +1068,12 @@ other improvements. =item * +Devel::Peek now has an interface for the Perl memory statistics +(this works only if you are using perl's malloc, and if you have +compiled with debugging). + +=item * + The English module can now be used without the infamous performance hit by saying @@ -1038,6 +1085,11 @@ C<@LAST_MATCH_END> English aliases for C<@-> and C<@+>. =item * +ExtUtils::MakeMaker now uses File::Spec internally, which hopefully +leads into better portability. + +=item * + Fcntl, Socket, and Sys::Syslog have been rewritten to use the new-style constant dispatch section (see L). This means that they will be more robust and hopefully faster. @@ -1074,12 +1126,6 @@ the returned list of filenames. =item * -Devel::Peek now has an interface for the Perl memory statistics -(this works only if you are using perl's malloc, and if you have -compiled with debugging). - -=item * - IPC::Open3 now allows the use of numeric file descriptors. =item * @@ -1106,11 +1152,6 @@ with 'no lib' now works. =item * -ExtUtils::MakeMaker now uses File::Spec internally, which hopefully -leads into better portability. - -=item * - Math::BigFloat and Math::BigInt have undergone a full rewrite. They are now magnitudes faster, and they support various bignum libraries such as GMP and PARI as their backends. @@ -1546,8 +1587,9 @@ warning that there may be trouble ahead. =item * -If binary compatibility with the 5.005 release is not wanted, Configure -no longer suggests including the 5.005 modules in @INC. +Since Perl 5.8 is not binary-compatible with previous releases +of Perl, Configure no longer suggests including the 5.005 +modules in @INC. =item * @@ -1689,6 +1731,15 @@ floating-point numbers is now more picky about using sprintf %.*g rules for the conversion. Some platforms that used to use gcvt may now resort to the slower sprintf. +=item * + +The obsolete method of making a special (e.g., debugging) flavor +of perl by saying + + make LIBPERL=libperld.a + +has been removed. Use -DDEBUGGING instead. + =back =head2 New Or Improved Platforms @@ -1709,10 +1760,6 @@ long doubles support in AIX should be better now. See L. =item * -After a long pause, AmigaOS has been verified to be happy with Perl. - -=item * - AtheOS ( http://www.atheos.cx/ ) is a new platform. =item * @@ -1787,6 +1834,13 @@ in unexpected order. =item * +Stratus VOS is now supported using Perl's native build method +(Configure). This is the recommended method to build Perl on +VOS. The older methods, which build miniperl, are still +available. See L. + +=item * + Amdahl UTS UNIX mainframe platform is now supported. =item * @@ -1906,6 +1960,40 @@ Fixed numerous memory leaks, especially in eval "". =item * +Localised tied variables no more leak memory + + use Tie::Hash; + tie my %tied_hash => 'Tie::StdHash'; + + ... + + # Used to leak memory every time local() was called, + # in a loop this added up. + local($tied_hash{Foo}) = 1; + +=item * + +Localised hash elements (and %ENV) are correctly unlocalised to not to +exist, if that's what they were. + + + use Tie::Hash; + tie my %tied_hash => 'Tie::StdHash'; + + ... + + # Nothing has set the FOO element so far + + { local $tied_hash{FOO} = 'Bar' } + + # Here the FOO element would have been C, + # but no more so. + +As a side effect of this fix, tied hash interfaces B define +the EXISTS and DELETE methods. + +=item * + mkdir() now ignores trailing slashes in the directory name, as mandated by POSIX. @@ -2236,6 +2324,12 @@ MPE/iX update after Perl 5.6.0. See README.mpeix. =item * +NetBSD/threads: try installing the GNU pth (should be in the +packages collection, or http://www.gnu.org/software/pth/), +and Configure with -Duseithreads. + +=item * + NetBSD/sparc Perl now works on NetBSD/sparc. @@ -2254,6 +2348,15 @@ Solaris =item * +Stratus VOS + +The native build method requires at least VOS Release 14.5.0 +and GNU C++/GNU Tools 2.0.1 or later. The Perl pack function +now maps overflowed values to +infinity and underflowed values +to -infinity. + +=item * + Tru64 (aka Digital UNIX, aka DEC OSF/1) The operating system version letter now recorded in $Config{osvers}. @@ -2666,6 +2769,12 @@ One cannot call Perl using the C syntax, that is, C works, but for example C doesn't. The exact reason isn't known but the current suspect is the F library. +=head2 ext/threads/t/libc + +If this test fails, it indicates that your libc (C library) is not +threadsafe. This particular test stress tests the localtime() call to +find out whether it is threadsafe. See L for more information. + =head2 FreeBSD Failing locale Test 117 For ISO8859-15 Locales The ISO8859-15 locales may fail the locale test 117 in FreeBSD. @@ -2673,6 +2782,14 @@ This is caused by the characters \xFF (y with diaeresis) and \xBE (Y with diaeresis) not behaving correctly when being matched case-insensitively. +=head2 Modifying $_ Inside for(..) + + for (1..5) { $_++ } + +works without complaint. It shouldn't. (You should be able to +modify only lvalue elements inside the loops.) You can see the +correct behaviour by replacing the 1..5 with 1, 2, 3, 4, 5. + =head2 mod_perl 1.26 Doesn't Build With Threaded Perl Use mod_perl 1.27 or higher. @@ -2681,7 +2798,7 @@ Use mod_perl 1.27 or higher. Don't panic. Read INSTALL 'make test' section instead. -=head2 HP-UX lib/posix Subtest 9 Fails When LP64-Configured +=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 @@ -2704,12 +2821,19 @@ The following tests are known to fail: ------------------------------------------------------------------------- ../ext/DB_File/t/db-btree.t 0 11 ?? ?? % ?? ../ext/DB_File/t/db-recno.t 149 3 2.01% 61 63 65 - ../ext/POSIX/t/posix.t 31 1 3.23% 10 If you are building on a UFS partition, you will also probably see t/op/stat.t subtest #9 fail. This is caused by Darwin's UFS not supporting inode change time. +Also the ext/POSIX/t/posix.t subtest #10 fails but it is skipped for +now because the failure is Apple's fault, not Perl's (blocked signals +are lost). + +If you Configure with ithreads, ext/threads/t/libc.t will fail, again +not Perl's fault-- the libc of Mac OS X is not threadsafe (in this +particular test the localtime() call is found to be threadunsafe.) + =head2 op/sprintf tests 91, 129, and 130 The op/sprintf tests 91, 129, and 130 are known to fail on some platforms. @@ -2724,10 +2848,23 @@ be exact. (They produce 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 Solaris 2.5 + +In case you are still using Solaris 2.5 (aka SunOS 5.5), you may +experience failures (the test core dumping) in lib/locale.t. +The suggested cure is to upgrade your Solaris. + +=head2 Stratus VOS + +When Perl is built using the native build process on VOS Release +14.5.0 and GNU C++/GNU Tools 2.0.1, all attempted tests either +pass or result in TODO (ignored) failures. + =head2 Failure of Thread (5.005-style) tests -B +B The following tests are known to fail due to fundamental problems in the 5.005 threading implementation. These are not new failures--Perl @@ -2740,26 +2877,23 @@ the 5.005 threading implementation. These are not new failures--Perl ../lib/autouse.t 10 1 10.00% 4 op/flip.t 15 1 6.67% 15 -These failures are unlikely to get fixed as the 5.005-style -threads are considered fundamentally broken. +These failures are unlikely to get fixed as the 5.005-style threads +are considered fundamentally broken. (Basically what happens is that +competing threads can corrupt shared global state.) =head2 UNICOS Failed Test Stat Wstat Total Fail Failed List of Failed ------------------------------------------------------------------------- - ../ext/Socket/socketpair.t 1 256 45 1 2.22% 12 ../lib/Math/Trig.t 26 1 3.85% 25 ../lib/warnings.t 460 1 0.22% 425 - io/fs.t 36 1 2.78% 31 op/numconvert.t 1440 13 0.90% 208 509-510 657-658 665-666 829-830 989-990 1149-1150 -=head2 UNICOS and UNICOS/mk - -The io/fs test #31 is failing because in UNICOS and UNICOS/mk the Perl -truncate() cannot be used to grow the size of filehandles, only to -reduce the size. The workaround is to truncate files instead of -filehandles. +The Trig and numconvert failures are caused by the slighly differing +(from IEEE) floating point implementation of UNICOS. The warnings +failure is also related: the test assumes a certain floating point +output format, this assumption fails in UNICOS. =head2 UNICOS/mk @@ -2813,52 +2947,41 @@ needing further debugging and/or porting work. =head2 Win32 In multi-CPU boxes there are some problems with the I/O buffering: -some output may appear twice. The following Win32 failures are known -as of 5.7.3: - - Failed Test Stat Wstat Total Fail Failed List of Failed - ------------------------------------------------------------------------- - ..\ext/threads/t/end.t 6 4 66.67% 3-6 +some output may appear twice. =head2 XML::Parser not working Use XML::Parser 2.31 or later. -=head2 Localising a Tied Variable Leaks Memory - - use Tie::Hash; - tie my %tie_hash => 'Tie::StdHash'; - - ... - - local($tie_hash{Foo}) = 1; # leaks - -Code like the above is known to leak memory every time the local() -is executed. - =head2 z/OS (OS/390) z/OS 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/Data/Dumper/t/dumper.t 321 2 0.62% 311 314 + Failed Test Stat Wstat Total Fail Failed List of Failed + --------------------------------------------------------------------------- + ../ext/Data/Dumper/t/dumper.t 357 8 2.24% 311 314 325 327 + 331 333 337 339 ../ext/IO/lib/IO/t/io_unix.t 5 4 80.00% 2-5 - ../lib/utf8.t 94 13 13.83% 27 30-31 43 46 73 - 76 79 82 85 88 91 - 94 - ../lib/Benchmark.t 1 256 159 1 0.63% 75 - ../lib/ExtUtils/t/Constant.t 27 19 70.37% 5-23 + ../ext/Storable/t/downgrade.t 12 3072 169 12 7.10% 14-15 46-47 78-79 + 110-111 150 161 + ../lib/ExtUtils/t/Constant.t 121 30976 48 48 100.00% 1-48 ../lib/ExtUtils/t/Embed.t 9 9 100.00% 1-9 - op/pat.t 864 9 1.04% 242-243 665 776 - 785 832-834 845 + op/pat.t 910 7 0.77% 665 776 785 832- + 834 845 op/sprintf.t 224 3 1.34% 98 100 136 op/tr.t 97 5 5.15% 63 71-74 uni/fold.t 780 6 0.77% 61 169 196 661 710-711 +The dumper.t and downgrade.t are problems in the tests, the io_unix +and sprintf are problems in the USS (UDP sockets and printf formats). +The pat, tr, and fold are genuine Perl problems caused by EBCDIC (and +in the pat and fold cases, combining that with Unicode). The Constant +and Embed are probably problems in the tests (since they test Perl's +ability to build extensions, and that seems to be working reasonably well.) + =head2 Localising Tied Arrays and Hashes Is Broken local %tied_array;