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