1=head1 NAME 2 3perl5101delta - what is new for perl v5.10.1 4 5=head1 DESCRIPTION 6 7This document describes differences between the 5.10.0 release and 8the 5.10.1 release. 9 10If you are upgrading from an earlier release such as 5.8.8, first read 11the L<perl5100delta>, which describes differences between 5.8.8 and 125.10.0 13 14=head1 Incompatible Changes 15 16=head2 Switch statement changes 17 18The handling of complex expressions by the C<given>/C<when> switch 19statement has been enhanced. There are two new cases where C<when> now 20interprets its argument as a boolean, instead of an expression to be used 21in a smart match: 22 23=over 4 24 25=item flip-flop operators 26 27The C<..> and C<...> flip-flop operators are now evaluated in boolean 28context, following their usual semantics; see L<perlop/"Range Operators">. 29 30Note that, as in perl 5.10.0, C<when (1..10)> will not work to test 31whether a given value is an integer between 1 and 10; you should use 32C<when ([1..10])> instead (note the array reference). 33 34However, contrary to 5.10.0, evaluating the flip-flop operators in boolean 35context ensures it can now be useful in a C<when()>, notably for 36implementing bistable conditions, like in: 37 38 when (/^=begin/ .. /^=end/) { 39 # do something 40 } 41 42=item defined-or operator 43 44A compound expression involving the defined-or operator, as in 45C<when (expr1 // expr2)>, will be treated as boolean if the first 46expression is boolean. (This just extends the existing rule that applies 47to the regular or operator, as in C<when (expr1 || expr2)>.) 48 49=back 50 51The next section details more changes brought to the semantics to 52the smart match operator, that naturally also modify the behaviour 53of the switch statements where smart matching is implicitly used. 54 55=head2 Smart match changes 56 57=head3 Changes to type-based dispatch 58 59The smart match operator C<~~> is no longer commutative. The behaviour of 60a smart match now depends primarily on the type of its right hand 61argument. Moreover, its semantics have been adjusted for greater 62consistency or usefulness in several cases. While the general backwards 63compatibility is maintained, several changes must be noted: 64 65=over 4 66 67=item * 68 69Code references with an empty prototype are no longer treated specially. 70They are passed an argument like the other code references (even if they 71choose to ignore it). 72 73=item * 74 75C<%hash ~~ sub {}> and C<@array ~~ sub {}> now test that the subroutine 76returns a true value for each key of the hash (or element of the 77array), instead of passing the whole hash or array as a reference to 78the subroutine. 79 80=item * 81 82Due to the commutativity breakage, code references are no longer 83treated specially when appearing on the left of the C<~~> operator, 84but like any vulgar scalar. 85 86=item * 87 88C<undef ~~ %hash> is always false (since C<undef> can't be a key in a 89hash). No implicit conversion to C<""> is done (as was the case in perl 905.10.0). 91 92=item * 93 94C<$scalar ~~ @array> now always distributes the smart match across the 95elements of the array. It's true if one element in @array verifies 96C<$scalar ~~ $element>. This is a generalization of the old behaviour 97that tested whether the array contained the scalar. 98 99=back 100 101The full dispatch table for the smart match operator is given in 102L<perlsyn/"Smart matching in detail">. 103 104=head3 Smart match and overloading 105 106According to the rule of dispatch based on the rightmost argument type, 107when an object overloading C<~~> appears on the right side of the 108operator, the overload routine will always be called (with a 3rd argument 109set to a true value, see L<overload>.) However, when the object will 110appear on the left, the overload routine will be called only when the 111rightmost argument is a simple scalar. This way distributivity of smart match 112across arrays is not broken, as well as the other behaviours with complex 113types (coderefs, hashes, regexes). Thus, writers of overloading routines 114for smart match mostly need to worry only with comparing against a scalar, 115and possibly with stringification overloading; the other common cases 116will be automatically handled consistently. 117 118C<~~> will now refuse to work on objects that do not overload it (in order 119to avoid relying on the object's underlying structure). (However, if the 120object overloads the stringification or the numification operators, and 121if overload fallback is active, it will be used instead, as usual.) 122 123=head2 Other incompatible changes 124 125=over 4 126 127=item * 128 129The semantics of C<use feature :5.10*> have changed slightly. 130See L<"Modules and Pragmata"> for more information. 131 132=item * 133 134It is now a run-time error to use the smart match operator C<~~> 135with an object that has no overload defined for it. (This way 136C<~~> will not break encapsulation by matching against the 137object's internal representation as a reference.) 138 139=item * 140 141The version control system used for the development of the perl 142interpreter has been switched from Perforce to git. This is mainly an 143internal issue that only affects people actively working on the perl core; 144but it may have minor external visibility, for example in some of details 145of the output of C<perl -V>. See L<perlrepository> for more information. 146 147=item * 148 149The internal structure of the C<ext/> directory in the perl source has 150been reorganised. In general, a module C<Foo::Bar> whose source was 151stored under F<ext/Foo/Bar/> is now located under F<ext/Foo-Bar/>. Also, 152some modules have been moved from F<lib/> to F<ext/>. This is purely a 153source tarball change, and should make no difference to the compilation or 154installation of perl, unless you have a very customised build process that 155explicitly relies on this structure, or which hard-codes the C<nonxs_ext> 156F<Configure> parameter. Specifically, this change does not by default 157alter the location of any files in the final installation. 158 159=item * 160 161As part of the C<Test::Harness> 2.x to 3.x upgrade, the experimental 162C<Test::Harness::Straps> module has been removed. 163See L</"Updated Modules"> for more details. 164 165=item * 166 167As part of the C<ExtUtils::MakeMaker> upgrade, the 168C<ExtUtils::MakeMaker::bytes> and C<ExtUtils::MakeMaker::vmsish> modules 169have been removed from this distribution. 170 171=item * 172 173C<Module::CoreList> no longer contains the C<%:patchlevel> hash. 174 175=item * 176 177This one is actually a change introduced in 5.10.0, but it was missed 178from that release's perldelta, so it is mentioned here instead. 179 180A bugfix related to the handling of the C</m> modifier and C<qr> resulted 181in a change of behaviour between 5.8.x and 5.10.0: 182 183 # matches in 5.8.x, doesn't match in 5.10.0 184 $re = qr/^bar/; "foo\nbar" =~ /$re/m; 185 186=back 187 188=head1 Core Enhancements 189 190=head2 Unicode Character Database 5.1.0 191 192The copy of the Unicode Character Database included in Perl 5.10.1 has 193been updated to 5.1.0 from 5.0.0. See 194L<http://www.unicode.org/versions/Unicode5.1.0/#Notable_Changes> for the 195notable changes. 196 197=head2 A proper interface for pluggable Method Resolution Orders 198 199As of Perl 5.10.1 there is a new interface for plugging and using method 200resolution orders other than the default (linear depth first search). 201The C3 method resolution order added in 5.10.0 has been re-implemented as 202a plugin, without changing its Perl-space interface. See L<perlmroapi> for 203more information. 204 205=head2 The C<overloading> pragma 206 207This pragma allows you to lexically disable or enable overloading 208for some or all operations. (Yuval Kogman) 209 210=head2 Parallel tests 211 212The core distribution can now run its regression tests in parallel on 213Unix-like platforms. Instead of running C<make test>, set C<TEST_JOBS> in 214your environment to the number of tests to run in parallel, and run 215C<make test_harness>. On a Bourne-like shell, this can be done as 216 217 TEST_JOBS=3 make test_harness # Run 3 tests in parallel 218 219An environment variable is used, rather than parallel make itself, because 220L<TAP::Harness> needs to be able to schedule individual non-conflicting test 221scripts itself, and there is no standard interface to C<make> utilities to 222interact with their job schedulers. 223 224Note that currently some test scripts may fail when run in parallel (most 225notably C<ext/IO/t/io_dir.t>). If necessary run just the failing scripts 226again sequentially and see if the failures go away. 227 228=head2 DTrace support 229 230Some support for DTrace has been added. See "DTrace support" in F<INSTALL>. 231 232=head2 Support for C<configure_requires> in CPAN module metadata 233 234Both C<CPAN> and C<CPANPLUS> now support the C<configure_requires> keyword 235in the C<META.yml> metadata file included in most recent CPAN distributions. 236This allows distribution authors to specify configuration prerequisites that 237must be installed before running F<Makefile.PL> or F<Build.PL>. 238 239See the documentation for C<ExtUtils::MakeMaker> or C<Module::Build> for more 240on how to specify C<configure_requires> when creating a distribution for CPAN. 241 242=head1 Modules and Pragmata 243 244=head2 New Modules and Pragmata 245 246=over 4 247 248=item C<autodie> 249 250This is a new lexically-scoped alternative for the C<Fatal> module. 251The bundled version is 2.06_01. Note that in this release, using a string 252eval when C<autodie> is in effect can cause the autodie behaviour to leak 253into the surrounding scope. See L<autodie/"BUGS"> for more details. 254 255=item C<Compress::Raw::Bzip2> 256 257This has been added to the core (version 2.020). 258 259=item C<parent> 260 261This pragma establishes an ISA relationship with base classes at compile 262time. It provides the key feature of C<base> without the feature creep. 263 264=item C<Parse::CPAN::Meta> 265 266This has been added to the core (version 1.39). 267 268=back 269 270=head2 Pragmata Changes 271 272=over 4 273 274=item C<attributes> 275 276Upgraded from version 0.08 to 0.09. 277 278=item C<attrs> 279 280Upgraded from version 1.02 to 1.03. 281 282=item C<base> 283 284Upgraded from version 2.13 to 2.14. See L<parent> for a replacement. 285 286=item C<bigint> 287 288Upgraded from version 0.22 to 0.23. 289 290=item C<bignum> 291 292Upgraded from version 0.22 to 0.23. 293 294=item C<bigrat> 295 296Upgraded from version 0.22 to 0.23. 297 298=item C<charnames> 299 300Upgraded from version 1.06 to 1.07. 301 302The Unicode F<NameAliases.txt> database file has been added. This has the 303effect of adding some extra C<\N> character names that formerly wouldn't 304have been recognised; for example, C<"\N{LATIN CAPITAL LETTER GHA}">. 305 306=item C<constant> 307 308Upgraded from version 1.13 to 1.17. 309 310=item C<feature> 311 312The meaning of the C<:5.10> and C<:5.10.X> feature bundles has 313changed slightly. The last component, if any (i.e. C<X>) is simply ignored. 314This is predicated on the assumption that new features will not, in 315general, be added to maintenance releases. So C<:5.10> and C<:5.10.X> 316have identical effect. This is a change to the behaviour documented for 3175.10.0. 318 319=item C<fields> 320 321Upgraded from version 2.13 to 2.14 (this was just a version bump; there 322were no functional changes). 323 324=item C<lib> 325 326Upgraded from version 0.5565 to 0.62. 327 328=item C<open> 329 330Upgraded from version 1.06 to 1.07. 331 332=item C<overload> 333 334Upgraded from version 1.06 to 1.07. 335 336=item C<overloading> 337 338See L</"The C<overloading> pragma"> above. 339 340=item C<version> 341 342Upgraded from version 0.74 to 0.77. 343 344=back 345 346=head2 Updated Modules 347 348=over 4 349 350=item C<Archive::Extract> 351 352Upgraded from version 0.24 to 0.34. 353 354=item C<Archive::Tar> 355 356Upgraded from version 1.38 to 1.52. 357 358=item C<Attribute::Handlers> 359 360Upgraded from version 0.79 to 0.85. 361 362=item C<AutoLoader> 363 364Upgraded from version 5.63 to 5.68. 365 366=item C<AutoSplit> 367 368Upgraded from version 1.05 to 1.06. 369 370=item C<B> 371 372Upgraded from version 1.17 to 1.22. 373 374=item C<B::Debug> 375 376Upgraded from version 1.05 to 1.11. 377 378=item C<B::Deparse> 379 380Upgraded from version 0.83 to 0.89. 381 382=item C<B::Lint> 383 384Upgraded from version 1.09 to 1.11. 385 386=item C<B::Xref> 387 388Upgraded from version 1.01 to 1.02. 389 390=item C<Benchmark> 391 392Upgraded from version 1.10 to 1.11. 393 394=item C<Carp> 395 396Upgraded from version 1.08 to 1.11. 397 398=item C<CGI> 399 400Upgraded from version 3.29 to 3.43. 401(also includes the "default_value for popup_menu()" fix from 3.45). 402 403=item C<Compress::Zlib> 404 405Upgraded from version 2.008 to 2.020. 406 407=item C<CPAN> 408 409Upgraded from version 1.9205 to 1.9402. C<CPAN::FTP> has a local fix to 410stop it being too verbose on download failure. 411 412=item C<CPANPLUS> 413 414Upgraded from version 0.84 to 0.88. 415 416=item C<CPANPLUS::Dist::Build> 417 418Upgraded from version 0.06_02 to 0.36. 419 420=item C<Cwd> 421 422Upgraded from version 3.25_01 to 3.30. 423 424=item C<Data::Dumper> 425 426Upgraded from version 2.121_14 to 2.124. 427 428=item C<DB> 429 430Upgraded from version 1.01 to 1.02. 431 432=item C<DB_File> 433 434Upgraded from version 1.816_1 to 1.820. 435 436=item C<Devel::PPPort> 437 438Upgraded from version 3.13 to 3.19. 439 440=item C<Digest::MD5> 441 442Upgraded from version 2.36_01 to 2.39. 443 444=item C<Digest::SHA> 445 446Upgraded from version 5.45 to 5.47. 447 448=item C<DirHandle> 449 450Upgraded from version 1.01 to 1.03. 451 452=item C<Dumpvalue> 453 454Upgraded from version 1.12 to 1.13. 455 456=item C<DynaLoader> 457 458Upgraded from version 1.08 to 1.10. 459 460=item C<Encode> 461 462Upgraded from version 2.23 to 2.35. 463 464=item C<Errno> 465 466Upgraded from version 1.10 to 1.11. 467 468=item C<Exporter> 469 470Upgraded from version 5.62 to 5.63. 471 472=item C<ExtUtils::CBuilder> 473 474Upgraded from version 0.21 to 0.2602. 475 476=item C<ExtUtils::Command> 477 478Upgraded from version 1.13 to 1.16. 479 480=item C<ExtUtils::Constant> 481 482Upgraded from 0.20 to 0.22. (Note that neither of these versions are 483available on CPAN.) 484 485=item C<ExtUtils::Embed> 486 487Upgraded from version 1.27 to 1.28. 488 489=item C<ExtUtils::Install> 490 491Upgraded from version 1.44 to 1.54. 492 493=item C<ExtUtils::MakeMaker> 494 495Upgraded from version 6.42 to 6.55_02. 496 497Note that C<ExtUtils::MakeMaker::bytes> and C<ExtUtils::MakeMaker::vmsish> 498have been removed from this distribution. 499 500=item C<ExtUtils::Manifest> 501 502Upgraded from version 1.51_01 to 1.56. 503 504=item C<ExtUtils::ParseXS> 505 506Upgraded from version 2.18_02 to 2.2002. 507 508=item C<Fatal> 509 510Upgraded from version 1.05 to 2.06_01. See also the new pragma C<autodie>. 511 512=item C<File::Basename> 513 514Upgraded from version 2.76 to 2.77. 515 516=item C<File::Compare> 517 518Upgraded from version 1.1005 to 1.1006. 519 520=item C<File::Copy> 521 522Upgraded from version 2.11 to 2.14. 523 524=item C<File::Fetch> 525 526Upgraded from version 0.14 to 0.20. 527 528=item C<File::Find> 529 530Upgraded from version 1.12 to 1.14. 531 532=item C<File::Path> 533 534Upgraded from version 2.04 to 2.07_03. 535 536=item C<File::Spec> 537 538Upgraded from version 3.2501 to 3.30. 539 540=item C<File::stat> 541 542Upgraded from version 1.00 to 1.01. 543 544=item C<File::Temp> 545 546Upgraded from version 0.18 to 0.22. 547 548=item C<FileCache> 549 550Upgraded from version 1.07 to 1.08. 551 552=item C<FileHandle> 553 554Upgraded from version 2.01 to 2.02. 555 556=item C<Filter::Simple> 557 558Upgraded from version 0.82 to 0.84. 559 560=item C<Filter::Util::Call> 561 562Upgraded from version 1.07 to 1.08. 563 564=item C<FindBin> 565 566Upgraded from version 1.49 to 1.50. 567 568=item C<GDBM_File> 569 570Upgraded from version 1.08 to 1.09. 571 572=item C<Getopt::Long> 573 574Upgraded from version 2.37 to 2.38. 575 576=item C<Hash::Util::FieldHash> 577 578Upgraded from version 1.03 to 1.04. This fixes a memory leak. 579 580=item C<I18N::Collate> 581 582Upgraded from version 1.00 to 1.01. 583 584=item C<IO> 585 586Upgraded from version 1.23_01 to 1.25. 587 588This makes non-blocking mode work on Windows in C<IO::Socket::INET> 589[CPAN #43573]. 590 591=item C<IO::Compress::*> 592 593Upgraded from version 2.008 to 2.020. 594 595=item C<IO::Dir> 596 597Upgraded from version 1.06 to 1.07. 598 599=item C<IO::Handle> 600 601Upgraded from version 1.27 to 1.28. 602 603=item C<IO::Socket> 604 605Upgraded from version 1.30_01 to 1.31. 606 607=item C<IO::Zlib> 608 609Upgraded from version 1.07 to 1.09. 610 611=item C<IPC::Cmd> 612 613Upgraded from version 0.40_1 to 0.46. 614 615=item C<IPC::Open3> 616 617Upgraded from version 1.02 to 1.04. 618 619=item C<IPC::SysV> 620 621Upgraded from version 1.05 to 2.01. 622 623=item C<lib> 624 625Upgraded from version 0.5565 to 0.62. 626 627=item C<List::Util> 628 629Upgraded from version 1.19 to 1.21. 630 631=item C<Locale::MakeText> 632 633Upgraded from version 1.12 to 1.13. 634 635=item C<Log::Message> 636 637Upgraded from version 0.01 to 0.02. 638 639=item C<Math::BigFloat> 640 641Upgraded from version 1.59 to 1.60. 642 643=item C<Math::BigInt> 644 645Upgraded from version 1.88 to 1.89. 646 647=item C<Math::BigInt::FastCalc> 648 649Upgraded from version 0.16 to 0.19. 650 651=item C<Math::BigRat> 652 653Upgraded from version 0.21 to 0.22. 654 655=item C<Math::Complex> 656 657Upgraded from version 1.37 to 1.56. 658 659=item C<Math::Trig> 660 661Upgraded from version 1.04 to 1.20. 662 663=item C<Memoize> 664 665Upgraded from version 1.01_02 to 1.01_03 (just a minor documentation 666change). 667 668=item C<Module::Build> 669 670Upgraded from version 0.2808_01 to 0.34_02. 671 672=item C<Module::CoreList> 673 674Upgraded from version 2.13 to 2.18. This release no longer contains the 675C<%Module::CoreList::patchlevel> hash. 676 677=item C<Module::Load> 678 679Upgraded from version 0.12 to 0.16. 680 681=item C<Module::Load::Conditional> 682 683Upgraded from version 0.22 to 0.30. 684 685=item C<Module::Loaded> 686 687Upgraded from version 0.01 to 0.02. 688 689=item C<Module::Pluggable> 690 691Upgraded from version 3.6 to 3.9. 692 693=item C<NDBM_File> 694 695Upgraded from version 1.07 to 1.08. 696 697=item C<Net::Ping> 698 699Upgraded from version 2.33 to 2.36. 700 701=item C<NEXT> 702 703Upgraded from version 0.60_01 to 0.64. 704 705=item C<Object::Accessor> 706 707Upgraded from version 0.32 to 0.34. 708 709=item C<OS2::REXX> 710 711Upgraded from version 1.03 to 1.04. 712 713=item C<Package::Constants> 714 715Upgraded from version 0.01 to 0.02. 716 717=item C<PerlIO> 718 719Upgraded from version 1.04 to 1.06. 720 721=item C<PerlIO::via> 722 723Upgraded from version 0.04 to 0.07. 724 725=item C<Pod::Man> 726 727Upgraded from version 2.16 to 2.22. 728 729=item C<Pod::Parser> 730 731Upgraded from version 1.35 to 1.37. 732 733=item C<Pod::Simple> 734 735Upgraded from version 3.05 to 3.07. 736 737=item C<Pod::Text> 738 739Upgraded from version 3.08 to 3.13. 740 741=item C<POSIX> 742 743Upgraded from version 1.13 to 1.17. 744 745=item C<Safe> 746 747Upgraded from 2.12 to 2.18. 748 749=item C<Scalar::Util> 750 751Upgraded from version 1.19 to 1.21. 752 753=item C<SelectSaver> 754 755Upgraded from 1.01 to 1.02. 756 757=item C<SelfLoader> 758 759Upgraded from 1.11 to 1.17. 760 761=item C<Socket> 762 763Upgraded from 1.80 to 1.82. 764 765=item C<Storable> 766 767Upgraded from 2.18 to 2.20. 768 769=item C<Switch> 770 771Upgraded from version 2.13 to 2.14. Please see L</Deprecations>. 772 773=item C<Symbol> 774 775Upgraded from version 1.06 to 1.07. 776 777=item C<Sys::Syslog> 778 779Upgraded from version 0.22 to 0.27. 780 781=item C<Term::ANSIColor> 782 783Upgraded from version 1.12 to 2.00. 784 785=item C<Term::ReadLine> 786 787Upgraded from version 1.03 to 1.04. 788 789=item C<Term::UI> 790 791Upgraded from version 0.18 to 0.20. 792 793=item C<Test::Harness> 794 795Upgraded from version 2.64 to 3.17. 796 797Note that one side-effect of the 2.x to 3.x upgrade is that the 798experimental C<Test::Harness::Straps> module (and its supporting 799C<Assert>, C<Iterator>, C<Point> and C<Results> modules) have been 800removed. If you still need this, then they are available in the 801(unmaintained) C<Test-Harness-Straps> distribution on CPAN. 802 803=item C<Test::Simple> 804 805Upgraded from version 0.72 to 0.92. 806 807=item C<Text::ParseWords> 808 809Upgraded from version 3.26 to 3.27. 810 811=item C<Text::Tabs> 812 813Upgraded from version 2007.1117 to 2009.0305. 814 815=item C<Text::Wrap> 816 817Upgraded from version 2006.1117 to 2009.0305. 818 819=item C<Thread::Queue> 820 821Upgraded from version 2.00 to 2.11. 822 823=item C<Thread::Semaphore> 824 825Upgraded from version 2.01 to 2.09. 826 827=item C<threads> 828 829Upgraded from version 1.67 to 1.72. 830 831=item C<threads::shared> 832 833Upgraded from version 1.14 to 1.29. 834 835=item C<Tie::RefHash> 836 837Upgraded from version 1.37 to 1.38. 838 839=item C<Tie::StdHandle> 840 841This has documentation changes, and has been assigned a version for the 842first time: version 4.2. 843 844=item C<Time::HiRes> 845 846Upgraded from version 1.9711 to 1.9719. 847 848=item C<Time::Local> 849 850Upgraded from version 1.18 to 1.1901. 851 852=item C<Time::Piece> 853 854Upgraded from version 1.12 to 1.15. 855 856=item C<Unicode::Normalize> 857 858Upgraded from version 1.02 to 1.03. 859 860=item C<Unicode::UCD> 861 862Upgraded from version 0.25 to 0.27. 863 864C<charinfo()> now works on Unified CJK code points added to later versions 865of Unicode. 866 867C<casefold()> has new fields returned to provide both a simpler interface 868and previously missing information. The old fields are retained for 869backwards compatibility. Information about Turkic-specific code points is 870now returned. 871 872The documentation has been corrected and expanded. 873 874=item C<UNIVERSAL> 875 876Upgraded from version 1.04 to 1.05. 877 878=item C<Win32> 879 880Upgraded from version 0.34 to 0.39. 881 882=item C<Win32API::File> 883 884Upgraded from version 0.1001_01 to 0.1101. 885 886=item C<XSLoader> 887 888Upgraded from version 0.08 to 0.10. 889 890=back 891 892=head1 Utility Changes 893 894=over 4 895 896=item F<h2ph> 897 898Now looks in C<include-fixed> too, which is a recent addition to gcc's 899search path. 900 901=item F<h2xs> 902 903No longer incorrectly treats enum values like macros (Daniel Burr). 904 905Now handles C++ style constants (C<//>) properly in enums. (A patch from 906Rainer Weikusat was used; Daniel Burr also proposed a similar fix). 907 908=item F<perl5db.pl> 909 910C<LVALUE> subroutines now work under the debugger. 911 912The debugger now correctly handles proxy constant subroutines, and 913subroutine stubs. 914 915=item F<perlthanks> 916 917Perl 5.10.1 adds a new utility F<perlthanks>, which is a variant of 918F<perlbug>, but for sending non-bug-reports to the authors and maintainers 919of Perl. Getting nothing but bug reports can become a bit demoralising: 920we'll see if this changes things. 921 922=back 923 924=head1 New Documentation 925 926=over 4 927 928=item L<perlhaiku> 929 930This contains instructions on how to build perl for the Haiku platform. 931 932=item L<perlmroapi> 933 934This describes the new interface for pluggable Method Resolution Orders. 935 936=item L<perlperf> 937 938This document, by Richard Foley, provides an introduction to the use of 939performance and optimization techniques which can be used with particular 940reference to perl programs. 941 942=item L<perlrepository> 943 944This describes how to access the perl source using the I<git> version 945control system. 946 947=item L<perlthanks> 948 949This describes the new F<perlthanks> utility. 950 951=back 952 953=head1 Changes to Existing Documentation 954 955The various large C<Changes*> files (which listed every change made to perl 956over the last 18 years) have been removed, and replaced by a small file, 957also called C<Changes>, which just explains how that same information may 958be extracted from the git version control system. 959 960The file F<Porting/patching.pod> has been deleted, as it mainly described 961interacting with the old Perforce-based repository, which is now obsolete. 962Information still relevant has been moved to L<perlrepository>. 963 964L<perlapi>, L<perlintern>, L<perlmodlib> and L<perltoc> are now all 965generated at build time, rather than being shipped as part of the release. 966 967=head1 Performance Enhancements 968 969=over 4 970 971=item * 972 973A new internal cache means that C<isa()> will often be faster. 974 975=item * 976 977Under C<use locale>, the locale-relevant information is now cached on 978read-only values, such as the list returned by C<keys %hash>. This makes 979operations such as C<sort keys %hash> in the scope of C<use locale> much 980faster. 981 982=item * 983 984Empty C<DESTROY> methods are no longer called. 985 986=back 987 988=head1 Installation and Configuration Improvements 989 990=head2 F<ext/> reorganisation 991 992The layout of directories in F<ext> has been revised. Specifically, all 993extensions are now flat, and at the top level, with C</> in pathnames 994replaced by C<->, so that F<ext/Data/Dumper/> is now F<ext/Data-Dumper/>, 995etc. The names of the extensions as specified to F<Configure>, and as 996reported by C<%Config::Config> under the keys C<dynamic_ext>, 997C<known_extensions>, C<nonxs_ext> and C<static_ext> have not changed, and 998still use C</>. Hence this change will not have any affect once perl is 999installed. However, C<Attribute::Handlers>, C<Safe> and C<mro> have now 1000become extensions in their own right, so if you run F<Configure> with 1001options to specify an exact list of extensions to build, you will need to 1002change it to account for this. 1003 1004For 5.10.2, it is planned that many dual-life modules will have been moved 1005from F<lib> to F<ext>; again this will have no effect on an installed 1006perl, but will matter if you invoke F<Configure> with a pre-canned list of 1007extensions to build. 1008 1009=head2 Configuration improvements 1010 1011If C<vendorlib> and C<vendorarch> are the same, then they are only added to 1012C<@INC> once. 1013 1014C<$Config{usedevel}> and the C-level C<PERL_USE_DEVEL> are now defined if 1015perl is built with C<-Dusedevel>. 1016 1017F<Configure> will enable use of C<-fstack-protector>, to provide protection 1018against stack-smashing attacks, if the compiler supports it. 1019 1020F<Configure> will now determine the correct prototypes for re-entrant 1021functions, and for C<gconvert>, if you are using a C++ compiler rather 1022than a C compiler. 1023 1024On Unix, if you build from a tree containing a git repository, the 1025configuration process will note the commit hash you have checked out, for 1026display in the output of C<perl -v> and C<perl -V>. Unpushed local commits 1027are automatically added to the list of local patches displayed by 1028C<perl -V>. 1029 1030=head2 Compilation improvements 1031 1032As part of the flattening of F<ext>, all extensions on all platforms are 1033built by F<make_ext.pl>. This replaces the Unix-specific 1034F<ext/util/make_ext>, VMS-specific F<make_ext.com> and Win32-specific 1035F<win32/buildext.pl>. 1036 1037=head2 Platform Specific Changes 1038 1039=over 4 1040 1041=item AIX 1042 1043Removed F<libbsd> for AIX 5L and 6.1. Only flock() was used from F<libbsd>. 1044 1045Removed F<libgdbm> for AIX 5L and 6.1. The F<libgdbm> is delivered as an 1046optional package with the AIX Toolbox. Unfortunately the 64 bit version 1047is broken. 1048 1049Hints changes mean that AIX 4.2 should work again. 1050 1051=item Cygwin 1052 1053On Cygwin we now strip the last number from the DLL. This has been the 1054behaviour in the cygwin.com build for years. The hints files have been 1055updated. 1056 1057=item FreeBSD 1058 1059The hints files now identify the correct threading libraries on FreeBSD 7 1060and later. 1061 1062=item Irix 1063 1064We now work around a bizarre preprocessor bug in the Irix 6.5 compiler: 1065C<cc -E -> unfortunately goes into K&R mode, but C<cc -E file.c> doesn't. 1066 1067=item Haiku 1068 1069Patches from the Haiku maintainers have been merged in. Perl should now 1070build on Haiku. 1071 1072=item MirOS BSD 1073 1074Perl should now build on MirOS BSD. 1075 1076=item NetBSD 1077 1078Hints now supports versions 5.*. 1079 1080=item Stratus VOS 1081 1082Various changes from Stratus have been merged in. 1083 1084=item Symbian 1085 1086There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK. 1087 1088=item Win32 1089 1090Improved message window handling means that C<alarm> and C<kill> messages 1091will no longer be dropped under race conditions. 1092 1093=item VMS 1094 1095Reads from the in-memory temporary files of C<PerlIO::scalar> used to fail 1096if C<$/> was set to a numeric reference (to indicate record-style reads). 1097This is now fixed. 1098 1099VMS now supports C<getgrgid>. 1100 1101Many improvements and cleanups have been made to the VMS file name handling 1102and conversion code. 1103 1104Enabling the C<PERL_VMS_POSIX_EXIT> logical name now encodes a POSIX exit 1105status in a VMS condition value for better interaction with GNV's bash 1106shell and other utilities that depend on POSIX exit values. See 1107L<perlvms/"$?"> for details. 1108 1109=back 1110 1111=head1 Selected Bug Fixes 1112 1113=over 4 1114 1115=item * 1116 11175.10.0 inadvertently disabled an optimisation, which caused a measurable 1118performance drop in list assignment, such as is often used to assign 1119function parameters from C<@_>. The optimisation has been re-instated, and 1120the performance regression fixed. 1121 1122=item * 1123 1124Fixed memory leak on C<while (1) { map 1, 1 }> [RT #53038]. 1125 1126=item * 1127 1128Some potential coredumps in PerlIO fixed [RT #57322,54828]. 1129 1130=item * 1131 1132The debugger now works with lvalue subroutines. 1133 1134=item * 1135 1136The debugger's C<m> command was broken on modules that defined constants 1137[RT #61222]. 1138 1139=item * 1140 1141C<crypt()> and string complement could return tainted values for untainted 1142arguments [RT #59998]. 1143 1144=item * 1145 1146The C<-i.suffix> command-line switch now recreates the file using 1147restricted permissions, before changing its mode to match the original 1148file. This eliminates a potential race condition [RT #60904]. 1149 1150=item * 1151 1152On some Unix systems, the value in C<$?> would not have the top bit set 1153(C<$? & 128>) even if the child core dumped. 1154 1155=item * 1156 1157Under some circumstances, $^R could incorrectly become undefined 1158[RT #57042]. 1159 1160=item * 1161 1162(XS) In various hash functions, passing a pre-computed hash to when the 1163key is UTF-8 might result in an incorrect lookup. 1164 1165=item * 1166 1167(XS) Including F<XSUB.h> before F<perl.h> gave a compile-time error 1168[RT #57176]. 1169 1170=item * 1171 1172C<< $object->isa('Foo') >> would report false if the package C<Foo> didn't 1173exist, even if the object's C<@ISA> contained C<Foo>. 1174 1175=item * 1176 1177Various bugs in the new-to 5.10.0 mro code, triggered by manipulating 1178C<@ISA>, have been found and fixed. 1179 1180=item * 1181 1182Bitwise operations on references could crash the interpreter, e.g. 1183C<$x=\$y; $x |= "foo"> [RT #54956]. 1184 1185=item * 1186 1187Patterns including alternation might be sensitive to the internal UTF-8 1188representation, e.g. 1189 1190 my $byte = chr(192); 1191 my $utf8 = chr(192); utf8::upgrade($utf8); 1192 $utf8 =~ /$byte|X}/i; # failed in 5.10.0 1193 1194=item * 1195 1196Within UTF8-encoded Perl source files (i.e. where C<use utf8> is in 1197effect), double-quoted literal strings could be corrupted where a C<\xNN>, 1198C<\0NNN> or C<\N{}> is followed by a literal character with ordinal value 1199greater than 255 [RT #59908]. 1200 1201=item * 1202 1203C<B::Deparse> failed to correctly deparse various constructs: 1204C<readpipe STRING> [RT #62428], C<CORE::require(STRING)> [RT #62488], 1205C<sub foo(_)> [RT #62484]. 1206 1207=item * 1208 1209Using C<setpgrp()> with no arguments could corrupt the perl stack. 1210 1211=item * 1212 1213The block form of C<eval> is now specifically trappable by C<Safe> and 1214C<ops>. Previously it was erroneously treated like string C<eval>. 1215 1216=item * 1217 1218In 5.10.0, the two characters C<[~> were sometimes parsed as the smart 1219match operator (C<~~>) [RT #63854]. 1220 1221=item * 1222 1223In 5.10.0, the C<*> quantifier in patterns was sometimes treated as 1224C<{0,32767}> [RT #60034, #60464]. For example, this match would fail: 1225 1226 ("ab" x 32768) =~ /^(ab)*$/ 1227 1228=item * 1229 1230C<shmget> was limited to a 32 bit segment size on a 64 bit OS [RT #63924]. 1231 1232=item * 1233 1234Using C<next> or C<last> to exit a C<given> block no longer produces a 1235spurious warning like the following: 1236 1237 Exiting given via last at foo.pl line 123 1238 1239=item * 1240 1241On Windows, C<'.\foo'> and C<'..\foo'> were treated differently than 1242C<'./foo'> and C<'../foo'> by C<do> and C<require> [RT #63492]. 1243 1244=item * 1245 1246Assigning a format to a glob could corrupt the format; e.g.: 1247 1248 *bar=*foo{FORMAT}; # foo format now bad 1249 1250=item * 1251 1252Attempting to coerce a typeglob to a string or number could cause an 1253assertion failure. The correct error message is now generated, 1254C<Can't coerce GLOB to I<$type>>. 1255 1256=item * 1257 1258Under C<use filetest 'access'>, C<-x> was using the wrong access mode. This 1259has been fixed [RT #49003]. 1260 1261=item * 1262 1263C<length> on a tied scalar that returned a Unicode value would not be 1264correct the first time. This has been fixed. 1265 1266=item * 1267 1268Using an array C<tie> inside in array C<tie> could SEGV. This has been 1269fixed. [RT #51636] 1270 1271=item * 1272 1273A race condition inside C<PerlIOStdio_close()> has been identified and 1274fixed. This used to cause various threading issues, including SEGVs. 1275 1276=item * 1277 1278In C<unpack>, the use of C<()> groups in scalar context was internally 1279placing a list on the interpreter's stack, which manifested in various 1280ways, including SEGVs. This is now fixed [RT #50256]. 1281 1282=item * 1283 1284Magic was called twice in C<substr>, C<\&$x>, C<tie $x, $m> and C<chop>. 1285These have all been fixed. 1286 1287=item * 1288 1289A 5.10.0 optimisation to clear the temporary stack within the implicit 1290loop of C<s///ge> has been reverted, as it turned out to be the cause of 1291obscure bugs in seemingly unrelated parts of the interpreter [commit 1292ef0d4e17921ee3de]. 1293 1294=item * 1295 1296The line numbers for warnings inside C<elsif> are now correct. 1297 1298=item * 1299 1300The C<..> operator now works correctly with ranges whose ends are at or 1301close to the values of the smallest and largest integers. 1302 1303=item * 1304 1305C<binmode STDIN, ':raw'> could lead to segmentation faults on some platforms. 1306This has been fixed [RT #54828]. 1307 1308=item * 1309 1310An off-by-one error meant that C<index $str, ...> was effectively being 1311executed as C<index "$str\0", ...>. This has been fixed [RT #53746]. 1312 1313=item * 1314 1315Various leaks associated with named captures in regexes have been fixed 1316[RT #57024]. 1317 1318=item * 1319 1320A weak reference to a hash would leak. This was affecting C<DBI> 1321[RT #56908]. 1322 1323=item * 1324 1325Using (?|) in a regex could cause a segfault [RT #59734]. 1326 1327=item * 1328 1329Use of a UTF-8 C<tr//> within a closure could cause a segfault [RT #61520]. 1330 1331=item * 1332 1333Calling C<sv_chop()> or otherwise upgrading an SV could result in an 1334unaligned 64-bit access on the SPARC architecture [RT #60574]. 1335 1336=item * 1337 1338In the 5.10.0 release, C<inc_version_list> would incorrectly list 1339C<5.10.*> after C<5.8.*>; this affected the C<@INC> search order 1340[RT #67628]. 1341 1342=item * 1343 1344In 5.10.0, C<pack "a*", $tainted_value> returned a non-tainted value 1345[RT #52552]. 1346 1347=item * 1348 1349In 5.10.0, C<printf> and C<sprintf> could produce the fatal error 1350C<panic: utf8_mg_pos_cache_update> when printing UTF-8 strings 1351[RT #62666]. 1352 1353=item * 1354 1355In the 5.10.0 release, a dynamically created C<AUTOLOAD> method might be 1356missed (method cache issue) [RT #60220,60232]. 1357 1358=item * 1359 1360In the 5.10.0 release, a combination of C<use feature> and C<//ee> could 1361cause a memory leak [RT #63110]. 1362 1363=item * 1364 1365C<-C> on the shebang (C<#!>) line is once more permitted if it is also 1366specified on the command line. C<-C> on the shebang line used to be a 1367silent no-op I<if> it was not also on the command line, so perl 5.10.0 1368disallowed it, which broke some scripts. Now perl checks whether it is 1369also on the command line and only dies if it is not [RT #67880]. 1370 1371=item * 1372 1373In 5.10.0, certain types of re-entrant regular expression could crash, 1374or cause the following assertion failure [RT #60508]: 1375 1376 Assertion rx->sublen >= (s - rx->subbeg) + i failed 1377 1378 1379=back 1380 1381=head1 New or Changed Diagnostics 1382 1383=over 4 1384 1385=item C<panic: sv_chop %s> 1386 1387This new fatal error occurs when the C routine C<Perl_sv_chop()> was 1388passed a position that is not within the scalar's string buffer. This 1389could be caused by buggy XS code, and at this point recovery is not 1390possible. 1391 1392=item C<Can't locate package %s for the parents of %s> 1393 1394This warning has been removed. In general, it only got produced in 1395conjunction with other warnings, and removing it allowed an ISA lookup 1396optimisation to be added. 1397 1398=item C<v-string in use/require is non-portable> 1399 1400This warning has been removed. 1401 1402=item C<Deep recursion on subroutine "%s"> 1403 1404It is now possible to change the depth threshold for this warning from the 1405default of 100, by recompiling the F<perl> binary, setting the C 1406pre-processor macro C<PERL_SUB_DEPTH_WARN> to the desired value. 1407 1408=back 1409 1410=head1 Changed Internals 1411 1412=over 4 1413 1414=item * 1415 1416The J.R.R. Tolkien quotes at the head of C source file have been checked and 1417proper citations added, thanks to a patch from Tom Christiansen. 1418 1419=item * 1420 1421C<vcroak()> now accepts a null first argument. In addition, a full audit 1422was made of the "not NULL" compiler annotations, and those for several 1423other internal functions were corrected. 1424 1425=item * 1426 1427New macros C<dSAVEDERRNO>, C<dSAVE_ERRNO>, C<SAVE_ERRNO>, C<RESTORE_ERRNO> 1428have been added to formalise the temporary saving of the C<errno> 1429variable. 1430 1431=item * 1432 1433The function C<Perl_sv_insert_flags> has been added to augment 1434C<Perl_sv_insert>. 1435 1436=item * 1437 1438The function C<Perl_newSV_type(type)> has been added, equivalent to 1439C<Perl_newSV()> followed by C<Perl_sv_upgrade(type)>. 1440 1441=item * 1442 1443The function C<Perl_newSVpvn_flags()> has been added, equivalent to 1444C<Perl_newSVpvn()> and then performing the action relevant to the flag. 1445 1446Two flag bits are currently supported. 1447 1448=over 4 1449 1450=item C<SVf_UTF8> 1451 1452This will call C<SvUTF8_on()> for you. (Note that this does not convert an 1453sequence of ISO 8859-1 characters to UTF-8). A wrapper, C<newSVpvn_utf8()> 1454is available for this. 1455 1456=item C<SVs_TEMP> 1457 1458Call C<sv_2mortal()> on the new SV. 1459 1460=back 1461 1462There is also a wrapper that takes constant strings, C<newSVpvs_flags()>. 1463 1464=item * 1465 1466The function C<Perl_croak_xs_usage> has been added as a wrapper to 1467C<Perl_croak>. 1468 1469=item * 1470 1471The functions C<PerlIO_find_layer> and C<PerlIO_list_alloc> are now 1472exported. 1473 1474=item * 1475 1476C<PL_na> has been exterminated from the core code, replaced by local STRLEN 1477temporaries, or C<*_nolen()> calls. Either approach is faster than C<PL_na>, 1478which is a pointer deference into the interpreter structure under ithreads, 1479and a global variable otherwise. 1480 1481=item * 1482 1483C<Perl_mg_free()> used to leave freed memory accessible via SvMAGIC() on 1484the scalar. It now updates the linked list to remove each piece of magic 1485as it is freed. 1486 1487=item * 1488 1489Under ithreads, the regex in C<PL_reg_curpm> is now reference counted. This 1490eliminates a lot of hackish workarounds to cope with it not being reference 1491counted. 1492 1493=item * 1494 1495C<Perl_mg_magical()> would sometimes incorrectly turn on C<SvRMAGICAL()>. 1496This has been fixed. 1497 1498=item * 1499 1500The I<public> IV and NV flags are now not set if the string value has 1501trailing "garbage". This behaviour is consistent with not setting the 1502public IV or NV flags if the value is out of range for the type. 1503 1504=item * 1505 1506SV allocation tracing has been added to the diagnostics enabled by C<-Dm>. 1507The tracing can alternatively output via the C<PERL_MEM_LOG> mechanism, if 1508that was enabled when the F<perl> binary was compiled. 1509 1510=item * 1511 1512Uses of C<Nullav>, C<Nullcv>, C<Nullhv>, C<Nullop>, C<Nullsv> etc have been 1513replaced by C<NULL> in the core code, and non-dual-life modules, as C<NULL> 1514is clearer to those unfamiliar with the core code. 1515 1516=item * 1517 1518A macro C<MUTABLE_PTR(p)> has been added, which on (non-pedantic) gcc will 1519not cast away C<const>, returning a C<void *>. Macros C<MUTABLE_SV(av)>, 1520C<MUTABLE_SV(cv)> etc build on this, casting to C<AV *> etc without 1521casting away C<const>. This allows proper compile-time auditing of 1522C<const> correctness in the core, and helped picked up some errors (now 1523fixed). 1524 1525=item * 1526 1527Macros C<mPUSHs()> and C<mXPUSHs()> have been added, for pushing SVs on the 1528stack and mortalizing them. 1529 1530=item * 1531 1532Use of the private structure C<mro_meta> has changed slightly. Nothing 1533outside the core should be accessing this directly anyway. 1534 1535=item * 1536 1537A new tool, C<Porting/expand-macro.pl> has been added, that allows you 1538to view how a C preprocessor macro would be expanded when compiled. 1539This is handy when trying to decode the macro hell that is the perl 1540guts. 1541 1542=back 1543 1544=head1 New Tests 1545 1546Many modules updated from CPAN incorporate new tests. 1547 1548Several tests that have the potential to hang forever if they fail now 1549incorporate a "watchdog" functionality that will kill them after a timeout, 1550which helps ensure that C<make test> and C<make test_harness> run to 1551completion automatically. (Jerry Hedden). 1552 1553Some core-specific tests have been added: 1554 1555=over 4 1556 1557=item t/comp/retainedlines.t 1558 1559Check that the debugger can retain source lines from C<eval>. 1560 1561=item t/io/perlio_fail.t 1562 1563Check that bad layers fail. 1564 1565=item t/io/perlio_leaks.t 1566 1567Check that PerlIO layers are not leaking. 1568 1569=item t/io/perlio_open.t 1570 1571Check that certain special forms of open work. 1572 1573=item t/io/perlio.t 1574 1575General PerlIO tests. 1576 1577=item t/io/pvbm.t 1578 1579Check that there is no unexpected interaction between the internal types 1580C<PVBM> and C<PVGV>. 1581 1582=item t/mro/package_aliases.t 1583 1584Check that mro works properly in the presence of aliased packages. 1585 1586=item t/op/dbm.t 1587 1588Tests for C<dbmopen> and C<dbmclose>. 1589 1590=item t/op/index_thr.t 1591 1592Tests for the interaction of C<index> and threads. 1593 1594=item t/op/pat_thr.t 1595 1596Tests for the interaction of esoteric patterns and threads. 1597 1598=item t/op/qr_gc.t 1599 1600Test that C<qr> doesn't leak. 1601 1602=item t/op/reg_email_thr.t 1603 1604Tests for the interaction of regex recursion and threads. 1605 1606=item t/op/regexp_qr_embed_thr.t 1607 1608Tests for the interaction of patterns with embedded C<qr//> and threads. 1609 1610=item t/op/regexp_unicode_prop.t 1611 1612Tests for Unicode properties in regular expressions. 1613 1614=item t/op/regexp_unicode_prop_thr.t 1615 1616Tests for the interaction of Unicode properties and threads. 1617 1618=item t/op/reg_nc_tie.t 1619 1620Test the tied methods of C<Tie::Hash::NamedCapture>. 1621 1622=item t/op/reg_posixcc.t 1623 1624Check that POSIX character classes behave consistently. 1625 1626=item t/op/re.t 1627 1628Check that exportable C<re> functions in F<universal.c> work. 1629 1630=item t/op/setpgrpstack.t 1631 1632Check that C<setpgrp> works. 1633 1634=item t/op/substr_thr.t 1635 1636Tests for the interaction of C<substr> and threads. 1637 1638=item t/op/upgrade.t 1639 1640Check that upgrading and assigning scalars works. 1641 1642=item t/uni/lex_utf8.t 1643 1644Check that Unicode in the lexer works. 1645 1646=item t/uni/tie.t 1647 1648Check that Unicode and C<tie> work. 1649 1650=back 1651 1652=head1 Known Problems 1653 1654This is a list of some significant unfixed bugs, which are regressions 1655from either 5.10.0 or 5.8.x. 1656 1657=over 4 1658 1659=item * 1660 1661C<List::Util::first> misbehaves in the presence of a lexical C<$_> 1662(typically introduced by C<my $_> or implicitly by C<given>). The variable 1663which gets set for each iteration is the package variable C<$_>, not the 1664lexical C<$_> [RT #67694]. 1665 1666A similar issue may occur in other modules that provide functions which 1667take a block as their first argument, like 1668 1669 foo { ... $_ ...} list 1670 1671=item * 1672 1673The C<charnames> pragma may generate a run-time error when a regex is 1674interpolated [RT #56444]: 1675 1676 use charnames ':full'; 1677 my $r1 = qr/\N{THAI CHARACTER SARA I}/; 1678 "foo" =~ $r1; # okay 1679 "foo" =~ /$r1+/; # runtime error 1680 1681A workaround is to generate the character outside of the regex: 1682 1683 my $a = "\N{THAI CHARACTER SARA I}"; 1684 my $r1 = qr/$a/; 1685 1686=item * 1687 1688Some regexes may run much more slowly when run in a child thread compared 1689with the thread the pattern was compiled into [RT #55600]. 1690 1691 1692=back 1693 1694=head1 Deprecations 1695 1696The following items are now deprecated. 1697 1698=over 4 1699 1700=item * 1701 1702C<Switch> is buggy and should be avoided. From perl 5.11.0 onwards, it is 1703intended that any use of the core version of this module will emit a 1704warning, and that the module will eventually be removed from the core 1705(probably in perl 5.14.0). See L<perlsyn/"Switch statements"> for its 1706replacement. 1707 1708=item * 1709 1710C<suidperl> will be removed in 5.12.0. This provides a mechanism to 1711emulate setuid permission bits on systems that don't support it properly. 1712 1713=back 1714 1715=head1 Acknowledgements 1716 1717Some of the work in this release was funded by a TPF grant. 1718 1719Nicholas Clark officially retired from maintenance pumpking duty at the 1720end of 2008; however in reality he has put much effort in since then to 1721help get 5.10.1 into a fit state to be released, including writing a 1722considerable chunk of this perldelta. 1723 1724Steffen Mueller and David Golden in particular helped getting CPAN modules 1725polished and synchronised with their in-core equivalents. 1726 1727Craig Berry was tireless in getting maint to run under VMS, no matter how 1728many times we broke it for him. 1729 1730The other core committers contributed most of the changes, and applied most 1731of the patches sent in by the hundreds of contributors listed in F<AUTHORS>. 1732 1733(Sorry to all the people I haven't mentioned by name). 1734 1735Finally, thanks to Larry Wall, without whom none of this would be 1736necessary. 1737 1738=head1 Reporting Bugs 1739 1740If you find what you think is a bug, you might check the articles 1741recently posted to the comp.lang.perl.misc newsgroup and the perl 1742bug database at http://rt.perl.org/perlbug/ . There may also be 1743information at http://www.perl.org/ , the Perl Home Page. 1744 1745If you believe you have an unreported bug, please run the B<perlbug> 1746program included with your release. Be sure to trim your bug down 1747to a tiny but sufficient test case. Your bug report, along with the 1748output of C<perl -V>, will be sent off to perlbug@perl.org to be 1749analysed by the Perl porting team. 1750 1751If the bug you are reporting has security implications, which make it 1752inappropriate to send to a publicly archived mailing list, then please send 1753it to perl5-security-report@perl.org. This points to a closed subscription 1754unarchived mailing list, which includes 1755all the core committers, who will be able 1756to help assess the impact of issues, figure out a resolution, and help 1757co-ordinate the release of patches to mitigate or fix the problem across all 1758platforms on which Perl is supported. Please only use this address for 1759security issues in the Perl core, not for modules independently 1760distributed on CPAN. 1761 1762=head1 SEE ALSO 1763 1764The F<Changes> file for an explanation of how to view exhaustive details 1765on what changed. 1766 1767The F<INSTALL> file for how to build Perl. 1768 1769The F<README> file for general stuff. 1770 1771The F<Artistic> and F<Copying> files for copyright information. 1772 1773=cut 1774