Add deprecation of goto to inner scopes to perldelta
[p5sagit/p5-mst-13.2.git] / pod / perl5113delta.pod
1 =head1 NAME
2
3 [ this is a template for a new perldelta file. Any text flagged as
4 XXX needs to be processed before release. ]
5
6 perldelta - what is new for perl v5.11.3
7
8 =head1 DESCRIPTION
9
10 This document describes differences between the 5.11.3 release and
11 the 5.11.3 release.
12
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
15 5.10.0
16
17 =head1 Notice
18
19 XXX Any important notices here
20
21 =head1 Incompatible Changes
22
23 XXX For a release on a stable branch, this section aspires to be:
24
25     There are no changes intentionally incompatible with 5.11.3. If any
26     exist, they are bugs and reports are welcome.
27
28
29 =head1 Core Enhancements
30
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.
34
35 =head2 Unicode properties
36
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
42 not exposed.
43
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).
47
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.
51
52 All the Unicode-defined synonyms for properties and property values are
53 now accepted.
54
55 C<\p{...}> matches using the Canonical_Combining_Class property were
56 completely broken in previous Perls.  This is now fixed.
57
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
65 those.
66
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
69 than previously.
70
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.
78
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.
84
85 C<\p{Word}> also now doesn't match certain characters it wasn't supposed
86 to, such as fractions.
87
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.
90
91 \p{Decomposition_Type=Canonical} now includes the Hangul syllables
92
93 The Numeric type property has been extended to include the Unihan
94 characters.
95
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.
100
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.
105
106 The Default_Ignorable_Code_Point, ID_Continue, and ID_Start properties
107 have been updated to their current definitions.
108
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
115 Other_Uppercase.
116
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>.
121
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.
127
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>.
134
135 =head1 New Platforms
136
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
140 source tree.
141
142 =head1 Modules and Pragmata
143
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.
149
150 =head2 New Modules and Pragmata
151
152 =over 4
153
154 =item C<XXX>
155
156 XXX
157
158 =back
159
160 =head2 Pragmata Changes
161
162 =over 4
163
164 =item C<XXX>
165
166 XXX
167
168 =back
169
170 =head2 Updated Modules
171
172 =over 4
173
174 =item C<XXX>
175
176 XXX
177
178 =back
179
180 =head1 Utility Changes
181
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>.
184
185 =over 4
186
187 =item F<XXX>
188
189 XXX
190
191 =back
192
193 =head1 New Documentation
194
195 XXX Changes which create B<new> files in F<pod/> go here.
196
197 =over 4
198
199 =item L<XXX>
200
201 XXX
202
203 =back
204
205 =head1 Changes to Existing Documentation
206
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>.
209
210
211 =head1 Performance Enhancements
212
213 XXX Changes which enhance performance without changing behaviour go here. There
214 may well be none in a stable release.
215
216 =over 4
217
218 =item *
219
220 XXX
221
222 =back
223
224 =head1 Installation and Configuration Improvements
225
226 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
227 go here.
228
229 =head2 Configuration improvements
230
231 XXX
232
233 =head2 Compilation improvements
234
235 XXX
236
237 =head2 Platform Specific Changes
238
239 =over 4
240
241 =item XXX-some-platform
242
243 XXX
244
245 =back
246
247 =head1 Selected Bug Fixes
248
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>.
252
253 =over 4
254
255 =item *
256
257 XXX
258
259 =back
260
261 =head1 New or Changed Diagnostics
262
263 XXX New or changed warnings emitted by the core's C<C> code go here.
264
265 =over 4
266
267 =item C<XXX>
268
269 XXX
270
271 =back
272
273 =head1 Changed Internals
274
275 XXX Changes which affect the interface available to C<XS> code go here.
276
277 =over 4
278
279 =item *
280
281 XXX
282
283 =back
284
285 =head1 New Tests
286
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.
290
291 =over 4
292
293 =item F<XXX>
294
295 XXX
296
297 =back
298
299 =head1 Known Problems
300
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).
304
305 This is a list of some significant unfixed bugs, which are regressions
306 from either 5.11.3 or 5.11.3.
307
308 =over 4
309
310 =item *
311
312 XXX
313
314 =back
315
316 =head1 Deprecations
317
318 XXX Add any new known deprecations here.
319
320 The following items are now deprecated.
321
322 =over 4
323
324 =item Use of "goto" to jump into a construct is deprecated
325
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.
329
330 =back
331
332 =head1 Platform Specific Notes
333
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
337
338 =head1 Obituary
339
340 XXX If any significant core contributor has died, we've added a short obituary
341 here.
342
343 =head1 Acknowledgements
344
345 XXX The list of people to thank goes here.
346
347
348 =head1 Reporting Bugs
349
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.
354
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.
360
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
369 distributed on CPAN.
370
371 =head1 SEE ALSO
372
373 The F<Changes> file for an explanation of how to view exhaustive details
374 on what changed.
375
376 The F<INSTALL> file for how to build Perl.
377
378 The F<README> file for general stuff.
379
380 The F<Artistic> and F<Copying> files for copyright information.
381
382 =cut