=head1 NAME [ this is a template for a new perldelta file. Any text flagged as XXX needs to be processed before release. ] perldelta - what is new for perl v5.11.3 =head1 DESCRIPTION This document describes differences between the 5.11.3 release and the 5.11.3 release. If you are upgrading from an earlier release such as 5.11.3, first read the L, which describes differences between 5.11.3 and 5.10.0 =head1 Notice XXX Any important notices here =head1 Incompatible Changes XXX For a release on a stable branch, this section aspires to be: There are no changes intentionally incompatible with 5.11.3. If any exist, they are bugs and reports are welcome. =head1 Core Enhancements 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. =head2 Unicode version Perl is shipped with the latest Unicode version, 5.2, October 2009. See L for details about this release of Unicode. =head2 Unicode properties Perl can now handle every Unicode character property. A new pod, L, lists all available non-Unihan character properties. By default the Unihan properties and certain others (deprecated and Unicode internal-only ones) are not exposed. See below for more details on these; there is also a section in the pod listing them, and why they are not exposed. Perl now fully supports the Unicode compound-style of using C<=> and C<:> in writing regular expressions: C<\p{property=value}> and C<\p{property:value}> (both of which mean the same thing). Perl now supports fully the Unicode loose matching rules for text between the braces in C<\p{...}> constructs. In addition, Perl also allows underscores between digits of numbers. All the Unicode-defined synonyms for properties and property values are now accepted. C<\p{...}> matches using the Canonical_Combining_Class property were completely broken in previous Perls. This is now fixed. In previous Perls, the Unicode Decomposition_Type=Compat property and a Perl extension had the same name, which led to neither matching all the correct values (with more than 100 mistakes in one, and several thousand in the other). The Perl extension has now been renamed to be Decomposition_Type=Noncanonical (short: dt=noncanon). It has the same meaning as was previously intended, namely the union of all the non-canonical Decomposition types, with Unicode Compat being just one of those. C<\p{Uppercase}> and C<\p{Lowercase}> have been brought into line with the Unicode definitions. This means they each match a few more characters than previously. C<\p{Cntrl}> now matches the same characters as C<\p{Control}>. This means it no longer will match Private Use (gc=co), Surrogates (gc=cs), nor Format (gc=cf) code points. The Format code points represent the biggest possible problem. All but 36 of them are either officially deprecated or strongly discouraged from being used. Of those 36, likely the most widely used are the soft hyphen (U+00AD), and BOM, ZWSP, ZWNJ, WJ, and similar, plus Bi-directional controls. C<\p{Alpha}> now matches the same characters as C<\p{Alphabetic}>. The Perl definition included a number of things that aren't really alpha (all marks), while omitting many that were. The Unicode definition is clearly better, so we are switching to it. As a direct consequence, the definitions of C<\p{Alnum}> and C<\p{Word}> which depend on Alpha also change. C<\p{Word}> also now doesn't match certain characters it wasn't supposed to, such as fractions. C<\p{Print}> no longer matches the line control characters: tab, lf, cr, ff, vt, and nel. This brings it in line with the documentation. \p{Decomposition_Type=Canonical} now includes the Hangul syllables The Numeric type property has been extended to include the Unihan characters. There is a new Perl extension, the 'Present_In', or simply 'In' property. This is an extension of the Unicode Age property, but C<\p{In=5.0}> matches any code point whose usage has been determined as of Unicode version 5.0. The C<\p{Age=5.0}> only matches code points added in 5.0. A number of properties did not have the correct values for unassigned code points. This is now fixed. The affected properties are Bidi_Class, East_Asian_Width, Joining_Type, Decomposition_Type, Hangul_Syllable_Type, Numeric_Type, and Line_Break. The Default_Ignorable_Code_Point, ID_Continue, and ID_Start properties have been updated to their current definitions. Certain properties that are supposed to be Unicode internal-only were erroneously exposed by previous Perls. Use of these in regular expressions will now generate a deprecated warning message, if those warnings are enabled. The properties are: Other_Alphabetic, Other_Default_Ignorable_Code_Point, Other_Grapheme_Extend, Other_ID_Continue, Other_ID_Start, Other_Lowercase, Other_Math, and Other_Uppercase. An installation can now fairly easily change Perl to operate on any Unicode release. Perl is shipped with the latest official release, but an installation can now download any prior release, and Perl will work with that. Instructions are in L. An installation can now fairly easily change which Unicode properties Perl understands. As mentioned above, certain properties are by default turned off. These include all the Unihan properties (which should be accessible via the CPAN module Unicode::Unihan) and any deprecated or Unicode internal-only property that Perl has never exposed. The files in the To directory are now more clearly marked as being stable, directly usable by applications. New hash entries in them give the format of the normal entries which allows for easier machine parsing. Perl can generate files in this directory for any property, though most are suppressed. An installation can choose to change which get written. Instructions are in L. =head1 New Platforms 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. =head1 Modules and Pragmata 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. =head2 New Modules and Pragmata =over 4 =item C XXX =back =head2 Pragmata Changes =over 4 =item C XXX =back =head2 Updated Modules =over 4 =item C XXX =back =head1 Utility Changes XXX Changes to installed programs such as F and F go here. Most of these are built within the directories F and F. =over 4 =item F XXX =back =head1 New Documentation XXX Changes which create B files in F go here. =over 4 =item L XXX =back =head1 Changes to Existing Documentation XXX Changes which significantly change existing files in F go here. Any changes to F should go in L. =head1 Performance Enhancements XXX Changes which enhance performance without changing behaviour go here. There may well be none in a stable release. =over 4 =item * XXX =back =head1 Installation and Configuration Improvements XXX Changes to F, F, F, and analogous tools go here. =head2 Configuration improvements XXX =head2 Compilation improvements XXX =head2 Platform Specific Changes =over 4 =item XXX-some-platform XXX =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. =over 4 =item * XXX =back =head1 New or Changed Diagnostics XXX New or changed warnings emitted by the core's C code go here. =over 4 =item C XXX =back =head1 Changed Internals XXX Changes which affect the interface available to C code go here. =over 4 =item * XXX =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 XXX =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.11.3 or 5.11.3. =over 4 =item * XXX =back =head1 Deprecations XXX Add any new known deprecations here. The following items are now deprecated. =over 4 =item Use of "goto" to jump into a construct is deprecated Using C to jump from an outer scope into an inner scope is now deprecated. This rare use case was causing problems in the implementation of scopes. =back =head1 Platform Specific Notes 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 =head1 Obituary XXX If any significant core contributor has died, we've added a short obituary here. =head1 Acknowledgements XXX The list of people to thank goes here. =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. 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. 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. =head1 SEE ALSO The F file for an explanation of how to view exhaustive details on what changed. The F file for how to build Perl. The F file for general stuff. The F and F files for copyright information. =cut