1=head1 NAME 2 3perl570delta - what's new for perl v5.7.0 4 5=head1 DESCRIPTION 6 7This document describes differences between the 5.6.0 release and 8the 5.7.0 release. 9 10=head1 Security Vulnerability Closed 11 12A potential security vulnerability in the optional suidperl component 13of Perl has been identified. suidperl is neither built nor installed 14by default. As of September the 2nd, 2000, the only known vulnerable 15platform is Linux, most likely all Linux distributions. CERT and 16various vendors have been alerted about the vulnerability. 17 18The problem was caused by Perl trying to report a suspected security 19exploit attempt using an external program, /bin/mail. On Linux 20platforms the /bin/mail program had an undocumented feature which 21when combined with suidperl gave access to a root shell, resulting in 22a serious compromise instead of reporting the exploit attempt. If you 23don't have /bin/mail, or if you have 'safe setuid scripts', or if 24suidperl is not installed, you are safe. 25 26The exploit attempt reporting feature has been completely removed from 27the Perl 5.7.0 release, so that particular vulnerability isn't there 28anymore. However, further security vulnerabilities are, 29unfortunately, always possible. The suidperl code is being reviewed 30and if deemed too risky to continue to be supported, it may be 31completely removed from future releases. In any case, suidperl should 32only be used by security experts who know exactly what they are doing 33and why they are using suidperl instead of some other solution such as 34sudo ( see http://www.courtesan.com/sudo/ ). 35 36=head1 Incompatible Changes 37 38=over 4 39 40=item * 41 42Arrays now always interpolate into double-quoted strings: 43constructs like "foo@bar" now always assume C<@bar> is an array, 44whether or not the compiler has seen use of C<@bar>. 45 46=item * 47 48The semantics of bless(REF, REF) were unclear and until someone proves 49it to make some sense, it is forbidden. 50 51=item * 52 53A reference to a reference now stringify as "REF(0x81485ec)" instead 54of "SCALAR(0x81485ec)" in order to be more consistent with the return 55value of ref(). 56 57=item * 58 59The very dusty examples in the eg/ directory have been removed. 60Suggestions for new shiny examples welcome but the main issue is that 61the examples need to be documented, tested and (most importantly) 62maintained. 63 64=item * 65 66The obsolete chat2 library that should never have been allowed 67to escape the laboratory has been decommissioned. 68 69=item * 70 71The unimplemented POSIX regex features [[.cc.]] and [[=c=]] are still 72recognised but now cause fatal errors. The previous behaviour of 73ignoring them by default and warning if requested was unacceptable 74since it, in a way, falsely promised that the features could be used. 75 76=item * 77 78The (bogus) escape sequences \8 and \9 now give an optional warning 79("Unrecognized escape passed through"). There is no need to \-escape 80any C<\w> character. 81 82=item * 83 84lstat(FILEHANDLE) now gives a warning because the operation makes no sense. 85In future releases this may become a fatal error. 86 87=item * 88 89The long deprecated uppercase aliases for the string comparison 90operators (EQ, NE, LT, LE, GE, GT) have now been removed. 91 92=item * 93 94The regular expression captured submatches ($1, $2, ...) are now 95more consistently unset if the match fails, instead of leaving false 96data lying around in them. 97 98=item * 99 100The tr///C and tr///U features have been removed and will not return; 101the interface was a mistake. Sorry about that. For similar 102functionality, see pack('U0', ...) and pack('C0', ...). 103 104=back 105 106=head1 Core Enhancements 107 108=over 4 109 110=item * 111 112C<perl -d:Module=arg,arg,arg> now works (previously one couldn't pass 113in multiple arguments.) 114 115=item * 116 117my __PACKAGE__ $obj now works. 118 119=item * 120 121C<no Module;> now works even if there is no "sub unimport" in the Module. 122 123=item * 124 125The numerical comparison operators return C<undef> if either operand 126is a NaN. Previously the behaviour was unspecified. 127 128=item * 129 130C<pack('U0a*', ...)> can now be used to force a string to UTF-8. 131 132=item * 133 134prototype(\&) is now available. 135 136=item * 137 138There is now an UNTIE method. 139 140=back 141 142=head1 Modules and Pragmata 143 144=head2 New Modules 145 146=over 4 147 148=item * 149 150File::Temp allows one to create temporary files and directories in an 151easy, portable, and secure way. 152 153=item * 154 155Storable gives persistence to Perl data structures by allowing the 156storage and retrieval of Perl data to and from files in a fast and 157compact binary format. 158 159=back 160 161=head2 Updated And Improved Modules and Pragmata 162 163=over 4 164 165=item * 166 167The following independently supported modules have been updated to 168newer versions from CPAN: CGI, CPAN, DB_File, File::Spec, Getopt::Long, 169the podlators bundle, Pod::LaTeX, Pod::Parser, Term::ANSIColor, Test. 170 171=item * 172 173Bug fixes and minor enhancements have been applied to B::Deparse, 174Data::Dumper, IO::Poll, IO::Socket::INET, Math::BigFloat, 175Math::Complex, Math::Trig, Net::protoent, the re pragma, SelfLoader, 176Sys::SysLog, Test::Harness, Text::Wrap, UNIVERSAL, and the warnings 177pragma. 178 179=item * 180 181The attributes::reftype() now works on tied arguments. 182 183=item * 184 185AutoLoader can now be disabled with C<no AutoLoader;>, 186 187=item * 188 189The English module can now be used without the infamous performance 190hit by saying 191 192 use English '-no_performance_hit'; 193 194(Assuming, of course, that one doesn't need the troublesome variables 195C<$`>, C<$&>, or C<$'>.) Also, introduced C<@LAST_MATCH_START> and 196C<@LAST_MATCH_END> English aliases for C<@-> and C<@+>. 197 198=item * 199 200File::Find now has pre- and post-processing callbacks. It also 201correctly changes directories when chasing symbolic links. Callbacks 202(naughtily) exiting with "next;" instead of "return;" now work. 203 204=item * 205 206File::Glob::glob() renamed to File::Glob::bsd_glob() to avoid 207prototype mismatch with CORE::glob(). 208 209=item * 210 211IPC::Open3 now allows the use of numeric file descriptors. 212 213=item * 214 215use lib now works identically to @INC. Removing directories 216with 'no lib' now works. 217 218=item * 219 220C<%INC> now localised in a Safe compartment so that use/require work. 221 222=item * 223 224The Shell module now has an OO interface. 225 226=back 227 228=head1 Utility Changes 229 230=over 4 231 232=item * 233 234The Emacs perl mode (emacs/cperl-mode.el) has been updated to version 2354.31. 236 237=item * 238 239Perlbug is now much more robust. It also sends the bug report to 240perl.org, not perl.com. 241 242=item * 243 244The perlcc utility has been rewritten and its user interface (that is, 245command line) is much more like that of the UNIX C compiler, cc. 246 247=item * 248 249The xsubpp utility for extension writers now understands POD 250documentation embedded in the *.xs files. 251 252=back 253 254=head1 New Documentation 255 256=over 4 257 258=item * 259 260perl56delta details the changes between the 5.005 release and the 2615.6.0 release. 262 263=item * 264 265perldebtut is a Perl debugging tutorial. 266 267=item * 268 269perlebcdic contains considerations for running Perl on EBCDIC platforms. 270Note that unfortunately EBCDIC platforms that used to supported back in 271Perl 5.005 are still unsupported by Perl 5.7.0; the plan, however, is to 272bring them back to the fold. 273 274=item * 275 276perlnewmod tells about writing and submitting a new module. 277 278=item * 279 280perlposix-bc explains using Perl on the POSIX-BC platform 281(an EBCDIC mainframe platform). 282 283=item * 284 285perlretut is a regular expression tutorial. 286 287=item * 288 289perlrequick is a regular expressions quick-start guide. 290Yes, much quicker than perlretut. 291 292=item * 293 294perlutil explains the command line utilities packaged with the Perl 295distribution. 296 297=back 298 299=head1 Performance Enhancements 300 301=over 4 302 303=item * 304 305map() that changes the size of the list should now work faster. 306 307=item * 308 309sort() has been changed to use mergesort internally as opposed to the 310earlier quicksort. For very small lists this may result in slightly 311slower sorting times, but in general the speedup should be at least 31220%. Additional bonuses are that the worst case behaviour of sort() 313is now better (in computer science terms it now runs in time O(N log N), 314as opposed to quicksort's Theta(N**2) worst-case run time behaviour), 315and that sort() is now stable (meaning that elements with identical 316keys will stay ordered as they were before the sort). 317 318=back 319 320=head1 Installation and Configuration Improvements 321 322=head2 Generic Improvements 323 324=over 4 325 326=item * 327 328INSTALL now explains how you can configure Perl to use 64-bit 329integers even on non-64-bit platforms. 330 331=item * 332 333Policy.sh policy change: if you are reusing a Policy.sh file 334(see INSTALL) and you use Configure -Dprefix=/foo/bar and in the old 335Policy $prefix eq $siteprefix and $prefix eq $vendorprefix, all of 336them will now be changed to the new prefix, /foo/bar. (Previously 337only $prefix changed.) If you do not like this new behaviour, 338specify prefix, siteprefix, and vendorprefix explicitly. 339 340=item * 341 342A new optional location for Perl libraries, otherlibdirs, is available. 343It can be used for example for vendor add-ons without disturbing Perl's 344own library directories. 345 346=item * 347 348In many platforms the vendor-supplied 'cc' is too stripped-down to 349build Perl (basically, 'cc' doesn't do ANSI C). If this seems 350to be the case and 'cc' does not seem to be the GNU C compiler 351'gcc', an automatic attempt is made to find and use 'gcc' instead. 352 353=item * 354 355gcc needs to closely track the operating system release to avoid 356build problems. If Configure finds that gcc was built for a different 357operating system release than is running, it now gives a clearly visible 358warning that there may be trouble ahead. 359 360=item * 361 362If binary compatibility with the 5.005 release is not wanted, Configure 363no longer suggests including the 5.005 modules in @INC. 364 365=item * 366 367Configure C<-S> can now run non-interactively. 368 369=item * 370 371configure.gnu now works with options with whitespace in them. 372 373=item * 374 375installperl now outputs everything to STDERR. 376 377=item * 378 379$Config{byteorder} is now computed dynamically (this is more robust 380with "fat binaries" where an executable image contains binaries for 381more than one binary platform.) 382 383=back 384 385=head1 Selected Bug Fixes 386 387=over 4 388 389=item * 390 391Several debugger fixes: exit code now reflects the script exit code, 392condition C<"0"> now treated correctly, the C<d> command now checks 393line number, the C<$.> no longer gets corrupted, all debugger output now 394goes correctly to the socket if RemotePort is set. 395 396=item * 397 398C<*foo{FORMAT}> now works. 399 400=item * 401 402Lexical warnings now propagating correctly between scopes. 403 404=item * 405 406Line renumbering with eval and C<#line> now works. 407 408=item * 409 410Fixed numerous memory leaks, especially in eval "". 411 412=item * 413 414Modulus of unsigned numbers now works (4063328477 % 65535 used to 415return 27406, instead of 27047). 416 417=item * 418 419Some "not a number" warnings introduced in 5.6.0 eliminated to be 420more compatible with 5.005. Infinity is now recognised as a number. 421 422=item * 423 424our() variables will not cause "will not stay shared" warnings. 425 426=item * 427 428pack "Z" now correctly terminates the string with "\0". 429 430=item * 431 432Fix password routines which in some shadow password platforms 433(e.g. HP-UX) caused getpwent() to return every other entry. 434 435=item * 436 437printf() no longer resets the numeric locale to "C". 438 439=item * 440 441C<q(a\\b)> now parses correctly as C<'a\\b'>. 442 443=item * 444 445Printing quads (64-bit integers) with printf/sprintf now works 446without the q L ll prefixes (assuming you are on a quad-capable platform). 447 448=item * 449 450Regular expressions on references and overloaded scalars now work. 451 452=item * 453 454scalar() now forces scalar context even when used in void context. 455 456=item * 457 458sort() arguments are now compiled in the right wantarray context 459(they were accidentally using the context of the sort() itself). 460 461=item * 462 463Changed the POSIX character class C<[[:space:]]> to include the (very 464rare) vertical tab character. Added a new POSIX-ish character class 465C<[[:blank:]]> which stands for horizontal whitespace (currently, 466the space and the tab). 467 468=item * 469 470$AUTOLOAD, sort(), lock(), and spawning subprocesses 471in multiple threads simultaneously are now thread-safe. 472 473=item * 474 475Allow read-only string on left hand side of non-modifying tr///. 476 477=item * 478 479Several Unicode fixes (but still not perfect). 480 481=over 8 482 483=item * 484 485BOMs (byte order marks) in the beginning of Perl files 486(scripts, modules) should now be transparently skipped. 487UTF-16 (UCS-2) encoded Perl files should now be read correctly. 488 489=item * 490 491The character tables have been updated to Unicode 3.0.1. 492 493=item * 494 495chr() for values greater than 127 now create utf8 when under use 496utf8. 497 498=item * 499 500Comparing with utf8 data does not magically upgrade non-utf8 data into 501utf8. 502 503=item * 504 505C<IsAlnum>, C<IsAlpha>, and C<IsWord> now match titlecase. 506 507=item * 508 509Concatenation with the C<.> operator or via variable interpolation, 510C<eq>, C<substr>, C<reverse>, C<quotemeta>, the C<x> operator, 511substitution with C<s///>, single-quoted UTF-8, should now work--in 512theory. 513 514=item * 515 516The C<tr///> operator now works I<slightly> better but is still rather 517broken. Note that the C<tr///CU> functionality has been removed (but 518see pack('U0', ...)). 519 520=item * 521 522vec() now refuses to deal with characters >255. 523 524=item * 525 526Zero entries were missing from the Unicode classes like C<IsDigit>. 527 528=back 529 530=item * 531 532UNIVERSAL::isa no longer caches methods incorrectly. (This broke 533the Tk extension with 5.6.0.) 534 535=back 536 537=head2 Platform Specific Changes and Fixes 538 539=over 4 540 541=item * 542 543BSDI 4.* 544 545Perl now works on post-4.0 BSD/OSes. 546 547=item * 548 549All BSDs 550 551Setting C<$0> now works (as much as possible; see perlvar for details). 552 553=item * 554 555Cygwin 556 557Numerous updates; currently synchronised with Cygwin 1.1.4. 558 559=item * 560 561EPOC 562 563EPOC update after Perl 5.6.0. See README.epoc. 564 565=item * 566 567FreeBSD 3.* 568 569Perl now works on post-3.0 FreeBSDs. 570 571=item * 572 573HP-UX 574 575README.hpux updated; C<Configure -Duse64bitall> now almost works. 576 577=item * 578 579IRIX 580 581Numerous compilation flag and hint enhancements; accidental mixing 582of 32-bit and 64-bit libraries (a doomed attempt) made much harder. 583 584=item * 585 586Linux 587 588Long doubles should now work (see INSTALL). 589 590=item * 591 592Mac OS Classic 593 594Compilation of the standard Perl distribution in Mac OS Classic should 595now work if you have the Metrowerks development environment and the 596missing Mac-specific toolkit bits. Contact the macperl mailing list 597for details. 598 599=item * 600 601MPE/iX 602 603MPE/iX update after Perl 5.6.0. See README.mpeix. 604 605=item * 606 607NetBSD/sparc 608 609Perl now works on NetBSD/sparc. 610 611=item * 612 613OS/2 614 615Now works with usethreads (see INSTALL). 616 617=item * 618 619Solaris 620 62164-bitness using the Sun Workshop compiler now works. 622 623=item * 624 625Tru64 (aka Digital UNIX, aka DEC OSF/1) 626 627The operating system version letter now recorded in $Config{osvers}. 628Allow compiling with gcc (previously explicitly forbidden). Compiling 629with gcc still not recommended because buggy code results, even with 630gcc 2.95.2. 631 632=item * 633 634Unicos 635 636Fixed various alignment problems that lead into core dumps either 637during build or later; no longer dies on math errors at runtime; 638now using full quad integers (64 bits), previously was using 639only 46 bit integers for speed. 640 641=item * 642 643VMS 644 645chdir() now works better despite a CRT bug; now works with MULTIPLICITY 646(see INSTALL); now works with Perl's malloc. 647 648=item * 649 650Windows 651 652=over 8 653 654=item * 655 656accept() no longer leaks memory. 657 658=item * 659 660Better chdir() return value for a non-existent directory. 661 662=item * 663 664New %ENV entries now propagate to subprocesses. 665 666=item * 667 668$ENV{LIB} now used to search for libs under Visual C. 669 670=item * 671 672A failed (pseudo)fork now returns undef and sets errno to EAGAIN. 673 674=item * 675 676Allow REG_EXPAND_SZ keys in the registry. 677 678=item * 679 680Can now send() from all threads, not just the first one. 681 682=item * 683 684Fake signal handling reenabled, bugs and all. 685 686=item * 687 688Less stack reserved per thread so that more threads can run 689concurrently. (Still 16M per thread.) 690 691=item * 692 693C<< File::Spec->tmpdir() >> now prefers C:/temp over /tmp 694(works better when perl is running as service). 695 696=item * 697 698Better UNC path handling under ithreads. 699 700=item * 701 702wait() and waitpid() now work much better. 703 704=item * 705 706winsock handle leak fixed. 707 708=back 709 710=back 711 712=head1 New or Changed Diagnostics 713 714All regular expression compilation error messages are now hopefully 715easier to understand both because the error message now comes before 716the failed regex and because the point of failure is now clearly 717marked. 718 719The various "opened only for", "on closed", "never opened" warnings 720drop the C<main::> prefix for filehandles in the C<main> package, 721for example C<STDIN> instead of <main::STDIN>. 722 723The "Unrecognized escape" warning has been extended to include C<\8>, 724C<\9>, and C<\_>. There is no need to escape any of the C<\w> characters. 725 726=head1 Changed Internals 727 728=over 4 729 730=item * 731 732perlapi.pod (a companion to perlguts) now attempts to document the 733internal API. 734 735=item * 736 737You can now build a really minimal perl called microperl. 738Building microperl does not require even running Configure; 739C<make -f Makefile.micro> should be enough. Beware: microperl makes 740many assumptions, some of which may be too bold; the resulting 741executable may crash or otherwise misbehave in wondrous ways. 742For careful hackers only. 743 744=item * 745 746Added rsignal(), whichsig(), do_join() to the publicised API. 747 748=item * 749 750Made possible to propagate customised exceptions via croak()ing. 751 752=item * 753 754Added is_utf8_char(), is_utf8_string(), bytes_to_utf8(), and utf8_to_bytes(). 755 756=item * 757 758Now xsubs can have attributes just like subs. 759 760=back 761 762=head1 Known Problems 763 764=head2 Unicode Support Still Far From Perfect 765 766We're working on it. Stay tuned. 767 768=head2 EBCDIC Still A Lost Platform 769 770The plan is to bring them back. 771 772=head2 Building Extensions Can Fail Because Of Largefiles 773 774Certain extensions like mod_perl and BSD::Resource are known to have 775issues with `largefiles', a change brought by Perl 5.6.0 in which file 776offsets default to 64 bits wide, where supported. Modules may fail to 777compile at all or compile and work incorrectly. Currently there is no 778good solution for the problem, but Configure now provides appropriate 779non-largefile ccflags, ldflags, libswanted, and libs in the %Config 780hash (e.g., $Config{ccflags_nolargefiles}) so the extensions that are 781having problems can try configuring themselves without the 782largefileness. This is admittedly not a clean solution, and the 783solution may not even work at all. One potential failure is whether 784one can (or, if one can, whether it's a good idea) link together at 785all binaries with different ideas about file offsets, all this is 786platform-dependent. 787 788=head2 ftmp-security tests warn 'system possibly insecure' 789 790Don't panic. Read INSTALL 'make test' section instead. 791 792=head2 Test lib/posix Subtest 9 Fails In LP64-Configured HP-UX 793 794If perl is configured with -Duse64bitall, the successful result of the 795subtest 10 of lib/posix may arrive before the successful result of the 796subtest 9, which confuses the test harness so much that it thinks the 797subtest 9 failed. 798 799=head2 Long Doubles Still Don't Work In Solaris 800 801The experimental long double support is still very much so in Solaris. 802(Other platforms like Linux and Tru64 are beginning to solidify in 803this area.) 804 805=head2 Linux With Sfio Fails op/misc Test 48 806 807No known fix. 808 809=head2 Storable tests fail in some platforms 810 811If any Storable tests fail the use of Storable is not advisable. 812 813=over 4 814 815=item * 816 817Many Storable tests fail on AIX configured with 64 bit integers. 818 819So far unidentified problems break Storable in AIX if Perl is 820configured to use 64 bit integers. AIX in 32-bit mode works and 821other 64-bit platforms work with Storable. 822 823=item * 824 825DOS DJGPP may hang when testing Storable. 826 827=item * 828 829st-06compat fails in UNICOS and UNICOS/mk. 830 831This means that you cannot read old (pre-Storable-0.7) Storable images 832made in other platforms. 833 834=item * 835 836st-store.t and st-retrieve may fail with Compaq C 6.2 on OpenVMS Alpha 7.2. 837 838=back 839 840=head2 Threads Are Still Experimental 841 842Multithreading is still an experimental feature. Some platforms 843emit the following message for lib/thr5005 844 845 # 846 # This is a KNOWN FAILURE, and one of the reasons why threading 847 # is still an experimental feature. It is here to stop people 848 # from deploying threads in production. ;-) 849 # 850 851and another known thread-related warning is 852 853 pragma/overload......Unbalanced saves: 3 more saves than restores 854 panic: magic_mutexfree during global destruction. 855 ok 856 lib/selfloader.......Unbalanced saves: 3 more saves than restores 857 panic: magic_mutexfree during global destruction. 858 ok 859 lib/st-dclone........Unbalanced saves: 3 more saves than restores 860 panic: magic_mutexfree during global destruction. 861 ok 862 863=head2 The Compiler Suite Is Still Experimental 864 865The compiler suite is slowly getting better but is nowhere near 866working order yet. The backend part that has seen perhaps the most 867progress is the bytecode compiler. 868 869=head1 Reporting Bugs 870 871If you find what you think is a bug, you might check the articles 872recently posted to the comp.lang.perl.misc newsgroup and the perl 873bug database at http://bugs.perl.org/ There may also be 874information at http://www.perl.com/perl/ , the Perl Home Page. 875 876If you believe you have an unreported bug, please run the B<perlbug> 877program included with your release. Be sure to trim your bug down 878to a tiny but sufficient test case. Your bug report, along with the 879output of C<perl -V>, will be sent off to perlbug@perl.org to be 880analysed by the Perl porting team. 881 882=head1 SEE ALSO 883 884The F<Changes> file for exhaustive details on what changed. 885 886The F<INSTALL> file for how to build Perl. 887 888The F<README> file for general stuff. 889 890The F<Artistic> and F<Copying> files for copyright information. 891 892=head1 HISTORY 893 894Written by Jarkko Hietaniemi <F<jhi@iki.fi>>, with many contributions 895from The Perl Porters and Perl Users submitting feedback and patches. 896 897Send omissions or corrections to <F<perlbug@perl.org>>. 898 899=cut 900