Split "Known problems" into "Known problems" (generic,
Jarkko Hietaniemi [Mon, 15 Jul 2002 21:11:04 +0000 (21:11 +0000)]
or shared among several platforms) and "Platform Specific
Problems".

p4raw-id: //depot/perl@17561

pod/perldelta.pod

index 3e4f92b..7a6413e 100644 (file)
@@ -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<perlobj/"Two-Phased Garbage Collection">).  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<perlthrtut> for more information.
+
+=head2 Failure of Thread (5.005-style) tests
+
+B<Note that support for 5.005-style threading is deprecated,
+experimental and practically unsupported.  In 5.10, it is expected
+to be removed.  You should migrate your code to ithreads.>
+
+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<undef> 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<perlthrtut> 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<Note that support for 5.005-style threading is deprecated,
-experimental and practically unsupported.  In 5.10, it is expected
-to be removed.  You should migrate your code to ithreads.>
-
-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<perlobj/"Two-Phased Garbage Collection">).  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<undef> 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<pP> 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<Time::Piece> (previously known as C<Time::Object>) was removed