Unicode 5.2
[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 version
36
37 Perl is shipped with the latest Unicode version, 5.2, October 2009.  See
38 L<http://www.unicode.org/versions/Unicode5.2.0> for details about this release
39 of Unicode.
40
41 =head2 Unicode properties
42
43 Perl can now handle every Unicode character property.  A new pod,
44 L<perluniprops>, lists all available non-Unihan character properties.  By
45 default the Unihan properties and certain others (deprecated and Unicode
46 internal-only ones) are not exposed.  See below for more details on
47 these; there is also a section in the pod listing them, and why they are
48 not exposed.
49
50 Perl now fully supports the Unicode compound-style of using C<=> and C<:>
51 in writing regular expressions: C<\p{property=value}> and
52 C<\p{property:value}> (both of which mean the same thing).
53
54 Perl now supports fully the Unicode loose matching rules for text
55 between the braces in C<\p{...}> constructs.  In addition, Perl also allows
56 underscores between digits of numbers.
57
58 All the Unicode-defined synonyms for properties and property values are
59 now accepted.
60
61 C<\p{...}> matches using the Canonical_Combining_Class property were
62 completely broken in previous Perls.  This is now fixed.
63
64 In previous Perls, the Unicode Decomposition_Type=Compat property and a
65 Perl extension had the same name, which led to neither matching all the
66 correct values (with more than 100 mistakes in one, and several thousand
67 in the other).  The Perl extension has now been renamed to be
68 Decomposition_Type=Noncanonical (short: dt=noncanon).  It has the same
69 meaning as was previously intended, namely the union of all the
70 non-canonical Decomposition types, with Unicode Compat being just one of
71 those.
72
73 C<\p{Uppercase}> and C<\p{Lowercase}> have been brought into line with the
74 Unicode definitions.  This means they each match a few more characters
75 than previously.
76
77 C<\p{Cntrl}> now matches the same characters as C<\p{Control}>.  This means it
78 no longer will match Private Use (gc=co), Surrogates (gc=cs), nor Format
79 (gc=cf) code points.  The Format code points represent the biggest
80 possible problem.  All but 36 of them are either officially deprecated
81 or strongly discouraged from being used.  Of those 36, likely the most
82 widely used are the soft hyphen (U+00AD), and BOM, ZWSP, ZWNJ, WJ, and
83 similar, plus Bi-directional controls.
84
85 C<\p{Alpha}> now matches the same characters as C<\p{Alphabetic}>.  The Perl
86 definition included a number of things that aren't really alpha (all
87 marks), while omitting many that were.  The Unicode definition is
88 clearly better, so we are switching to it.  As a direct consequence, the
89 definitions of C<\p{Alnum}> and C<\p{Word}> which depend on Alpha also change.
90
91 C<\p{Word}> also now doesn't match certain characters it wasn't supposed
92 to, such as fractions.
93
94 C<\p{Print}> no longer matches the line control characters: tab, lf, cr,
95 ff, vt, and nel.  This brings it in line with the documentation.
96
97 \p{Decomposition_Type=Canonical} now includes the Hangul syllables
98
99 The Numeric type property has been extended to include the Unihan
100 characters.
101
102 There is a new Perl extension, the 'Present_In', or simply 'In'
103 property.  This is an extension of the Unicode Age property, but
104 C<\p{In=5.0}> matches any code point whose usage has been determined as of
105 Unicode version 5.0.  The C<\p{Age=5.0}> only matches code points added in 5.0.
106
107 A number of properties did not have the correct values for unassigned
108 code points.  This is now fixed.  The affected properties are
109 Bidi_Class, East_Asian_Width, Joining_Type, Decomposition_Type,
110 Hangul_Syllable_Type, Numeric_Type, and Line_Break.
111
112 The Default_Ignorable_Code_Point, ID_Continue, and ID_Start properties
113 have been updated to their current definitions.
114
115 Certain properties that are supposed to be Unicode internal-only were
116 erroneously exposed by previous Perls.  Use of these in regular
117 expressions will now generate a deprecated warning message, if those
118 warnings are enabled.  The properties are: Other_Alphabetic,
119 Other_Default_Ignorable_Code_Point, Other_Grapheme_Extend,
120 Other_ID_Continue, Other_ID_Start, Other_Lowercase, Other_Math, and
121 Other_Uppercase.
122
123 An installation can now fairly easily change Perl to operate on any
124 Unicode release.  Perl is shipped with the latest official release, but
125 an installation can now download any prior release, and Perl will work
126 with that.  Instructions are in L<perlunicode>.
127
128 An installation can now fairly easily change which Unicode properties
129 Perl understands.  As mentioned above, certain properties are by default
130 turned off.  These include all the Unihan properties (which should be
131 accessible via the CPAN module Unicode::Unihan) and any deprecated or
132 Unicode internal-only property that Perl has never exposed.
133
134 The files in the To directory are now more clearly marked as being
135 stable, directly usable by applications.  New hash entries in them give
136 the format of the normal entries which allows for easier machine
137 parsing.  Perl can generate files in this directory for any property,
138 though most are suppressed.  An installation can choose to change which
139 get written.   Instructions are in L<perluniprops>.
140
141 =head1 New Platforms
142
143 XXX List any platforms that this version of perl compiles on, that previous
144 versions did not. These will either be enabled by new files in the F<hints/>
145 directories, or new subdirectories and F<README> files at the top level of the
146 source tree.
147
148 =head1 Modules and Pragmata
149
150 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
151 go here, in a list ordered by distribution name. Minimally it should be the
152 module version, but it's more useful to the end user to give a paragraph's
153 summary of the module's changes. In an ideal world, dual-life modules would
154 have a F<Changes> file that could be cribbed.
155
156 =head2 New Modules and Pragmata
157
158 =over 4
159
160 =item C<XXX>
161
162 XXX
163
164 =back
165
166 =head2 Pragmata Changes
167
168 =over 4
169
170 =item C<XXX>
171
172 XXX
173
174 =back
175
176 =head2 Updated Modules
177
178 =over 4
179
180 =item C<XXX>
181
182 XXX
183
184 =back
185
186 =head1 Utility Changes
187
188 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
189 here. Most of these are built within the directories F<utils> and F<x2p>.
190
191 =over 4
192
193 =item F<XXX>
194
195 XXX
196
197 =back
198
199 =head1 New Documentation
200
201 XXX Changes which create B<new> files in F<pod/> go here.
202
203 =over 4
204
205 =item L<XXX>
206
207 XXX
208
209 =back
210
211 =head1 Changes to Existing Documentation
212
213 XXX Changes which significantly change existing files in F<pod/> go here.
214 Any changes to F<pod/perldiag.pod> should go in L</New or Changed Diagnostics>.
215
216
217 =head1 Performance Enhancements
218
219 XXX Changes which enhance performance without changing behaviour go here. There
220 may well be none in a stable release.
221
222 =over 4
223
224 =item *
225
226 XXX
227
228 =back
229
230 =head1 Installation and Configuration Improvements
231
232 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
233 go here.
234
235 =head2 Configuration improvements
236
237 XXX
238
239 =head2 Compilation improvements
240
241 XXX
242
243 =head2 Platform Specific Changes
244
245 =over 4
246
247 =item XXX-some-platform
248
249 XXX
250
251 =back
252
253 =head1 Selected Bug Fixes
254
255 XXX Important bug fixes in the core language are summarised here.
256 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
257 L</Modules and Pragmata>.
258
259 =over 4
260
261 =item *
262
263 XXX
264
265 =back
266
267 =head1 New or Changed Diagnostics
268
269 XXX New or changed warnings emitted by the core's C<C> code go here.
270
271 =over 4
272
273 =item C<XXX>
274
275 XXX
276
277 =back
278
279 =head1 Changed Internals
280
281 XXX Changes which affect the interface available to C<XS> code go here.
282
283 =over 4
284
285 =item *
286
287 XXX
288
289 =back
290
291 =head1 New Tests
292
293 XXX Changes which create B<new> files in F<t/> go here. Changes to
294 existing files in F<t/> aren't worth summarising, although the bugs that
295 they represent may be.
296
297 =over 4
298
299 =item F<XXX>
300
301 XXX
302
303 =back
304
305 =head1 Known Problems
306
307 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
308 tests that had to be C<TODO>ed for the release would be noted here, unless
309 they were specific to a particular platform (see below).
310
311 This is a list of some significant unfixed bugs, which are regressions
312 from either 5.11.3 or 5.11.3.
313
314 =over 4
315
316 =item *
317
318 XXX
319
320 =back
321
322 =head1 Deprecations
323
324 XXX Add any new known deprecations here.
325
326 The following items are now deprecated.
327
328 =over 4
329
330 =item Use of "goto" to jump into a construct is deprecated
331
332 Using C<goto> to jump from an outer scope into an inner
333 scope is now deprecated. This rare use case was causing
334 problems in the implementation of scopes.
335
336 =back
337
338 =head1 Platform Specific Notes
339
340 XXX Any changes specific to a particular platform. VMS and Win32 are the usual
341 stars here. It's probably best to group changes under the same section layout
342 as the main perldelta
343
344 =head1 Obituary
345
346 XXX If any significant core contributor has died, we've added a short obituary
347 here.
348
349 =head1 Acknowledgements
350
351 XXX The list of people to thank goes here.
352
353
354 =head1 Reporting Bugs
355
356 If you find what you think is a bug, you might check the articles
357 recently posted to the comp.lang.perl.misc newsgroup and the perl
358 bug database at http://rt.perl.org/perlbug/ .  There may also be
359 information at http://www.perl.org/ , the Perl Home Page.
360
361 If you believe you have an unreported bug, please run the B<perlbug>
362 program included with your release.  Be sure to trim your bug down
363 to a tiny but sufficient test case.  Your bug report, along with the
364 output of C<perl -V>, will be sent off to perlbug@perl.org to be
365 analysed by the Perl porting team.
366
367 If the bug you are reporting has security implications, which make it
368 inappropriate to send to a publicly archived mailing list, then please send
369 it to perl5-security-report@perl.org. This points to a closed subscription
370 unarchived mailing list, which includes all the core committers, who be able
371 to help assess the impact of issues, figure out a resolution, and help
372 co-ordinate the release of patches to mitigate or fix the problem across all
373 platforms on which Perl is supported. Please only use this address for
374 security issues in the Perl core, not for modules independently
375 distributed on CPAN.
376
377 =head1 SEE ALSO
378
379 The F<Changes> file for an explanation of how to view exhaustive details
380 on what changed.
381
382 The F<INSTALL> file for how to build Perl.
383
384 The F<README> file for general stuff.
385
386 The F<Artistic> and F<Copying> files for copyright information.
387
388 =cut