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