This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for efcf35c4ce
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
541cb22c 3=for comment
18fbfe8d 4This has been completed up to efcf35c4ce.
541cb22c 5
44691e6f
AB
6=head1 NAME
7
0aaeb177
SH
8[ this is a template for a new perldelta file. Any text flagged as
9XXX needs to be processed before release. ]
760696b8 10
0aaeb177 11perldelta - what is new for perl v5.15.6
062678b2 12
0aaeb177 13=head1 DESCRIPTION
ad32999b 14
0aaeb177
SH
15This document describes differences between the 5.15.5 release and
16the 5.15.6 release.
ad32999b 17
0aaeb177
SH
18If you are upgrading from an earlier release such as 5.15.4, first read
19L<perl5155delta>, which describes differences between 5.15.4 and
205.15.5.
ad32999b 21
0aaeb177 22=head1 Notice
ad32999b 23
0aaeb177 24XXX Any important notices here
ad32999b 25
0aaeb177 26=head1 Core Enhancements
a3f52e2e 27
0aaeb177
SH
28XXX New core language features go here. Summarise user-visible core language
29enhancements. Particularly prominent performance optimisations could go
30here, but most should go in the L</Performance Enhancements> section.
a3f52e2e 31
0aaeb177 32[ List each enhancement as a =head2 entry ]
6d110ad0 33
e3c71926 34=head1 Security
6d110ad0 35
0aaeb177
SH
36XXX Any security-related notices go here. In particular, any security
37vulnerabilities closed should be noted here rather than in the
38L</Selected Bug Fixes> section.
6d110ad0 39
0aaeb177 40[ List each security issue as a =head2 entry ]
6d110ad0 41
e3c71926 42=head1 Incompatible Changes
6d110ad0 43
0aaeb177 44XXX For a release on a stable branch, this section aspires to be:
ad32999b 45
0aaeb177
SH
46 There are no changes intentionally incompatible with 5.XXX.XXX
47 If any exist, they are bugs and reports are welcome.
ad32999b 48
0aaeb177 49[ List each incompatible change as a =head2 entry ]
ad32999b 50
541cb22c
FC
51=head2 XS API tweak
52
53The C<newCONSTSUB_flags> C-level function, added in 5.15.4, now has a
54C<len> parameter.
55
e3c71926 56=head1 Deprecations
6d110ad0 57
0aaeb177
SH
58XXX Any deprecated features, syntax, modules etc. should be listed here.
59In particular, deprecated modules should be listed here even if they are
60listed as an updated module in the L</Modules and Pragmata> section.
ae92a9ae 61
0aaeb177 62[ List each deprecation as a =head2 entry ]
ae92a9ae 63
e3c71926 64=head1 Performance Enhancements
6d110ad0 65
0aaeb177
SH
66XXX Changes which enhance performance without changing behaviour go here. There
67may well be none in a stable release.
68
69[ List each enhancement as a =item entry ]
70
e3c71926 71=over 4
6d110ad0
FC
72
73=item *
74
679b54e7
FC
75Perl 5.12.0 sped up the destruction of objects whose classes define empty
76C<DESTROY> methods (to prevent autoloading), simply by not calling such
77empty methods. This release takes this optimisation a step further, by not
78calling any C<DESTROY> method that begins with an C<return> statement.
79This can be useful for destructors that are only used for debugging:
80
81 use constant DEBUG => 1;
82 sub DESTROY { return unless DEBUG; ... }
83
84Constant-folding will reduce the first statement to C<return;> if DEBUG is
85set to 0, triggering this optimisation.
6d110ad0 86
e3c71926 87=back
6d110ad0 88
e3c71926 89=head1 Modules and Pragmata
6d110ad0 90
0aaeb177
SH
91XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
92go here. If Module::CoreList is updated, generate an initial draft of the
93following sections using F<Porting/corelist-perldelta.pl>, which prints stub
94entries to STDOUT. Results can be pasted in place of the '=head2' entries
95below. A paragraph summary for important changes should then be added by hand.
96In an ideal world, dual-life modules would have a F<Changes> file that could be
97cribbed.
98
99[ Within each section, list entries as a =item entry ]
100
e3c71926 101=head2 New Modules and Pragmata
6d110ad0 102
e3c71926 103=over 4
6d110ad0
FC
104
105=item *
106
0aaeb177 107XXX
6d110ad0
FC
108
109=back
110
e3c71926 111=head2 Updated Modules and Pragmata
6d110ad0 112
e3c71926 113=over 4
6d110ad0
FC
114
115=item *
116
f8c9502f
CBW
117L<Archive::Tar> has been upgraded from version 1.80 to version 1.82.
118
119Adjustments to handle files >8gb (>0777777777777 octal) and a feature to
120return the MD5SUM of files in the archive.
a3f52e2e 121
87b9431e
CBW
122=item *
123
74c26f06
CBW
124L<AutoLoader> has been upgraded from version 5.71 to version 5.72.
125
126=item *
127
8cea0f87
CBW
128L<B::Debug> has been upgraded from version 1.16 to version 1.17.
129
130=item *
131
679b54e7
FC
132L<B::Deparse> has been upgraded from version 1.09 to 1.10.
133
134C<sort(foo(bar))> is now deparsed correctly. (C<sort foo(bar)>, how it used
135to deparse, makes foo the sort routine, rather than a regular function
136call.)
137
138=item *
139
9505dd85 140L<Compress::Raw::Zlib> has been upgraded from version 2.042 to version 2.045.
87b9431e 141
7e700369
CBW
142=item *
143
6475ddc2 144L<Compress::Raw::Bzip2> has been upgraded from version 2.042 to version 2.045.
7e700369 145
dc7edc5c
CBW
146=item *
147
ac616993
CBW
148L<ExtUtils::ParseXS> has been upgraded from version 3.05 to version 3.07.
149
150=item *
151
090349ce 152L<IO::Compress::Base> has been upgraded from version 2.042 to version 2.045.
08ad9465
CBW
153
154Added zipdetails utility.
dc7edc5c 155
7788a270
CBW
156=item *
157
4345d05b
CBW
158L<Locale::Codes> has been upgraded from version 3.18 to version 3.20.
159
160The code2XXX, XXX2code, all_XXX_codes, and all_XXX_names functions now support retired codes.
161All codesets may be specified by a constant or by their name now. Previously,
162they were specified only by a constant.
163The alias_code function exists for backward compatibility. It has been replaced by rename_country_code.
164The alias_code function will be removed sometime after September, 2013.
165All work is now done in the central module (Locale::Codes). Previously, some was still done in the
166wrapper modules (Locale::Codes::*) but that is gone now.
167Added Language Family codes (langfam) as defined in ISO 639-5.
168
169=item *
170
b42ff875
CBW
171L<Module::Loaded> has been uprgaded from version 0.06 to version 0.08.
172
173=item *
174
a71d67b1
CBW
175L<Pod::LaTeX> has been upgraded from version 0.59 to version 0.60.
176
177Added another LaTeX escape: --- => -{}-{}-
178
179Pod::LaTeX doesn't handle -- in PODs specially, passing it directly to
180LaTeX, which then proceeds to replace it with a single -. This patch
181replaces ----- with -{}-{}-{}-{}-
182
183=item *
184
65ae8d99 185L<Unicode::Collate> has been upgraded from version 0.85 to version 0.87.
7788a270
CBW
186
187Tailored compatibility ideographs as well as unified ideographs for
188the locales: ja, ko, zh__big5han, zh__gb2312han, zh__pinyin, zh__stroke.
189
65ae8d99
CBW
190Now Locale/*.pl files are searched in @INC.
191
0aaeb177 192=back
6138a722 193
0aaeb177 194=head2 Removed Modules and Pragmata
6138a722 195
0aaeb177 196=over 4
be539103 197
a47fb3fe
CBW
198=item *
199
0aaeb177 200XXX
a3f52e2e 201
0aaeb177 202=back
a3f52e2e 203
0aaeb177 204=head1 Documentation
a3f52e2e 205
0aaeb177
SH
206XXX Changes to files in F<pod/> go here. Consider grouping entries by
207file and be sure to link to the appropriate page, e.g. L<perlfunc>.
a3f52e2e 208
0aaeb177 209=head2 New Documentation
ad32999b 210
0aaeb177 211XXX Changes which create B<new> files in F<pod/> go here.
ad32999b 212
0aaeb177 213=head3 L<XXX>
ad32999b 214
0aaeb177 215XXX Description of the purpose of the new file here
6138a722 216
0aaeb177 217=head2 Changes to Existing Documentation
6138a722 218
0aaeb177
SH
219XXX Changes which significantly change existing files in F<pod/> go here.
220However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
221section.
a47fb3fe 222
0aaeb177 223=head3 L<XXX>
a47fb3fe 224
0aaeb177 225=over 4
7ef25837 226
6d110ad0
FC
227=item *
228
0aaeb177 229XXX Description of the change here
6d110ad0
FC
230
231=back
232
e3c71926
FR
233=head1 Diagnostics
234
235The following additions or changes have been made to diagnostic output,
236including warnings and fatal error messages. For the complete list of
237diagnostic messages, see L<perldiag>.
6d110ad0 238
0aaeb177
SH
239XXX New or changed warnings emitted by the core's C<C> code go here. Also
240include any changes in L<perldiag> that reconcile it to the C<C> code.
6138a722 241
0aaeb177
SH
242[ Within each section, list entries as a =item entry that links to perldiag,
243 e.g.
6138a722 244
0aaeb177 245 =item *
6138a722 246
0aaeb177
SH
247 L<Invalid version object|perldiag/"Invalid version object">
248]
6138a722 249
0aaeb177 250=head2 New Diagnostics
828d6195 251
0aaeb177 252XXX Newly added diagnostic messages go here
83307084 253
0aaeb177 254=head3 New Errors
d39de893 255
3432e5a1 256=over 4
39afdc5a
CBW
257
258=item *
259
0aaeb177 260XXX L<message|perldiag/"message">
6138a722 261
e3c71926 262=back
7b8e5ef0 263
0aaeb177 264=head3 New Warnings
91710846 265
e3c71926 266=over 4
91710846
DG
267
268=item *
269
0aaeb177 270XXX L<message|perldiag/"message">
f81e39ef 271
e3c71926 272=back
a2fa999d 273
0aaeb177
SH
274=head2 Changes to Existing Diagnostics
275
276XXX Changes (i.e. rewording) of diagnostic messages go here
bd65daab 277
e3c71926 278=over 4
bd65daab 279
3f2cb5bf
SM
280=item *
281
18fbfe8d
FC
282Redefinition warnings for constant subroutines used to be mandatory, even
283occurring under C<no warnings>. Now they respect the L<warnings> pragma.
b420b12a 284
3432e5a1 285=back
b420b12a 286
0aaeb177 287=head1 Utility Changes
9cfd094e 288
0aaeb177
SH
289XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
290here. Most of these are built within the directories F<utils> and F<x2p>.
95f7e41f 291
0aaeb177
SH
292[ List utility changes as a =head3 entry for each utility and =item
293entries for each change
294Use L<XXX> with program names to get proper documentation linking. ]
95f7e41f 295
08ad9465 296=head3 L<zipdetails>
d6cf2367 297
e3c71926 298=over 4
b53e16ae
FC
299
300=item *
301
08ad9465
CBW
302L<zipdetails> displays information about the internal record structure of the zip file.
303It is not concerned with displaying any details of the compressed data stored in the zip file.
b53e16ae 304
3432e5a1 305=back
60092ce4 306
0aaeb177
SH
307=head1 Configuration and Compilation
308
309XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
310go here. Any other changes to the Perl build process should be listed here.
311However, any platform-specific changes should be listed in the
312L</Platform Support> section, instead.
313
314[ List changes as a =item entry ].
309aab3a 315
e3c71926 316=over 4
b53e16ae
FC
317
318=item *
319
60f0ee9d
NC
320F<pod/roffitall> is now build by F<pod/buildtoc>, instead of being shipped
321with the distribution. Its list of manpages is now generated (and therefore
322current). See also RT #103202 for an unresolved related issue.
a3f52e2e 323
0aaeb177 324=back
a3f52e2e 325
0aaeb177 326=head1 Testing
a3f52e2e 327
0aaeb177
SH
328XXX Any significant changes to the testing of a freshly built perl should be
329listed here. Changes which create B<new> files in F<t/> go here as do any
330large changes to the testing harness (e.g. when parallel testing was added).
331Changes to existing files in F<t/> aren't worth summarising, although the bugs
332that they represent may be covered elsewhere.
a3f52e2e 333
0aaeb177 334[ List each test improvement as a =item entry ]
a3f52e2e 335
0aaeb177 336=over 4
a3f52e2e
FC
337
338=item *
339
0aaeb177 340XXX
a3f52e2e 341
0aaeb177 342=back
a3f52e2e 343
0aaeb177 344=head1 Platform Support
a3f52e2e 345
0aaeb177 346XXX Any changes to platform support should be listed in the sections below.
a3f52e2e 347
0aaeb177
SH
348[ Within the sections, list each platform as a =item entry with specific
349changes as paragraphs below it. ]
a3f52e2e 350
0aaeb177 351=head2 New Platforms
a3f52e2e 352
0aaeb177
SH
353XXX List any platforms that this version of perl compiles on, that previous
354versions did not. These will either be enabled by new files in the F<hints/>
355directories, or new subdirectories and F<README> files at the top level of the
356source tree.
a3f52e2e 357
0aaeb177 358=over 4
a3f52e2e 359
0aaeb177 360=item XXX-some-platform
a3f52e2e 361
0aaeb177 362XXX
a3f52e2e 363
0aaeb177 364=back
a3f52e2e 365
0aaeb177 366=head2 Discontinued Platforms
ca955add 367
0aaeb177 368XXX List any platforms that this version of perl no longer compiles on.
bbdd8bad 369
0aaeb177 370=over 4
bbdd8bad 371
0aaeb177 372=item XXX-some-platform
ad32999b 373
0aaeb177 374XXX
ad32999b 375
0aaeb177 376=back
ad32999b 377
0aaeb177 378=head2 Platform-Specific Notes
ad32999b 379
0aaeb177
SH
380XXX List any changes for specific platforms. This could include configuration
381and compilation changes or changes in portability/compatibility. However,
382changes within modules for platforms should generally be listed in the
383L</Modules and Pragmata> section.
ad32999b 384
0aaeb177 385=over 4
ad32999b 386
0aaeb177 387=item XXX-some-platform
ad32999b 388
0aaeb177 389XXX
ad32999b 390
0aaeb177 391=back
ad32999b 392
0aaeb177 393=head1 Internal Changes
ad32999b 394
0aaeb177
SH
395XXX Changes which affect the interface available to C<XS> code go here.
396Other significant internal changes for future core maintainers should
397be noted as well.
ad32999b 398
0aaeb177 399[ List each change as a =item entry ]
ad32999b 400
0aaeb177 401=over 4
ad32999b 402
3973654e
FC
403=item *
404
0aaeb177 405XXX
3973654e 406
0aaeb177 407=back
cca38fda 408
0aaeb177 409=head1 Selected Bug Fixes
9c7c1651 410
0aaeb177
SH
411XXX Important bug fixes in the core language are summarised here.
412Bug fixes in files in F<ext/> and F<lib/> are best summarised in
413L</Modules and Pragmata>.
9c7c1651 414
0aaeb177 415[ List each fix as a =item entry ]
fce59cd4 416
0aaeb177 417=over 4
fce59cd4 418
b9e83cd1
FC
419=item *
420
541cb22c
FC
421A constant subroutine assigned to a glob whose name contains a null will no
422longer cause extra globs to pop into existence when the constant is
423referenced under its new name.
b9e83cd1 424
679b54e7
FC
425=item *
426
427C<sort> was not treating C<sub {}> and C<sub {()}> as equivalent when such
428a sub was provided as the comparison routine. It used to croak on
429C<sub {()}>.
430
431=item *
432
433Subroutines from the C<autouse> namespace are once more exempt from
434redefinition warnings. This used to work in 5.005, but was broken in 5.6
435for most subroutines. For subs created via XS that redefine subroutines
436from the C<autouse> package, this stopped working in 5.10.
437
438=item *
439
440New XSUBs now produce redefinition warnings if they overwrite existing
441subs, as they did in 5.8.x. (The C<autouse> logic was reversed in 5.10-14.
442Only subroutines from the C<autouse> namespace would warn when clobbered.)
443
444=item *
445
446Redefinition warnings triggered by the creation of XSUBs now respect
447Unicode glob names, instead of using the internal representation. This was
448missed in 5.15.4, partly because this warning was so hard to trigger. (See
449the previous item.)
450
451=item *
452
453C<newCONSTSUB> used to use compile-time warning hints, instead of run-time
454hints. The following code should never produce a redefinition warning, but
455it used to, if C<newCONSTSUB> redefine and existing subroutine:
456
457 use warnings;
458 BEGIN {
459 no warnings;
460 some_XS_function_that_calls_new_CONSTSUB();
461 }
462
0aaeb177 463=back
bf19b80e 464
0aaeb177 465=head1 Known Problems
bf19b80e 466
0aaeb177
SH
467XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
468tests that had to be C<TODO>ed for the release would be noted here, unless
469they were specific to a particular platform (see below).
65b66aa9 470
0aaeb177
SH
471This is a list of some significant unfixed bugs, which are regressions
472from either 5.XXX.XXX or 5.XXX.XXX.
65b66aa9 473
0aaeb177 474[ List each fix as a =item entry ]
b53e16ae 475
0aaeb177 476=over 4
b53e16ae 477
7c864bb3
VP
478=item *
479
0aaeb177 480XXX
7c864bb3 481
63ac71b9 482=back
bbc28bfc 483
0aaeb177 484=head1 Obituary
8fe05716 485
0aaeb177
SH
486XXX If any significant core contributor has died, we've added a short obituary
487here.
8fe05716 488
0aaeb177 489=head1 Acknowledgements
8fe05716 490
0aaeb177 491XXX Generate this with:
8fe05716 492
0aaeb177 493 perl Porting/acknowledgements.pl v5.15.5..HEAD
29cf780c 494
44691e6f
AB
495=head1 Reporting Bugs
496
497If you find what you think is a bug, you might check the articles
34dc2ec0 498recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
499bug database at http://rt.perl.org/perlbug/ . There may also be
500information at http://www.perl.org/ , the Perl Home Page.
501
502If you believe you have an unreported bug, please run the L<perlbug>
503program included with your release. Be sure to trim your bug down
504to a tiny but sufficient test case. Your bug report, along with the
505output of C<perl -V>, will be sent off to perlbug@perl.org to be
506analysed by the Perl porting team.
507
508If the bug you are reporting has security implications, which make it
509inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 510it to perl5-security-report@perl.org. This points to a closed subscription
b4707b2a
FC
511unarchived mailing list, which includes
512all the core committers, who will be able
44691e6f
AB
513to help assess the impact of issues, figure out a resolution, and help
514co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
515platforms on which Perl is supported. Please only use this address for
516security issues in the Perl core, not for modules independently
44691e6f
AB
517distributed on CPAN.
518
519=head1 SEE ALSO
520
521The F<Changes> file for an explanation of how to view exhaustive details
522on what changed.
523
524The F<INSTALL> file for how to build Perl.
525
526The F<README> file for general stuff.
527
528The F<Artistic> and F<Copying> files for copyright information.
529
530=cut