X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperl5112delta.pod;h=c53a622c4ccd140915095cb8fe1174ddfd0f5963;hb=997e7b23827e884e717eba50697f2e5714034828;hp=aea02f38299a20ec68b8d31d8fa4700dde771b06;hpb=d83f38d8facaed626f27ae5d9f0f66709664dc5e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perl5112delta.pod b/pod/perl5112delta.pod index aea02f3..c53a622 100644 --- a/pod/perl5112delta.pod +++ b/pod/perl5112delta.pod @@ -1,184 +1,229 @@ =head1 NAME -[ Any text flagged as XXX needs to be processed before release. ] - -perldelta - what is new for perl v5.11.2 +perl5112delta - what is new for perl v5.11.2 =head1 DESCRIPTION -This document describes differences between the 5.11.1 release and -the 5.11.2 release. - -=head1 Notice +This document describes differences between the 5.11.1 release and the +5.11.2 release. -XXX Unlikely to need this section. +=head1 Core Enhancements -=head1 Incompatible Changes +=head2 qr overloading + +It is now possible to overload the C operator, that is, +conversion to regexp, like it was already possible to overload +conversion to boolean, string or number of objects. It is invoked when +an object appears on the right hand side of the C<=~> operator, or when +it is interpolated into a regexp. See L. + +=head2 Pluggable keywords + +Extension modules can now cleanly hook into the Perl parser to define +new kinds of keyword-headed expression and compound statement. The +syntax following the keyword is defined entirely by the extension. This +allow a completely non-Perl sublanguage to be parsed inline, with the +right ops cleanly generated. This feature is currently considered +experimental. + +See L for the mechanism. The Perl core +source distribution also includes a new module +L, which implements reverse Polish notation +arithmetic via pluggable keywords. This module is mainly used for test +purposes, and is not normally installed, but also serves as an example +of how to use the new mechanism. + +=head2 APIs for more internals + +The lowest layers of the lexer and parts of the pad system now have C +APIs available to XS extensions. These are necessary to support proper +use of pluggable keywords, but have other uses too. The new APIs are +experimental, and only cover a small proportion of what would be +necessary to take full advantage of the core's facilities in these +areas. It is intended that the Perl 5.13 development cycle will see the +addition of a full range of clean, supported interfaces. + +=head2 Overridable function lookup + +Where an extension module hooks the creation of rv2cv ops to modify the +subroutine lookup process, this now works correctly for bareword +subroutine calls. This means that prototypes on subroutines referenced +this way will be processed correctly. (Previously bareword subroutine +names were initially looked up, for parsing purposes, by an unhookable +mechanism, so extensions could only properly influence subroutine names +that appeared with an C<&> sigil.) -=head2 Use of C<:=> to mean an empty attribute list is now deprecated. +=head1 Modules and Pragmata -An accident of Perl's parser means that these constructions are all equivalent: +=head2 New Modules and Pragmata - my $pi := 4; - my $pi : = 4; - my $pi : = 4; +=over 4 -with the C<:> being treated as the start of an attribute list, which ends -before the C<=>. As whitespace is not significant here, all are parsed as an -empty attribute list, hence all the above are equivalent to, and better written -as +=item C - my $pi = 4; +Preserves legacy behaviors or enable new non-default behaviors. +Currently the only behaviour concerns semantics for the 128 characters +on ASCII systems that have the 8th bit set. -because no attribute processing is done for an empty list. +=back -As is, this means that C<:=> cannot be used as a new token, without silently -changing the meaning of existing code. Hence that particular form is now -deprecated, and will become a syntax error. If it is absolutely necessary to -have empty attribute lists (for example, because of a code generator) the -avoid the warning by adding a space before the C<=>. +=head2 Pragmata Changes -=head1 Core Enhancements +=over 4 -XXX New core language features go here. Summarise user-visible core language -enhancements. Particularly prominent performance optimisations could go -here, but most should go in the L section. +=item C -=head1 New Platforms +Supports %.0f formatting internally. -XXX List any platforms that this version of perl compiles on, that previous -versions did not. These will either be enabled by new files in the F -directories, or new subdirectories and F files at the top level of the -source tree. +=item C -=head1 Modules and Pragmata +Allow overloading of 'qr'. -XXX All changes to installed files in F, F, F and F -go here, in a list ordered by distribution name. Minimally it should be the -module version, but it's more useful to the end user to give a paragraph's -summary of the module's changes. In an ideal world, dual-life modules would -have a F file that could be cribbed. +=back -=head2 New Modules and Pragmata +=head2 Updated Modules =over 4 -=item C +=item C -XXX +Optimize reversing an array in-place, avoid using defined %hash in core +code and tests. -=back +=item C -=head2 Pragmata Changes +Teach B::Deparse about in-place reverse. -=over 4 +=item C -=item C +Refine Carp caller() fix and add tests. -XXX +=item C -=back +Updated to 2.022. -=head2 Updated Modules +=item C -=over 4 +Updated to 0.89_09. -=item C +=item C -XXX +Updated to 2.38. -=back +=item C -=head1 Utility Changes +Updated to 0.27. -XXX Changes to installed programs such as F and F go -here. Most of these are built within the directories F and F. +=item C -=over 4 +Add EXISTS and DELETE methods to Env.pm. -=item F +=item C -XXX +Updated to 0.22. -=back +=item C -=head1 New Documentation +Correctly document export of I18N::Langinfo. -XXX Changes which create B files in F go here. +=item C -=over 4 +In I18N::LangTags::Detect, avoid using defined @array and defined +%hash. -=item L +=item C -XXX +Updated to 2.022. -=back +=item C -=head1 Changes to Existing Documentation +Updated to 0.54. -XXX Changes which significantly change existing files in F go here. -Any changes to F should go in L. +=item C +Updated to 1.22. -=head1 Performance Enhancements +=item C -XXX Changes which enhance performance without changing behaviour go here. There -may well be none in a stable release. +In Locale::Maketext, avoid using defined @array and defined %hash. +Convert the odd Locale::Maketext test out from Test to Test::More. -=over 4 +=item C -=item * +Updated to 0.35_08. -XXX +=item C -=back +Implemented is_deprecated(). -=head1 Installation and Configuration Improvements +=item C -XXX Changes to F, F, F, and analogous tools -go here. +Updated to 3.10. -=head2 Configuration improvements +=item C -XXX +Updated to 1.22. -=head2 Compilation improvements +=item C -XXX +Updated to 2.16. -=head2 Platform Specific Changes +=back + +=head1 Utility Changes =over 4 -=item XXX-some-platform +=item F -XXX +Fixed bugs with the match() operator in list context, remove mention of +$[. =back -=head1 Selected Bug Fixes - -XXX Important bug fixes in the core language are summarised here. -Bug fixes in files in F and F are best summarised in -L. +=head1 Performance Enhancements =over 4 =item * -XXX +Reversing an array to itself (as in C<@a = reverse @a>) in void context +now happens in-place and is several orders of magnitude faster than it +used to be. It will also preserve non-existent elements whenever +possible, i.e. for non magical arrays or tied arrays with C and +C methods. =back =head1 New or Changed Diagnostics -XXX New or changed warnings emitted by the core's C code go here. +Several new diagnostics, see L for details. =over 4 -=item C +=item C + +=item C + +=item C + +=item C + +=item C + +=item C + +=item C + +=item C + +=back + +One diagnostic has been removed: + +=over 4 -XXX +=item C =back @@ -188,102 +233,111 @@ XXX =item * -C has been removed from the public API. Calling it now generates -a deprecation warning, and it will be removed in a future release. Although -listed as part of the API, it was never documented, and only ever used in -F, and prior to 5.10, F. In core, it has been replaced by a -static function. +C has been removed from the public API. Calling it now +generates a deprecation warning, and it will be removed in a future +release. Although listed as part of the API, it was never documented, +and only ever used in F, and prior to 5.10, F. In +core, it has been replaced by a static function. =back =head1 New Tests -XXX Changes which create B files in F go here. Changes to -existing files in F aren't worth summarising, although the bugs that -they represent may be. - =over 4 -=item F +=item F -XXX +Test that a bare readdir in while loop sets $_. =back =head1 Known Problems -XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any -tests that had to be Ced for the release would be noted here, unless -they were specific to a particular platform (see below). - -This is a list of some significant unfixed bugs, which are regressions -from either 5.10.1 or 5.11.1. - =over 4 -=item * +=item Known test failures on VMS -XXX +Perl 5.11.2 fails a small set of core and CPAN tests as of this +release. With luck, that'll be sorted out for 5.11.3. =back =head1 Deprecations -XXX Add any new known deprecations here. - The following items are now deprecated. -=over 4 - -=item * +=head2 Use of C<:=> to mean an empty attribute list is now deprecated. -XXX +An accident of Perl's parser meant that these constructions were all +equivalent: -=back + my $pi := 4; + my $pi : = 4; + my $pi : = 4; -=head1 Platform Specific Notes +with the C<:> being treated as the start of an attribute list, which +ends before the C<=>. As whitespace is not significant here, all are +parsed as an empty attribute list, hence all the above are equivalent +to, and better written as -XXX Any changes specific to a particular platform. VMS and Win32 are the usual -stars here. It's probably best to group changes under the same section layout -as the main perldelta + my $pi = 4; -=head1 Obituary +because no attribute processing is done for an empty list. -XXX If any significant core contributor has died, we've added a short obituary -here. +As is, this meant that C<:=> cannot be used as a new token, without +silently changing the meaning of existing code. Hence that particular +form is now deprecated, and will become a syntax error. If it is +absolutely necessary to have empty attribute lists (for example, +because of a code generator) then avoid the warning by adding a space +before the C<=>. =head1 Acknowledgements -XXX The list of people to thank goes here. +Perl 5.11.2 represents approximately 3 weeks development since Perl +5.11.1 and contains 29,992 lines of changes across 458 files from 38 +authors and committers: + +Abhijit Menon-Sen, Abigail, Ben Morrow, Bo Borgerson, Brad Gilbert, +Bram, Chris Williams, Craig A. Berry, Daniel Frederick Crisman, Dave +Rolsky, David E. Wheeler, David Golden, Eric Brine, Father +Chrysostomos, Frank Wiegand, Gerard Goossen, Gisle Aas, Graham Barr, +Harmen, H.Merijn Brand, Jan Dubois, Jerry D. Hedden, Jesse Vincent, +Karl Williamson, Kevin Ryde, Leon Brocard, Nicholas Clark, Paul +Marquess, Philippe Bruhat, Rafael Garcia-Suarez, Sisyphus, Steffen +Mueller, Steve Hay, Steve Peters, Vincent Pit, Yuval Kogman, Yves +Orton, and Zefram. +Many of the changes included in this version originated in the CPAN +modules included in Perl's core. We're grateful to the entire CPAN +community for helping Perl to flourish. =head1 Reporting Bugs If you find what you think is a bug, you might check the articles -recently posted to the comp.lang.perl.misc newsgroup and the perl -bug database at http://rt.perl.org/perlbug/ . There may also be -information at http://www.perl.org/ , the Perl Home Page. +recently posted to the comp.lang.perl.misc newsgroup and the perl bug +database at http://rt.perl.org/perlbug/ . There may also be information +at http://www.perl.org/ , the Perl Home Page. If you believe you have an unreported bug, please run the B -program included with your release. Be sure to trim your bug down -to a tiny but sufficient test case. Your bug report, along with the -output of C, will be sent off to perlbug@perl.org to be -analysed by the Perl porting team. +program included with your release. Be sure to trim your bug down to a +tiny but sufficient test case. Your bug report, along with the output +of C, will be sent off to perlbug@perl.org to be analysed by +the Perl porting team. If the bug you are reporting has security implications, which make it -inappropriate to send to a publicly archived mailing list, then please send -it to perl5-security-report@perl.org. This points to a closed subscription -unarchived mailing list, which includes all the core committers, who be able -to help assess the impact of issues, figure out a resolution, and help -co-ordinate the release of patches to mitigate or fix the problem across all -platforms on which Perl is supported. Please only use this address for -security issues in the Perl core, not for modules independently -distributed on CPAN. +inappropriate to send to a publicly archived mailing list, then please +send it to perl5-security-report@perl.org. This points to a closed +subscription unarchived mailing list, which includes all the core +committers, who be able to help assess the impact of issues, figure out +a resolution, and help co-ordinate the release of patches to mitigate +or fix the problem across all platforms on which Perl is supported. +Please only use this address for security issues in the Perl core, not +for modules independently distributed on CPAN. =head1 SEE ALSO -The F file for an explanation of how to view exhaustive details -on what changed. +The F file for an explanation of how to view exhaustive +details on what changed. The F file for how to build Perl.