This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Document the flip of problematic code points handling
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 [ this is a template for a new perldelta file. Any text flagged as
6 XXX needs to be processed before release. ]
7
8 perldelta - what is new for perl v5.13.9
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.13.8 release and
13 the 5.13.9 release.
14
15 If you are upgrading from an earlier release such as 5.13.7, first read
16 L<perl5138delta>, which describes differences between 5.13.7 and
17 5.13.8.
18
19 =head1 Notice
20
21 XXX Any important notices here
22
23 =head1 Core Enhancements
24
25 XXX New core language features go here. Summarise user-visible core language
26 enhancements. Particularly prominent performance optimisations could go
27 here, but most should go in the L</Performance Enhancements> section.
28
29 With this release, Perl is adopting a model that any unsigned value can
30 be encoded internally as utf8 without warnings -- not just the ones that
31 are legal in Unicode.
32 However, unless UTF8 warnings have been
33 explicitly lexically turned off, outputting or performing a
34 Unicode-defined operation (such as upper-casing) on such a code point
35 will generate a warning.  Attempting to input these using strict rules
36 (such as with the C<:encoding('UTF-8')> layer) will continue to fail.
37 Prior to this release the handling was very inconsistent, and incorrect
38 in places.  Also, the Unicode non-characters, some of which previously were
39 erroneously considered illegal in places by Perl, contrary to the Unicode
40 standard, are now always legal internally.  But inputting or outputting
41 them will work the same as for the non-legal Unicode code points, as the
42 Unicode standard says they are illegal for "open interchange".
43
44 [ List each enhancement as a =head2 entry ]
45
46 =head1 Security
47
48 XXX Any security-related notices go here.  In particular, any security
49 vulnerabilities closed should be noted here rather than in the
50 L</Selected Bug Fixes> section.
51
52 [ List each security issue as a =head2 entry ]
53
54 =head1 Incompatible Changes
55
56 XXX For a release on a stable branch, this section aspires to be:
57
58     There are no changes intentionally incompatible with 5.XXX.XXX. If any
59     exist, they are bugs and reports are welcome.
60
61 [ List each incompatible change as a =head2 entry ]
62
63 =head1 Deprecations
64
65 XXX Any deprecated features, syntax, modules etc. should be listed here.
66 In particular, deprecated modules should be listed here even if they are
67 listed as an updated module in the L</Modules and Pragmata> section.
68
69 [ List each deprecation as a =head2 entry ]
70
71 =head1 Performance Enhancements
72
73 XXX Changes which enhance performance without changing behaviour go here. There
74 may well be none in a stable release.
75
76 [ List each enhancement as a =item entry ]
77
78 =over 4
79
80 =item *
81
82 XXX
83
84 =back
85
86 =head1 Modules and Pragmata
87
88 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
89 go here.  If Module::CoreList is updated, generate an initial draft of the
90 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
91 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
92 below.  A paragraph summary for important changes should then be added by hand.
93 In an ideal world, dual-life modules would have a F<Changes> file that could be
94 cribbed.
95
96 [ Within each section, list entries as a =item entry ]
97
98 =head2 New Modules and Pragmata
99
100 =over 4
101
102 =item *
103
104 L<CPAN::Meta::YAML> 0.002 has been added as a dual-life module.  It supports a
105 subset of YAML sufficient for reading and writing META.yml and MYMETA.yml files
106 included with CPAN distributions or generated by the module installation
107 toolchain. It should not be used for any other general YAML parsing or
108 generation task.
109
110 =item *
111
112 L<Module::Metadata> 1.000003 has been added as a dual-life module.  It gathers
113 package and POD information from Perl module files.  It is a standalone module
114 based on Module::Build::ModuleInfo for use by other module installation
115 toolchain components.  Module::Build::ModuleInfo has been deprecated in
116 favor of this module instead.
117
118 =item *
119
120 L<Perl::OSType> 1.002 has been added as a dual-life module.  It maps Perl
121 operating system names (e.g. 'dragonfly' or 'MSWin32') to more generic types
122 with standardized names (e.g.  "Unix" or "Windows").  It has been refactored
123 out of Module::Build and ExtUtils::CBuilder and consolidates such mappings into
124 a single location for easier maintenance.
125
126 =back
127
128 =head2 Updated Modules and Pragmata
129
130 =over 4
131
132 =item *
133
134 C<Archive::Extract> has been upgraded from version 0.46 to 0.48
135
136 =item *
137
138 C<Archive::Tar> has been upgraded from version 1.74 to 1.76
139
140 =item *
141
142 C<CGI> has been upgraded from version 3.50 to 3.51
143
144 =item *
145
146 C<CPANPLUS> has been upgraded from version 0.9010 to 0.9011
147
148 =item *
149
150 C<CPANPLUS::Dist::Build> has been upgraded from 0.50 to 0.52
151
152 =item *
153
154 C<Encode> has been upgraded from version 2.40 to 2.42.
155 Now, all 66 Unicode non-characters are treated the same way U+FFFF has
156 always been treated; if it was disallowed, all 66 are disallowed; if it
157 warned, all 66 warn.
158
159 =item *
160
161 C<File::Fetch> has been upgraded from version 0.28 to 0.30
162
163 =item *
164
165 C<IPC::Cmd> has been upgraded from version 0.66 to 0.68
166
167 =item *
168
169 C<Log::Message> has been upgraded from version 0.02 to 0.04
170
171 =item *
172
173 C<Module::Load::Conditional> has been upgraded from 0.38 to 0.40
174
175 =item *
176
177 C<Object::Accessor> has been upgraded from 0.36 to 0.38
178
179 =item *
180
181 C<Params::Check> has been upgraded from 0.26 to 0.28
182
183 =item *
184
185 C<Term::UI> has been upgraded from 0.20 to 0.22
186
187 =item *
188
189 C<threads> has been upgraded from version 1.81_03 to 1.82
190
191 =item *
192
193 C<threads::shared> has been upgraded from version 1.35 to 1.36
194
195 =item *
196
197 C<Time::Local> has been upgraded from version 1.1901_01 to 1.2000.
198
199 =back
200
201 =head2 Removed Modules and Pragmata
202
203 =over 4
204
205 =item *
206
207 XXX
208
209 =back
210
211 =head1 Documentation
212
213 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
214 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
215
216 =head2 New Documentation
217
218 XXX Changes which create B<new> files in F<pod/> go here.
219
220 =head3 L<XXX>
221
222 XXX Description of the purpose of the new file here
223
224 =head2 Changes to Existing Documentation
225
226 XXX Changes which significantly change existing files in F<pod/> go here.
227 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
228 section.
229
230 =head3 L<XXX>
231
232 =over 4
233
234 =item *
235
236 XXX Description of the change here
237
238 =back
239
240 =head1 Diagnostics
241
242 The following additions or changes have been made to diagnostic output,
243 including warnings and fatal error messages.  For the complete list of
244 diagnostic messages, see L<perldiag>.
245
246 XXX New or changed warnings emitted by the core's C<C> code go here. Also
247 include any changes in L<perldiag> that reconcile it to the C<C> code.
248
249 [ Within each section, list entries as a =item entry ]
250
251 =head2 New Diagnostics
252
253 XXX Newly added diagnostic messages go here
254
255 =over 4
256
257 =item *
258
259 XXX
260
261 =back
262
263 =head2 Changes to Existing Diagnostics
264
265 XXX Changes (i.e. rewording) of diagnostic messages go here
266
267 =over 4
268
269 =item *
270
271 XXX
272
273 =back
274
275 =head1 Utility Changes
276
277 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
278 here. Most of these are built within the directories F<utils> and F<x2p>.
279
280 [ List utility changes as a =head3 entry for each utility and =item
281 entries for each change
282 Use L<XXX> with program names to get proper documentation linking. ]
283
284 =head3 L<XXX>
285
286 =over 4
287
288 =item *
289
290 XXX
291
292 =back
293
294 =head1 Configuration and Compilation
295
296 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
297 go here.  Any other changes to the Perl build process should be listed here.
298 However, any platform-specific changes should be listed in the
299 L</Platform Support> section, instead.
300
301 [ List changes as a =item entry ].
302
303 =over 4
304
305 =item *
306
307 XXX
308
309 =back
310
311 =head1 Testing
312
313 XXX Any significant changes to the testing of a freshly built perl should be
314 listed here.  Changes which create B<new> files in F<t/> go here as do any
315 large changes to the testing harness (e.g. when parallel testing was added).
316 Changes to existing files in F<t/> aren't worth summarising, although the bugs
317 that they represent may be covered elsewhere.
318
319 [ List each test improvement as a =item entry ]
320
321 =over 4
322
323 =item *
324
325 XXX
326
327 =back
328
329 =head1 Platform Support
330
331 XXX Any changes to platform support should be listed in the sections below.
332
333 [ Within the sections, list each platform as a =item entry with specific
334 changes as paragraphs below it. ]
335
336 =head2 New Platforms
337
338 XXX List any platforms that this version of perl compiles on, that previous
339 versions did not. These will either be enabled by new files in the F<hints/>
340 directories, or new subdirectories and F<README> files at the top level of the
341 source tree.
342
343 =over 4
344
345 =item XXX-some-platform
346
347 XXX
348
349 =back
350
351 =head2 Discontinued Platforms
352
353 XXX List any platforms that this version of perl no longer compiles on.
354
355 =over 4
356
357 =item XXX-some-platform
358
359 XXX
360
361 =back
362
363 =head2 Platform-Specific Notes
364
365 XXX List any changes for specific platforms. This could include configuration
366 and compilation changes or changes in portability/compatibility.  However,
367 changes within modules for platforms should generally be listed in the
368 L</Modules and Pragmata> section.
369
370 =over 4
371
372 =item XXX-some-platform
373
374 XXX
375
376 =back
377
378 =head1 Internal Changes
379
380 XXX Changes which affect the interface available to C<XS> code go here.
381 Other significant internal changes for future core maintainers should
382 be noted as well.
383
384 [ List each test improvement as a =item entry ]
385
386 =over 4
387
388 =item *
389
390 The opcode bodies for C<chop> and C<chomp> and for C<schop> and C<schomp> have
391 been merged. The implementation functions C<Perl_do_chop()> and
392 C<Perl_do_chomp()>, never part of the public API, have been merged and moved to
393 a static function in F<pp.c>. This shrinks the perl binary slightly, and should
394 not affect any code outside the core (unless it is relying on the order of side
395 effects when C<chomp> is passed a I<list> of values).
396
397 =item *
398
399 Some of the flags parameters to the uvuni_to_utf8_flags() and
400 utf8n_to_uvuni() have changed.  This is a result of Perl now allowing
401 internal storage and manipulation of code points that are problematic
402 in some situations.  Hence, the default actions for these functions has
403 been complemented to allow these code points.  The new flags are
404 documented in L<perlapi>.  Code that requires the problematic code
405 points to be rejected needs to change to use these flags.  Some flag
406 names are retained for backward source compatibility, though they do
407 nothing, as they are now the default.  However the flags
408 C<UNICODE_ALLOW_FDD0>, C<UNICODE_ALLOW_FFFF>, C<UNICODE_ILLEGAL>, and
409 C<UNICODE_IS_ILLEGAL> have been removed, as they stem from a
410 fundamentally broken model of how the Unicode non-character code points
411 should be handled, which is now described in
412 L<perlunicode/Non-character code points>.  See also L</Selected Bug Fixes>.
413
414 =back
415
416 =head1 Selected Bug Fixes
417
418 XXX Important bug fixes in the core language are summarised here.
419 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
420 L</Modules and Pragmata>.
421
422 [ List each fix as a =item entry ]
423
424 =over 4
425
426 =item *
427
428 The handling of Unicode non-characters has changed.
429 Previously they were mostly considered illegal, except that only one of
430 the 66 of them was known about in places.  The Unicode standard
431 considers them legal, but forbids the "open interchange" of them.
432 This is part of the change to allow the internal use of any code point
433 (see L</Core Enhancements>).  Together, these changes resolve
434 L<# 38722|https://rt.perl.org/rt3/Ticket/Display.html?id=38722>,
435 L<# 51918|http://rt.perl.org/rt3/Ticket/Display.html?id=51918>,
436 L<# 51936|http://rt.perl.org/rt3/Ticket/Display.html?id=51936>,
437 L<# 63446|http://rt.perl.org/rt3/Ticket/Display.html?id=63446>
438
439 =back
440
441 =head1 Known Problems
442
443 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
444 tests that had to be C<TODO>ed for the release would be noted here, unless
445 they were specific to a particular platform (see below).
446
447 This is a list of some significant unfixed bugs, which are regressions
448 from either 5.XXX.XXX or 5.XXX.XXX.
449
450 [ List each fix as a =item entry ]
451
452 =over 4
453
454 =item *
455
456 XXX
457
458 =back
459
460 =head1 Obituary
461
462 XXX If any significant core contributor has died, we've added a short obituary
463 here.
464
465 =head1 Acknowledgements
466
467 XXX The list of people to thank goes here.
468
469 =head1 Reporting Bugs
470
471 If you find what you think is a bug, you might check the articles
472 recently posted to the comp.lang.perl.misc newsgroup and the perl
473 bug database at http://rt.perl.org/perlbug/ .  There may also be
474 information at http://www.perl.org/ , the Perl Home Page.
475
476 If you believe you have an unreported bug, please run the L<perlbug>
477 program included with your release.  Be sure to trim your bug down
478 to a tiny but sufficient test case.  Your bug report, along with the
479 output of C<perl -V>, will be sent off to perlbug@perl.org to be
480 analysed by the Perl porting team.
481
482 If the bug you are reporting has security implications, which make it
483 inappropriate to send to a publicly archived mailing list, then please send
484 it to perl5-security-report@perl.org. This points to a closed subscription
485 unarchived mailing list, which includes all the core committers, who be able
486 to help assess the impact of issues, figure out a resolution, and help
487 co-ordinate the release of patches to mitigate or fix the problem across all
488 platforms on which Perl is supported. Please only use this address for
489 security issues in the Perl core, not for modules independently
490 distributed on CPAN.
491
492 =head1 SEE ALSO
493
494 The F<Changes> file for an explanation of how to view exhaustive details
495 on what changed.
496
497 The F<INSTALL> file for how to build Perl.
498
499 The F<README> file for general stuff.
500
501 The F<Artistic> and F<Copying> files for copyright information.
502
503 =cut