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