Temporary stopgap for the self-tying issue: for now only
[p5sagit/p5-mst-13.2.git] / pod / perldelta.pod
CommitLineData
cc0fca54 1=head1 NAME
2
53080bb1 3perldelta - what's new for perl v5.7.0
cc0fca54 4
5=head1 DESCRIPTION
6
53080bb1 7This document describes differences between the 5.6.0 release and
8the 5.7.0 release.
cc0fca54 9
43b92eec 10=head1 Security Vulnerability Closed
d4ad863d 11
12A potential security vulnerability in the optional suidperl component
ce72e97c 13of Perl has been identified. suidperl is neither built nor installed
8456ac52 14by default. As of September the 2nd, 2000, the only known vulnerable
ce72e97c 15platform is Linux, most likely all Linux distributions. CERT and
16various vendors have been alerted about the vulnerability.
d4ad863d 17
18The problem was caused by Perl trying to report a suspected security
ce72e97c 19exploit attempt using an external program, /bin/mail. On Linux
8456ac52 20platforms the /bin/mail program had an undocumented feature which
21when combined with suidperl gave access to a root shell, resulting in
22a serious compromise instead of reporting the exploit attempt. If you
23don't have /bin/mail, or if you have 'safe setuid scripts', or if
24suidperl is not installed, you are safe.
d4ad863d 25
26The exploit attempt reporting feature has been completely removed from
27the Perl 5.7.0 release, so that particular vulnerability isn't there
562628a3 28anymore. However, further security vulnerabilities are,
29unfortunately, always possible. The suidperl code is being reviewed
30and if deemed too risky to continue to be supported, it may be
31completely removed from future releases. In any case, suidperl should
32only be used by security experts who know exactly what they are doing
33and why they are using suidperl instead of some other solution such as
34sudo (see http://www.courtesan.com/sudo/).
d4ad863d 35
36=head1 Incompatible Changes
37
ce72e97c 38=over 4
39
40=item *
d4ad863d 41
ce72e97c 42Arrays now always interpolate into double-quoted strings:
43constructs like "foo@bar" now always assume C<@bar> is an array,
44whether or not the compiler has seen use of C<@bar>.
d4ad863d 45
ce72e97c 46=item *
d4ad863d 47
48The semantics of bless(REF, REF) were unclear and until someone proves
49it to make some sense, it is forbidden.
50
ce72e97c 51=item *
d4ad863d 52
c9e9bc25 53A reference to a reference now stringify as "REF(0x81485ec)" instead
54of "SCALAR(0x81485ec)" in order to be more consistent with the return
55value of ref().
56
57=item *
58
d4ad863d 59The very dusty examples in the eg/ directory have been removed.
60Suggestions for new shiny examples welcome but the main issue is that
ce72e97c 61the examples need to be documented, tested and (most importantly)
62maintained.
d4ad863d 63
ce72e97c 64=item *
d4ad863d 65
66The obsolete chat2 library that should never have been allowed
67to escape the laboratory has been decommissioned.
68
ce72e97c 69=item *
d4ad863d 70
71The unimplemented POSIX regex features [[.cc.]] and [[=c=]] are still
43b92eec 72recognised but now cause fatal errors. The previous behaviour of
d4ad863d 73ignoring them by default and warning if requested was unacceptable
74since it, in a way, falsely promised that the features could be used.
75
ce72e97c 76=item *
d4ad863d 77
14638679 78The (bogus) escape sequences \8 and \9 now give an optional warning
79("Unrecognized escape passed through"). There is no need to \-escape
80any C<\w> character.
831facbb 81
82=item *
83
d4ad863d 84lstat(FILEHANDLE) now gives a warning because the operation makes no sense.
85In future releases this may become a fatal error.
86
ce72e97c 87=item *
d4ad863d 88
ce72e97c 89The long deprecated uppercase aliases for the string comparison
d4ad863d 90operators (EQ, NE, LT, LE, GE, GT) have now been removed.
91
ce72e97c 92=item *
d4ad863d 93
94The regular expression captured submatches ($1, $2, ...) are now
ce72e97c 95more consistently unset if the match fails, instead of leaving false
d4ad863d 96data lying around in them.
97
ce72e97c 98=item *
d4ad863d 99
100The tr///C and tr///U features have been removed and will not return;
101the interface was a mistake. Sorry about that. For similar
102functionality, see pack('U0', ...) and pack('C0', ...).
103
ce72e97c 104=back
105
cc0fca54 106=head1 Core Enhancements
107
53080bb1 108=over 4
109
110=item *
111
112C<perl -d:Module=arg,arg,arg> now works (previously one couldn't pass
113in multiple arguments.)
114
115=item *
116
53080bb1 117my __PACKAGE__ now works.
118
119=item *
120
ce72e97c 121C<no Module;> now works even if there is no "sub unimport" in the Module.
53080bb1 122
123=item *
124
d4ad863d 125The numerical comparison operators return C<undef> if either operand
126is a NaN. Previously the behaviour was unspecified.
53080bb1 127
128=item *
129
43b92eec 130C<pack('U0a*', ...)> can now be used to force a string to UTF8.
53080bb1 131
132=item *
133
eb3fce90 134The printf and sprintf now support parameter reordering using the
135C<%\d+\$> and C<*\d+\$> syntaxes.
136
137=item *
138
53080bb1 139prototype(\&) is now available.
140
c835e335 141=item *
142
143There is now an UNTIE method.
144
53080bb1 145=back
146
cc0fca54 147=head1 Modules and Pragmata
148
53080bb1 149=head2 New Modules
150
d4ad863d 151=over 4
152
153=item *
154
ce72e97c 155File::Temp allows one to create temporary files and directories in an
156easy, portable, and secure way.
d4ad863d 157
158=item *
159
ce72e97c 160Storable gives persistence to Perl data structures by allowing the
161storage and retrieval of Perl data to and from files in a fast and
162compact binary format.
d4ad863d 163
164=back
53080bb1 165
166=head2 Updated And Improved Modules and Pragmata
167
168=over 4
169
170=item *
171
ce72e97c 172The following independently supported modules have been updated to
173newer versions from CPAN: CGI, CPAN, DB_File, File::Spec, Getopt::Long,
174the podlators bundle, Pod::LaTeX, Pod::Parser, Term::ANSIColor, Test.
53080bb1 175
176=item *
177
ce72e97c 178Bug fixes and minor enhancements have been applied to B::Deparse,
9db5a202 179Data::Dumper, IO::Poll, IO::Socket::INET, Math::BigFloat,
a1ba9576 180Math::Complex, Math::Trig, Net::protoent, the re pragma, SelfLoader,
181Sys::SysLog, Test::Harness, Text::Wrap, UNIVERSAL, and the warnings
182pragma.
53080bb1 183
184=item *
185
ce72e97c 186The attributes::reftype() now works on tied arguments.
53080bb1 187
188=item *
189
ce72e97c 190AutoLoader can now be disabled with C<no AutoLoader;>,
53080bb1 191
192=item *
193
194The English module can now be used without the infamous performance
195hit by saying
196
197 use English '-no_performance_hit';
198
199(Assuming, of course, that one doesn't need the troublesome variables
8456ac52 200C<$`>, C<$&>, or C<$'>.) Also, introduced C<@LAST_MATCH_START> and
53080bb1 201C<@LAST_MATCH_END> English aliases for C<@-> and C<@+>.
202
203=item *
204
ce72e97c 205File::Find now has pre- and post-processing callbacks. It also
206correctly changes directories when chasing symbolic links. Callbacks
207(naughtily) exiting with "next;" instead of "return;" now work.
53080bb1 208
209=item *
210
d4ad863d 211File::Glob::glob() renamed to File::Glob::bsd_glob() to avoid
53080bb1 212prototype mismatch with CORE::glob().
213
214=item *
215
ce72e97c 216IPC::Open3 now allows the use of numeric file descriptors.
53080bb1 217
218=item *
219
ce72e97c 220use lib now works identically to @INC. Removing directories
221with 'no lib' now works.
53080bb1 222
223=item *
224
ce72e97c 225C<%INC> now localised in a Safe compartment so that use/require work.
53080bb1 226
227=item *
228
ce72e97c 229The Shell module now has an OO interface.
53080bb1 230
a1ba9576 231=item *
232
ce72e97c 233=back
53080bb1 234
ce72e97c 235=head1 Utility Changes
53080bb1 236
ce72e97c 237=over 4
53080bb1 238
239=item *
240
8456ac52 241The Emacs perl mode (emacs/cperl-mode.el) has been updated to version
2424.31.
53080bb1 243
244=item *
245
8456ac52 246Perlbug is now much more robust. It also sends the bug report to
247perl.org, not perl.com.
53080bb1 248
249=item *
250
ce72e97c 251The perlcc utility has been rewritten and its user interface (that is,
252command line) is much more like that of the UNIX C compiler, cc.
53080bb1 253
254=item *
255
ce72e97c 256The xsubpp utility for extension writers now understands POD
257documentation embedded in the *.xs files.
53080bb1 258
ce72e97c 259=back
53080bb1 260
ce72e97c 261=head1 New Documentation
53080bb1 262
ce72e97c 263=over 4
53080bb1 264
265=item *
266
ce72e97c 267perl56delta details the changes between the 5.005 release and the
2685.6.0 release.
53080bb1 269
270=item *
271
ce72e97c 272perldebtut is a Perl debugging tutorial.
53080bb1 273
274=item *
275
ce72e97c 276perlebcdic contains considerations for running Perl on EBCDIC platforms.
277Note that unfortunately EBCDIC platforms that used to supported back in
278Perl 5.005 are still unsupported by Perl 5.7.0; the plan, however, is to
279bring them back to the fold.
53080bb1 280
281=item *
282
ce72e97c 283perlnewmod tells about writing and submitting a new module.
53080bb1 284
285=item *
286
ce72e97c 287perlposix-bc explains using Perl on the POSIX-BC platform
562628a3 288(an EBCDIC mainframe platform).
53080bb1 289
290=item *
291
ce72e97c 292perlretut is a regular expression tutorial.
53080bb1 293
294=item *
295
ce72e97c 296perlrequick is a regular expressions quick-start guide.
297Yes, much quicker than perlretut.
53080bb1 298
299=item *
300
ce72e97c 301perlutil explains the command line utilities packaged with the Perl
302distribution.
53080bb1 303
304=back
305
ce72e97c 306=head1 Performance Enhancements
53080bb1 307
562628a3 308=over 4
309
310=item *
311
ce72e97c 312map() that changes the size of the list should now work faster.
53080bb1 313
d46b76b3 314=item *
315
316sort() has been changed to use mergesort internally as opposed to the
317earlier quicksort. For very small lists this may result in slightly
8456ac52 318slower sorting times, but in general the speedup should be at least
31920%. Additional bonuses are that the worst case behaviour of sort()
320is now better (in computer science terms it now runs in time O(N log N),
321as opposed to quicksort's Theta(N**2) worst-case run time behaviour),
322and that sort() is now stable (meaning that elements with identical
323keys will stay ordered as they were before the sort).
d46b76b3 324
562628a3 325=back
326
ce72e97c 327=head1 Installation and Configuration Improvements
53080bb1 328
ce72e97c 329=head2 Generic Improvements
cc0fca54 330
53080bb1 331=over 4
332
333=item *
334
0aa7271f 335INSTALL now explains how you can configure Perl to use 64-bit
ce72e97c 336integers even on non-64-bit platforms.
53080bb1 337
338=item *
339
8456ac52 340Policy.sh policy change: if you are reusing a Policy.sh file
341(see INSTALL) and you use Configure -Dprefix=/foo/bar and in the old
ce72e97c 342Policy $prefix eq $siteprefix and $prefix eq $vendorprefix, all of
343them will now be changed to the new prefix, /foo/bar. (Previously
344only $prefix changed.) If you do not like this new behaviour,
345specify prefix, siteprefix, and vendorprefix explicitly.
53080bb1 346
347=item *
348
ce72e97c 349A new optional location for Perl libraries, otherlibdirs, is available.
350It can be used for example for vendor add-ons without disturbing Perl's
351own library directories.
53080bb1 352
353=item *
354
ce72e97c 355In many platforms the vendor-supplied 'cc' is too stripped-down to
356build Perl (basically, 'cc' doesn't do ANSI C). If this seems
357to be the case and 'cc' does not seem to be the GNU C compiler
358'gcc', an automatic attempt is made to find and use 'gcc' instead.
53080bb1 359
360=item *
361
ce72e97c 362gcc needs to closely track the operating system release to avoid
363build problems. If Configure finds that gcc was built for a different
364operating system release than is running, it now gives a clearly visible
365warning that there may be trouble ahead.
53080bb1 366
367=item *
368
ce72e97c 369If binary compatibility with the 5.005 release is not wanted, Configure
370no longer suggests including the 5.005 modules in @INC.
53080bb1 371
372=item *
373
ce72e97c 374Configure C<-S> can now run non-interactively.
53080bb1 375
376=item *
377
ce72e97c 378configure.gnu now works with options with whitespace in them.
53080bb1 379
380=item *
381
ce72e97c 382installperl now outputs everything to STDERR.
53080bb1 383
384=item *
385
ce72e97c 386$Config{byteorder} is now computed dynamically (this is more robust
387with "fat binaries" where an executable image contains binaries for
388more than one binary platform.)
53080bb1 389
eedaba54 390=item *
391
392Configure no longer included the DBM libraries (dbm, gdbm, db, ndbm)
393when building the Perl binary. The only exception to this is SunOS 4.x,
394which needs them.
395
ce72e97c 396=back
53080bb1 397
ce72e97c 398=head1 Selected Bug Fixes
53080bb1 399
ce72e97c 400=over 4
53080bb1 401
402=item *
403
ce72e97c 404Several debugger fixes: exit code now reflects the script exit code,
405condition C<"0"> now treated correctly, the C<d> command now checks
406line number, the C<$.> no longer gets corrupted, all debugger output now
407goes correctly to the socket if RemotePort is set.
53080bb1 408
409=item *
410
ce72e97c 411C<*foo{FORMAT}> now works.
53080bb1 412
413=item *
414
ce72e97c 415Lexical warnings now propagating correctly between scopes.
53080bb1 416
417=item *
418
ce72e97c 419Line renumbering with eval and C<#line> now works.
53080bb1 420
421=item *
422
ce72e97c 423Fixed numerous memory leaks, especially in eval "".
53080bb1 424
425=item *
426
ce72e97c 427Modulus of unsigned numbers now works (4063328477 % 65535 used to
428return 27406, instead of 27047).
53080bb1 429
430=item *
431
ce72e97c 432Some "not a number" warnings introduced in 5.6.0 eliminated to be
433more compatible with 5.005. Infinity is now recognised as a number.
53080bb1 434
435=item *
436
ce72e97c 437our() variables will not cause "will not stay shared" warnings.
53080bb1 438
439=item *
440
ce72e97c 441pack "Z" now correctly terminates the string with "\0".
53080bb1 442
443=item *
444
ce72e97c 445Fix password routines which in some shadow password platforms
446(e.g. HP-UX) caused getpwent() to return every other entry.
53080bb1 447
448=item *
449
ce72e97c 450printf() no longer resets the numeric locale to "C".
53080bb1 451
452=item *
453
ce72e97c 454C<q(a\\b)> now parses correctly as C<'a\\b'>.
53080bb1 455
456=item *
457
ce72e97c 458Printing quads (64-bit integers) with printf/sprintf now works
562628a3 459without the q L ll prefixes (assuming you are on a quad-capable platform).
53080bb1 460
461=item *
462
ce72e97c 463Regular expressions on references and overloaded scalars now work.
53080bb1 464
465=item *
466
ce72e97c 467scalar() now forces scalar context even when used in void context.
53080bb1 468
469=item *
ce72e97c 470
471sort() arguments are now compiled in the right wantarray context
472(they were accidentally using the context of the sort() itself).
53080bb1 473
474=item *
475
ce72e97c 476Changed the POSIX character class C<[[:space:]]> to include the (very
477rare) vertical tab character. Added a new POSIX-ish character class
478C<[[:blank:]]> which stands for horizontal whitespace (currently,
479the space and the tab).
53080bb1 480
481=item *
482
ce72e97c 483$AUTOLOAD, sort(), lock(), and spawning subprocesses
484in multiple threads simultaneously are now thread-safe.
53080bb1 485
486=item *
487
ce72e97c 488Allow read-only string on left hand side of non-modifying tr///.
53080bb1 489
490=item *
491
ce72e97c 492Several Unicode fixes (but still not perfect).
53080bb1 493
ce72e97c 494=over 8
53080bb1 495
496=item *
497
ce72e97c 498BOMs (byte order marks) in the beginning of Perl files
499(scripts, modules) should now be transparently skipped.
0aa7271f 500UTF-16 (UCS-2)encoded Perl files should now be read correctly.
53080bb1 501
502=item *
503
bc723577 504The character tables have been updated to Unicode 3.0.1.
53080bb1 505
ce72e97c 506=item *
53080bb1 507
ce72e97c 508chr() for values greater than 127 now create utf8 when under use
509utf8.
53080bb1 510
ce72e97c 511=item *
53080bb1 512
ce72e97c 513Comparing with utf8 data does not magically upgrade non-utf8 data into
514utf8.
53080bb1 515
516=item *
517
ce72e97c 518C<IsAlnum>, C<IsAlpha>, and C<IsWord> now match titlecase.
53080bb1 519
520=item *
521
ce72e97c 522Concatenation with the C<.> operator or via variable interpolation,
523C<eq>, C<substr>, C<reverse>, C<quotemeta>, the C<x> operator,
524substitution with C<s///>, single-quoted UTF8, should now work--in
525theory.
53080bb1 526
527=item *
528
ce72e97c 529The C<tr///> operator now works I<slightly> better but is still rather
530broken. Note that the C<tr///CU> functionality has been removed (but
531see pack('U0', ...)).
53080bb1 532
533=item *
534
33b45480 535vec() now tries to work with characters <= 255 when possible, but it leaves
536higher character values in place. In that case, if vec() was used to modify
537the string, it is no longer considered to be utf8-encoded.
bc723577 538
539=item *
540
ce72e97c 541Zero entries were missing from the Unicode classes like C<IsDigit>.
53080bb1 542
543=back
544
ce72e97c 545=item *
53080bb1 546
ce72e97c 547UNIVERSAL::isa no longer caches methods incorrectly. (This broke
548the Tk extension with 5.6.0.)
53080bb1 549
ce72e97c 550=back
53080bb1 551
ce72e97c 552=head2 Platform Specific Changes and Fixes
53080bb1 553
554=over 4
555
556=item *
557
ce72e97c 558BSDI 4.*
53080bb1 559
ce72e97c 560Perl now works on post-4.0 BSD/OSes.
53080bb1 561
ce72e97c 562=item *
53080bb1 563
ce72e97c 564All BSDs
53080bb1 565
ce72e97c 566Setting C<$0> now works (as much as possible; see perlvar for details).
53080bb1 567
ce72e97c 568=item *
53080bb1 569
ce72e97c 570Cygwin
53080bb1 571
ce72e97c 572Numerous updates; currently synchronised with Cygwin 1.1.4.
53080bb1 573
574=item *
575
ce72e97c 576EPOC
53080bb1 577
ce72e97c 578EPOC update after Perl 5.6.0. See README.epoc.
53080bb1 579
ce72e97c 580=item *
53080bb1 581
ce72e97c 582FreeBSD 3.*
53080bb1 583
ce72e97c 584Perl now works on post-3.0 FreeBSDs.
53080bb1 585
586=item *
587
ce72e97c 588HP-UX
53080bb1 589
ce72e97c 590README.hpux updated; C<Configure -Duse64bitall> now almost works.
53080bb1 591
ce72e97c 592=item *
53080bb1 593
ce72e97c 594IRIX
53080bb1 595
ce72e97c 596Numerous compilation flag and hint enhancements; accidental mixing
597of 32-bit and 64-bit libraries (a doomed attempt) made much harder.
53080bb1 598
599=item *
600
ce72e97c 601Linux
53080bb1 602
ce72e97c 603Long doubles should now work (see INSTALL).
53080bb1 604
605=item *
606
ce72e97c 607MacOS Classic
608
53080bb1 609Compilation of the standard Perl distribution in MacOS Classic should
ce72e97c 610now work if you have the Metrowerks development environment and
611the missing Mac-specific toolkit bits. Contact the macperl mailing
53080bb1 612list for details.
613
ce72e97c 614=item *
53080bb1 615
ce72e97c 616MPE/iX
53080bb1 617
ce72e97c 618MPE/iX update after Perl 5.6.0. See README.mpeix.
53080bb1 619
ce72e97c 620=item *
53080bb1 621
ce72e97c 622NetBSD/sparc
53080bb1 623
ce72e97c 624Perl now works on NetBSD/sparc.
53080bb1 625
626=item *
627
ce72e97c 628OS/2
53080bb1 629
ce72e97c 630Now works with usethreads (see INSTALL).
53080bb1 631
632=item *
633
ce72e97c 634Solaris
53080bb1 635
ce72e97c 63664-bitness using the Sun Workshop compiler now works.
53080bb1 637
638=item *
639
ce72e97c 640Tru64 (aka Digital UNIX, aka DEC OSF/1)
641
642The operating system version letter now recorded in $Config{osvers}.
53080bb1 643Allow compiling with gcc (previously explicitly forbidden). Compiling
644with gcc still not recommended because buggy code results, even with
645gcc 2.95.2.
646
647=item *
648
ce72e97c 649Unicos
53080bb1 650
651Fixed various alignment problems that lead into core dumps either
ce72e97c 652during build or later; no longer dies on math errors at runtime;
653now using full quad integers (64 bits), previously was using
b84d4f81 654only 46 bit integers for speed.
53080bb1 655
53080bb1 656=item *
657
ce72e97c 658VMS
53080bb1 659
ce72e97c 660chdir() now works better despite a CRT bug; now works with MULTIPLICITY
661(see INSTALL); now works with Perl's malloc.
53080bb1 662
663=item *
664
ce72e97c 665Windows
53080bb1 666
ce72e97c 667=over 8
53080bb1 668
669=item *
670
d4ad863d 671accept() no longer leaks memory.
53080bb1 672
673=item *
674
675Better chdir() return value for a non-existent directory.
676
677=item *
678
679New %ENV entries now propagate to subprocesses.
680
681=item *
682
683$ENV{LIB} now used to search for libs under Visual C.
684
685=item *
686
687A failed (pseudo)fork now returns undef and sets errno to EAGAIN.
688
689=item *
690
691Allow REG_EXPAND_SZ keys in the registry.
692
693=item *
694
695Can now send() from all threads, not just the first one.
696
697=item *
698
699Fake signal handling reenabled, bugs and all.
700
701=item *
702
703Less stack reserved per thread so that more threads can run
0aa7271f 704concurrently. (Still 16M per thread.)
53080bb1 705
706=item *
707
708C<File::Spec->tmpdir()> now prefers C:/temp over /tmp
0aa7271f 709(works better when perl is running as service).
53080bb1 710
711=item *
712
713Better UNC path handling under ithreads.
714
715=item *
716
717wait() and waitpid() now work much better.
718
719=item *
720
721winsock handle leak fixed.
722
723=back
724
cc0fca54 725=head1 New or Changed Diagnostics
726
53080bb1 727All regular expression compilation error messages are now hopefully
728easier to understand both because the error message now comes before
729the failed regex and because the point of failure is now clearly
730marked.
731
732The various "opened only for", "on closed", "never opened" warnings
733drop the C<main::> prefix for filehandles in the C<main> package,
562628a3 734for example C<STDIN> instead of <main::STDIN>.
53080bb1 735
d4ad863d 736The "Unrecognized escape" warning has been extended to include C<\8>,
737C<\9>, and C<\_>. There is no need to escape any of the C<\w> characters.
53080bb1 738
53080bb1 739=head1 Changed Internals
740
ce72e97c 741=over 4
742
743=item *
53080bb1 744
d4ad863d 745perlapi.pod (a companion to perlguts) now attempts to document the
746internal API.
53080bb1 747
ce72e97c 748=item *
53080bb1 749
ce72e97c 750You can now build a really minimal perl called microperl.
d4ad863d 751Building microperl does not require even running Configure;
752C<make -f Makefile.micro> should be enough. Beware: microperl makes
753many assumptions, some of which may be too bold; the resulting
0aa7271f 754executable may crash or otherwise misbehave in wondrous ways.
755For careful hackers only.
53080bb1 756
ce72e97c 757=item *
53080bb1 758
43b92eec 759Added rsignal(), whichsig(), do_join() to the publicised API.
53080bb1 760
ce72e97c 761=item *
53080bb1 762
43b92eec 763Made possible to propagate customised exceptions via croak()ing.
53080bb1 764
ce72e97c 765=item *
53080bb1 766
767Added is_utf8_char(), is_utf8_string(), bytes_to_utf8(), and utf8_to_bytes().
768
ce72e97c 769=item *
53080bb1 770
771Now xsubs can have attributes just like subs.
772
ce72e97c 773=back
774
cc0fca54 775=head1 Known Problems
776
53080bb1 777=head2 Unicode Support Still Far From Perfect
778
779We're working on it. Stay tuned.
780
781=head2 EBCDIC Still A Lost Platform
782
783The plan is to bring them back.
784
785=head2 Building Extensions Can Fail Because Of Largefiles
786
787Certain extensions like mod_perl and BSD::Resource are known to have
ce72e97c 788issues with `largefiles', a change brought by Perl 5.6.0 in which file
4b2ec495 789offsets default to 64 bits wide, where supported. Modules may fail to
ce72e97c 790compile at all or compile and work incorrectly. Currently there is no
4b2ec495 791good solution for the problem, but Configure now provides appropriate
792non-largefile ccflags, ldflags, libswanted, and libs in the %Config
793hash (e.g., $Config{ccflags_nolargefiles}) so the extensions that are
794having problems can try configuring themselves without the
795largefileness. This is admittedly not a clean solution, and the
796solution may not even work at all. One potential failure is whether
797one can (or, if one can, whether it's a good idea) link together at
798all binaries with different ideas about file offsets, all this is
799platform-dependent.
53080bb1 800
9dc46381 801=head2 ftmp-security tests warn 'system possibly insecure'
802
803Don't panic. Read INSTALL 'make test' section instead.
804
446288b8 805=head2 Test lib/posix Subtest 9 Fails In LP64-Configured HP-UX
806
807If perl is configured with -Duse64bitall, the successful result of the
808subtest 10 of lib/posix may arrive before the successful result of the
809subtest 9, which confuses the test harness so much that it thinks the
810subtest 9 failed.
811
9dc46381 812=head2 Long Doubles Still Don't Work In Solaris
813
814The experimental long double support is still very much so in Solaris.
2ff7ee21 815(Other platforms like Linux and Tru64 are beginning to solidify in
816this area.)
d184b07b 817
1047c2b3 818=head2 Linux With Sfio Fails op/misc Test 48
819
820No known fix.
821
d184b07b 822=head2 Storable tests fail in some platforms
823
2ff7ee21 824If any Storable tests fail the use of Storable is not advisable.
825
d184b07b 826=over 4
827
828=item *
829
830Many Storable tests fail on AIX configured with 64 bit integers.
831
832So far unidentified problems break Storable in AIX if Perl is
833configured to use 64 bit integers. AIX in 32-bit mode works and
834other 64-bit platforms work with Storable.
835
836=item *
837
838DOS DJGPP may hang when testing Storable.
839
840=item *
841
842st-06compat fails in UNICOS and UNICOS/mk.
24e657a8 843
844This means that you cannot read old (pre-Storable-0.7) Storable images
845made in other platforms.
846
2ff7ee21 847=item *
848
849st-store.t and st-retrieve may fail with Compaq C 6.2 on OpenVMS Alpha 7.2.
850
33a87e58 851=head2 Threads Are Still Experimental
852
853Multithreading is still an experimental feature. Some platforms
854emit the following message for lib/thr5005
855
856 #
857 # This is a KNOWN FAILURE, and one of the reasons why threading
858 # is still an experimental feature. It is here to stop people
859 # from deploying threads in production. ;-)
860 #
861
0aa7271f 862and another known thread-related warning is
33a87e58 863
864 pragma/overload......Unbalanced saves: 3 more saves than restores
865 panic: magic_mutexfree during global destruction.
866 ok
867 lib/selfloader.......Unbalanced saves: 3 more saves than restores
868 panic: magic_mutexfree during global destruction.
869 ok
870 lib/st-dclone........Unbalanced saves: 3 more saves than restores
871 panic: magic_mutexfree during global destruction.
872 ok
873
874=head2 The Compiler Suite Is Still Experimental
875
0aa7271f 876The compiler suite is slowly getting better but is nowhere near
877working order yet. The backend part that has seen perhaps the most
878progress is the bytecode compiler.
33a87e58 879
d184b07b 880=back
881
cc0fca54 882=head1 Reporting Bugs
883
d4ad863d 884If you find what you think is a bug, you might check the articles
885recently posted to the comp.lang.perl.misc newsgroup and the perl
886bug database at http://bugs.perl.org. There may also be
887information at http://www.perl.com/perl/, the Perl Home Page.
cc0fca54 888
889If you believe you have an unreported bug, please run the B<perlbug>
890program included with your release. Be sure to trim your bug down
891to a tiny but sufficient test case. Your bug report, along with the
d4ad863d 892output of C<perl -V>, will be sent off to perlbug@perl.org to be
cc0fca54 893analysed by the Perl porting team.
894
895=head1 SEE ALSO
896
897The F<Changes> file for exhaustive details on what changed.
898
899The F<INSTALL> file for how to build Perl.
900
901The F<README> file for general stuff.
902
903The F<Artistic> and F<Copying> files for copyright information.
904
905=head1 HISTORY
906
53080bb1 907Written by Jarkko Hietaniemi <F<jhi@iki.fi>>, with many contributions
908from The Perl Porters and Perl Users submitting feedback and patches.
cc0fca54 909
d4ad863d 910Send omissions or corrections to <F<perlbug@perl.org>>.
cc0fca54 911
912=cut