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