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