1PERL571DELTA(1) Perl Programmers Reference Guide PERL571DELTA(1)
2
3
4
6 perl571delta - what's new for perl v5.7.1
7
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)