Re: attributes are broken
[p5sagit/p5-mst-13.2.git] / pod / perldelta.pod
CommitLineData
ba370e9b 1=head1 NAME
cc0fca54 2
f39f21d8 3perldelta - what is new for perl v5.8.0
cc0fca54 4
5=head1 DESCRIPTION
6
44da0e71 7This document describes differences between the 5.6.0 release
8and the 5.8.0 release.
f39f21d8 9
44da0e71 10Many of the bug fixes in 5.8.0 were already seen in the 5.6.1
11maintenance release since the two releases were kept closely
12coordinated.
13
4f8e5944 14If you are upgrading from Perl 5.005_03, you might also want
15to read L<perl56delta>.
16
44da0e71 17=head1 Highlights In 5.8.0
76663d67 18
19=over 4
20
21=item *
22
23Better Unicode support
24
25=item *
26
27New Thread Implementation
28
29=item *
30
31Many New Modules
32
33=item *
34
35Better Numeric Accuracy
36
37=item *
38
39Safe Signals
40
41=item *
42
43More Extensive Regression Testing
44
45=back
46
f39f21d8 47=head1 Incompatible Changes
48
77c8cf41 49=head2 64-bit platforms and malloc
50
057b7f2b 51If your pointers are 64 bits wide, the Perl malloc is no longer being
c2e23569 52used because it does not work well with 8-byte pointers. Also,
61947107 53usually the system mallocs on such platforms are much better optimized
c2e23569 54for such large memory models than the Perl malloc. Some memory-hungry
55Perl applications like the PDL don't work well with Perl's malloc.
56Finally, other applications than Perl (like modperl) tend to prefer
57the system malloc. Such platforms include Alpha and 64-bit HPPA,
58MIPS, PPC, and Sparc.
77c8cf41 59
60=head2 AIX Dynaloading
61
62The AIX dynaloading now uses in AIX releases 4.3 and newer the native
63dlopen interface of AIX instead of the old emulated interface. This
64change will probably break backward compatibility with compiled
65modules. The change was made to make Perl more compliant with other
66applications like modperl which are using the AIX native interface.
67
95f0a2f1 68=head2 Attributes for C<my> variables now handled at run-time.
69
70The C<my EXPR : ATTRS> syntax now applies variable attributes at
71run-time. (Subroutine and C<our> variables still get attributes applied
72at compile-time.) See L<attributes> for additional details. In particular,
73however, this allows variable attributes to be useful for C<tie> interfaces,
74which was a deficiency of earlier releaes.
75
77c8cf41 76=head2 Socket Extension Dynamic in VMS
77
78The Socket extension is now dynamically loaded instead of being
79statically built in. This may or may not be a problem with ancient
80TCP/IP stacks of VMS: we do not know since we weren't able to test
81Perl in such configurations.
82
00bb525a 83=head2 IEEE-format Floating Point Default on OpenVMS Alpha
84
85Perl now uses IEEE format (T_FLOAT) as the default internal floating
86point format on OpenVMS Alpha, potentially breaking binary compatibility
87with external libraries or existing data. G_FLOAT is still available as
88a configuration option. The default on VAX (D_FLOAT) has not changed.
89
77c8cf41 90=head2 Different Definition of the Unicode Character Classes \p{In...}
91
92As suggested by the Unicode consortium, the Unicode character classes
93now prefer I<scripts> as opposed to I<blocks> (as defined by Unicode);
94in Perl, when the C<\p{In....}> and the C<\p{In....}> regular expression
95constructs are used. This has changed the definition of some of those
96character classes.
97
98The difference between scripts and blocks is that scripts are the
99glyphs used by a language or a group of languages, while the blocks
100are more artificial groupings of 256 characters based on the Unicode
101numbering.
102
103In general this change results in more inclusive Unicode character
104classes, but changes to the other direction also do take place:
105for example while the script C<Latin> includes all the Latin
106characters and their various diacritic-adorned versions, it
107does not include the various punctuation or digits (since they
108are not solely C<Latin>).
109
110Changes in the character class semantics may have happened if a script
111and a block happen to have the same name, for example C<Hebrew>.
112In such cases the script wins and C<\p{InHebrew}> now means the script
113definition of Hebrew. The block definition in still available,
114though, by appending C<Block> to the name: C<\p{InHebrewBlock}> means
115what C<\p{InHebrew}> meant in perl 5.6.0. For the full list
116of affected character classes, see L<perlunicode/Blocks>.
117
61947107 118=head2 Perl Parser Stress Tested
119
120The Perl parser has been stress tested using both random input and
121Markov chain input and the few found crashes and lockups have been
122fixed.
123
c2e23569 124=head2 REF(...) Instead Of SCALAR(...)
77c8cf41 125
057b7f2b 126A reference to a reference now stringifies as "REF(0x81485ec)" instead
c2e23569 127of "SCALAR(0x81485ec)" in order to be more consistent with the return
128value of ref().
77c8cf41 129
c2e23569 130=head2 Deprecations
77c8cf41 131
61947107 132=over 4
77c8cf41 133
61947107 134=item *
f39f21d8 135
61947107 136The semantics of bless(REF, REF) were unclear and until someone proves
137it to make some sense, it is forbidden.
f39f21d8 138
139=item *
140
c2e23569 141The obsolete chat2 library that should never have been allowed
142to escape the laboratory has been decommissioned.
f39f21d8 143
144=item *
145
61947107 146The very dusty examples in the eg/ directory have been removed.
147Suggestions for new shiny examples welcome but the main issue is that
148the examples need to be documented, tested and (most importantly)
149maintained.
f39f21d8 150
151=item *
152
c2e23569 153The (bogus) escape sequences \8 and \9 now give an optional warning
154("Unrecognized escape passed through"). There is no need to \-escape
155any C<\w> character.
f39f21d8 156
157=item *
158
c2e23569 159The list of filenames from glob() (or <...>) is now by default sorted
44da0e71 160alphabetically to be csh-compliant (which is what happened before
161in most UNIX platforms). (bsd_glob() does still sort platform
c2e23569 162natively, ASCII or EBCDIC, unless GLOB_ALPHASORT is specified.)
f39f21d8 163
164=item *
165
44da0e71 166Spurious syntax errors generated in certain situations, when glob()
167caused File::Glob to be loaded for the first time, have been fixed.
168
169=item *
170
c2e23569 171Although "you shouldn't do that", it was possible to write code that
172depends on Perl's hashed key order (Data::Dumper does this). The new
173algorithm "One-at-a-Time" produces a different hashed key order.
174More details are in L</"Performance Enhancements">.
f39f21d8 175
176=item *
177
61947107 178lstat(FILEHANDLE) now gives a warning because the operation makes no sense.
179In future releases this may become a fatal error.
f39f21d8 180
181=item *
182
057b7f2b 183The C<package;> syntax (C<package> without an argument) has been
c2e23569 184deprecated. Its semantics were never that clear and its
185implementation even less so. If you have used that feature to
186disallow all but fully qualified variables, C<use strict;> instead.
61947107 187
188=item *
189
c2e23569 190The unimplemented POSIX regex features [[.cc.]] and [[=c=]] are still
191recognised but now cause fatal errors. The previous behaviour of
192ignoring them by default and warning if requested was unacceptable
193since it, in a way, falsely promised that the features could be used.
61947107 194
195=item *
196
c2e23569 197The current user-visible implementation of pseudo-hashes (the weird
198use of the first array element) is deprecated starting from Perl 5.8.0
199and will be removed in Perl 5.10.0, and the feature will be
200implemented differently. Not only is the current interface rather
201ugly, but the current implementation slows down normal array and hash
202use quite noticeably. The C<fields> pragma interface will remain
203available.
61947107 204
205=item *
206
aecce728 207The syntaxes C<< @a->[...] >> and C<< %h->{...} >> have now been deprecated.
61947107 208
209=item *
210
c2e23569 211After years of trying the suidperl is considered to be too complex to
212ever be considered truly secure. The suidperl functionality is likely
213to be removed in a future release.
214
215=item *
216
217The long deprecated uppercase aliases for the string comparison
218operators (EQ, NE, LT, LE, GE, GT) have now been removed.
219
220=item *
221
222The tr///C and tr///U features have been removed and will not return;
223the interface was a mistake. Sorry about that. For similar
224functionality, see pack('U0', ...) and pack('C0', ...).
f39f21d8 225
226=back
227
61947107 228=head1 Core Enhancements
229
77c8cf41 230=head2 PerlIO is Now The Default
f39f21d8 231
232=over 4
233
234=item *
235
77c8cf41 236IO is now by default done via PerlIO rather than system's "stdio".
237PerlIO allows "layers" to be "pushed" onto a file handle to alter the
238handle's behaviour. Layers can be specified at open time via 3-arg
239form of open:
f39f21d8 240
77c8cf41 241 open($fh,'>:crlf :utf8', $path) || ...
f39f21d8 242
77c8cf41 243or on already opened handles via extended C<binmode>:
f39f21d8 244
77c8cf41 245 binmode($fh,':encoding(iso-8859-7)');
f39f21d8 246
77c8cf41 247The built-in layers are: unix (low level read/write), stdio (as in
248previous Perls), perlio (re-implementation of stdio buffering in a
249portable manner), crlf (does CRLF <=> "\n" translation as on Win32,
250but available on any platform). A mmap layer may be available if
251platform supports it (mostly UNIXes).
f39f21d8 252
77c8cf41 253Layers to be applied by default may be specified via the 'open' pragma.
254
255See L</"Installation and Configuration Improvements"> for the effects
256of PerlIO on your architecture name.
f39f21d8 257
258=item *
259
77c8cf41 260File handles can be marked as accepting Perl's internal encoding of Unicode
261(UTF-8 or UTF-EBCDIC depending on platform) by a pseudo layer ":utf8" :
f39f21d8 262
77c8cf41 263 open($fh,">:utf8","Uni.txt");
f39f21d8 264
77c8cf41 265Note for EBCDIC users: the pseudo layer ":utf8" is erroneously named
266for you since it's not UTF-8 what you will be getting but instead
267UTF-EBCDIC. See L<perlunicode>, L<utf8>, and
268http://www.unicode.org/unicode/reports/tr16/ for more information.
269In future releases this naming may change.
f39f21d8 270
271=item *
272
77c8cf41 273File handles can translate character encodings from/to Perl's internal
274Unicode form on read/write via the ":encoding()" layer.
f39f21d8 275
276=item *
277
77c8cf41 278File handles can be opened to "in memory" files held in Perl scalars via:
279
280 open($fh,'>', \$variable) || ...
f39f21d8 281
282=item *
283
77c8cf41 284Anonymous temporary files are available without need to
285'use FileHandle' or other module via
f39f21d8 286
77c8cf41 287 open($fh,"+>", undef) || ...
f39f21d8 288
77c8cf41 289That is a literal undef, not an undefined value.
f39f21d8 290
291=item *
292
77c8cf41 293The list form of C<open> is now implemented for pipes (at least on UNIX):
f39f21d8 294
77c8cf41 295 open($fh,"-|", 'cat', '/etc/motd')
f39f21d8 296
77c8cf41 297creates a pipe, and runs the equivalent of exec('cat', '/etc/motd') in
298the child process.
f39f21d8 299
e1f170bd 300=back
f39f21d8 301
e1f170bd 302=head2 Signals Are Now Safe
f39f21d8 303
e1f170bd 304Perl used to be fragile in that signals arriving at inopportune moments
305could corrupt Perl's internal state. Now Perl postpones handling of
306signals until it's safe.
f39f21d8 307
e1f170bd 308=head2 Unicode Overhaul
f39f21d8 309
e1f170bd 310Unicode in general should be now much more usable than in Perl 5.6.0
311(or even in 5.6.1). Unicode can be used in hash keys, Unicode in
312regular expressions should work now, Unicode in tr/// should work now,
313Unicode in I/O should work now.
f39f21d8 314
e1f170bd 315=over 4
f39f21d8 316
317=item *
318
e1f170bd 319The Unicode Character Database coming with Perl has been upgraded
320to Unicode 3.1.1. For more information, see http://www.unicode.org/.
f39f21d8 321
322=item *
323
77c8cf41 324For developers interested in enhancing Perl's Unicode capabilities:
325almost all the UCD files are included with the Perl distribution in
e1f170bd 326the lib/unicore subdirectory. The most notable omission, for space
77c8cf41 327considerations, is the Unihan database.
f39f21d8 328
329=item *
330
77c8cf41 331The Unicode character classes \p{Blank} and \p{SpacePerl} have been
332added. "Blank" is like C isblank(), that is, it contains only
333"horizontal whitespace" (the space character is, the newline isn't),
334and the "SpacePerl" is the Unicode equivalent of C<\s> (\p{Space}
335isn't, since that includes the vertical tabulator character, whereas
336C<\s> doesn't.)
f39f21d8 337
338=back
339
77c8cf41 340=head2 Understanding of Numbers
341
342In general a lot of fixing has happened in the area of Perl's
343understanding of numbers, both integer and floating point. Since in
344many systems the standard number parsing functions like C<strtoul()>
345and C<atof()> seem to have bugs, Perl tries to work around their
346deficiencies. This results hopefully in more accurate numbers.
f39f21d8 347
e1f170bd 348Perl now tries internally to use integer values in numeric conversions
349and basic arithmetics (+ - * /) if the arguments are integers, and
350tries also to keep the results stored internally as integers.
057b7f2b 351This change leads to often slightly faster and always less lossy
e1f170bd 352arithmetics. (Previously Perl always preferred floating point numbers
353in its math.)
354
355=head2 Miscellaneous Enhancements
356
f39f21d8 357=over 4
358
359=item *
360
e1f170bd 361AUTOLOAD is now lvaluable, meaning that you can add the :lvalue attribute
362to AUTOLOAD subroutines and you can assign to the AUTOLOAD return value.
363
364=item *
365
61947107 366C<perl -d:Module=arg,arg,arg> now works (previously one couldn't pass
367in multiple arguments.)
f39f21d8 368
369=item *
370
61947107 371END blocks are now run even if you exit/die in a BEGIN block.
372Internally, the execution of END blocks is now controlled by
373PL_exit_flags & PERL_EXIT_DESTRUCT_END. This enables the new
374behaviour for Perl embedders. This will default in 5.10. See
375L<perlembed>.
f39f21d8 376
377=item *
378
e1f170bd 379Formats now support zero-padded decimal fields.
f39f21d8 380
381=item *
382
77c8cf41 383Lvalue subroutines can now return C<undef> in list context.
44da0e71 384However, the lvalue subroutine feature still remains experimental.
f39f21d8 385
386=item *
387
61947107 388A new special regular expression variable has been introduced:
389C<$^N>, which contains the most-recently closed group (submatch).
f39f21d8 390
391=item *
392
61947107 393C<no Module;> now works even if there is no "sub unimport" in the Module.
f39f21d8 394
395=item *
396
61947107 397The numerical comparison operators return C<undef> if either operand
398is a NaN. Previously the behaviour was unspecified.
f39f21d8 399
400=item *
401
e1f170bd 402The following builtin functions are now overridable: each(), keys(),
403pop(), push(), shift(), splice(), unshift().
404
405=item *
406
61947107 407C<pack('U0a*', ...)> can now be used to force a string to UTF8.
f39f21d8 408
409=item *
410
61947107 411my __PACKAGE__ $obj now works.
f39f21d8 412
413=item *
414
e1f170bd 415The printf() and sprintf() now support parameter reordering using the
416C<%\d+\$> and C<*\d+\$> syntaxes. For example
417
418 print "%2\$s %1\$s\n", "foo", "bar";
419
da6838c8 420will print "bar foo\n". This feature helps in writing
421internationalised software, and in general when the order
422of the parameters can vary.
f39f21d8 423
424=item *
425
e1f170bd 426prototype(\&) is now available.
61947107 427
428=item *
429
e1f170bd 430prototype(\[$@%&]) is now available to implicitly create references
431(useful for example if you want to emulate the tie() interface).
61947107 432
433=item *
434
44da0e71 435untie() will now call an UNTIE() hook if it exists. See L<perltie>
436for details.
61947107 437
438=item *
439
440L<utime> now supports C<utime undef, undef, @files> to change the
441file timestamps to the current time.
442
443=item *
444
e1f170bd 445The rules for allowing underscores (underbars) in numeric constants
446have been relaxed and simplified: now you can have an underscore
447simply B<between digits>.
f39f21d8 448
449=back
450
77c8cf41 451=head1 Modules and Pragmata
f39f21d8 452
1e13d81f 453=head2 New Modules and Pragmata
f39f21d8 454
455=over 4
456
457=item *
458
61947107 459C<Attribute::Handlers> allows a class to define attribute handlers.
f39f21d8 460
61947107 461 package MyPack;
462 use Attribute::Handlers;
463 sub Wolf :ATTR(SCALAR) { print "howl!\n" }
f39f21d8 464
61947107 465 # later, in some package using or inheriting from MyPack...
f39f21d8 466
61947107 467 my MyPack $Fluffy : Wolf; # the attribute handler Wolf will be called
ba370e9b 468
61947107 469Both variables and routines can have attribute handlers. Handlers can
470be specific to type (SCALAR, ARRAY, HASH, or CODE), or specific to the
471exact compilation phase (BEGIN, CHECK, INIT, or END).
f39f21d8 472
61947107 473=item *
f39f21d8 474
61947107 475B<B::Concise> is a new compiler backend for walking the Perl syntax
476tree, printing concise info about ops, from Stephen McCamant. The
477output is highly customisable. See L<B::Concise>.
f39f21d8 478
479=item *
480
61947107 481C<Class::ISA> for reporting the search path for a class's ISA tree,
482by Sean Burke, has been added. See L<Class::ISA>.
f39f21d8 483
484=item *
485
61947107 486C<Cwd> has now a split personality: if possible, an XS extension is
487used, (this will hopefully be faster, more secure, and more robust)
488but if not possible, the familiar Perl implementation is used.
f39f21d8 489
490=item *
491
e1f170bd 492C<Devel::PPPort>, originally from Kenneth Albanowski and now
493maintained by Paul Marquess, has been added. It is primarily used
494by C<h2xs> to enhance portability of of XS modules between different
495versions of Perl.
1e13d81f 496
497=item *
498
61947107 499C<Digest>, frontend module for calculating digests (checksums), from
500Gisle Aas, has been added. See L<Digest>.
f39f21d8 501
502=item *
503
61947107 504C<Digest::MD5> for calculating MD5 digests (checksums) as defined in
505RFC 1321, from Gisle Aas, has been added. See L<Digest::MD5>.
f39f21d8 506
507 use Digest::MD5 'md5_hex';
508
509 $digest = md5_hex("Thirsty Camel");
510
511 print $digest, "\n"; # 01d19d9d2045e005c3f1b80e8b164de1
512
61947107 513NOTE: the C<MD5> backward compatibility module is deliberately not
e1f170bd 514included since its further use is discouraged.
f39f21d8 515
f39f21d8 516=item *
517
61947107 518C<Encode>, by Nick Ing-Simmons, provides a mechanism to translate
f39f21d8 519between different character encodings. Support for Unicode,
520ISO-8859-*, ASCII, CP*, KOI8-R, and three variants of EBCDIC are
521compiled in to the module. Several other encodings (like Japanese,
522Chinese, and MacIntosh encodings) are included and will be loaded at
61947107 523runtime. See L<Encode>.
f39f21d8 524
525Any encoding supported by Encode module is also available to the
526":encoding()" layer if PerlIO is used.
527
61947107 528=item *
529
530C<I18N::Langinfo> can be use to query locale information.
531See L<I18N::Langinfo>.
f39f21d8 532
533=item *
534
61947107 535C<I18N::LangTags> has functions for dealing with RFC3066-style
bea4d472 536language tags, by Sean Burke. See L<I18N::LangTags>.
61947107 537
538=item *
539
540C<ExtUtils::Constant> is a new tool for extension writers for
541generating XS code to import C header constants, by Nicholas Clark.
542See L<ExtUtils::Constant>.
543
544=item *
545
546C<Filter::Simple> is an easy-to-use frontend to Filter::Util::Call,
547from Damian Conway. See L<Filter::Simple>.
f39f21d8 548
549 # in MyFilter.pm:
550
551 package MyFilter;
552
553 use Filter::Simple sub {
554 while (my ($from, $to) = splice @_, 0, 2) {
555 s/$from/$to/g;
556 }
557 };
558
559 1;
560
561 # in user's code:
562
563 use MyFilter qr/red/ => 'green';
564
565 print "red\n"; # this code is filtered, will print "green\n"
566 print "bored\n"; # this code is filtered, will print "bogreen\n"
567
568 no MyFilter;
569
570 print "red\n"; # this code is not filtered, will print "red\n"
571
61947107 572=item *
573
574C<File::Temp> allows one to create temporary files and directories in
575an easy, portable, and secure way, by Tim Jenness. See L<File::Temp>.
576
577=item *
578
579C<Filter::Util::Call> provides you with the framework to write
580I<Source Filters> in Perl, from Paul Marquess. For most uses the
581frontend Filter::Simple is to be preferred. See L<Filter::Util::Call>.
582
583=item *
584
585L<libnet> is a collection of perl5 modules related to network
586programming, from Graham Barr. See L<Net::FTP>, L<Net::NNTP>,
587L<Net::Ping>, L<Net::POP3>, L<Net::SMTP>, and L<Net::Time>.
588
589Perl installation leaves libnet unconfigured, use F<libnetcfg> to configure.
f39f21d8 590
591=item *
592
61947107 593C<List::Util> is a selection of general-utility list subroutines, like
bea4d472 594sum(), min(), first(), and shuffle(), by Graham Barr. See L<List::Util>.
f39f21d8 595
596=item *
597
61947107 598C<Locale::Constants>, C<Locale::Country>, C<Locale::Currency>, and
599C<Locale::Language>, from Neil Bowers, have been added. They provide the
600codes for various locale standards, such as "fr" for France, "usd" for
601US Dollar, and "jp" for Japanese.
f39f21d8 602
603 use Locale::Country;
604
605 $country = code2country('jp'); # $country gets 'Japan'
606 $code = country2code('Norway'); # $code gets 'no'
607
608See L<Locale::Constants>, L<Locale::Country>, L<Locale::Currency>,
61947107 609and L<Locale::Language>.
610
611=item *
612
613C<Locale::Maketext> is localization framework from Sean Burke. See
614L<Locale::Maketext>, and L<Locale::Maketext::TPJ13>. The latter is an
615article about software localization, originally published in The Perl
616Journal #13, republished here with kind permission.
617
618=item *
619
620C<Memoize> can make your functions faster by trading space for time,
621from Mark-Jason Dominus. See L<Memoize>.
f39f21d8 622
623=item *
624
61947107 625C<MIME::Base64> allows you to encode data in base64, from Gisle Aas,
626as defined in RFC 2045 - I<MIME (Multipurpose Internet Mail
627Extensions)>.
f39f21d8 628
629 use MIME::Base64;
630
631 $encoded = encode_base64('Aladdin:open sesame');
632 $decoded = decode_base64($encoded);
633
634 print $encoded, "\n"; # "QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
635
61947107 636See L<MIME::Base64>.
f39f21d8 637
638=item *
639
61947107 640C<MIME::QuotedPrint> allows you to encode data in quoted-printable
641encoding, as defined in RFC 2045 - I<MIME (Multipurpose Internet Mail
642Extensions)>, from Gisle Aas.
f39f21d8 643
644 use MIME::QuotedPrint;
645
646 $encoded = encode_qp("Smiley in Unicode: \x{263a}");
647 $decoded = decode_qp($encoded);
648
649 print $encoded, "\n"; # "Smiley in Unicode: =263A"
650
651MIME::QuotedPrint has been enhanced to provide the basic methods
652necessary to use it with PerlIO::Via as in :
653
654 use MIME::QuotedPrint;
057b7f2b 655 open($fh,">Via(MIME::QuotedPrint)",$path);
f39f21d8 656
61947107 657See L<MIME::QuotedPrint>.
f39f21d8 658
659=item *
660
61947107 661C<NEXT> is pseudo-class for method redispatch, from Damian Conway.
662See L<NEXT>.
f39f21d8 663
664=item *
665
1e13d81f 666C<open> is a new pragma for setting the default I/O disciplines
667for open().
668
669=item *
670
61947107 671C<PerlIO::Scalar> provides the implementation of IO to "in memory"
672Perl scalars as discussed above, from Nick Ing-Simmons. It also
673serves as an example of a loadable PerlIO layer. Other future
674possibilities include PerlIO::Array and PerlIO::Code.
675See L<PerlIO::Scalar>.
676
677=item *
678
679C<PerlIO::Via> acts as a PerlIO layer and wraps PerlIO layer
680functionality provided by a class (typically implemented in perl
681code), from Nick Ing-Simmons.
f39f21d8 682
683 use MIME::QuotedPrint;
057b7f2b 684 open($fh,">Via(MIME::QuotedPrint)",$path);
f39f21d8 685
686This will automatically convert everything output to C<$fh>
61947107 687to Quoted-Printable. See L<PerlIO::Via>.
f39f21d8 688
689=item *
690
1e13d81f 691C<Pod::ParseLink>, by Russ Allbery, has been added,
95f0a2f1 692to parse LZ<><> links in pods as described in the new
1e13d81f 693perlpodspec.
694
695=item *
696
61947107 697C<Pod::Text::Overstrike>, by Joe Smith, has been added.
f39f21d8 698It converts POD data to formatted overstrike text.
61947107 699See L<Pod::Text::Overstrike>.
f39f21d8 700
701=item *
702
61947107 703C<Scalar::Util> is a selection of general-utility scalar subroutines,
704like blessed(), reftype(), and tainted(). See L<Scalar::Util>.
705
706=item *
707
1e13d81f 708C<sort> is a new pragma for controlling the behaviour of sort().
709
710=item *
711
61947107 712C<Storable> gives persistence to Perl data structures by allowing the
713storage and retrieval of Perl data to and from files in a fast and
714compact binary format, from Raphael Manfredi. See L<Storable>.
715
716=item *
717
718C<Switch>, from Damian Conway, has been added. Just by saying
f39f21d8 719
720 use Switch;
721
722you have C<switch> and C<case> available in Perl.
723
724 use Switch;
725
726 switch ($val) {
727
728 case 1 { print "number 1" }
729 case "a" { print "string a" }
730 case [1..10,42] { print "number in list" }
731 case (@array) { print "number in list" }
732 case /\w+/ { print "pattern" }
733 case qr/\w+/ { print "pattern" }
734 case (%hash) { print "entry in hash" }
735 case (\%hash) { print "entry in hash" }
736 case (\&sub) { print "arg to subroutine" }
737 else { print "previous case not true" }
738 }
739
61947107 740See L<Switch>.
741
742=item *
743
744C<Test::More> is yet another framework for writing test scripts,
745more extensive than Test::Simple, by Michael Schwern. See L<Test::More>.
746
747=item *
748
aecce728 749C<Test::Simple> has basic utilities for writing tests, by Michael
61947107 750Schwern. See L<Test::Simple>.
77c8cf41 751
752=item *
753
61947107 754C<Text::Balanced> has been added, for extracting delimited text
755sequences from strings, from Damian Conway.
77c8cf41 756
757 use Text::Balanced 'extract_delimited';
758
759 ($a, $b) = extract_delimited("'never say never', he never said", "'", '');
760
761$a will be "'never say never'", $b will be ', he never said'.
762
763In addition to extract_delimited() there are also extract_bracketed(),
764extract_quotelike(), extract_codeblock(), extract_variable(),
765extract_tagged(), extract_multiple(), gen_delimited_pat(), and
766gen_extract_tagged(). With these you can implement rather advanced
61947107 767parsing algorithms. See L<Text::Balanced>.
77c8cf41 768
769=item *
770
c2e23569 771C<threads> is an interface to interpreter threads, by Arthur Bergman.
61947107 772Interpreter threads (ithreads) is the new thread model introduced in
c2e23569 773Perl 5.6 but only available as an internal interface for extension
774writers (and for Win32 Perl for C<fork()> emulation). See L<threads>.
77c8cf41 775
776=item *
777
61947107 778C<threads::shared> allows data sharing for interpreter threads, from
779Arthur Bergman. In the ithreads model any data sharing between
780threads must be explicit, as opposed to the old 5.005 thread model
781where data sharing was implicit. See L<threads::shared>.
77c8cf41 782
783=item *
784
61947107 785C<Tie::RefHash::Nestable>, by Edward Avis, allows storing hash
ba370e9b 786references (unlike the standard Tie::RefHash) The module is contained
787within Tie::RefHash, see L<Tie::RefHash>.
77c8cf41 788
789=item *
790
61947107 791C<Time::HiRes> provides high resolution timing (ualarm, usleep,
792and gettimeofday), from Douglas E. Wegscheid. See L<Time::HiRes>.
77c8cf41 793
794=item *
795
61947107 796C<Unicode::UCD> offers a querying interface to the Unicode Character
797Database. See L<Unicode::UCD>.
77c8cf41 798
799=item *
800
61947107 801C<Unicode::Collate> implements the UCA (Unicode Collation Algorithm)
802for sorting Unicode strings, by SADAHIRO Tomoyuki. See L<Unicode::Collate>.
77c8cf41 803
804=item *
805
61947107 806C<Unicode::Normalize> implements the various Unicode normalization
807forms, by SADAHIRO Tomoyuki. See L<Unicode::Normalize>.
77c8cf41 808
809=item *
810
61947107 811C<XS::Typemap>, by Tim Jenness, is a test extension that exercises XS
812typemaps. Nothing gets installed but for extension writers the code
813is worth studying.
77c8cf41 814
815=back
816
817=head2 Updated And Improved Modules and Pragmata
818
819=over 4
820
821=item *
822
61947107 823The following independently supported modules have been updated to the
824newest versions from CPAN: CGI, CPAN, DB_File, File::Spec, File::Temp,
825Getopt::Long, Math::BigFloat, Math::BigInt, the podlators bundle
826(Pod::Man, Pod::Text), Pod::LaTeX, Pod::Parser, Storable,
827Term::ANSIColor, Test, Text-Tabs+Wrap.
77c8cf41 828
829=item *
830
61947107 831The attributes::reftype() now works on tied arguments.
77c8cf41 832
833=item *
834
057b7f2b 835AutoLoader can now be disabled with C<no AutoLoader;>.
77c8cf41 836
837=item *
838
1e13d81f 839B::Deparse has been significantly enhanced. It now can deparse almost
840all of the standard test suite (so that the tests still succeed).
841There is a make target "test.deparse" for trying this out.
77c8cf41 842
843=item *
844
1e13d81f 845Class::Struct can now define the classes in compile time.
77c8cf41 846
847=item *
848
1e13d81f 849Class::Struct now assigns the array/hash element if the accessor
850is called with an array/hash element as the B<sole> argument.
77c8cf41 851
852=item *
853
1e13d81f 854Data::Dumper has now an option to sort hashes.
77c8cf41 855
856=item *
857
1e13d81f 858Data::Dumper has now an option to dump code references
859using B::Deparse.
77c8cf41 860
861=item *
862
44da0e71 863DB_File now supports newer Berkeley DB versions, among
864other improvements.
865
866=item *
867
1e13d81f 868The English module can now be used without the infamous performance
869hit by saying
77c8cf41 870
1e13d81f 871 use English '-no_performance_hit';
77c8cf41 872
1e13d81f 873(Assuming, of course, that one doesn't need the troublesome variables
874C<$`>, C<$&>, or C<$'>.) Also, introduced C<@LAST_MATCH_START> and
875C<@LAST_MATCH_END> English aliases for C<@-> and C<@+>.
77c8cf41 876
877=item *
878
1e13d81f 879Fcntl, Socket, and Sys::Syslog have been rewritten to use the
880new-style constant dispatch section (see L<ExtUtils::Constant>).
881This means that they will be more robust and hopefully faster.
77c8cf41 882
883=item *
884
44da0e71 885File::Find now chdir()s correctly when chasing symbolic links.
886
887=item *
888
1e13d81f 889File::Find now has pre- and post-processing callbacks. It also
890correctly changes directories when chasing symbolic links. Callbacks
891(naughtily) exiting with "next;" instead of "return;" now work.
61947107 892
893=item *
894
1e13d81f 895File::Find is now (again) reentrant. It also has been made
896more portable.
77c8cf41 897
61947107 898=item *
899
1e13d81f 900File::Glob::glob() renamed to File::Glob::bsd_glob() to avoid
901prototype mismatch with CORE::glob().
61947107 902
903=item *
904
905File::Glob now supports C<GLOB_LIMIT> constant to limit the size of
906the returned list of filenames.
77c8cf41 907
908=item *
909
910Devel::Peek now has an interface for the Perl memory statistics
911(this works only if you are using perl's malloc, and if you have
912compiled with debugging).
913
914=item *
915
1e13d81f 916IPC::Open3 now allows the use of numeric file descriptors.
917
918=item *
919
77c8cf41 920IO::Socket has now atmark() method, which returns true if the socket
921is positioned at the out-of-band mark. The method is also exportable
922as a sockatmark() function.
923
924=item *
925
926IO::Socket::INET has support for ReusePort option (if your platform
927supports it). The Reuse option now has an alias, ReuseAddr. For clarity
928you may want to prefer ReuseAddr.
929
930=item *
931
61947107 932IO::Socket::INET now supports C<LocalPort> of zero (usually meaning
933that the operating system will make one up.)
77c8cf41 934
935=item *
936
1e13d81f 937use lib now works identically to @INC. Removing directories
938with 'no lib' now works.
939
940=item *
941
942Math::BigFloat and Math::BigInt have undergone a full rewrite.
943They are now magnitudes faster, and they support various
61947107 944bignum libraries such as GMP and PARI as their backends.
f39f21d8 945
946=item *
947
44da0e71 948Math::Complex handles inf, NaN etc., better.
949
950=item *
951
61947107 952Net::Ping has been enhanced. There is now "external" protocol which
953uses Net::Ping::External module which runs external ping(1) and parses
44da0e71 954the output. A version of Net::Ping::External is available in CPAN.
f39f21d8 955
77c8cf41 956=item *
f39f21d8 957
da6838c8 958POSIX::sigaction() is now much more flexible and robust.
61947107 959You can now install coderef handlers, 'DEFAULT', and 'IGNORE'
960handlers, installing new handlers was not atomic.
f39f21d8 961
962=item *
963
da6838c8 964In Safe the C<%INC> now localised in a Safe compartment so that
76663d67 965use/require work.
966
967=item *
968
44da0e71 969In SDBM_File on dosish platforms, some keys went missing because of
970lack of support for files with "holes". A workaround for the problem
971has been added.
972
973=item *
974
da6838c8 975In Search::Dict one can now have a pre-processing hook for the
76663d67 976lines being searched.
1e13d81f 977
978=item *
979
980The Shell module now has an OO interface.
981
982=item *
983
61947107 984The Test module has been significantly enhanced.
f39f21d8 985
986=item *
987
da6838c8 988The vars pragma now supports declaring fully qualified variables.
77c8cf41 989(Something that C<our()> does not and will not support.)
f39f21d8 990
888aee59 991=item *
992
61947107 993The utf8:: name space (as in the pragma) provides various
994Perl-callable functions to provide low level access to Perl's
995internal Unicode representation. At the moment only length()
996has been implemented.
888aee59 997
f39f21d8 998=back
999
77c8cf41 1000=head1 Utility Changes
f39f21d8 1001
1002=over 4
1003
1004=item *
1005
61947107 1006Emacs perl mode (emacs/cperl-mode.el) has been updated to version
77c8cf41 10074.31.
f39f21d8 1008
1009=item *
1010
61947107 1011F<emacs/e2ctags.pl> is now much faster.
f39f21d8 1012
1013=item *
1014
1e13d81f 1015C<h2ph> now supports C trigraphs.
1016
1017=item *
1018
1019C<h2xs> now produces a template README.
f39f21d8 1020
77c8cf41 1021=item *
1022
1e13d81f 1023C<h2xs> now uses C<Devel::PPort> for better portability between
1024different versions of Perl.
f39f21d8 1025
1026=item *
1027
1e13d81f 1028C<h2xs> uses the new L<ExtUtils::Constant> module which will affect
61947107 1029newly created extensions that define constants. Since the new code is
1030more correct (if you have two constants where the first one is a
1031prefix of the second one, the first constant B<never> gets defined),
1032less lossy (it uses integers for integer constant, as opposed to the
1033old code that used floating point numbers even for integer constants),
1034and slightly faster, you might want to consider regenerating your
1035extension code (the new scheme makes regenerating easy).
1036L<h2xs> now also supports C trigraphs.
f39f21d8 1037
1038=item *
1039
1e13d81f 1040C<libnetcfg> has been added to configure the libnet.
f39f21d8 1041
1042=item *
1043
1e13d81f 1044C<perlbug> is now much more robust. It also sends the bug report to
61947107 1045perl.org, not perl.com.
f39f21d8 1046
1047=item *
1048
1e13d81f 1049C<perlcc> has been rewritten and its user interface (that is,
61947107 1050command line) is much more like that of the UNIX C compiler, cc.
44da0e71 1051(The perlbc tools has been removed. Use C<perlcc -B> instead.)
f39f21d8 1052
1053=item *
1054
aecce728 1055C<perlivp> is a new Installation Verification Procedure utility
1056for running any time after installing Perl.
f39f21d8 1057
1058=item *
1059
1e13d81f 1060C<pod2html> now allows specifying a cache directory.
f39f21d8 1061
1062=item *
1063
1e13d81f 1064C<s2p> has been completely rewritten in Perl. (It is in fact a full
1065implementation of sed in Perl: you can use the sed functionality by
1066using the C<psed> utility.)
61947107 1067
1068=item *
1069
1e13d81f 1070C<xsubpp> now understands POD documentation embedded in the *.xs files.
f39f21d8 1071
1072=item *
1073
1e13d81f 1074C<xsubpp> now supports OUT keyword.
f39f21d8 1075
1076=back
1077
77c8cf41 1078=head1 New Documentation
f39f21d8 1079
1080=over 4
1081
1082=item *
1083
77c8cf41 1084perl56delta details the changes between the 5.005 release and the
10855.6.0 release.
f39f21d8 1086
1087=item *
1088
61947107 1089perlclib documents the internal replacements for standard C library
1090functions. (Interesting only for extension writers and Perl core
1091hackers.)
1092
1093=item *
1094
77c8cf41 1095perldebtut is a Perl debugging tutorial.
f39f21d8 1096
77c8cf41 1097=item *
f39f21d8 1098
77c8cf41 1099perlebcdic contains considerations for running Perl on EBCDIC platforms.
f39f21d8 1100
77c8cf41 1101=item *
1102
888aee59 1103perlintro is a gentle introduction to Perl.
1104
1105=item *
1106
61947107 1107perliol documents the internals of PerlIO with layers.
1108
1109=item *
1110
888aee59 1111perlmodstyle is a style guide for writing modules.
1112
1113=item *
1114
77c8cf41 1115perlnewmod tells about writing and submitting a new module.
f39f21d8 1116
1117=item *
1118
34babc16 1119perlpacktut is a pack() tutorial.
1120
1121=item *
1122
888aee59 1123perlpod has been rewritten to be clearer and to record the best
1124practices gathered over the years.
1125
1126=item *
1127
057b7f2b 1128perlpodspec is a more formal specification of the pod format,
888aee59 1129mainly of interest for writers of pod applications, not to
1130people writing in pod.
1131
1132=item *
1133
77c8cf41 1134perlretut is a regular expression tutorial.
f39f21d8 1135
1136=item *
1137
77c8cf41 1138perlrequick is a regular expressions quick-start guide.
1139Yes, much quicker than perlretut.
f39f21d8 1140
77c8cf41 1141=item *
f39f21d8 1142
61947107 1143perltodo has been updated.
1144
1145=item *
1146
888aee59 1147perltootc has been renamed as perltooc (to not to conflict
61947107 1148with perltoot in filesystems restricted to "8.3" names)
888aee59 1149
1150=item *
1151
1152perluniintro is an introduction to using Unicode in Perl
1153(perlunicode is more of a reference)
1154
1155=item *
1156
77c8cf41 1157perlutil explains the command line utilities packaged with the Perl
1158distribution.
1159
1160=back
f39f21d8 1161
61947107 1162The following platform-specific documents are available before
1163the installation as README.I<platform>, and after the installation
1164as perlI<platform>:
f39f21d8 1165
61947107 1166 perlaix perlamiga perlapollo perlbeos perlbs2000
1167 perlce perlcygwin perldgux perldos perlepoc perlhpux
1168 perlhurd perlmachten perlmacos perlmint perlmpeix
1169 perlnetware perlos2 perlos390 perlplan9 perlqnx perlsolaris
1170 perltru64 perluts perlvmesa perlvms perlvos perlwin32
77c8cf41 1171
1172=over 4
1173
1174=item *
1175
61947107 1176The documentation for the POSIX-BC platform is called "BS2000", to avoid
1177confusion with the Perl POSIX module.
77c8cf41 1178
1179=item *
1180
61947107 1181The documentation for the WinCE platform is called "CE", to avoid
1182confusion with the perlwin32 documentation on 8.3-restricted filesystems.
77c8cf41 1183
1184=back
1185
1186=head1 Performance Enhancements
1187
1188=over 4
1189
1190=item *
1191
44da0e71 1192map() could get pathologically slow when the result list it generates
1193is larger than the source list. The performance has been improved for
1194common scenarios.
77c8cf41 1195
1196=item *
1197
e1f170bd 1198sort() has been changed to use primarily mergesort internally as
1199opposed to the earlier quicksort. For very small lists this may
1200result in slightly slower sorting times, but in general the speedup
1201should be at least 20%. Additional bonuses are that the worst case
1202behaviour of sort() is now better (in computer science terms it now
1203runs in time O(N log N), as opposed to quicksort's Theta(N**2)
1204worst-case run time behaviour), and that sort() is now stable
1205(meaning that elements with identical keys will stay ordered as they
1206were before the sort). See the C<sort> pragma for information.
77c8cf41 1207
05e25c75 1208The story in more detail: suppose you want to serve yourself a little
1209slice of Pi.
1210
1211 @digits = ( 3,1,4,1,5,9 );
1212
1213A numerical sort of the digits will yield (1,1,3,4,5,9), as expected.
1214Which C<1> comes first is hard to know, since one C<1> looks pretty
1215much like any other. You can regard this as totally trivial,
1216or somewhat profound. However, if you just want to sort the even
1217digits ahead of the odd ones, then what will
1218
1219 sort { ($a % 2) <=> ($b % 2) } @digits;
1220
1221yield? The only even digit, C<4>, will come first. But how about
1222the odd numbers, which all compare equal? With the quicksort algorithm
1223used to implement Perl 5.6 and earlier, the order of ties is left up
1224to the sort. So, as you add more and more digits of Pi, the order
1225in which the sorted even and odd digits appear will change.
1226and, for sufficiently large slices of Pi, the quicksort algorithm
1227in Perl 5.8 won't return the same results even if reinvoked with the
1228same input. The justification for this rests with quicksort's
1229worst case behavior. If you run
1230
1231 sort { $a <=> $b } ( 1 .. $N , 1 .. $N );
1232
1233(something you might approximate if you wanted to merge two sorted
1234arrays using sort), doubling $N doesn't just double the quicksort time,
1235it I<quadruples> it. Quicksort has a worst case run time that can
1236grow like N**2, so-called I<quadratic> behaviour, and it can happen
1237on patterns that may well arise in normal use. You won't notice this
1238for small arrays, but you I<will> notice it with larger arrays,
1239and you may not live long enough for the sort to complete on arrays
1240of a million elements. So the 5.8 quicksort scrambles large arrays
1241before sorting them, as a statistical defence against quadratic behaviour.
1242But that means if you sort the same large array twice, ties may be
1243broken in different ways.
1244
1245Because of the unpredictability of tie-breaking order, and the quadratic
1246worst-case behaviour, quicksort was I<almost> replaced completely with
1247a stable mergesort. I<Stable> means that ties are broken to preserve
1248the original order of appearance in the input array. So
1249
1250 sort { ($a % 2) <=> ($b % 2) } (3,1,4,1,5,9);
1251
1252will yield (4,3,1,1,5,9), guaranteed. The even and odd numbers
1253appear in the output in the same order they appeared in the input.
1254Mergesort has worst case O(NlogN) behaviour, the best value
1255attainable. And, ironically, this mergesort does particularly
1256well where quicksort goes quadratic: mergesort sorts (1..$N, 1..$N)
1257in O(N) time. But quicksort was rescued at the last moment because
1258it is faster than mergesort on certain inputs and platforms.
1259For example, if you really I<don't> care about the order of even
1260and odd digits, quicksort will run in O(N) time; it's very good
1261at sorting many repetitions of a small number of distinct elements.
1262The quicksort divide and conquer strategy works well on platforms
1263with relatively small, very fast, caches. Eventually, the problem gets
1264whittled down to one that fits in the cache, from which point it
1265benefits from the increased memory speed.
1266
1267Quicksort was rescued by implementing a sort pragma to control aspects
1268of the sort. The B<stable> subpragma forces stable behaviour,
1269regardless of algorithm. The B<_quicksort> and B<_mergesort>
1270subpragmas are heavy-handed ways to select the underlying implementation.
1271The leading C<_> is a reminder that these subpragmas may not survive
1272beyond 5.8. More appropriate mechanisms for selecting the implementation
1273exist, but they wouldn't have arrived in time to save quicksort.
1274
77c8cf41 1275=item *
1276
1277Hashes now use Bob Jenkins "One-at-a-Time" hashing key algorithm
1278(http://burtleburtle.net/bob/hash/doobs.html). This algorithm is
1279reasonably fast while producing a much better spread of values than
1280the old hashing algorithm (originally by Chris Torek, later tweaked by
1281Ilya Zakharevich). Hash values output from the algorithm on a hash of
1282all 3-char printable ASCII keys comes much closer to passing the
1283DIEHARD random number generation tests. According to perlbench, this
1284change has not affected the overall speed of Perl.
1285
1286=item *
1287
1288unshift() should now be noticeably faster.
1289
1290=back
1291
1292=head1 Installation and Configuration Improvements
1293
1294=head2 Generic Improvements
1295
1296=over 4
1297
1298=item *
1299
1300INSTALL now explains how you can configure Perl to use 64-bit
1301integers even on non-64-bit platforms.
1302
1303=item *
1304
1305Policy.sh policy change: if you are reusing a Policy.sh file
1306(see INSTALL) and you use Configure -Dprefix=/foo/bar and in the old
1307Policy $prefix eq $siteprefix and $prefix eq $vendorprefix, all of
1308them will now be changed to the new prefix, /foo/bar. (Previously
1309only $prefix changed.) If you do not like this new behaviour,
1310specify prefix, siteprefix, and vendorprefix explicitly.
1311
1312=item *
1313
1314A new optional location for Perl libraries, otherlibdirs, is available.
1315It can be used for example for vendor add-ons without disturbing Perl's
1316own library directories.
1317
1318=item *
1319
1320In many platforms the vendor-supplied 'cc' is too stripped-down to
1321build Perl (basically, 'cc' doesn't do ANSI C). If this seems
1322to be the case and 'cc' does not seem to be the GNU C compiler
1323'gcc', an automatic attempt is made to find and use 'gcc' instead.
1324
1325=item *
1326
1327gcc needs to closely track the operating system release to avoid
1328build problems. If Configure finds that gcc was built for a different
1329operating system release than is running, it now gives a clearly visible
1330warning that there may be trouble ahead.
1331
1332=item *
1333
1334If binary compatibility with the 5.005 release is not wanted, Configure
1335no longer suggests including the 5.005 modules in @INC.
1336
1337=item *
1338
1339Configure C<-S> can now run non-interactively.
1340
1341=item *
1342
44da0e71 1343Configure support for pdp11-style memory models has been removed due
1344to obsolescence.
1345
1346=item *
1347
77c8cf41 1348configure.gnu now works with options with whitespace in them.
f39f21d8 1349
77c8cf41 1350=item *
f39f21d8 1351
77c8cf41 1352installperl now outputs everything to STDERR.
f39f21d8 1353
77c8cf41 1354=item *
1355
1356$Config{byteorder} is now computed dynamically (this is more robust
1357with "fat binaries" where an executable image contains binaries for
1358more than one binary platform.)
f39f21d8 1359
1360=item *
1361
1362Because PerlIO is now the default on most platforms, "-perlio" doesn't
1363get appended to the $Config{archname} (also known as $^O) anymore.
1364Instead, if you explicitly choose not to use perlio (Configure command
1365line option -Uuseperlio), you will get "-stdio" appended.
1366
1367=item *
1368
1369Another change related to the architecture name is that "-64all"
1370(-Duse64bitall, or "maximally 64-bit") is appended only if your
1371pointers are 64 bits wide. (To be exact, the use64bitall is ignored.)
1372
1373=item *
1374
77c8cf41 1375In AFS installations one can configure the root of the AFS to be
1376somewhere else than the default F</afs> by using the Configure
1377parameter C<-Dafsroot=/some/where/else>.
1378
1379=item *
1380
61947107 1381APPLLIB_EXP, a less-know configuration-time definition, has been
1382documented. It can be used to prepend site-specific directories
1383to Perl's default search path (@INC), see INSTALL for information.
1384
1385=item *
1386
77c8cf41 1387The version of Berkeley DB used when the Perl (and, presumably, the
1388DB_File extension) was built is now available as
1389C<@Config{qw(db_version_major db_version_minor db_version_patch)}>
1390from Perl and as C<DB_VERSION_MAJOR_CFG DB_VERSION_MINOR_CFG
1391DB_VERSION_PATCH_CFG> from C.
1392
1393=item *
1394
61947107 1395Building Berkeley DB3 for compatibility modes for DB, NDBM, and ODBM
1396has been documented in INSTALL.
77c8cf41 1397
1398=item *
1399
61947107 1400If you have CPAN access (either network or a local copy such as a
1401CD-ROM) you can during specify extra modules to Configure to build and
1402install with Perl using the -Dextras=... option. See INSTALL for
1403more details.
f39f21d8 1404
61947107 1405=item *
f39f21d8 1406
61947107 1407In addition to config.over a new override file, config.arch, is
1408available. That is supposed to be used by hints file writers for
1409architecture-wide changes (as opposed to config.over which is for
1410site-wide changes).
f39f21d8 1411
1412=item *
1413
e1f170bd 1414If your file system supports symbolic links you can build Perl outside
1415of the source directory by
1416
1417 mkdir /tmp/perl/build/directory
1418 cd /tmp/perl/build/directory
1419 sh /path/to/perl/source/Configure -Dmksymlinks ...
1420
1421This will create in /tmp/perl/build/directory a tree of symbolic links
1422pointing to files in /path/to/perl/source. The original files are left
1423unaffected. After Configure has finished you can just say
1424
1425 make all test
1426
1427and Perl will be built and tested, all in /tmp/perl/build/directory.
1428
1429=item *
1430
61947107 1431For Perl developers several new make targets for profiling
1432and debugging have been added, see L<perlhack>.
1433
1434=over 8
f39f21d8 1435
1436=item *
1437
61947107 1438Use of the F<gprof> tool to profile Perl has been documented in
1439L<perlhack>. There is a make target called "perl.gprof" for
1440generating a gprofiled Perl executable.
f39f21d8 1441
1442=item *
1443
61947107 1444If you have GCC 3, there is a make target called "perl.gcov" for
1445creating a gcoved Perl executable for coverage analysis. See
1446L<perlhack>.
f39f21d8 1447
1448=item *
1449
61947107 1450If you are on IRIX or Tru64 platforms, new profiling/debugging options
1451have been added, see L<perlhack> for more information about pixie and
1452Third Degree.
1453
1454=back
f39f21d8 1455
1456=item *
1457
61947107 1458Guidelines of how to construct minimal Perl installations have
1459been added to INSTALL.
f39f21d8 1460
1461=item *
1462
61947107 1463The Thread extension is now not built at all under ithreads
1464(C<Configure -Duseithreads>) because it wouldn't work anyway (the
1465Thread extension requires being Configured with C<-Duse5005threads>).
f39f21d8 1466
61947107 1467But note that the Thread.pm interface is now shared by both
1468thread models.
f39f21d8 1469
61947107 1470=back
f39f21d8 1471
61947107 1472=head2 New Or Improved Platforms
f39f21d8 1473
61947107 1474For the list of platforms known to support Perl,
1475see L<perlport/"Supported Platforms">.
1476
1477=over 4
f39f21d8 1478
1479=item *
1480
61947107 1481AIX dynamic loading should be now better supported.
f39f21d8 1482
f39f21d8 1483=item *
1484
77c8cf41 1485AIX should now work better with gcc, threads, and 64-bitness. Also the
1486long doubles support in AIX should be better now. See L<perlaix>.
f39f21d8 1487
1488=item *
1489
61947107 1490After a long pause, AmigaOS has been verified to be happy with Perl.
1491
1492=item *
1493
77c8cf41 1494AtheOS (http://www.atheos.cx/) is a new platform.
f39f21d8 1495
77c8cf41 1496=item *
f39f21d8 1497
77c8cf41 1498DG/UX platform now supports the 5.005-style threads. See L<perldgux>.
f39f21d8 1499
1500=item *
1501
77c8cf41 1502DYNIX/ptx platform (a.k.a. dynixptx) is supported at or near osvers 4.5.2.
f39f21d8 1503
1504=item *
1505
61947107 1506EBCDIC platforms (z/OS, also known as OS/390, POSIX-BC, and VM/ESA)
1507have been regained. Many test suite tests still fail and the
1508co-existence of Unicode and EBCDIC isn't quite settled, but the
1509situation is much better than with Perl 5.6. See L<perlos390>,
1510L<perlbs2000> (for POSIX-BC), and L<perlvmesa> for more information.
f39f21d8 1511
1512=item *
1513
61947107 1514Building perl with -Duseithreads or -Duse5005threads now works under
1515HP-UX 10.20 (previously it only worked under 10.30 or later). You will
1516need a thread library package installed. See README.hpux.
f39f21d8 1517
77c8cf41 1518=item *
f39f21d8 1519
61947107 1520MacOS Classic (MacPerl has of course been available since
1521perl 5.004 but now the source code bases of standard Perl
1522and MacPerl have been synchronised)
f39f21d8 1523
77c8cf41 1524=item *
f39f21d8 1525
61947107 1526MacOS X (or Darwin) should now be able to build Perl even on HFS+
1527filesystems. (The case-insensitivity confused the Perl build process.)
f39f21d8 1528
888aee59 1529=item *
1530
61947107 1531NCR MP-RAS is now supported.
888aee59 1532
1533=item *
1534
61947107 1535NetWare from Novell is now supported. See L<perlnetware>.
888aee59 1536
1537=item *
1538
61947107 1539NonStop-UX is now supported.
888aee59 1540
1541=item *
1542
44da0e71 1543NEC SUPER-UX is now supported.
1544
1545=item *
1546
61947107 1547Amdahl UTS UNIX mainframe platform is now supported.
888aee59 1548
1549=item *
1550
61947107 1551WinCE is now supported. See L<perlce>.
1552
1553=item *
1554
1555z/OS (formerly known as OS/390, formerly known as MVS OE) has now
1556support for dynamic loading. This is not selected by default,
1557however, you must specify -Dusedl in the arguments of Configure.
888aee59 1558
f39f21d8 1559=back
1560
1561=head1 Selected Bug Fixes
1562
e1f170bd 1563Numerous memory leaks and uninitialized memory accesses have been
1564hunted down. Most importantly anonymous subs used to leak quite
1565a bit.
ba370e9b 1566
f39f21d8 1567=over 4
1568
1569=item *
1570
e1f170bd 1571The autouse pragma didn't work for Multi::Part::Function::Names.
f39f21d8 1572
1573=item *
1574
44da0e71 1575caller() could cause core dumps in certain situations. Carp was sometimes
1576affected by this problem.
1577
1578=item *
1579
e1f170bd 1580chop(@list) in list context returned the characters chopped in
1581reverse order. This has been reversed to be in the right order.
f39f21d8 1582
1583=item *
1584
e1f170bd 1585Configure no longer includes the DBM libraries (dbm, gdbm, db, ndbm)
1586when building the Perl binary. The only exception to this is SunOS 4.x,
1587which needs them.
f39f21d8 1588
1589=item *
1590
e1f170bd 1591The behaviour of non-decimal but numeric string constants such as
1592"0x23" was platform-dependent: in some platforms that was seen as 35,
1593in some as 0, in some as a floating point number (don't ask). This
1594was caused by Perl using the operating system libraries in a situation
1595where the result of the string to number conversion is undefined: now
1596Perl consistently handles such strings as zero in numeric contexts.
f39f21d8 1597
1598=item *
1599
e1f170bd 1600The order of DESTROYs has been made more predictable.
f39f21d8 1601
1602=item *
1603
e1f170bd 1604Several debugger fixes: exit code now reflects the script exit code,
1605condition C<"0"> now treated correctly, the C<d> command now checks
44da0e71 1606line number, the C<$.> no longer gets corrupted, all debugger output
1607now goes correctly to the socket if RemotePort is set.
1608
1609=item *
1610
1611Perl 5.6.0 could emit spurious warnings about redefinition of dl_error()
1612when statically building extensions into perl. This has been corrected.
f39f21d8 1613
1614=item *
1615
e1f170bd 1616L<dprofpp> -R didn't work.
f39f21d8 1617
1618=item *
1619
e1f170bd 1620C<*foo{FORMAT}> now works.
44da0e71 1621=item *
1622
1623Infinity is now recognized as a number.
f39f21d8 1624
1625=item *
1626
e1f170bd 1627UNIVERSAL::isa no longer caches methods incorrectly. (This broke
1628the Tk extension with 5.6.0.)
f39f21d8 1629
1630=item *
1631
e1f170bd 1632Lexicals I: lexicals outside an eval "" weren't resolved
1633correctly inside a subroutine definition inside the eval "" if they
1634were not already referenced in the top level of the eval""ed code.
f39f21d8 1635
1636=item *
1637
e1f170bd 1638Lexicals II: lexicals leaked at file scope into subroutines that
1639were declared before the lexicals.
f39f21d8 1640
1641=item *
1642
44da0e71 1643Lexical warnings now propagating correctly between scopes
1644and into C<eval "...">.
1645
1646=item *
1647
1648C<use warnings qw(FATAL all)> did not work as intended. This has been
1649corrected.
1650
1651=item *
1652
1653warnings::enabled() now reports the state of $^W correctly if the caller
1654isn't using lexical warnings.
f39f21d8 1655
1656=item *
1657
e1f170bd 1658Line renumbering with eval and C<#line> now works.
f39f21d8 1659
1660=item *
1661
e1f170bd 1662Fixed numerous memory leaks, especially in eval "".
f39f21d8 1663
1664=item *
1665
e1f170bd 1666mkdir() now ignores trailing slashes in the directory name,
1667as mandated by POSIX.
f39f21d8 1668
1669=item *
1670
e1f170bd 1671Some versions of glibc have a broken modfl(). This affects builds
1672with C<-Duselongdouble>. This version of Perl detects this brokenness
1673and has a workaround for it. The glibc release 2.2.2 is known to have
1674fixed the modfl() bug.
f39f21d8 1675
1676=item *
1677
e1f170bd 1678Modulus of unsigned numbers now works (4063328477 % 65535 used to
1679return 27406, instead of 27047).
f39f21d8 1680
1681=item *
1682
e1f170bd 1683Some "not a number" warnings introduced in 5.6.0 eliminated to be
1684more compatible with 5.005. Infinity is now recognised as a number.
f39f21d8 1685
77c8cf41 1686=item *
f39f21d8 1687
44da0e71 1688Numeric conversions did not recognize changes in the string value
1689properly in certain circumstances.
1690
1691=item *
1692
e1f170bd 1693Attributes (like :shared) didn't work with our().
f39f21d8 1694
1695=item *
1696
e1f170bd 1697our() variables will not cause "will not stay shared" warnings.
f39f21d8 1698
1699=item *
1700
44da0e71 1701"our" variables of the same name declared in two sibling blocks
1702resulted in bogus warnings about "redeclaration" of the variables.
1703The problem has been corrected.
1704
1705=item *
1706
e1f170bd 1707pack "Z" now correctly terminates the string with "\0".
f39f21d8 1708
1709=item *
1710
e1f170bd 1711Fix password routines which in some shadow password platforms
1712(e.g. HP-UX) caused getpwent() to return every other entry.
f39f21d8 1713
77c8cf41 1714=item *
f39f21d8 1715
e1f170bd 1716The PERL5OPT environment variable (for passing command line arguments
1717to Perl) didn't work for more than a single group of options.
f39f21d8 1718
77c8cf41 1719=item *
f39f21d8 1720
e1f170bd 1721PERL5OPT with embedded spaces didn't work.
f39f21d8 1722
77c8cf41 1723=item *
f39f21d8 1724
e1f170bd 1725printf() no longer resets the numeric locale to "C".
f39f21d8 1726
77c8cf41 1727=item *
f39f21d8 1728
44da0e71 1729C<qw(a\\b)> now parses correctly as C<'a\\b'>.
1730
1731=item *
1732
1733pos() did not return the correct value within s///ge in earlier
1734versions. This is now handled correctly.
f39f21d8 1735
77c8cf41 1736=item *
f39f21d8 1737
e1f170bd 1738Printing quads (64-bit integers) with printf/sprintf now works
1739without the q L ll prefixes (assuming you are on a quad-capable platform).
f39f21d8 1740
77c8cf41 1741=item *
f39f21d8 1742
e1f170bd 1743Regular expressions on references and overloaded scalars now work.
f39f21d8 1744
ba370e9b 1745=item *
1746
e1f170bd 1747Right-hand side magic (GMAGIC) could in many cases such as string
1748concatenation be invoked too many times.
ba370e9b 1749
1750=item *
1751
e1f170bd 1752scalar() now forces scalar context even when used in void context.
ba370e9b 1753
1754=item *
1755
e1f170bd 1756SOCKS support is now much more robust.
ba370e9b 1757
1758=item *
1759
e1f170bd 1760sort() arguments are now compiled in the right wantarray context
1761(they were accidentally using the context of the sort() itself).
44da0e71 1762The comparison block is now run in scalar context, and the arguments
1763to be sorted are always provided list context.
ba370e9b 1764
1765=item *
1766
e1f170bd 1767Changed the POSIX character class C<[[:space:]]> to include the (very
c2e23569 1768rarely used) vertical tab character. Added a new POSIX-ish character
1769class C<[[:blank:]]> which stands for horizontal whitespace
1770(currently, the space and the tab).
ba370e9b 1771
1772=item *
1773
1774The tainting behaviour of sprintf() has been rationalized. It does
1775not taint the result of floating point formats anymore, making the
1776behaviour consistent with that of string interpolation.
1777
1778=item *
1779
44da0e71 1780Some cases of inconsistent taint propagation (such as within hash
1781values) have been fixed.
1782
1783=item *
1784
1785The RE engine found in Perl 5.6.0 accidentally pessimised certain kinds
1786of simple pattern matches. These are now handled better.
1787
1788=item *
1789
1790Regular expression debug output (whether through C<use re 'debug'>
1791or via C<-Dr>) now looks better.
1792
1793=item *
1794
1795Multi-line matches like C<"a\nxb\n" =~ /(?!\A)x/m> were flawed. The
1796bug has been fixed.
1797
1798=item *
1799
1800Use of $& could trigger a core dump under some situations. This
1801is now avoided.
1802
1803=item *
1804
c2e23569 1805The regular expression captured submatches ($1, $2, ...) are now
1806more consistently unset if the match fails, instead of leaving false
1807data lying around in them.
1808
1809=item *
1810
44da0e71 1811readline() on files opened in "slurp" mode could return an extra "" at
1812the end in certain situations. This has been corrected.
1813
1814=item *
1815
1816Autovivification of symbolic references of special variables described
1817in L<perlvar> (as in C<${$num}>) was accidentally disabled. This works
1818again now.
1819
1820=item *
1821
da6838c8 1822Sys::Syslog ignored the C<LOG_AUTH> constant.
ba370e9b 1823
1824=item *
1825
e1f170bd 1826All but the first argument of the IO syswrite() method are now optional.
ba370e9b 1827
1828=item *
1829
e1f170bd 1830$AUTOLOAD, sort(), lock(), and spawning subprocesses
1831in multiple threads simultaneously are now thread-safe.
ba370e9b 1832
1833=item *
1834
e1f170bd 1835Tie::ARRAY SPLICE method was broken.
ba370e9b 1836
1837=item *
1838
e1f170bd 1839Allow read-only string on left hand side of non-modifying tr///.
ba370e9b 1840
1841=item *
1842
e1f170bd 1843Several Unicode fixes.
ba370e9b 1844
1845=over 8
1846
1847=item *
1848
e1f170bd 1849BOMs (byte order marks) in the beginning of Perl files
1850(scripts, modules) should now be transparently skipped.
1851UTF-16 (UCS-2) encoded Perl files should now be read correctly.
ba370e9b 1852
1853=item *
1854
e1f170bd 1855The character tables have been updated to Unicode 3.1.1.
ba370e9b 1856
1857=item *
1858
e1f170bd 1859Comparing with utf8 data does not magically upgrade non-utf8 data
1860into utf8.
ba370e9b 1861
1862=item *
1863
e1f170bd 1864C<IsAlnum>, C<IsAlpha>, and C<IsWord> now match titlecase.
f39f21d8 1865
77c8cf41 1866=item *
f39f21d8 1867
e1f170bd 1868Concatenation with the C<.> operator or via variable interpolation,
1869C<eq>, C<substr>, C<reverse>, C<quotemeta>, the C<x> operator,
1870substitution with C<s///>, single-quoted UTF8, should now work.
f39f21d8 1871
77c8cf41 1872=item *
f39f21d8 1873
e1f170bd 1874The C<tr///> operator now works. Note that the C<tr///CU>
1875functionality has been removed (but see pack('U0', ...)).
f39f21d8 1876
77c8cf41 1877=item *
f39f21d8 1878
e1f170bd 1879C<eval "v200"> now works.
f39f21d8 1880
77c8cf41 1881=item *
f39f21d8 1882
44da0e71 1883Perl 5.6.0 parsed m/\x{ab}/ incorrectly, leading to spurious warnings.
1884This has been corrected.
1885
1886=item *
1887
e1f170bd 1888Zero entries were missing from the Unicode classes like C<IsDigit>.
f39f21d8 1889
e1f170bd 1890=back
f39f21d8 1891
44da0e71 1892=item *
1893
1894Large unsigned numbers (those above 2**31) could sometimes lose their
1895unsignedness, causing bogus results in arithmetic operations.
1896
77c8cf41 1897=back
f39f21d8 1898
77c8cf41 1899=head2 Platform Specific Changes and Fixes
f39f21d8 1900
1901=over 4
1902
1903=item *
1904
77c8cf41 1905BSDI 4.*
f39f21d8 1906
77c8cf41 1907Perl now works on post-4.0 BSD/OSes.
f39f21d8 1908
1909=item *
1910
77c8cf41 1911All BSDs
f39f21d8 1912
057b7f2b 1913Setting C<$0> now works (as much as possible; see L<perlvar> for details).
f39f21d8 1914
1915=item *
1916
77c8cf41 1917Cygwin
f39f21d8 1918
77c8cf41 1919Numerous updates; currently synchronised with Cygwin 1.1.4.
f39f21d8 1920
1921=item *
1922
e1f170bd 1923Previously DYNIX/ptx had problems in its Configure probe for non-blocking I/O.
1924
1925=item *
1926
77c8cf41 1927EPOC
f39f21d8 1928
77c8cf41 1929EPOC update after Perl 5.6.0. See README.epoc.
f39f21d8 1930
1931=item *
1932
77c8cf41 1933FreeBSD 3.*
f39f21d8 1934
77c8cf41 1935Perl now works on post-3.0 FreeBSDs.
f39f21d8 1936
1937=item *
1938
77c8cf41 1939HP-UX
1940
1941README.hpux updated; C<Configure -Duse64bitall> now almost works.
f39f21d8 1942
1943=item *
1944
77c8cf41 1945IRIX
f39f21d8 1946
77c8cf41 1947Numerous compilation flag and hint enhancements; accidental mixing
1948of 32-bit and 64-bit libraries (a doomed attempt) made much harder.
f39f21d8 1949
77c8cf41 1950=item *
f39f21d8 1951
77c8cf41 1952Linux
f39f21d8 1953
e1f170bd 1954=over 8
1955
1956=item *
1957
77c8cf41 1958Long doubles should now work (see INSTALL).
f39f21d8 1959
1960=item *
1961
e1f170bd 1962Linux previously had problems related to sockaddrlen when using
1963accept(), revcfrom() (in Perl: recv()), getpeername(), and getsockname().
1964
1965=back
1966
1967=item *
1968
77c8cf41 1969MacOS Classic
f39f21d8 1970
77c8cf41 1971Compilation of the standard Perl distribution in MacOS Classic should
1972now work if you have the Metrowerks development environment and
1973the missing Mac-specific toolkit bits. Contact the macperl mailing
1974list for details.
f39f21d8 1975
1976=item *
1977
77c8cf41 1978MPE/iX
f39f21d8 1979
77c8cf41 1980MPE/iX update after Perl 5.6.0. See README.mpeix.
f39f21d8 1981
1982=item *
1983
77c8cf41 1984NetBSD/sparc
f39f21d8 1985
77c8cf41 1986Perl now works on NetBSD/sparc.
f39f21d8 1987
1988=item *
1989
77c8cf41 1990OS/2
f39f21d8 1991
77c8cf41 1992Now works with usethreads (see INSTALL).
f39f21d8 1993
1994=item *
1995
77c8cf41 1996Solaris
f39f21d8 1997
77c8cf41 199864-bitness using the Sun Workshop compiler now works.
f39f21d8 1999
2000=item *
2001
77c8cf41 2002Tru64 (aka Digital UNIX, aka DEC OSF/1)
f39f21d8 2003
77c8cf41 2004The operating system version letter now recorded in $Config{osvers}.
2005Allow compiling with gcc (previously explicitly forbidden). Compiling
2006with gcc still not recommended because buggy code results, even with
2007gcc 2.95.2.
f39f21d8 2008
2009=item *
2010
77c8cf41 2011Unicos
2012
2013Fixed various alignment problems that lead into core dumps either
2014during build or later; no longer dies on math errors at runtime;
2015now using full quad integers (64 bits), previously was using
2016only 46 bit integers for speed.
f39f21d8 2017
2018=item *
2019
77c8cf41 2020VMS
2021
2022chdir() now works better despite a CRT bug; now works with MULTIPLICITY
2023(see INSTALL); now works with Perl's malloc.
f39f21d8 2024
00bb525a 2025The tainting of C<%ENV> elements via C<keys> or C<values> was previously
2026unimplemented. It now works as documented.
2027
2028The C<waitpid> emulation has been improved. The worst bug (now fixed)
2029was that a pid of -1 would cause a wildcard search of all processes on
2030the system. The most significant enhancement is that we can now
2031usually get the completion status of a terminated process.
2032
2033POSIX-style signals are now emulated much better on VMS versions prior
2034to 7.0.
2035
2036The C<system> function and backticks operator have improved
2037functionality and better error handling.
2038
f39f21d8 2039=item *
2040
77c8cf41 2041Windows
f39f21d8 2042
77c8cf41 2043=over 8
f39f21d8 2044
2045=item *
2046
77c8cf41 2047accept() no longer leaks memory.
f39f21d8 2048
2049=item *
2050
e1f170bd 2051Borland C++ v5.5 is now a supported compiler that can build Perl.
2052However, the generated binaries continue to be incompatible with those
2053generated by the other supported compilers (GCC and Visual C++).
2054
2055=item *
2056
77c8cf41 2057Better chdir() return value for a non-existent directory.
f39f21d8 2058
77c8cf41 2059=item *
f39f21d8 2060
e1f170bd 2061Duping socket handles with open(F, ">&MYSOCK") now works under Windows 9x.
2062
2063=item *
2064
77c8cf41 2065New %ENV entries now propagate to subprocesses.
f39f21d8 2066
2067=item *
2068
44da0e71 2069Current directory entries in %ENV are now correctly propagated to child
2070processes.
2071
2072=item *
2073
77c8cf41 2074$ENV{LIB} now used to search for libs under Visual C.
2075
2076=item *
2077
44da0e71 2078fork() emulation has been improved in various ways, but still continues
2079to be experimental. See L<perlfork> for known bugs and caveats.
e1f170bd 2080
2081=item *
2082
77c8cf41 2083A failed (pseudo)fork now returns undef and sets errno to EAGAIN.
f39f21d8 2084
2085=item *
2086
44da0e71 2087Win32::GetCwd() correctly returns C:\ instead of C: when at the drive root.
2088Other bugs in chdir() and Cwd::cwd() have also been fixed.
2089
2090=item *
2091
e1f170bd 2092HTML files will be installed in c:\perl\html instead of c:\perl\lib\pod\html
2093
2094=item *
2095
2096The makefiles now provide a single switch to bulk-enable all the features
2097enabled in ActiveState ActivePerl (a popular Win32 binary distribution).
2098
2099=item *
2100
77c8cf41 2101Allow REG_EXPAND_SZ keys in the registry.
f39f21d8 2102
2103=item *
2104
77c8cf41 2105Can now send() from all threads, not just the first one.
f39f21d8 2106
2107=item *
2108
77c8cf41 2109Fake signal handling reenabled, bugs and all.
f39f21d8 2110
2111=item *
2112
44da0e71 2113%SIG has been enabled under USE_ITHREADS, but its use is completely
2114unsupported under all configurations.
2115
2116=item *
2117
77c8cf41 2118Less stack reserved per thread so that more threads can run
2119concurrently. (Still 16M per thread.)
f39f21d8 2120
2121=item *
2122
c2e23569 2123C<File::Spec-&gt;tmpdir()> now prefers C:/temp over /tmp
77c8cf41 2124(works better when perl is running as service).
f39f21d8 2125
2126=item *
2127
77c8cf41 2128Better UNC path handling under ithreads.
f39f21d8 2129
2130=item *
2131
44da0e71 2132wait(), waitpid() and backticks now return the correct exit status under
2133Windows 9x.
f39f21d8 2134
2135=item *
2136
77c8cf41 2137winsock handle leak fixed.
f39f21d8 2138
2139=back
2140
77c8cf41 2141=back
f39f21d8 2142
77c8cf41 2143=head1 New or Changed Diagnostics
f39f21d8 2144
ba370e9b 2145=over 4
2146
2147=item *
2148
77c8cf41 2149All regular expression compilation error messages are now hopefully
2150easier to understand both because the error message now comes before
2151the failed regex and because the point of failure is now clearly
ba370e9b 2152marked by a C<E<lt>-- HERE> marker.
2153
2154=item *
f39f21d8 2155
77c8cf41 2156The various "opened only for", "on closed", "never opened" warnings
2157drop the C<main::> prefix for filehandles in the C<main> package,
bea4d472 2158for example C<STDIN> instead of C<main::STDIN>.
f39f21d8 2159
ba370e9b 2160=item *
2161
77c8cf41 2162The "Unrecognized escape" warning has been extended to include C<\8>,
2163C<\9>, and C<\_>. There is no need to escape any of the C<\w> characters.
f39f21d8 2164
ba370e9b 2165=item *
f39f21d8 2166
77c8cf41 2167Two new debugging options have been added: if you have compiled your
2168Perl with debugging, you can use the -DT and -DR options to trace
2169tokenising and to add reference counts to displaying variables,
2170respectively.
f39f21d8 2171
2172=item *
2173
77c8cf41 2174If an attempt to use a (non-blessed) reference as an array index
2175is made, a warning is given.
f39f21d8 2176
2177=item *
2178
77c8cf41 2179C<push @a;> and C<unshift @a;> (with no values to push or unshift)
2180now give a warning. This may be a problem for generated and evaled
2181code.
f39f21d8 2182
ba370e9b 2183=item *
2184
2185If you try to L<perlfunc/pack> a number less than 0 or larger than 255
2186using the C<"C"> format you will get an optional warning. Similarly
2187for the C<"c"> format and a number less than -128 or more than 127.
2188
2189=item *
2190
2191Certain regex modifiers such as C<(?o)> make sense only if applied to
2192the entire regex. You will an optional warning if you try to do otherwise.
2193
2194=item *
2195
c2e23569 2196Using arrays or hashes as references (e.g. C<< %foo-&gt;{bar} >>
2197has been deprecated for a while. Now you will get an optional warning.
ba370e9b 2198
f39f21d8 2199=back
2200
77c8cf41 2201=head1 Changed Internals
f39f21d8 2202
2203=over 4
2204
2205=item *
2206
77c8cf41 2207perlapi.pod (a companion to perlguts) now attempts to document the
2208internal API.
f39f21d8 2209
2210=item *
2211
77c8cf41 2212You can now build a really minimal perl called microperl.
2213Building microperl does not require even running Configure;
2214C<make -f Makefile.micro> should be enough. Beware: microperl makes
2215many assumptions, some of which may be too bold; the resulting
2216executable may crash or otherwise misbehave in wondrous ways.
2217For careful hackers only.
f39f21d8 2218
2219=item *
2220
c2e23569 2221Added rsignal(), whichsig(), do_join(), op_clear, op_null,
2222ptr_table_clear(), ptr_table_free(), sv_setref_uv(), and several UTF-8
2223interfaces to the publicised API. For the full list of the available
2224APIs see L<perlapi>.
f39f21d8 2225
2226=item *
2227
77c8cf41 2228Made possible to propagate customised exceptions via croak()ing.
f39f21d8 2229
77c8cf41 2230=item *
f39f21d8 2231
95f0a2f1 2232Now xsubs can have attributes just like subs. (Well, at least the
2233built-in attributes.)
f39f21d8 2234
2235=item *
2236
77c8cf41 2237dTHR and djSP have been obsoleted; the former removed (because it's
2238a no-op) and the latter replaced with dSP.
f39f21d8 2239
2240=item *
2241
61947107 2242PERL_OBJECT has been completely removed.
2243
2244=item *
2245
ba370e9b 2246The MAGIC constants (e.g. C<'P'>) have been macrofied
2247(e.g. C<PERL_MAGIC_TIED>) for better source code readability
2248and maintainability.
2249
2250=item *
2251
2252The regex compiler now maintains a structure that identifies nodes in
2253the compiled bytecode with the corresponding syntactic features of the
2254original regex expression. The information is attached to the new
2255C<offsets> member of the C<struct regexp>. See L<perldebguts> for more
2256complete information.
2257
2258=item *
2259
2260The C code has been made much more C<gcc -Wall> clean. Some warning
2261messages still remain in some platforms, so if you are compiling with
2262gcc you may see some warnings about dubious practices. The warnings
2263are being worked on.
2264
2265=item *
2266
2267F<perly.c>, F<sv.c>, and F<sv.h> have now been extensively commented.
2268
2269=item *
2270
61947107 2271Documentation on how to use the Perl source repository has been added
2272to F<Porting/repository.pod>.
f39f21d8 2273
888aee59 2274=item *
2275
c2e23569 2276There are now several profiling make targets.
888aee59 2277
77c8cf41 2278=back
f39f21d8 2279
77c8cf41 2280=head1 Security Vulnerability Closed
f39f21d8 2281
77c8cf41 2282(This change was already made in 5.7.0 but bears repeating here.)
f39f21d8 2283
77c8cf41 2284A potential security vulnerability in the optional suidperl component
2285of Perl was identified in August 2000. suidperl is neither built nor
2286installed by default. As of November 2001 the only known vulnerable
2287platform is Linux, most likely all Linux distributions. CERT and
2288various vendors and distributors have been alerted about the vulnerability.
2289See http://www.cpan.org/src/5.0/sperl-2000-08-05/sperl-2000-08-05.txt
2290for more information.
f39f21d8 2291
77c8cf41 2292The problem was caused by Perl trying to report a suspected security
2293exploit attempt using an external program, /bin/mail. On Linux
2294platforms the /bin/mail program had an undocumented feature which
2295when combined with suidperl gave access to a root shell, resulting in
2296a serious compromise instead of reporting the exploit attempt. If you
2297don't have /bin/mail, or if you have 'safe setuid scripts', or if
2298suidperl is not installed, you are safe.
f39f21d8 2299
77c8cf41 2300The exploit attempt reporting feature has been completely removed from
2301Perl 5.8.0 (and the maintenance release 5.6.1, and it was removed also
2302from all the Perl 5.7 releases), so that particular vulnerability
2303isn't there anymore. However, further security vulnerabilities are,
ba370e9b 2304unfortunately, always possible. The suidperl functionality is most
2305probably going to be removed in Perl 5.10. In any case, suidperl
2306should only be used by security experts who know exactly what they are
2307doing and why they are using suidperl instead of some other solution
2308such as sudo (see http://www.courtesan.com/sudo/).
77c8cf41 2309
2310=head1 New Tests
2311
76663d67 2312Several new tests have been added, especially for the F<lib>
2313subsection. There are now about 34 000 individual tests (spread over
2314about 530 test scripts), in the regression suite (5.6.1 has about
231511700 tests, in 258 test scripts) Many of the new tests are introduced
2316by the new modules, but still in general Perl is now more thoroughly
2317tested.
2318
2319Because of the large number of tests, running the regression suite
2320will take considerably longer time than it used to: expect the suite
2321to take up to 4-5 times longer to run than in perl 5.6. In a really
2322fast machine you can hope to finish the suite in about 5 minutes
2323(wallclock time).
77c8cf41 2324
2325The tests are now reported in a different order than in earlier Perls.
2326(This happens because the test scripts from under t/lib have been moved
2327to be closer to the library/extension they are testing.)
2328
f39f21d8 2329=head1 Known Problems
2330
f39f21d8 2331=head2 AIX
2332
2333=over 4
2334
2335=item *
2336
2337In AIX 4.2 Perl extensions that use C++ functions that use statics
2338may have problems in that the statics are not getting initialized.
2339In newer AIX releases this has been solved by linking Perl with
2340the libC_r library, but unfortunately in AIX 4.2 the said library
2341has an obscure bug where the various functions related to time
2342(such as time() and gettimeofday()) return broken values, and
2343therefore in AIX 4.2 Perl is not linked against the libC_r.
2344
2345=item *
2346
2347vac 5.0.0.0 May Produce Buggy Code For Perl
2348
2349The AIX C compiler vac version 5.0.0.0 may produce buggy code,
2350resulting in few random tests failing, but when the failing tests
2351are run by hand, they succeed. We suggest upgrading to at least
2352vac version 5.0.1.0, that has been known to compile Perl correctly.
2353"lslpp -L|grep vac.C" will tell you the vac version.
2354
2355=back
2356
2357=head2 Amiga Perl Invoking Mystery
2358
2359One cannot call Perl using the C<volume:> syntax, that is, C<perl -v>
057b7f2b 2360works, but for example C<bin:perl -v> doesn't. The exact reason isn't
f39f21d8 2361known but the current suspect is the F<ixemul> library.
2362
2363=head2 lib/ftmp-security tests warn 'system possibly insecure'
2364
2365Don't panic. Read INSTALL 'make test' section instead.
2366
2367=head2 Cygwin intermittent failures of lib/Memoize/t/expire_file 11 and 12
2368
2369The subtests 11 and 12 sometimes fail and sometimes work.
2370
2371=head2 HP-UX lib/io_multihomed Fails When LP64-Configured
2372
2373The lib/io_multihomed test may hang in HP-UX if Perl has been
2374configured to be 64-bit. Because other 64-bit platforms do not hang in
2375this test, HP-UX is suspect. All other tests pass in 64-bit HP-UX. The
2376test attempts to create and connect to "multihomed" sockets (sockets
2377which have multiple IP addresses).
2378
2379=head2 HP-UX lib/posix Subtest 9 Fails When LP64-Configured
2380
2381If perl is configured with -Duse64bitall, the successful result of the
2382subtest 10 of lib/posix may arrive before the successful result of the
2383subtest 9, which confuses the test harness so much that it thinks the
2384subtest 9 failed.
2385
2386=head2 Linux With Sfio Fails op/misc Test 48
2387
2388No known fix.
2389
a0aae13b 2390=head2 Mac OS X
2391
2392The following tests are known to fail:
2393
2394 Failed Test Stat Wstat Total Fail Failed List of Failed
2395 -------------------------------------------------------------------------
2396 ../ext/DB_File/t/db-btree.t 0 11 ?? ?? % ??
2397 ../ext/DB_File/t/db-recno.t 149 3 2.01% 61 63 65
2398 ../ext/POSIX/t/posix.t 31 1 3.23% 10
2399 ../lib/warnings.t 450 1 0.22% 316
2400
f39f21d8 2401=head2 OS/390
2402
2403OS/390 has rather many test failures but the situation is actually
2404better than it was in 5.6.0, it's just that so many new modules and
2405tests have been added.
2406
2407 Failed Test Stat Wstat Total Fail Failed List of Failed
2408 -----------------------------------------------------------------------------
2409 ../ext/B/Deparse.t 14 1 7.14% 14
2410 ../ext/B/Showlex.t 1 1 100.00% 1
2411 ../ext/Encode/Encode/Tcl.t 610 13 2.13% 592 594 596 598
2412 600 602 604-610
2413 ../ext/IO/lib/IO/t/io_unix.t 113 28928 5 3 60.00% 3-5
2414 ../ext/POSIX/POSIX.t 29 1 3.45% 14
2415 ../ext/Storable/t/lock.t 255 65280 5 3 60.00% 3-5
2416 ../lib/locale.t 129 33024 117 19 16.24% 99-117
2417 ../lib/warnings.t 434 1 0.23% 75
2418 ../lib/ExtUtils.t 27 1 3.70% 25
2419 ../lib/Math/BigInt/t/bigintpm.t 1190 1 0.08% 1145
2420 ../lib/Unicode/UCD.t 81 48 59.26% 1-16 49-64 66-81
2421 ../lib/User/pwent.t 9 1 11.11% 4
2422 op/pat.t 660 6 0.91% 242-243 424-425
2423 626-627
2424 op/split.t 0 9 ?? ?? % ??
2425 op/taint.t 174 3 1.72% 156 162 168
2426 op/tr.t 70 3 4.29% 50 58-59
2427 Failed 16/422 test scripts, 96.21% okay. 105/23251 subtests failed, 99.55% okay.
2428
2429=head2 op/sprintf tests 129 and 130
2430
2431The op/sprintf tests 129 and 130 are known to fail on some platforms.
2432Examples include any platform using sfio, and Compaq/Tandem's NonStop-UX.
2433The failing platforms do not comply with the ANSI C Standard, line
243419ff on page 134 of ANSI X3.159 1989 to be exact. (They produce
2435something other than "1" and "-1" when formatting 0.6 and -0.6 using
2436the printf format "%.0f", most often they produce "0" and "-0".)
2437
2438=head2 Failure of Thread tests
2439
fedd8cf1 2440B<Note that support for 5.005-style threading remains experimental
2441and practically unsupported.>
f39f21d8 2442
2443The following tests are known to fail due to fundamental problems in
2444the 5.005 threading implementation. These are not new failures--Perl
24455.005_0x has the same bugs, but didn't have these tests.
2446
fedd8cf1 2447 ext/List/Util/t/first 2
2448 lib/autouse 4
2449 ext/Thread/thr5005 19-20
2450
2451These failures are unlikely to get fixed.
f39f21d8 2452
2453=head2 UNICOS
2454
2455=over 4
2456
2457=item *
2458
2459ext/POSIX/sigaction subtests 6 and 13 may fail.
2460
2461=item *
2462
2463lib/ExtUtils may spuriously claim that subtest 28 failed,
2464which is interesting since the test only has 27 tests.
2465
2466=item *
2467
2468Numerous numerical test failures
2469
2470 op/numconvert 209,210,217,218
2471 op/override 7
2472 ext/Time/HiRes/HiRes 9
2473 lib/Math/BigInt/t/bigintpm 1145
2474 lib/Math/Trig 25
2475
2476These tests fail because of yet unresolved floating point inaccuracies.
2477
2478=back
2479
2480=head2 UTS
2481
2482There are a few known test failures, see L<perluts>.
2483
2484=head2 VMS
2485
00bb525a 2486There is one known test failure with a default configuration:
aecce728 2487
2488 [.run]switches..........................FAILED on test 1
aecce728 2489
f39f21d8 2490=head2 Win32
2491
2492In multi-CPU boxes there are some problems with the I/O buffering:
2493some output may appear twice.
2494
2495=head2 Localising a Tied Variable Leaks Memory
2496
2497 use Tie::Hash;
2498 tie my %tie_hash => 'Tie::StdHash';
2499
2500 ...
2501
2502 local($tie_hash{Foo}) = 1; # leaks
2503
2504Code like the above is known to leak memory every time the local()
2505is executed.
2506
aecce728 2507=head2 Localising Tied Arrays and Hashes Is Broken
2508
2509 local %tied_array;
2510
2511doesn't work as one would expect: the old value is restored
2512incorrectly.
2513
f39f21d8 2514=head2 Self-tying of Arrays and Hashes Is Forbidden
2515
2516Self-tying of arrays and hashes is broken in rather deep and
2517hard-to-fix ways. As a stop-gap measure to avoid people from getting
2518frustrated at the mysterious results (core dumps, most often) it is
2519for now forbidden (you will get a fatal error even from an attempt).
2520
f39f21d8 2521=head2 Building Extensions Can Fail Because Of Largefiles
2522
2523Some extensions like mod_perl are known to have issues with
2524`largefiles', a change brought by Perl 5.6.0 in which file offsets
2525default to 64 bits wide, where supported. Modules may fail to compile
2526at all or compile and work incorrectly. Currently there is no good
2527solution for the problem, but Configure now provides appropriate
2528non-largefile ccflags, ldflags, libswanted, and libs in the %Config
2529hash (e.g., $Config{ccflags_nolargefiles}) so the extensions that are
2530having problems can try configuring themselves without the
2531largefileness. This is admittedly not a clean solution, and the
2532solution may not even work at all. One potential failure is whether
2533one can (or, if one can, whether it's a good idea) link together at
2534all binaries with different ideas about file offsets, all this is
2535platform-dependent.
2536
aecce728 2537=head2 Unicode Support on EBCDIC Still Spotty
2538
2539Though mostly working, Unicode support still has problem spots on
2540EBCDIC platforms. One such known spot are the C<\p{}> and C<\P{}>
2541regular expression constructs for code points less than 256: the
2542pP are testing for Unicode code points, not knowing about EBCDIC.
2543
f39f21d8 2544=head2 The Compiler Suite Is Still Experimental
2545
44da0e71 2546The compiler suite is slowly getting better but it continues to be
2547highly experimental. Use in production environments is discouraged.
f39f21d8 2548
2549=head2 The Long Double Support is Still Experimental
2550
2551The ability to configure Perl's numbers to use "long doubles",
2552floating point numbers of hopefully better accuracy, is still
2553experimental. The implementations of long doubles are not yet
2554widespread and the existing implementations are not quite mature
2555or standardised, therefore trying to support them is a rare
2556and moving target. The gain of more precision may also be offset
2557by slowdown in computations (more bits to move around, and the
2558operations are more likely to be executed by less optimised
2559libraries).
33a87e58 2560
cc0fca54 2561=head1 Reporting Bugs
2562
d4ad863d 2563If you find what you think is a bug, you might check the articles
2564recently posted to the comp.lang.perl.misc newsgroup and the perl
2565bug database at http://bugs.perl.org. There may also be
2566information at http://www.perl.com/perl/, the Perl Home Page.
cc0fca54 2567
2568If you believe you have an unreported bug, please run the B<perlbug>
2569program included with your release. Be sure to trim your bug down
2570to a tiny but sufficient test case. Your bug report, along with the
d4ad863d 2571output of C<perl -V>, will be sent off to perlbug@perl.org to be
cc0fca54 2572analysed by the Perl porting team.
2573
2574=head1 SEE ALSO
2575
2576The F<Changes> file for exhaustive details on what changed.
2577
2578The F<INSTALL> file for how to build Perl.
2579
2580The F<README> file for general stuff.
2581
2582The F<Artistic> and F<Copying> files for copyright information.
2583
2584=head1 HISTORY
2585
d468ca04 2586Written by Jarkko Hietaniemi <F<jhi@iki.fi>>.
cc0fca54 2587
2588=cut