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