3 [ this is a template for a new perldelta file. Any text flagged as
4 XXX needs to be processed before release. ]
6 perldelta - what is new for perl v5.11.3
10 This document describes differences between the 5.11.3 release and
13 If you are upgrading from an earlier release such as 5.11.3, first read
14 the L<perl5XXXdelta>, which describes differences between 5.11.3 and
19 XXX Any important notices here
21 =head1 Incompatible Changes
23 XXX For a release on a stable branch, this section aspires to be:
25 There are no changes intentionally incompatible with 5.11.3. If any
26 exist, they are bugs and reports are welcome.
29 =head1 Core Enhancements
31 XXX New core language features go here. Summarise user-visible core language
32 enhancements. Particularly prominent performance optimisations could go
33 here, but most should go in the L</Performance Enhancements> section.
35 =head2 Unicode properties
37 Perl can now handle every Unicode character property. A new pod,
38 L<perluniprops>, lists all available non-Unihan character properties. By
39 default the Unihan properties and certain others (deprecated and Unicode
40 internal-only ones) are not exposed. See below for more details on
41 these; there is also a section in the pod listing them, and why they are
44 Perl now fully supports the Unicode compound-style of using C<=> and C<:>
45 in writing regular expressions: C<\p{property=value}> and
46 C<\p{property:value}> (both of which mean the same thing).
48 Perl now supports fully the Unicode loose matching rules for text
49 between the braces in C<\p{...}> constructs. In addition, Perl also allows
50 underscores between digits of numbers.
52 All the Unicode-defined synonyms for properties and property values are
55 C<\p{...}> matches using the Canonical_Combining_Class property were
56 completely broken in previous Perls. This is now fixed.
58 In previous Perls, the Unicode Decomposition_Type=Compat property and a
59 Perl extension had the same name, which led to neither matching all the
60 correct values (with more than 100 mistakes in one, and several thousand
61 in the other). The Perl extension has now been renamed to be
62 Decomposition_Type=Noncanonical (short: dt=noncanon). It has the same
63 meaning as was previously intended, namely the union of all the
64 non-canonical Decomposition types, with Unicode Compat being just one of
67 C<\p{Uppercase}> and C<\p{Lowercase}> have been brought into line with the
68 Unicode definitions. This means they each match a few more characters
71 C<\p{Cntrl}> now matches the same characters as C<\p{Control}>. This means it
72 no longer will match Private Use (gc=co), Surrogates (gc=cs), nor Format
73 (gc=cf) code points. The Format code points represent the biggest
74 possible problem. All but 36 of them are either officially deprecated
75 or strongly discouraged from being used. Of those 36, likely the most
76 widely used are the soft hyphen (U+00AD), and BOM, ZWSP, ZWNJ, WJ, and
77 similar, plus Bi-directional controls.
79 C<\p{Alpha}> now matches the same characters as C<\p{Alphabetic}>. The Perl
80 definition included a number of things that aren't really alpha (all
81 marks), while omitting many that were. The Unicode definition is
82 clearly better, so we are switching to it. As a direct consequence, the
83 definitions of C<\p{Alnum}> and C<\p{Word}> which depend on Alpha also change.
85 C<\p{Word}> also now doesn't match certain characters it wasn't supposed
86 to, such as fractions.
88 C<\p{Print}> no longer matches the line control characters: tab, lf, cr,
89 ff, vt, and nel. This brings it in line with the documentation.
91 \p{Decomposition_Type=Canonical} now includes the Hangul syllables
93 The Numeric type property has been extended to include the Unihan
96 There is a new Perl extension, the 'Present_In', or simply 'In'
97 property. This is an extension of the Unicode Age property, but
98 C<\p{In=5.0}> matches any code point whose usage has been determined as of
99 Unicode version 5.0. The C<\p{Age=5.0}> only matches code points added in 5.0.
101 A number of properties did not have the correct values for unassigned
102 code points. This is now fixed. The affected properties are
103 Bidi_Class, East_Asian_Width, Joining_Type, Decomposition_Type,
104 Hangul_Syllable_Type, Numeric_Type, and Line_Break.
106 The Default_Ignorable_Code_Point, ID_Continue, and ID_Start properties
107 have been updated to their current definitions.
109 Certain properties that are supposed to be Unicode internal-only were
110 erroneously exposed by previous Perls. Use of these in regular
111 expressions will now generate a deprecated warning message, if those
112 warnings are enabled. The properties are: Other_Alphabetic,
113 Other_Default_Ignorable_Code_Point, Other_Grapheme_Extend,
114 Other_ID_Continue, Other_ID_Start, Other_Lowercase, Other_Math, and
117 An installation can now fairly easily change Perl to operate on any
118 Unicode release. Perl is shipped with the latest official release, but
119 an installation can now download any prior release, and Perl will work
120 with that. Instructions are in L<perlunicode>.
122 An installation can now fairly easily change which Unicode properties
123 Perl understands. As mentioned above, certain properties are by default
124 turned off. These include all the Unihan properties (which should be
125 accessible via the CPAN module Unicode::Unihan) and any deprecated or
126 Unicode internal-only property that Perl has never exposed.
128 The files in the To directory are now more clearly marked as being
129 stable, directly usable by applications. New hash entries in them give
130 the format of the normal entries which allows for easier machine
131 parsing. Perl can generate files in this directory for any property,
132 though most are suppressed. An installation can choose to change which
133 get written. Instructions are in L<perluniprops>.
137 XXX List any platforms that this version of perl compiles on, that previous
138 versions did not. These will either be enabled by new files in the F<hints/>
139 directories, or new subdirectories and F<README> files at the top level of the
142 =head1 Modules and Pragmata
144 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
145 go here, in a list ordered by distribution name. Minimally it should be the
146 module version, but it's more useful to the end user to give a paragraph's
147 summary of the module's changes. In an ideal world, dual-life modules would
148 have a F<Changes> file that could be cribbed.
150 =head2 New Modules and Pragmata
160 =head2 Pragmata Changes
170 =head2 Updated Modules
180 =head1 Utility Changes
182 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
183 here. Most of these are built within the directories F<utils> and F<x2p>.
193 =head1 New Documentation
195 XXX Changes which create B<new> files in F<pod/> go here.
205 =head1 Changes to Existing Documentation
207 XXX Changes which significantly change existing files in F<pod/> go here.
208 Any changes to F<pod/perldiag.pod> should go in L</New or Changed Diagnostics>.
211 =head1 Performance Enhancements
213 XXX Changes which enhance performance without changing behaviour go here. There
214 may well be none in a stable release.
224 =head1 Installation and Configuration Improvements
226 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
229 =head2 Configuration improvements
233 =head2 Compilation improvements
237 =head2 Platform Specific Changes
241 =item XXX-some-platform
247 =head1 Selected Bug Fixes
249 XXX Important bug fixes in the core language are summarised here.
250 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
251 L</Modules and Pragmata>.
261 =head1 New or Changed Diagnostics
263 XXX New or changed warnings emitted by the core's C<C> code go here.
273 =head1 Changed Internals
275 XXX Changes which affect the interface available to C<XS> code go here.
287 XXX Changes which create B<new> files in F<t/> go here. Changes to
288 existing files in F<t/> aren't worth summarising, although the bugs that
289 they represent may be.
299 =head1 Known Problems
301 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
302 tests that had to be C<TODO>ed for the release would be noted here, unless
303 they were specific to a particular platform (see below).
305 This is a list of some significant unfixed bugs, which are regressions
306 from either 5.11.3 or 5.11.3.
318 XXX Add any new known deprecations here.
320 The following items are now deprecated.
324 =item Use of "goto" to jump into a construct is deprecated
326 Using C<goto> to jump from an outer scope into an inner
327 scope is now deprecated. This rare use case was causing
328 problems in the implementation of scopes.
332 =head1 Platform Specific Notes
334 XXX Any changes specific to a particular platform. VMS and Win32 are the usual
335 stars here. It's probably best to group changes under the same section layout
336 as the main perldelta
340 XXX If any significant core contributor has died, we've added a short obituary
343 =head1 Acknowledgements
345 XXX The list of people to thank goes here.
348 =head1 Reporting Bugs
350 If you find what you think is a bug, you might check the articles
351 recently posted to the comp.lang.perl.misc newsgroup and the perl
352 bug database at http://rt.perl.org/perlbug/ . There may also be
353 information at http://www.perl.org/ , the Perl Home Page.
355 If you believe you have an unreported bug, please run the B<perlbug>
356 program included with your release. Be sure to trim your bug down
357 to a tiny but sufficient test case. Your bug report, along with the
358 output of C<perl -V>, will be sent off to perlbug@perl.org to be
359 analysed by the Perl porting team.
361 If the bug you are reporting has security implications, which make it
362 inappropriate to send to a publicly archived mailing list, then please send
363 it to perl5-security-report@perl.org. This points to a closed subscription
364 unarchived mailing list, which includes all the core committers, who be able
365 to help assess the impact of issues, figure out a resolution, and help
366 co-ordinate the release of patches to mitigate or fix the problem across all
367 platforms on which Perl is supported. Please only use this address for
368 security issues in the Perl core, not for modules independently
373 The F<Changes> file for an explanation of how to view exhaustive details
376 The F<INSTALL> file for how to build Perl.
378 The F<README> file for general stuff.
380 The F<Artistic> and F<Copying> files for copyright information.