This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
706d58dbbc611782643774a89de32855556152a4
[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<Compress::Raw::Bzip2> has been upgraded from version 2.031 to 2.033
147
148 =item *
149
150 C<Compress::Raw::Zlib> has been upgraded from version 2.030 to 2.033
151
152 =item *
153
154 C<CPANPLUS> has been upgraded from version 0.9010 to 0.9011
155
156 =item *
157
158 C<CPANPLUS::Dist::Build> has been upgraded from version 0.50 to 0.52
159
160 =item *
161
162 C<DB_File> has been upgraded from version 1.820 to 1.821
163
164 =item *
165
166 C<Encode> has been upgraded from version 2.40 to 2.42.
167 Now, all 66 Unicode non-characters are treated the same way U+FFFF has
168 always been treated; if it was disallowed, all 66 are disallowed; if it
169 warned, all 66 warn.
170
171 =item *
172
173 C<File::Fetch> has been upgraded from version 0.28 to 0.30
174
175 =item *
176
177 C<IO::Compress> has been upgraded from version 2.030 to 2.033
178
179 =item *
180
181 C<IPC::Cmd> has been upgraded from version 0.66 to 0.68
182
183 =item *
184
185 C<Log::Message> has been upgraded from version 0.02 to 0.04
186
187 =item *
188
189 C<Module::Load::Conditional> has been upgraded from version 0.38 to 0.40
190
191 =item *
192
193 C<Object::Accessor> has been upgraded from version 0.36 to 0.38
194
195 =item *
196
197 C<Params::Check> has been upgraded from version 0.26 to 0.28
198
199 =item *
200
201 C<Term::UI> has been upgraded from version 0.20 to 0.22
202
203 =item *
204
205 C<threads> has been upgraded from version 1.81_03 to 1.82
206
207 =item *
208
209 C<threads::shared> has been upgraded from version 1.35 to 1.36
210
211 =item *
212
213 C<Time::Local> has been upgraded from version 1.1901_01 to 1.2000.
214
215 =back
216
217 =head2 Removed Modules and Pragmata
218
219 =over 4
220
221 =item *
222
223 XXX
224
225 =back
226
227 =head1 Documentation
228
229 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
230 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
231
232 =head2 New Documentation
233
234 XXX Changes which create B<new> files in F<pod/> go here.
235
236 =head3 L<XXX>
237
238 XXX Description of the purpose of the new file here
239
240 =head2 Changes to Existing Documentation
241
242 XXX Changes which significantly change existing files in F<pod/> go here.
243 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
244 section.
245
246 =head3 L<XXX>
247
248 =over 4
249
250 =item *
251
252 XXX Description of the change here
253
254 =back
255
256 =head1 Diagnostics
257
258 The following additions or changes have been made to diagnostic output,
259 including warnings and fatal error messages.  For the complete list of
260 diagnostic messages, see L<perldiag>.
261
262 XXX New or changed warnings emitted by the core's C<C> code go here. Also
263 include any changes in L<perldiag> that reconcile it to the C<C> code.
264
265 [ Within each section, list entries as a =item entry ]
266
267 =head2 New Diagnostics
268
269 XXX Newly added diagnostic messages go here
270
271 =over 4
272
273 =item *
274
275 XXX
276
277 =back
278
279 =head2 Changes to Existing Diagnostics
280
281 XXX Changes (i.e. rewording) of diagnostic messages go here
282
283 =over 4
284
285 =item *
286
287 XXX
288
289 =back
290
291 =head1 Utility Changes
292
293 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
294 here. Most of these are built within the directories F<utils> and F<x2p>.
295
296 [ List utility changes as a =head3 entry for each utility and =item
297 entries for each change
298 Use L<XXX> with program names to get proper documentation linking. ]
299
300 =head3 L<XXX>
301
302 =over 4
303
304 =item *
305
306 XXX
307
308 =back
309
310 =head1 Configuration and Compilation
311
312 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
313 go here.  Any other changes to the Perl build process should be listed here.
314 However, any platform-specific changes should be listed in the
315 L</Platform Support> section, instead.
316
317 [ List changes as a =item entry ].
318
319 =over 4
320
321 =item *
322
323 XXX
324
325 =back
326
327 =head1 Testing
328
329 XXX Any significant changes to the testing of a freshly built perl should be
330 listed here.  Changes which create B<new> files in F<t/> go here as do any
331 large changes to the testing harness (e.g. when parallel testing was added).
332 Changes to existing files in F<t/> aren't worth summarising, although the bugs
333 that they represent may be covered elsewhere.
334
335 [ List each test improvement as a =item entry ]
336
337 =over 4
338
339 =item *
340
341 XXX
342
343 =back
344
345 =head1 Platform Support
346
347 XXX Any changes to platform support should be listed in the sections below.
348
349 [ Within the sections, list each platform as a =item entry with specific
350 changes as paragraphs below it. ]
351
352 =head2 New Platforms
353
354 XXX List any platforms that this version of perl compiles on, that previous
355 versions did not. These will either be enabled by new files in the F<hints/>
356 directories, or new subdirectories and F<README> files at the top level of the
357 source tree.
358
359 =over 4
360
361 =item XXX-some-platform
362
363 XXX
364
365 =back
366
367 =head2 Discontinued Platforms
368
369 XXX List any platforms that this version of perl no longer compiles on.
370
371 =over 4
372
373 =item XXX-some-platform
374
375 XXX
376
377 =back
378
379 =head2 Platform-Specific Notes
380
381 XXX List any changes for specific platforms. This could include configuration
382 and compilation changes or changes in portability/compatibility.  However,
383 changes within modules for platforms should generally be listed in the
384 L</Modules and Pragmata> section.
385
386 =over 4
387
388 =item XXX-some-platform
389
390 XXX
391
392 =back
393
394 =head1 Internal Changes
395
396 XXX Changes which affect the interface available to C<XS> code go here.
397 Other significant internal changes for future core maintainers should
398 be noted as well.
399
400 [ List each test improvement as a =item entry ]
401
402 =over 4
403
404 =item *
405
406 The opcode bodies for C<chop> and C<chomp> and for C<schop> and C<schomp> have
407 been merged. The implementation functions C<Perl_do_chop()> and
408 C<Perl_do_chomp()>, never part of the public API, have been merged and moved to
409 a static function in F<pp.c>. This shrinks the perl binary slightly, and should
410 not affect any code outside the core (unless it is relying on the order of side
411 effects when C<chomp> is passed a I<list> of values).
412
413 =item *
414
415 Some of the flags parameters to the uvuni_to_utf8_flags() and
416 utf8n_to_uvuni() have changed.  This is a result of Perl now allowing
417 internal storage and manipulation of code points that are problematic
418 in some situations.  Hence, the default actions for these functions has
419 been complemented to allow these code points.  The new flags are
420 documented in L<perlapi>.  Code that requires the problematic code
421 points to be rejected needs to change to use these flags.  Some flag
422 names are retained for backward source compatibility, though they do
423 nothing, as they are now the default.  However the flags
424 C<UNICODE_ALLOW_FDD0>, C<UNICODE_ALLOW_FFFF>, C<UNICODE_ILLEGAL>, and
425 C<UNICODE_IS_ILLEGAL> have been removed, as they stem from a
426 fundamentally broken model of how the Unicode non-character code points
427 should be handled, which is now described in
428 L<perlunicode/Non-character code points>.  See also L</Selected Bug Fixes>.
429
430 =back
431
432 =head1 Selected Bug Fixes
433
434 XXX Important bug fixes in the core language are summarised here.
435 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
436 L</Modules and Pragmata>.
437
438 [ List each fix as a =item entry ]
439
440 =over 4
441
442 =item *
443
444 The handling of Unicode non-characters has changed.
445 Previously they were mostly considered illegal, except that only one of
446 the 66 of them was known about in places.  The Unicode standard
447 considers them legal, but forbids the "open interchange" of them.
448 This is part of the change to allow the internal use of any code point
449 (see L</Core Enhancements>).  Together, these changes resolve
450 L<# 38722|https://rt.perl.org/rt3/Ticket/Display.html?id=38722>,
451 L<# 51918|http://rt.perl.org/rt3/Ticket/Display.html?id=51918>,
452 L<# 51936|http://rt.perl.org/rt3/Ticket/Display.html?id=51936>,
453 L<# 63446|http://rt.perl.org/rt3/Ticket/Display.html?id=63446>
454
455 =back
456
457 =head1 Known Problems
458
459 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
460 tests that had to be C<TODO>ed for the release would be noted here, unless
461 they were specific to a particular platform (see below).
462
463 This is a list of some significant unfixed bugs, which are regressions
464 from either 5.XXX.XXX or 5.XXX.XXX.
465
466 [ List each fix as a =item entry ]
467
468 =over 4
469
470 =item *
471
472 XXX
473
474 =back
475
476 =head1 Obituary
477
478 XXX If any significant core contributor has died, we've added a short obituary
479 here.
480
481 =head1 Acknowledgements
482
483 XXX The list of people to thank goes here.
484
485 =head1 Reporting Bugs
486
487 If you find what you think is a bug, you might check the articles
488 recently posted to the comp.lang.perl.misc newsgroup and the perl
489 bug database at http://rt.perl.org/perlbug/ .  There may also be
490 information at http://www.perl.org/ , the Perl Home Page.
491
492 If you believe you have an unreported bug, please run the L<perlbug>
493 program included with your release.  Be sure to trim your bug down
494 to a tiny but sufficient test case.  Your bug report, along with the
495 output of C<perl -V>, will be sent off to perlbug@perl.org to be
496 analysed by the Perl porting team.
497
498 If the bug you are reporting has security implications, which make it
499 inappropriate to send to a publicly archived mailing list, then please send
500 it to perl5-security-report@perl.org. This points to a closed subscription
501 unarchived mailing list, which includes all the core committers, who be able
502 to help assess the impact of issues, figure out a resolution, and help
503 co-ordinate the release of patches to mitigate or fix the problem across all
504 platforms on which Perl is supported. Please only use this address for
505 security issues in the Perl core, not for modules independently
506 distributed on CPAN.
507
508 =head1 SEE ALSO
509
510 The F<Changes> file for an explanation of how to view exhaustive details
511 on what changed.
512
513 The F<INSTALL> file for how to build Perl.
514
515 The F<README> file for general stuff.
516
517 The F<Artistic> and F<Copying> files for copyright information.
518
519 =cut