From: Jarkko Hietaniemi Date: Mon, 15 Jul 2002 21:11:04 +0000 (+0000) Subject: Split "Known problems" into "Known problems" (generic, X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=51bcf69bbe186ebe54b8b1041e2fbfd59631020f;p=p5sagit%2Fp5-mst-13.2.git Split "Known problems" into "Known problems" (generic, or shared among several platforms) and "Platform Specific Problems". p4raw-id: //depot/perl@17561 --- diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 3e4f92b..7a6413e 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -3132,6 +3132,159 @@ to be closer to the library/extension they are testing.) =head1 Known Problems +=head2 The Compiler Suite Is Still Very Experimental + +The compiler suite is slowly getting better but it continues to be +highly experimental. Use in production environments is discouraged. + +=head2 Localising Tied Arrays and Hashes Is Broken + + local %tied_array; + +doesn't work as one would expect: the old value is restored +incorrectly. This will be changed in a future release, but we don't +know yet what the new semantics will exactly be. In any case, the +change will break existing code that relies on the current +(ill-defined) semantics, so just avoid doing this in general. + +=head2 Building Extensions Can Fail Because Of Largefiles + +Some extensions like mod_perl are known to have issues with +`largefiles', a change brought by Perl 5.6.0 in which file offsets +default to 64 bits wide, where supported. Modules may fail to compile +at all, or they may compile and work incorrectly. Currently, there +is no good solution for the problem, but Configure now provides +appropriate non-largefile ccflags, ldflags, libswanted, and libs +in the %Config hash (e.g., $Config{ccflags_nolargefiles}) so the +extensions that are having problems can try configuring themselves +without the largefileness. This is admittedly not a clean solution, +and the solution may not even work at all. One potential failure is +whether one can (or, if one can, whether it's a good idea to) link +together at all binaries with different ideas about file offsets; +all this is platform-dependent. + +=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. + +=head2 lib/ftmp-security tests warn 'system possibly insecure' + +Don't panic. Read the 'make test' section of INSTALL instead. + +=head2 libwww-perl (LWP) fails base/date #51 + +Use libwww-perl 5.65 or later. + +=head2 PDL failing some tests + +Use PDL 2.3.4 or later. + +=head2 Perl_get_sv + +You may get errors like 'Undefined symbol "Perl_get_sv"' or +"can't resolve symbol 'Perl_get_sv'". This probably means that +you are trying to use an older shared Perl library with Perl 5.8.0 +executable. Perl used to have such a subroutine, but that is no more +the case. Check your shared library path, and any shared Perl +libraries in those directories. + +=head2 Self-tying Problems + +Self-tying of arrays and hashes is broken in rather deep and +hard-to-fix ways. As a stop-gap measure to avoid people from getting +frustrated at the mysterious results (core dumps, most often), it is +forbidden for now (you will get a fatal error even from an attempt). + +A change to self-tying of globs has caused them to be recursively +referenced (see: L). You +will now need an explicit untie to destroy a self-tied glob. This +behaviour may be fixed at a later date. + +Self-tying of scalars and IO thingies works. + +=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 Failure of Thread (5.005-style) tests + +B + +The following tests are known to fail due to fundamental problems in +the 5.005 threading implementation. These are not new failures--Perl +5.005_0x has the same bugs, but didn't have these tests. + + ../ext/B/t/xref.t 255 65280 14 12 85.71% 3-14 + ../ext/List/Util/t/first.t 255 65280 7 4 57.14% 2 5-7 + ../lib/English.t 2 512 54 2 3.70% 2-3 + ../lib/FileCache.t 5 1 20.00% 5 + ../lib/Filter/Simple/t/data.t 6 3 50.00% 1-3 + ../lib/Filter/Simple/t/filter_only. 9 3 33.33% 1-2 5 + ../lib/Math/BigInt/t/bare_mbf.t 1627 4 0.25% 8 11 1626-1627 + ../lib/Math/BigInt/t/bigfltpm.t 1629 4 0.25% 10 13 1628- + 1629 + ../lib/Math/BigInt/t/sub_mbf.t 1633 4 0.24% 8 11 1632-1633 + ../lib/Math/BigInt/t/with_sub.t 1628 4 0.25% 9 12 1627-1628 + ../lib/Tie/File/t/31_autodefer.t 255 65280 65 32 49.23% 34-65 + ../lib/autouse.t 10 1 10.00% 4 + op/flip.t 15 1 6.67% 15 + +These failures are unlikely to get fixed as 5.005-style threads +are considered fundamentally broken. (Basically what happens is that +competing threads can corrupt shared global state, one good example +being regular expression engine's state.) + +=head2 Timing problems + +The following tests may fail intermittently because of timing +problems, for example if the system is heavily loaded. + + t/op/alarm.t + ext/Time/HiRes/HiRes.t + lib/Benchmark.t + lib/Memoize/t/expmod_t.t + lib/Memoize/t/speed.t + +In case of failure please try running them manually, for example + + ./perl -Ilib ext/Time/HiRes/HiRes.t + +=head2 Tied/Magical Array/Hash Elements Do Not Autovivify + +For normal arrays C<$foo = \$bar[1]> will assign C to +C<$bar[1]> (assuming that it didn't exist before), but for +tied/magical arrays and hashes such autovivification does not happen +because there is currently no way to catch the reference creation. +The same problem affects slicing over non-existent indices/keys of +a tied/magical array/hash. + +=head2 Unicode in package/class and subroutine names does not work + +One can have Unicode in identifier names, but not in package/class or +subroutine names. While some limited functionality towards this does +exist as of Perl 5.8.0, that is more accidental than designed; use of +Unicode for the said purposes is unsupported. + +One reason of this unfinishedness is its (currently) inherent +unportability: since both package names and subroutine names may +need to be mapped to file and directory names, the Unicode capability +of the filesystem becomes important-- and there unfortunately aren't +portable answers. + +=head1 Platform Specific Problems + =head2 AIX =over 4 @@ -3231,12 +3384,6 @@ NDBM_File fails and ODBM_File just coredumps. Unfortunately DJGPP build broke somewhere after 5.7.3. -=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 built with ithreads coredumps reading large directories This is a known bug in FreeBSD 4.5's readdir_r(), it has been fixed in @@ -3258,22 +3405,6 @@ by dumping core. This seems to be a compiler error since if compiled with gcc no core dump ensues, and no failures on the said test on any other platform. -=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. - -=head2 lib/ftmp-security tests warn 'system possibly insecure' - -Don't panic. Read the 'make test' section of INSTALL instead. - =head2 HP-UX lib/posix Subtest 9 Fails When LP64-Configured If perl is configured with -Duse64bitall, the successful result of the @@ -3290,10 +3421,6 @@ This is a known bug in the glibc 2.2.5 with long long integers. No known fix. -=head2 libwww-perl (LWP) fails base/date #51 - -Use libwww-perl 5.65 or later. - =head2 Mac OS X Please remember to set your environment variable LC_ALL to "C" @@ -3389,81 +3516,10 @@ is serious but as of yet unsolved. It points at some problems with the signedness handling of the C compiler, as do the 64bitint, arith, and pow failures. Most of the rest point at problems with SysV IPC. -=head2 PDL failing some tests - -Use PDL 2.3.4 or later. - -=head2 Perl_get_sv - -You may get errors like 'Undefined symbol "Perl_get_sv"' or -"can't resolve symbol 'Perl_get_sv'". This probably means that -you are trying to use an older shared Perl library with Perl 5.8.0 -executable. Perl used to have such a subroutine, but that is no more -the case. Check your shared library path, and any shared Perl -libraries in those directories. - =head2 Term::ReadKey not working on Win32 Use Term::ReadKey 2.20 or later. -=head2 Failure of Thread (5.005-style) tests - -B - -The following tests are known to fail due to fundamental problems in -the 5.005 threading implementation. These are not new failures--Perl -5.005_0x has the same bugs, but didn't have these tests. - - ../ext/B/t/xref.t 255 65280 14 12 85.71% 3-14 - ../ext/List/Util/t/first.t 255 65280 7 4 57.14% 2 5-7 - ../lib/English.t 2 512 54 2 3.70% 2-3 - ../lib/FileCache.t 5 1 20.00% 5 - ../lib/Filter/Simple/t/data.t 6 3 50.00% 1-3 - ../lib/Filter/Simple/t/filter_only. 9 3 33.33% 1-2 5 - ../lib/Math/BigInt/t/bare_mbf.t 1627 4 0.25% 8 11 1626-1627 - ../lib/Math/BigInt/t/bigfltpm.t 1629 4 0.25% 10 13 1628- - 1629 - ../lib/Math/BigInt/t/sub_mbf.t 1633 4 0.24% 8 11 1632-1633 - ../lib/Math/BigInt/t/with_sub.t 1628 4 0.25% 9 12 1627-1628 - ../lib/Tie/File/t/31_autodefer.t 255 65280 65 32 49.23% 34-65 - ../lib/autouse.t 10 1 10.00% 4 - op/flip.t 15 1 6.67% 15 - -These failures are unlikely to get fixed as 5.005-style threads -are considered fundamentally broken. (Basically what happens is that -competing threads can corrupt shared global state, one good example -being regular expression engine's state.) - -=head2 Timing problems - -The following tests may fail intermittently because of timing -problems, for example if the system is heavily loaded. - - t/op/alarm.t - ext/Time/HiRes/HiRes.t - lib/Benchmark.t - lib/Memoize/t/expmod_t.t - lib/Memoize/t/speed.t - -In case of failure please try running them manually, for example - - ./perl -Ilib ext/Time/HiRes/HiRes.t - -=head2 Unicode in package/class and subroutine names does not work - -One can have Unicode in identifier names, but not in package/class or -subroutine names. While some limited functionality towards this does -exist as of Perl 5.8.0, that is more accidental than designed; use of -Unicode for the said purposes is unsupported. - -One reason of this unfinishedness is its (currently) inherent -unportability: since both package names and subroutine names may -need to be mapped to file and directory names, the Unicode capability -of the filesystem becomes important-- and there unfortunately aren't -portable answers. - =head2 UNICOS/mk =over 4 @@ -3558,55 +3614,6 @@ 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; - -doesn't work as one would expect: the old value is restored -incorrectly. This will be changed in a future release, but we don't -know yet what the new semantics will exactly be. In any case, the -change will break existing code that relies on the current -(ill-defined) semantics, so just avoid doing this in general. - -=head2 Self-tying Problems - -Self-tying of arrays and hashes is broken in rather deep and -hard-to-fix ways. As a stop-gap measure to avoid people from getting -frustrated at the mysterious results (core dumps, most often), it is -forbidden for now (you will get a fatal error even from an attempt). - -A change to self-tying of globs has caused them to be recursively -referenced (see: L). You -will now need an explicit untie to destroy a self-tied glob. This -behaviour may be fixed at a later date. - -Self-tying of scalars and IO thingies works. - -=head2 Tied/Magical Array/Hash Elements Do Not Autovivify - -For normal arrays C<$foo = \$bar[1]> will assign C to -C<$bar[1]> (assuming that it didn't exist before), but for -tied/magical arrays and hashes such autovivification does not happen -because there is currently no way to catch the reference creation. -The same problem affects slicing over non-existent indices/keys of -a tied/magical array/hash. - -=head2 Building Extensions Can Fail Because Of Largefiles - -Some extensions like mod_perl are known to have issues with -`largefiles', a change brought by Perl 5.6.0 in which file offsets -default to 64 bits wide, where supported. Modules may fail to compile -at all, or they may compile and work incorrectly. Currently, there -is no good solution for the problem, but Configure now provides -appropriate non-largefile ccflags, ldflags, libswanted, and libs -in the %Config hash (e.g., $Config{ccflags_nolargefiles}) so the -extensions that are having problems can try configuring themselves -without the largefileness. This is admittedly not a clean solution, -and the solution may not even work at all. One potential failure is -whether one can (or, if one can, whether it's a good idea to) link -together at all binaries with different ideas about file offsets; -all this is platform-dependent. - =head2 Unicode Support on EBCDIC Still Spotty Though mostly working, Unicode support still has problem spots on @@ -3614,11 +3621,6 @@ EBCDIC platforms. One such known spot are the C<\p{}> and C<\P{}> regular expression constructs for code points less than 256: the C are testing for Unicode code points, not knowing about EBCDIC. -=head2 The Compiler Suite Is Still Very Experimental - -The compiler suite is slowly getting better but it continues to be -highly experimental. Use in production environments is discouraged. - =head2 Seen In Perl 5.7 But Gone Now C (previously known as C) was removed