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