1PERL571DELTA(1)        Perl Programmers Reference Guide        PERL571DELTA(1)
2
3
4

NAME

6       perl571delta - what's new for perl v5.7.1
7

DESCRIPTION

9       This document describes differences between the 5.7.0 release and the
10       5.7.1 release.
11
12       (To view the differences between the 5.6.0 release and the 5.7.0
13       release, see perl570delta.)
14

Security Vulnerability Closed

16       (This change was already made in 5.7.0 but bears repeating here.)
17
18       A potential security vulnerability in the optional suidperl component
19       of Perl was identified in August 2000.  suidperl is neither built nor
20       installed by default.  As of April 2001 the only known vulnerable plat‐
21       form is Linux, most likely all Linux distributions.  CERT and various
22       vendors and distributors have been alerted about the vulnerability.
23       See http://www.cpan.org/src/5.0/sperl-2000-08-05/sperl-2000-08-05.txt
24       for more information.
25
26       The problem was caused by Perl trying to report a suspected security
27       exploit attempt using an external program, /bin/mail.  On Linux plat‐
28       forms the /bin/mail program had an undocumented feature which when com‐
29       bined with suidperl gave access to a root shell, resulting in a serious
30       compromise instead of reporting the exploit attempt.  If you don't have
31       /bin/mail, or if you have 'safe setuid scripts', or if suidperl is not
32       installed, you are safe.
33
34       The exploit attempt reporting feature has been completely removed from
35       all the Perl 5.7 releases (and will be gone also from the maintenance
36       release 5.6.1), so that particular vulnerability isn't there anymore.
37       However, further security vulnerabilities are, unfortunately, always
38       possible.  The suidperl code is being reviewed and if deemed too risky
39       to continue to be supported, it may be completely removed from future
40       releases.  In any case, suidperl should only be used by security
41       experts who know exactly what they are doing and why they are using
42       suidperl instead of some other solution such as sudo ( see
43       http://www.courtesan.com/sudo/ ).
44

Incompatible Changes

46       ·   Although "you shouldn't do that", it was possible to write code
47           that depends on Perl's hashed key order (Data::Dumper does this).
48           The new algorithm "One-at-a-Time" produces a different hashed key
49           order.  More details are in "Performance Enhancements".
50
51       ·   The list of filenames from glob() (or <...>) is now by default
52           sorted alphabetically to be csh-compliant.  (bsd_glob() does still
53           sort platform natively, ASCII or EBCDIC, unless GLOB_ALPHASORT is
54           specified.)
55

Core Enhancements

57       AUTOLOAD Is Now Lvaluable
58
59       AUTOLOAD is now lvaluable, meaning that you can add the :lvalue
60       attribute to AUTOLOAD subroutines and you can assign to the AUTOLOAD
61       return value.
62
63       PerlIO is Now The Default
64
65       ·   IO is now by default done via PerlIO rather than system's "stdio".
66           PerlIO allows "layers" to be "pushed" onto a file handle to alter
67           the handle's behaviour.  Layers can be specified at open time via
68           3-arg form of open:
69
70              open($fh,'>:crlf :utf8', $path) ⎪⎪ ...
71
72           or on already opened handles via extended "binmode":
73
74              binmode($fh,':encoding(iso-8859-7)');
75
76           The built-in layers are: unix (low level read/write), stdio (as in
77           previous Perls), perlio (re-implementation of stdio buffering in a
78           portable manner), crlf (does CRLF <=> "\n" translation as on Win32,
79           but available on any platform).  A mmap layer may be available if
80           platform supports it (mostly UNIXes).
81
82           Layers to be applied by default may be specified via the 'open'
83           pragma.
84
85           See "Installation and Configuration Improvements" for the effects
86           of PerlIO on your architecture name.
87
88       ·   File handles can be marked as accepting Perl's internal encoding of
89           Unicode (UTF-8 or UTF-EBCDIC depending on platform) by a pseudo
90           layer ":utf8" :
91
92              open($fh,">:utf8","Uni.txt");
93
94           Note for EBCDIC users: the pseudo layer ":utf8" is erroneously
95           named for you since it's not UTF-8 what you will be getting but
96           instead UTF-EBCDIC.  See perlunicode, utf8, and http://www.uni
97           code.org/unicode/reports/tr16/ for more information.  In future
98           releases this naming may change.
99
100       ·   File handles can translate character encodings from/to Perl's
101           internal Unicode form on read/write via the ":encoding()" layer.
102
103       ·   File handles can be opened to "in memory" files held in Perl
104           scalars via:
105
106              open($fh,'>', \$variable) ⎪⎪ ...
107
108       ·   Anonymous temporary files are available without need to 'use File‐
109           Handle' or other module via
110
111              open($fh,"+>", undef) ⎪⎪ ...
112
113           That is a literal undef, not an undefined value.
114
115       ·   The list form of "open" is now implemented for pipes (at least on
116           UNIX):
117
118              open($fh,"-⎪", 'cat', '/etc/motd')
119
120           creates a pipe, and runs the equivalent of exec('cat', '/etc/motd')
121           in the child process.
122
123       ·   The following builtin functions are now overridable: chop(),
124           chomp(), each(), keys(), pop(), push(), shift(), splice(),
125           unshift().
126
127       ·   Formats now support zero-padded decimal fields.
128
129       ·   Perl now tries internally to use integer values in numeric conver‐
130           sions and basic arithmetics (+ - * /) if the arguments are inte‐
131           gers, and tries also to keep the results stored internally as inte‐
132           gers.  This change leads into often slightly faster and always less
133           lossy arithmetics. (Previously Perl always preferred floating point
134           numbers in its math.)
135
136       ·   The printf() and sprintf() now support parameter reordering using
137           the "%\d+\$" and "*\d+\$" syntaxes.  For example
138
139               print "%2\$s %1\$s\n", "foo", "bar";
140
141           will print "bar foo\n"; This feature helps in writing internation‐
142           alised software.
143
144       ·   Unicode in general should be now much more usable.  Unicode can be
145           used in hash keys, Unicode in regular expressions should work now,
146           Unicode in tr/// should work now (though tr/// seems to be a par‐
147           ticularly tricky to get right, so you have been warned)
148
149       ·   The Unicode Character Database coming with Perl has been upgraded
150           to Unicode 3.1.  For more information, see http://www.unicode.org/
151           , and http://www.unicode.org/unicode/reports/tr27/
152
153           For developers interested in enhancing Perl's Unicode capabilities:
154           almost all the UCD files are included with the Perl distribution in
155           the lib/unicode subdirectory.  The most notable omission, for space
156           considerations, is the Unihan database.
157
158       ·   The Unicode character classes \p{Blank} and \p{SpacePerl} have been
159           added.  "Blank" is like C isblank(), that is, it contains only
160           "horizontal whitespace" (the space character is, the newline
161           isn't), and the "SpacePerl" is the Unicode equivalent of "\s"
162           (\p{Space} isn't, since that includes the vertical tabulator char‐
163           acter, whereas "\s" doesn't.)
164
165       Signals Are Now Safe
166
167       Perl used to be fragile in that signals arriving at inopportune moments
168       could corrupt Perl's internal state.
169

Modules and Pragmata

171       New Modules
172
173       ·   B::Concise, by Stephen McCamant, is a new compiler backend for
174           walking the Perl syntax tree, printing concise info about ops.  The
175           output is highly customisable.
176
177           See B::Concise for more information.
178
179       ·   Class::ISA, by Sean Burke, for reporting the search path for a
180           class's ISA tree, has been added.
181
182           See Class::ISA for more information.
183
184       ·   Cwd has now a split personality: if possible, an extension is used,
185           (this will hopefully be both faster and more secure and robust) but
186           if not possible, the familiar Perl library implementation is used.
187
188       ·   Digest, a frontend module for calculating digests (checksums), from
189           Gisle Aas, has been added.
190
191           See Digest for more information.
192
193       ·   Digest::MD5 for calculating MD5 digests (checksums), by Gisle Aas,
194           has been added.
195
196               use Digest::MD5 'md5_hex';
197
198               $digest = md5_hex("Thirsty Camel");
199
200               print $digest, "\n"; # 01d19d9d2045e005c3f1b80e8b164de1
201
202           NOTE: the MD5 backward compatibility module is deliberately not
203           included since its use is discouraged.
204
205           See Digest::MD5 for more information.
206
207       ·   Encode, by Nick Ing-Simmons, provides a mechanism to translate
208           between different character encodings.  Support for Unicode,
209           ISO-8859-*, ASCII, CP*, KOI8-R, and three variants of EBCDIC are
210           compiled in to the module.  Several other encodings (like Japanese,
211           Chinese, and MacIntosh encodings) are included and will be loaded
212           at runtime.
213
214           Any encoding supported by Encode module is also available to the
215           ":encoding()" layer if PerlIO is used.
216
217           See Encode for more information.
218
219       ·   Filter::Simple is an easy-to-use frontend to Filter::Util::Call,
220           from Damian Conway.
221
222               # in MyFilter.pm:
223
224               package MyFilter;
225
226               use Filter::Simple sub {
227                   while (my ($from, $to) = splice @_, 0, 2) {
228                           s/$from/$to/g;
229                   }
230               };
231
232               1;
233
234               # in user's code:
235
236               use MyFilter qr/red/ => 'green';
237
238               print "red\n";   # this code is filtered, will print "green\n"
239               print "bored\n"; # this code is filtered, will print "bogreen\n"
240
241               no MyFilter;
242
243               print "red\n";   # this code is not filtered, will print "red\n"
244
245           See Filter::Simple for more information.
246
247       ·   Filter::Util::Call, by Paul Marquess, provides you with the frame‐
248           work to write Source Filters in Perl.  For most uses the frontend
249           Filter::Simple is to be preferred.  See Filter::Util::Call for more
250           information.
251
252       ·   Locale::Constants, Locale::Country, Locale::Currency, and
253           Locale::Language, from Neil Bowers, have been added.  They provide
254           the codes for various locale standards, such as "fr" for France,
255           "usd" for US Dollar, and "jp" for Japanese.
256
257               use Locale::Country;
258
259               $country = code2country('jp');               # $country gets 'Japan'
260               $code    = country2code('Norway');           # $code gets 'no'
261
262           See Locale::Constants, Locale::Country, Locale::Currency, and
263           Locale::Language for more information.
264
265       ·   MIME::Base64, by Gisle Aas, allows you to encode data in base64.
266
267               use MIME::Base64;
268
269               $encoded = encode_base64('Aladdin:open sesame');
270               $decoded = decode_base64($encoded);
271
272               print $encoded, "\n"; # "QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
273
274           See MIME::Base64 for more information.
275
276       ·   MIME::QuotedPrint, by Gisle Aas, allows you to encode data in
277           quoted-printable encoding.
278
279               use MIME::QuotedPrint;
280
281               $encoded = encode_qp("Smiley in Unicode: \x{263a}");
282               $decoded = decode_qp($encoded);
283
284               print $encoded, "\n"; # "Smiley in Unicode: =263A"
285
286           MIME::QuotedPrint has been enhanced to provide the basic methods
287           necessary to use it with PerlIO::Via as in :
288
289               use MIME::QuotedPrint;
290               open($fh,">Via(MIME::QuotedPrint)",$path)
291
292           See MIME::QuotedPrint for more information.
293
294       ·   PerlIO::Scalar, by Nick Ing-Simmons, provides the implementation of
295           IO to "in memory" Perl scalars as discussed above.  It also serves
296           as an example of a loadable layer.  Other future possibilities
297           include PerlIO::Array and PerlIO::Code.  See PerlIO::Scalar for
298           more information.
299
300       ·   PerlIO::Via, by Nick Ing-Simmons, acts as a PerlIO layer and wraps
301           PerlIO layer functionality provided by a class (typically imple‐
302           mented in perl code).
303
304               use MIME::QuotedPrint;
305               open($fh,">Via(MIME::QuotedPrint)",$path)
306
307           This will automatically convert everything output to $fh to
308           Quoted-Printable.  See PerlIO::Via for more information.
309
310       ·   Pod::Text::Overstrike, by Joe Smith, has been added.  It converts
311           POD data to formatted overstrike text.  See Pod::Text::Overstrike
312           for more information.
313
314       ·   Switch from Damian Conway has been added.  Just by saying
315
316               use Switch;
317
318           you have "switch" and "case" available in Perl.
319
320               use Switch;
321
322               switch ($val) {
323
324                           case 1          { print "number 1" }
325                           case "a"        { print "string a" }
326                           case [1..10,42] { print "number in list" }
327                           case (@array)   { print "number in list" }
328                           case /\w+/      { print "pattern" }
329                           case qr/\w+/    { print "pattern" }
330                           case (%hash)    { print "entry in hash" }
331                           case (\%hash)   { print "entry in hash" }
332                           case (\&sub)    { print "arg to subroutine" }
333                           else            { print "previous case not true" }
334               }
335
336           See Switch for more information.
337
338       ·   Text::Balanced from Damian Conway has been added, for extracting
339           delimited text sequences from strings.
340
341               use Text::Balanced 'extract_delimited';
342
343               ($a, $b) = extract_delimited("'never say never', he never said", "'", '');
344
345           $a will be "'never say never'", $b will be ', he never said'.
346
347           In addition to extract_delimited() there are also extract_brack‐
348           eted(), extract_quotelike(), extract_codeblock(), extract_vari‐
349           able(), extract_tagged(), extract_multiple(), gen_delimited_pat(),
350           and gen_extract_tagged().  With these you can implement rather
351           advanced parsing algorithms.  See Text::Balanced for more informa‐
352           tion.
353
354       ·   Tie::RefHash::Nestable, by Edward Avis, allows storing hash refer‐
355           ences (unlike the standard Tie::RefHash)  The module is contained
356           within Tie::RefHash.
357
358       ·   XS::Typemap, by Tim Jenness, is a test extension that exercises XS
359           typemaps.  Nothing gets installed but for extension writers the
360           code is worth studying.
361
362       Updated And Improved Modules and Pragmata
363
364       ·   B::Deparse should be now more robust.  It still far from providing
365           a full round trip for any random piece of Perl code, though, and is
366           under active development: expect more robustness in 5.7.2.
367
368       ·   Class::Struct can now define the classes in compile time.
369
370       ·   Math::BigFloat has undergone much fixing, and in addition the
371           fmod() function now supports modulus operations.
372
373           ( The fixed Math::BigFloat module is also available in CPAN for
374           those who can't upgrade their Perl:
375           http://www.cpan.org/authors/id/J/JP/JPEACOCK/ )
376
377       ·   Devel::Peek now has an interface for the Perl memory statistics
378           (this works only if you are using perl's malloc, and if you have
379           compiled with debugging).
380
381       ·   IO::Socket has now atmark() method, which returns true if the
382           socket is positioned at the out-of-band mark.  The method is also
383           exportable as a sockatmark() function.
384
385       ·   IO::Socket::INET has support for ReusePort option (if your platform
386           supports it).  The Reuse option now has an alias, ReuseAddr.  For
387           clarity you may want to prefer ReuseAddr.
388
389       ·   Net::Ping has been enhanced.  There is now "external" protocol
390           which uses Net::Ping::External module which runs external ping(1)
391           and parses the output.  An alpha version of Net::Ping::External is
392           available in CPAN and in 5.7.2 the Net::Ping::External may be inte‐
393           grated to Perl.
394
395       ·   The "open" pragma allows layers other than ":raw" and ":crlf" when
396           using PerlIO.
397
398       ·   POSIX::sigaction() is now much more flexible and robust.  You can
399           now install coderef handlers, 'DEFAULT', and 'IGNORE' handlers,
400           installing new handlers was not atomic.
401
402       ·   The Test module has been significantly enhanced.  Its use is
403           greatly recommended for module writers.
404
405       ·   The utf8:: name space (as in the pragma) provides various Perl-
406           callable functions to provide low level access to Perl's internal
407           Unicode representation.  At the moment only length() has been
408           implemented.
409
410       The following modules have been upgraded from the versions at CPAN:
411       CPAN, CGI, DB_File, File::Temp, Getopt::Long, Pod::Man, Pod::Text,
412       Storable, Text-Tabs+Wrap.
413

Performance Enhancements

415       ·   Hashes now use Bob Jenkins "One-at-a-Time" hashing key algorithm (
416           http://burtleburtle.net/bob/hash/doobs.html ).  This algorithm is
417           reasonably fast while producing a much better spread of values than
418           the old hashing algorithm (originally by Chris Torek, later tweaked
419           by Ilya Zakharevich).  Hash values output from the algorithm on a
420           hash of all 3-char printable ASCII keys comes much closer to pass‐
421           ing the DIEHARD random number generation tests.  According to perl‐
422           bench, this change has not affected the overall speed of Perl.
423
424       ·   unshift() should now be noticeably faster.
425

Utility Changes

427       ·   h2xs now produces template README.
428
429       ·   s2p has been completely rewritten in Perl.  (It is in fact a full
430           implementation of sed in Perl.)
431
432       ·   xsubpp now supports OUT keyword.
433

New Documentation

435       perlclib
436
437       Internal replacements for standard C library functions.  (Interesting
438       only for extension writers and Perl core hackers.)
439
440       perliol
441
442       Internals of PerlIO with layers.
443
444       README.aix
445
446       Documentation on compiling Perl on AIX has been added.  AIX has several
447       different C compilers and getting the right patch level is essential.
448       On install README.aix will be installed as perlaix.
449
450       README.bs2000
451
452       Documentation on compiling Perl on the POSIX-BC platform (an EBCDIC
453       mainframe environment) has been added.
454
455       This was formerly known as README.posix-bc but the name was considered
456       to be too confusing (it has nothing to do with the POSIX module or the
457       POSIX standard).  On install README.bs2000 will be installed as
458       perlbs2000.
459
460       README.macos
461
462       In perl 5.7.1 (and in the 5.6.1) the MacPerl sources have been synchro‐
463       nised with the standard Perl sources.  To compile MacPerl some addi‐
464       tional steps are required, and this file documents those steps.  On
465       install README.macos will be installed as perlmacos.
466
467       README.mpeix
468
469       The README.mpeix has been podified, which means that this information
470       about compiling and using Perl on the MPE/iX miniframe platform will be
471       installed as perlmpeix.
472
473       README.solaris
474
475       README.solaris has been created and Solaris wisdom from elsewhere in
476       the Perl documentation has been collected there.  On install
477       README.solaris will be installed as perlsolaris.
478
479       README.vos
480
481       The README.vos has been podified, which means that this information
482       about compiling and using Perl on the Stratus VOS miniframe platform
483       will be installed as perlvos.
484
485       Porting/repository.pod
486
487       Documentation on how to use the Perl source repository has been added.
488

Installation and Configuration Improvements

490       ·   Because PerlIO is now the default on most platforms, "-perlio"
491           doesn't get appended to the $Config{archname} (also known as $^O)
492           anymore.  Instead, if you explicitly choose not to use perlio (Con‐
493           figure command line option -Uuseperlio), you will get "-stdio"
494           appended.
495
496       ·   Another change related to the architecture name is that "-64all"
497           (-Duse64bitall, or "maximally 64-bit") is appended only if your
498           pointers are 64 bits wide.  (To be exact, the use64bitall is
499           ignored.)
500
501       ·   APPLLIB_EXP, a less-know configuration-time definition, has been
502           documented.  It can be used to prepend site-specific directories to
503           Perl's default search path (@INC), see INSTALL for information.
504
505       ·   Building Berkeley DB3 for compatibility modes for DB, NDBM, and
506           ODBM has been documented in INSTALL.
507
508       ·   If you are on IRIX or Tru64 platforms, new profiling/debugging
509           options have been added, see perlhack for more information about
510           pixie and Third Degree.
511
512       New Or Improved Platforms
513
514       For the list of platforms known to support Perl, see "Supported Plat‐
515       forms" in perlport.
516
517       ·   AIX dynamic loading should be now better supported.
518
519       ·   After a long pause, AmigaOS has been verified to be happy with
520           Perl.
521
522       ·   EBCDIC platforms (z/OS, also known as OS/390, POSIX-BC, and VM/ESA)
523           have been regained.  Many test suite tests still fail and the co-
524           existence of Unicode and EBCDIC isn't quite settled, but the situa‐
525           tion is much better than with Perl 5.6.  See perlos390, perlbs2000
526           (for POSIX-BC), and perlvmesa for more information.
527
528       ·   Building perl with -Duseithreads or -Duse5005threads now works
529           under HP-UX 10.20 (previously it only worked under 10.30 or later).
530           You will need a thread library package installed. See README.hpux.
531
532       ·   Mac OS Classic (MacPerl has of course been available since perl
533           5.004 but now the source code bases of standard Perl and MacPerl
534           have been synchronised)
535
536       ·   NCR MP-RAS is now supported.
537
538       ·   NonStop-UX is now supported.
539
540       ·   Amdahl UTS is now supported.
541
542       ·   z/OS (formerly known as OS/390, formerly known as MVS OE) has now
543           support for dynamic loading.  This is not selected by default, how‐
544           ever, you must specify -Dusedl in the arguments of Configure.
545
546       Generic Improvements
547
548       ·   Configure no longer includes the DBM libraries (dbm, gdbm, db,
549           ndbm) when building the Perl binary.  The only exception to this is
550           SunOS 4.x, which needs them.
551
552       ·   Some new Configure symbols, useful for extension writers:
553
554           d_cmsghdr
555                   For struct cmsghdr.
556
557           d_fcntl_can_lock
558                   Whether fcntl() can be used for file locking.
559
560           d_fsync
561           d_getitimer
562           d_getpagsz
563                   For getpagesize(), though you should prefer
564                   POSIX::sysconf(_SC_PAGE_SIZE))
565
566           d_msghdr_s
567                   For struct msghdr.
568
569           need_va_copy
570                   Whether one needs to use Perl_va_copy() to copy varargs.
571
572           d_readv
573           d_recvmsg
574           d_sendmsg
575           sig_size
576                   The number of elements in an array needed to hold all the
577                   available signals.
578
579           d_sockatmark
580           d_strtoq
581           d_u32align
582                   Whether one needs to access character data aligned by U32
583                   sized pointers.
584
585           d_ualarm
586           d_usleep
587       ·   Removed Configure symbols: the PDP-11 memory model settings: huge,
588           large, medium, models.
589
590       ·   SOCKS support is now much more robust.
591
592       ·   If your file system supports symbolic links you can build Perl out‐
593           side of the source directory by
594
595                   mkdir perl/build/directory
596                   cd perl/build/directory
597                   sh /path/to/perl/source/Configure -Dmksymlinks ...
598
599           This will create in perl/build/directory a tree of symbolic links
600           pointing to files in /path/to/perl/source.  The original files are
601           left unaffected.  After Configure has finished you can just say
602
603                   make all test
604
605           and Perl will be built and tested, all in perl/build/directory.
606

Selected Bug Fixes

608       Numerous memory leaks and uninitialized memory accesses have been
609       hunted down.  Most importantly anonymous subs used to leak quite a bit.
610
611       ·   chop(@list) in list context returned the characters chopped in
612           reverse order.  This has been reversed to be in the right order.
613
614       ·   The order of DESTROYs has been made more predictable.
615
616       ·   mkdir() now ignores trailing slashes in the directory name, as man‐
617           dated by POSIX.
618
619       ·   Attributes (like :shared) didn't work with our().
620
621       ·   The PERL5OPT environment variable (for passing command line argu‐
622           ments to Perl) didn't work for more than a single group of options.
623
624       ·   The tainting behaviour of sprintf() has been rationalized.  It does
625           not taint the result of floating point formats anymore, making the
626           behaviour consistent with that of string interpolation.
627
628       ·   All but the first argument of the IO syswrite() method are now
629           optional.
630
631       ·   Tie::ARRAY SPLICE method was broken.
632
633       ·   vec() now tries to work with characters <= 255 when possible, but
634           it leaves higher character values in place.  In that case, if vec()
635           was used to modify the string, it is no longer considered to be
636           utf8-encoded.
637
638       Platform Specific Changes and Fixes
639
640       ·   Linux previously had problems related to sockaddrlen when using
641           accept(), revcfrom() (in Perl: recv()), getpeername(), and getsock‐
642           name().
643
644       ·   Previously DYNIX/ptx had problems in its Configure probe for non-
645           blocking I/O.
646
647       ·   Windows
648
649           ·       Borland C++ v5.5 is now a supported compiler that can build
650                   Perl.  However, the generated binaries continue to be
651                   incompatible with those generated by the other supported
652                   compilers (GCC and Visual C++).
653
654           ·       Win32::GetCwd() correctly returns C:\ instead of C: when at
655                   the drive root.  Other bugs in chdir() and Cwd::cwd() have
656                   also been fixed.
657
658           ·       Duping socket handles with open(F, ">&MYSOCK") now works
659                   under Windows 9x.
660
661           ·       HTML files will be installed in c:\perl\html instead of
662                   c:\perl\lib\pod\html
663
664           ·       The makefiles now provide a single switch to bulk-enable
665                   all the features enabled in ActiveState ActivePerl (a popu‐
666                   lar binary distribution).
667

New or Changed Diagnostics

669       Two new debugging options have been added: if you have compiled your
670       Perl with debugging, you can use the -DT and -DR options to trace
671       tokenising and to add reference counts to displaying variables, respec‐
672       tively.
673
674       ·   If an attempt to use a (non-blessed) reference as an array index is
675           made, a warning is given.
676
677       ·   "push @a;" and "unshift @a;" (with no values to push or unshift)
678           now give a warning.  This may be a problem for generated and evaled
679           code.
680

Changed Internals

682       ·   Some new APIs: ptr_table_clear(), ptr_table_free(), sv_setref_uv().
683           For the full list of the available APIs see perlapi.
684
685       ·   dTHR and djSP have been obsoleted; the former removed (because it's
686           a no-op) and the latter replaced with dSP.
687
688       ·   Perl now uses system malloc instead of Perl malloc on all 64-bit
689           platforms, and even in some not-always-64-bit platforms like AIX,
690           IRIX, and Solaris.  This change breaks backward compatibility but
691           Perl's malloc has problems with large address spaces and also the
692           speed of vendors' malloc is generally better in large address space
693           machines (Perl's malloc is mostly tuned for space).
694

New Tests

696       Many new tests have been added.  The most notable is probably the
697       lib/1_compile: it is very notable because running it takes quite a long
698       time -- it test compiles all the Perl modules in the distribution.
699       Please be patient.
700

Known Problems

702       Note that unlike other sections in this document (which describe
703       changes since 5.7.0) this section is cumulative containing known prob‐
704       lems for all the 5.7 releases.
705
706       AIX vac 5.0.0.0 May Produce Buggy Code For Perl
707
708       The AIX C compiler vac version 5.0.0.0 may produce buggy code, result‐
709       ing in few random tests failing, but when the failing tests are run by
710       hand, they succeed.  We suggest upgrading to at least vac version
711       5.0.1.0, that has been known to compile Perl correctly.  "lslpp -L⎪grep
712       vac.C" will tell you the vac version.
713
714       lib/ftmp-security tests warn 'system possibly insecure'
715
716       Don't panic.  Read INSTALL 'make test' section instead.
717
718       lib/io_multihomed Fails In LP64-Configured HP-UX
719
720       The lib/io_multihomed test may hang in HP-UX if Perl has been config‐
721       ured to be 64-bit. Because other 64-bit platforms do not hang in this
722       test, HP-UX is suspect. All other tests pass in 64-bit HP-UX. The test
723       attempts to create and connect to "multihomed" sockets (sockets which
724       have multiple IP addresses).
725
726       Test lib/posix Subtest 9 Fails In LP64-Configured HP-UX
727
728       If perl is configured with -Duse64bitall, the successful result of the
729       subtest 10 of lib/posix may arrive before the successful result of the
730       subtest 9, which confuses the test harness so much that it thinks the
731       subtest 9 failed.
732
733       lib/b test 19
734
735       The test fails on various platforms (PA64 and IA64 are known), but the
736       exact cause is still being investigated.
737
738       Linux With Sfio Fails op/misc Test 48
739
740       No known fix.
741
742       sigaction test 13 in VMS
743
744       The test is known to fail; whether it's because of VMS of because of
745       faulty test is not known.
746
747       sprintf tests 129 and 130
748
749       The op/sprintf tests 129 and 130 are known to fail on some platforms.
750       Examples include any platform using sfio, and Compaq/Tandem's Non‐
751       Stop-UX.  The failing platforms do not comply with the ANSI C Standard,
752       line 19ff on page 134 of ANSI X3.159 1989 to be exact.  (They produce
753       something else than "1" and "-1" when formatting 0.6 and -0.6 using the
754       printf format "%.0f", most often they produce "0" and "-0".)
755
756       Failure of Thread tests
757
758       The subtests 19 and 20 of lib/thr5005.t test are known to fail due to
759       fundamental problems in the 5.005 threading implementation. These are
760       not new failures--Perl 5.005_0x has the same bugs, but didn't have
761       these tests. (Note that support for 5.005-style threading remains
762       experimental.)
763
764       Localising a Tied Variable Leaks Memory
765
766           use Tie::Hash;
767           tie my %tie_hash => 'Tie::StdHash';
768
769           ...
770
771           local($tie_hash{Foo}) = 1; # leaks
772
773       Code like the above is known to leak memory every time the local() is
774       executed.
775
776       Self-tying of Arrays and Hashes Is Forbidden
777
778       Self-tying of arrays and hashes is broken in rather deep and hard-to-
779       fix ways.  As a stop-gap measure to avoid people from getting frus‐
780       trated at the mysterious results (core dumps, most often) it is for now
781       forbidden (you will get a fatal error even from an attempt).
782
783       Building Extensions Can Fail Because Of Largefiles
784
785       Some extensions like mod_perl are known to have issues with `large‐
786       files', a change brought by Perl 5.6.0 in which file offsets default to
787       64 bits wide, where supported.  Modules may fail to compile at all or
788       compile and work incorrectly.  Currently there is no good solution for
789       the problem, but Configure now provides appropriate non-largefile
790       ccflags, ldflags, libswanted, and libs in the %Config hash (e.g., $Con‐
791       fig{ccflags_nolargefiles}) so the extensions that are having problems
792       can try configuring themselves without the largefileness.  This is
793       admittedly not a clean solution, and the solution may not even work at
794       all.  One potential failure is whether one can (or, if one can, whether
795       it's a good idea) link together at all binaries with different ideas
796       about file offsets, all this is platform-dependent.
797
798       The Compiler Suite Is Still Experimental
799
800       The compiler suite is slowly getting better but is nowhere near working
801       order yet.
802

Reporting Bugs

804       If you find what you think is a bug, you might check the articles
805       recently posted to the comp.lang.perl.misc newsgroup and the perl bug
806       database at http://bugs.perl.org/  There may also be information at
807       http://www.perl.com/perl/ , the Perl Home Page.
808
809       If you believe you have an unreported bug, please run the perlbug pro‐
810       gram included with your release.  Be sure to trim your bug down to a
811       tiny but sufficient test case.  Your bug report, along with the output
812       of "perl -V", will be sent off to perlbug@perl.org to be analysed by
813       the Perl porting team.
814

SEE ALSO

816       The Changes file for exhaustive details on what changed.
817
818       The INSTALL file for how to build Perl.
819
820       The README file for general stuff.
821
822       The Artistic and Copying files for copyright information.
823

HISTORY

825       Written by Jarkko Hietaniemi <jhi@iki.fi>, with many contributions from
826       The Perl Porters and Perl Users submitting feedback and patches.
827
828       Send omissions or corrections to <perlbug@perl.org>.
829
830
831
832perl v5.8.8                       2006-01-07                   PERL571DELTA(1)
Impressum