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