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