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