3 perl571delta - what's new for perl v5.7.1
7 This document describes differences between the 5.7.0 release and the
10 (To view the differences between the 5.6.0 release and the 5.7.0
11 release, see L<perl570delta>).
13 =head1 Security Vulnerability Closed
15 (This change was already made in 5.7.0 but bears repeating here.)
17 A potential security vulnerability in the optional suidperl component
18 of Perl was identified in August 2000. suidperl is neither built nor
19 installed by default. As of April 2001 the only known vulnerable
20 platform is Linux, most likely all Linux distributions. CERT and
21 various vendors and distributors have been alerted about the vulnerability.
22 See http://www.cpan.org/src/5.0/sperl-2000-08-05/sperl-2000-08-05.txt
25 The problem was caused by Perl trying to report a suspected security
26 exploit attempt using an external program, /bin/mail. On Linux
27 platforms the /bin/mail program had an undocumented feature which
28 when combined with suidperl gave access to a root shell, resulting in
29 a serious compromise instead of reporting the exploit attempt. If you
30 don't have /bin/mail, or if you have 'safe setuid scripts', or if
31 suidperl is not installed, you are safe.
33 The exploit attempt reporting feature has been completely removed from
34 all the Perl 5.7 releases (and will be gone also from the maintenance
35 release 5.6.1), so that particular vulnerability isn't there anymore.
36 However, further security vulnerabilities are, unfortunately, always
37 possible. The suidperl code is being reviewed and if deemed too risky
38 to continue to be supported, it may be completely removed from future
39 releases. In any case, suidperl should only be used by security
40 experts who know exactly what they are doing and why they are using
41 suidperl instead of some other solution such as sudo (see
42 http://www.courtesan.com/sudo/).
44 =head1 Incompatible Changes
50 Although "you shouldn't do that", it was possible to write code that
51 depends on Perl's hashed key order (Data::Dumper does this). The new
52 algorithm "One-at-a-Time" produces a different hashed key order.
53 More details are in L</"Performance Enhancements">.
57 The list of filenames from glob() (or <...>) is now by default sorted
58 alphabetically to be csh-compliant. (bsd_glob() does still sort platform
59 natively, ASCII or EBCDIC, unless GLOB_ALPHASORT is specified.)
63 =head1 Core Enhancements
69 AUTOLOAD is now lvaluable, meaning that you can add the :lvalue attribute
70 to AUTOLOAD subroutines and you can assign to the AUTOLOAD return value.
74 IO is now by default done via PerlIO rather than system's "stdio".
75 PerlIO allows "layers" to be "pushed" onto a file handle to alter the
76 handle's behaviour. Layers can be specified at open time via 3-arg
79 open($fh,'>:crlf :utf8', $path) || ...
81 or on already opened handles via extended C<binmode>:
83 binmode($fh,':encoding(iso-8859-7)');
85 The built-in layers are: unix (low level read/write), stdio (as in
86 previous Perls), perlio (re-implementation of stdio buffering in a
87 portable manner), crlf (does CRLF <=> "\n" translation as on Win32,
88 but available on any platform). A mmap layer may be available if
89 platform supports it (mostly UNIXes).
91 Layers to be applied by default may be specified via the 'open' pragma.
93 See L</"Installation and Configuration Improvements"> for the effects
94 of PerlIO on your architecture name.
98 File handles can be marked as accepting Perl's internal encoding of Unicode
99 (UTF-8 or UTF-EBCDIC depending on platform) by a pseudo layer ":utf8" :
101 open($fh,">:utf8","Uni.txt");
103 Note for EBCDIC users: the pseudo layer ":utf8" is badly named for you
104 since it's not UTF-8 what you will be getting but instead UTF-EBCDIC.
105 See http://www.unicode.org/unicode/reports/tr16/ for more information.
106 In future release this naming issue may or may not change.
110 File handles can translate character encodings from/to Perl's internal
111 Unicode form on read/write via the ":encoding()" layer.
115 File handles can be opened to "in memory" files held in Perl scalars via:
117 open($fh,'>', \$variable) || ...
121 Anonymous temporary files are available without need to
122 'use FileHandle' or other module via
124 open($fh,"+>", undef) || ...
126 That is a literal undef, not an undefined value.
130 The list form of C<open> is now implemented for pipes (at least on UNIX):
132 open($fh,"-|", 'cat', '/etc/motd')
134 creates a pipe, and runs the equivalent of exec('cat', '/etc/motd') in
139 The following builtin functions are now overridable: chop(), chomp(),
140 each(), keys(), pop(), push(), shift(), splice(), unshift().
144 Formats now support zero-padded decimal fields.
148 Perl now tries internally to use integer values in numeric conversions
149 and basic arithmetics (+ - * /) if the arguments are integers, and
150 tries also to keep the results stored internally as integers.
151 This change leads into often slightly faster and always less lossy
152 arithmetics (previously Perl always preferred floating point numbers
157 The printf() and sprintf() now support parameter reordering using the
158 C<%\d+\$> and C<*\d+\$> syntaxes. For example
160 print "%2\$s %1\$s\n", "foo", "bar";
162 will print "bar foo\n"; This feature helps in writing
163 internationalised software.
167 Unicode in general should be now much more usable. Unicode can be
168 used in hash keys, Unicode in regular expressions should work now,
169 Unicode in tr/// should work now (though tr/// seems to be a
170 particularly tricky to get right, so you have been warned)
174 The Unicode Character Database coming with Perl has been upgraded
175 to Unicode 3.1. For more information, see http://www.unicode.org/,
176 and http://www.unicode.org/unicode/reports/tr27/
178 For developers interested in enhancing Perl's Unicode capabilities:
179 almost all the UCD files are included with the Perl distribution in
180 the lib/unicode subdirectory. The most notable omission, for space
181 considerations, is the Unihan database.
185 The Unicode character classes \p{Blank} and \p{SpacePerl} have been
186 added. "Blank" is like C isblank(), that is, it contains only
187 "horizontal whitespace" (the space character is, the newline isn't),
188 and the "SpacePerl" is the Unicode equivalent of C<\s> (\p{Space}
189 isn't, since that includes the vertical tabulator character, whereas
194 =head1 Modules and Pragmata
202 B::Concise, from Stephen McCamant, is a new compiler backend for
203 walking the Perl syntax tree, printing concise info about ops.
204 The output is highly customisable.
206 See L<B::Concise> for more information.
210 Class::ISA for reporting the search path for a class's ISA tree,
211 from Sean Burke, has been added.
213 See L<Class::ISA> for more information.
217 Cwd has now a split personality: if possible, an extension is used,
218 (this will hopefully be both faster and more secure and robust) but
219 if not possible, the familiar Perl library implementation is used.
223 Digest, a frontend module for calculating digests (checksums),
224 from Gisle Aas, has been added.
226 See L<Digest> for more information.
230 Digest::MD5 for calculating MD5 digests (checksums), from Gisle Aas,
233 use Digest::MD5 'md5_hex';
235 $digest = md5_hex("Thirsty Camel");
237 print $digest, "\n"; # 01d19d9d2045e005c3f1b80e8b164de1
239 NOTE: the MD5 backward compatibility module is purposefully not
240 included since its use is discouraged.
242 See L<Digest::MD5> for more information.
246 Encode, from Nick Ing-Simmons, provides a mechanism to translate
247 between different character encodings. Support for Unicode,
248 ISO-8859-*, ASCII, CP*, KOI8-R, and three variants of EBCDIC are
249 compiled in to the module. Several other encodings (like Japanese,
250 Chinese, and MacIntosh encodings) are included and will be loaded at
253 Any encoding supported by Encode module is also available to the
254 ":encoding()" layer if PerlIO is used.
256 See L<Encode> for more information.
260 Filter::Simple is an easy-to-use frontend to Filter::Util::Call,
267 use Filter::Simple sub {
268 while (my ($from, $to) = splice @_, 0, 2) {
277 use MyFilter qr/red/ => 'green';
279 print "red\n"; # this code is filtered, will print "green\n"
280 print "bored\n"; # this code is filtered, will print "bogreen\n"
284 print "red\n"; # this code is not filtered, will print "red\n"
286 See L<Filter::Simple> for more information.
290 Filter::Util::Call, from Paul Marquess, provides you with the
291 framework to write I<Source Filters> in Perl. For most uses
292 the frontend Filter::Simple is to be preferred.
293 See L<Filter::Util::Call> for more information.
297 Locale::Constants, Locale::Country, Locale::Currency, and Locale::Language,
298 from Neil Bowers, have been added. They provide the codes for various
299 locale standards, such as "fr" for France, "usd" for US Dollar, and
304 $country = code2country('jp'); # $country gets 'Japan'
305 $code = country2code('Norway'); # $code gets 'no'
307 See L<Locale::Constants>, L<Locale::Country>, L<Locale::Currency>,
308 and L<Locale::Language> for more information.
312 MIME::Base64, from Gisle Aas, allows you to encode data in base64.
316 $encoded = encode_base64('Aladdin:open sesame');
317 $decoded = decode_base64($encoded);
319 print $encoded, "\n"; # "QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
321 See L<MIME::Base64> for more information.
325 MIME::QuotedPrint, from Gisle Aas, allows you to encode data in
326 quoted-printable encoding.
328 use MIME::QuotedPrint;
330 $encoded = encode_qp("Smiley in Unicode: \x{263a}");
331 $decoded = decode_qp($encoded);
333 print $encoded, "\n"; # "Smiley in Unicode: =263A"
335 MIME::QuotedPrint has been enhanced to provide the basic methods
336 necessary to use it with PerlIO::Via as in :
338 use MIME::QuotedPrint;
339 open($fh,">Via(MIME::QuotedPrint)",$path)
341 See L<MIME::QuotedPrint> for more information.
345 PerlIO::Scalar, from Nick Ing-Simmons, provides the implementation of
346 IO to "in memory" Perl scalars as discussed above. It also serves as
347 an example of a loadable layer. Other future possibilities include
348 PerlIO::Array and PerlIO::Code. See L<PerlIO::Scalar> for more
353 PerlIO::Via, from Nick Ing-Simmons, acts as a PerlIO layer and wraps
354 PerlIO layer functionality provided by a class (typically implemented
357 use MIME::QuotedPrint;
358 open($fh,">Via(MIME::QuotedPrint)",$path)
360 This will automatically convert everything output to C<$fh>
361 to Quoted-Printable. See L<PerlIO::Via> for more information.
365 Pod::Text::Overstrike, from Joe Smith, has been added.
366 It converts POD data to formatted overstrike text.
367 See L<Pod::Text::Overstrike> for more information.
371 Switch from Damian Conway has been added. Just by saying
375 you have C<switch> and C<case> available in Perl.
381 case 1 { print "number 1" }
382 case "a" { print "string a" }
383 case [1..10,42] { print "number in list" }
384 case (@array) { print "number in list" }
385 case /\w+/ { print "pattern" }
386 case qr/\w+/ { print "pattern" }
387 case (%hash) { print "entry in hash" }
388 case (\%hash) { print "entry in hash" }
389 case (\&sub) { print "arg to subroutine" }
390 else { print "previous case not true" }
393 See L<Switch> for more information.
397 Text::Balanced from Damian Conway has been added, for
398 extracting delimited text sequences from strings.
400 use Text::Balanced 'extract_delimited';
402 ($a, $b) = extract_delimited("'never say never', he never said", "'", '');
404 C<$a> will be "'never say never'", C<$b> will be ', he never said'.
406 In addition to extract_delimited() there are also extract_bracketed(),
407 extract_quotelike(), extract_codeblock(), extract_variable(),
408 extract_tagged(), extract_multiple(), gen_delimited_pat(), and
409 gen_extract_tagged(). See L<Text::Balanced> for more information.
413 Tie::RefHash::Nestable, from Edward Avis, allows storing hash references
414 (unlike the standard Tie::Refhash) The module is contained within
419 XS::Typemap is a test extension that exercises XS typemaps.
420 Nothing gets installed but for extension writers the code is
425 =head2 Updated And Improved Modules and Pragmata
431 B::Deparse should be now more robust. It still far from providing a full
432 round trip for any random piece of Perl code, though, and is under active
433 development: expect more robustness in 5.7.2.
437 Class::Struct can now define the classes in compile time.
441 Math::BigFloat has undergone much fixing, and in addition the fmod()
442 function now supports modulus operations.
444 (The fixed Math::BigFloat module is also available in CPAN for those
445 who can't upgrade their Perl: http://www.cpan.org/authors/id/J/JP/JPEACOCK/)
449 Devel::Peek now has an interface for the Perl memory statistics
450 (this works only if you are using perl's malloc, and if you have
451 compiled with debugging).
455 IO::Socket has now atmark() method, which returns true if the socket
456 is positioned at the out-of-band mark. The method is also exportable
457 as a sockatmark() function.
461 IO::Socket::INET has support for ReusePort option (if your platform
462 supports it). The Reuse option now has an alias, ReuseAddr. For clarity
463 you may want to prefer ReuseAddr.
467 Net::Ping has been enhanced. There is now "external" protocol which
468 uses Net::Ping::External module which runs external ping(1) and parses
469 the output. An alpha version of Net::Ping::External is available in
470 CPAN and in 5.7.2 the Net::Ping::External may be integrated to Perl.
474 The C<open> pragma allows layers other than ":raw" and ":crlf" when
479 POSIX::sigaction() is now much more flexible and robust.
480 You can now install coderef handlers, 'DEFAULT', and 'IGNORE'
481 handlers, installing new handlers was not atomic.
485 The Test module has been significantly enhanced. Its use is
486 greatly recommended for module writers.
490 The utf8:: name space (as in the pragma) provides various
491 Perl-callable functions to provide low level access to Perl's
492 internal Unicode representation. At the moment only length()
493 has been implemented.
497 The following modules have been upgraded from the versions at CPAN:
498 CPAN, CGI, DB::File, File::Temp, Getopt::Long, Pod::Man, Pod::Text,
499 Storable, Text-Tabs+Wrap.
501 =head1 Performance Enhancements
507 Hashes now use Bob Jenkins "One-at-a-Time" hashing key algorithm
508 (http://burtleburtle.net/bob/hash/doobs.html).
509 This algorithm is reasonably fast while producing a much better spread
510 of values. Hash values output from the algorithm on a hash of all
511 3-char printable ASCII keys comes much closer to passing the DIEHARD
512 random number generation tests. According to perlbench, this change
513 has not affected the overall speed of Perl.
517 unshift() should now be noticeably faster.
521 =head1 Utility Changes
527 h2xs now produces template README.
531 s2p has been completely rewritten in Perl. (It is in fact a full
532 implementation of sed in Perl.)
536 xsubpp now supports OUT keyword.
540 =head1 New Documentation
544 Internal replacements for standard C library functions.
545 (Interesting only for extension writers and Perl core hackers.)
549 Internals of PerlIO with layers.
553 Documentation on compiling Perl on AIX has been added. AIX has
554 several different C compilers and getting the right patch level
555 is essential. On install README.aix will be installed as L<perlaix>.
559 Documentation on compiling Perl on the POSIX-BC platform (an EBCDIC
560 mainframe environment) has been added.
562 This was formerly known as README.posix-bc but the name was considered
563 to be too confusing (it has nothing to do with the POSIX module or the
564 POSIX standard). On install README.bs2000 will be installed as L<perlbs2000>.
568 In perl 5.7.1 (and in the 5.6.1) the MacPerl sources have been
569 synchronised with the standard Perl sources. To compile MacPerl
570 some additional steps are required, and this file documents those
571 steps. On install README.macos will be installed as L<perlmacos>.
575 The README.mpeix has been podified, which means that this information
576 about compiling and using Perl on the MPE/iX miniframe platform will
577 be installed as L<perlmpeix>.
579 =head2 README.solaris
581 README.solaris has been created and Solaris wisdom from elsewhere
582 in the Perl documentation has been collected there. On install
583 README.solaris will be installed as L<perlsolaris>.
587 The README.vos has been podified, which means that this information
588 about compiling and using Perl on the Stratus VOS miniframe platform
589 will be installed as L<perlvos>.
591 =head2 Porting/repository.pod
593 Documentation on how to use the Perl source repository has been added.
595 =head1 Installation and Configuration Improvements
601 Because PerlIO is now the default on most platforms, "-perlio" doesn't
602 get appended to the $Config{archname} (also known as $^O) anymore.
603 Instead, if you explicitly choose not to use perlio (Configure command
604 line option -Uuseperlio), you will get "-stdio" appended.
608 Another change related to the architecture name is that "-64all"
609 (-Duse64bitall, or "maximally 64-bit") is appended only if your
610 pointers are 64 bits wide. (To be exact, the use64bitall is ignored.)
614 APPLLIB_EXP, a less-know configuration-time definition, has been
615 documented. It can be used to prepend site-specific directories
616 to Perl's default search path (@INC), see INSTALL for information.
620 Building Berkeley DB3 for compatibility modes for DB, NDBM, and ODBM
621 has been documented in INSTALL.
625 If you are on IRIX or Tru64 platforms, new profiling/debugging options
626 have been added, see L<perlhack> for more information about pixie and
631 =head2 New Or Improved Platforms
633 For the list of platforms known to support Perl,
634 see L<perlport/"Supported Platforms">.
640 AIX dynamic loading should be now better supported.
644 After a long pause, AmigaOS has been verified to be happy with Perl.
648 EBCDIC platforms (z/OS, also known as OS/390, POSIX-BC, and VM/ESA)
649 have been regained. Many test suite tests still fail and the
650 co-existence of Unicode and EBCDIC isn't quite settled, but the
651 situation is much better than with Perl 5.6. See L<perlos390>,
652 L<perlbs2000> (for POSIX-BC), and L<perlvmesa> for more information.
656 In HP-UX 10.20 Perl threading is now working with the various threading
657 packages available for HP-UX. See L<perlhpux> (or in the source
658 distribution, README.hpux) for more information.
662 MacOS Classic (MacPerl has of course been available since
663 perl 5.004 but now the source code bases of standard Perl
664 and MacPerl have been synchronised)
668 NCR MP-RAS is now supported.
672 NonStop-UX is now supported.
676 Amdahl UTS is now supported.
680 z/OS (formerly known as OS/390, formerly known as MVS OE) has now
681 support for dynamic loading. This is not selected by default,
682 however, you must specify -Dusedl in the arguments of Configure.
686 =head2 Generic Improvements
692 Configure no longer includes the DBM libraries (dbm, gdbm, db, ndbm)
693 when building the Perl binary. The only exception to this is SunOS 4.x,
698 Some new Configure symbols, useful for extension writers:
706 =item d_fcntl_can_lock
708 Whether fcntl() can be used for file locking.
716 For getpagesize(), though you should prefer POSIX::sysconf(_SC_PAGE_SIZE))
724 Whether one needs to use Perl_va_copy() to copy varargs.
734 The number of elements in an array needed to hold all the available signals.
742 Whether one needs to access character data aligned by U32 sized pointers.
752 Removed Configure symbols: the PDP-11 memory model settings: huge,
753 large, medium, models.
757 SOCKS support is now much more robust.
761 If your file system supports symbolic links you can build Perl outside
762 of the source directory by
764 mkdir /tmp/perl/build/directory
765 cd /tmp/perl/build/directory
766 sh /path/to/perl/source/Configure -Dmksymlinks ...
768 This will create in /tmp/perl/build/directory a tree of symbolic links
769 pointing to files in /path/to/perl/source. The original files are left
770 unaffected. After Configure has finished you can just say
774 and Perl will be built and tested, all in /tmp/perl/build/directory.
778 =head1 Selected Bug Fixes
780 Numerous memory leaks and uninitialized memory leaks have been hunted down.
781 Most importantly anonymous subs used to leak quite a bit.
787 chop(@list) in list context returned the characters chopped in reverse
788 order. This has been reversed to be in the right order.
792 The order of DESTROYS has been made more predictable.
796 mkdir() now ignores trailing slashes in the directory name,
797 as mandated by POSIX.
801 Attributes (like :shared) didn't work with our().
805 The PERL5OPT environment variable (for passing command line arguments
806 to Perl) didn't work for more than a single group of options.
810 The tainting behaviour of sprintf() has been rationalized. It does
811 not taint the result of floating point formats anymore, making the
812 behaviour consistent with that of string interpolation.
816 All but the first argument of the IO syswrite() method are now optional.
820 Tie::ARRAY SPLICE method was broken.
824 vec() now tries to work with characters <= 255 when possible, but it leaves
825 higher character values in place. In that case, if vec() was used to modify
826 the string, it is no longer considered to be utf8-encoded.
830 =head2 Platform Specific Changes and Fixes
836 Linux previously had problems related to sockaddrlen when using
837 accept(), revcfrom() (in Perl: recv()), getpeername(), and getsockname().
841 Previously DYNIX/ptx had problems in its Configure probe for non-blocking I/O.
851 Borland C++ v5.5 is now a supported compiler that can build Perl.
852 However, the generated binaries continue to be incompatible with those
853 generated by the other supported compilers (GCC and Visual C++).
857 Win32::GetCwd() correctly returns C:\ instead of C: when at the drive root.
858 Other bugs in chdir() and Cwd::cwd() have also been fixed.
862 Duping socket handles with open(F, ">&MYSOCK") now works under Windows 9x.
866 The makefiles now provide a single switch to bulk-enable all the features
867 enabled in ActiveState ActivePerl (a popular binary distribution).
873 =head1 New or Changed Diagnostics
875 Two new debugging options have been added: if you have compiled your
876 Perl with debugging, you can use the -DT and -DR options to trace
877 tokenising and to add reference counts to displaying variables,
884 If an attempt to use a (non-blessed) reference as an array element
885 is made, a warning is given.
889 C<push @a;> and C<unshift @a;> (with no values to push or unshift)
890 now give a warning. This may be a problem for generated and evaled
895 =head1 Changed Internals
901 Some new APIs: ptr_table_clear(), ptr_table_free(), sv_setref_uv().
902 For the full list of the available APIs see L<perlapi>.
906 dTHR and djSP have been obsoleted; the former removed (because it's
907 a no-op) and the latter replaced with dSP.
911 Perl now uses system malloc instead of Perl malloc in all 64-bit
912 platforms, and even in some not-always-64-bit platforms like AIX,
913 IRIX, and Solaris. This change breaks backward compatibility but
914 Perl's malloc has problems with large address spaces and also the
915 speed of vendors' malloc is generally better in large address space
916 machines (Perl's malloc is mostly tuned for space).
920 =head1 Known Problems
922 Notice that this list doesn't contain problems that were present in
923 5.7.0 and still are there, see L<perl570delta> for those.
927 The test fails in various platforms (PA64 and IA64 are known), but the
928 exact cause is still being investigated.
930 =head2 Localising a Tied Variable Leaks Memory
933 tie my %tie_hash => 'Tie::StdHash';
937 local($tie_hash{Foo}) = 1; # leaks
939 Code like the above is known to leak memory every time the local()
942 =head2 sigaction test 13 in VMS
944 The test is known to fail, whether it's because of VMS of because
945 of faulty test, is not known.
947 =head2 sprintf tests 129 and 130
949 The op/sprintf tests 129 and 130 are known to fail in some platforms.
950 Examples include any platform using sfio, and Tandem's NonStop-UX.
951 The failing platforms do not comply with the ANSI C Standard, line
952 19ff on page 134 of ANSI X3.159 1989 to be exact. (They produce
953 something else than "1" and "-1" when formatting 0.6 and -0.6 using
954 the printf format "%.0f", most often they produce "0" and "-0".)
956 =head2 Self-tying of Arrays and Hashes Is Forbidden
958 Self-tying of arrays and hashes is broken in rather deep and
959 hard-to-fix ways. As a stop-gap measure to avoid people from getting
960 frustrated at the mysterious results (core dumps, most often) it is
961 for now forbidden (you will get a fatal error even from an attempt).
963 =head1 Reporting Bugs
965 If you find what you think is a bug, you might check the articles
966 recently posted to the comp.lang.perl.misc newsgroup and the perl
967 bug database at http://bugs.perl.org. There may also be
968 information at http://www.perl.com/perl/, the Perl Home Page.
970 If you believe you have an unreported bug, please run the B<perlbug>
971 program included with your release. Be sure to trim your bug down
972 to a tiny but sufficient test case. Your bug report, along with the
973 output of C<perl -V>, will be sent off to perlbug@perl.org to be
974 analysed by the Perl porting team.
978 The F<Changes> file for exhaustive details on what changed.
980 The F<INSTALL> file for how to build Perl.
982 The F<README> file for general stuff.
984 The F<Artistic> and F<Copying> files for copyright information.
988 Written by Jarkko Hietaniemi <F<jhi@iki.fi>>, with many contributions
989 from The Perl Porters and Perl Users submitting feedback and patches.
991 Send omissions or corrections to <F<perlbug@perl.org>>.