This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add perldelta entries for all doc changes
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
d2006265
FC
3=for comment
4This has been completed up to 527d644b124fe.
5
44691e6f
AB
6=head1 NAME
7
63ac71b9
RS
8[ this is a template for a new perldelta file. Any text flagged as
9XXX needs to be processed before release. ]
10
f25d4e05 11perldelta - what is new for perl v5.15.3
760696b8 12
5438d4b8 13=head1 DESCRIPTION
5cd408a2 14
f25d4e05
RS
15This document describes differences between the 5.15.2 release and
16the 5.15.3 release.
5cd408a2 17
f25d4e05
RS
18If you are upgrading from an earlier release such as 5.15.1, first read
19L<perl5152delta>, which describes differences between 5.15.1 and
205.15.2.
062678b2 21
63ac71b9 22=head1 Notice
4185c919 23
63ac71b9 24XXX Any important notices here
0afed34d 25
63ac71b9 26=head1 Core Enhancements
0afed34d 27
63ac71b9
RS
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.
0afed34d 31
63ac71b9 32[ List each enhancement as a =head2 entry ]
0afed34d 33
d2006265
FC
34=head2 More CORE subs are callable through references
35
c148612c 36Perl 5.15.2 introduced subroutines in the CORE namespace. Most of them
d2006265
FC
37could only be called as barewords; i.e., they could be aliased at compile
38time and then inlined under new names.
39
2702a50a
FC
40Almost all of these functions can now be called through references and via
41C<&foo()> syntax, bypassing the prototype. See L<CORE> for a list of the
42exceptions.
d2006265 43
63ac71b9 44=head1 Security
0afed34d 45
63ac71b9
RS
46XXX Any security-related notices go here. In particular, any security
47vulnerabilities closed should be noted here rather than in the
48L</Selected Bug Fixes> section.
135c0b08 49
63ac71b9 50[ List each security issue as a =head2 entry ]
135c0b08 51
46661105
CB
52=head2 C<File::Glob::bsd_glob()> memory error with GLOB_ALTDIRFUNC (CVE-2011-2728).
53
54Calling C<File::Glob::bsd_glob> with the unsupported flag GLOB_ALTDIRFUNC would
55cause an access violation / segfault. A Perl program that accepts a flags value from
56an external source could expose itself to denial of service or arbitrary code
57execution attacks. There are no known exploits in the wild. The problem has been
58corrected by explicitly disabling all unsupported flags and setting unused function
59pointers to null. Bug reported by Clément Lecigne.
60
5438d4b8 61=head1 Incompatible Changes
7818c927 62
5d1892be 63=head2 User-defined case changing operations.
7b2b001e 64
5d1892be
KW
65This feature was deprecated in Perl 5.14, and has now been removed.
66The CPAN module L<Unicode::Casing> provides better functionality without
67the drawbacks that this feature had, as are detailed in the 5.14
68documentation:
69L<http://perldoc.perl.org/5.14.0/perlunicode.html#User-Defined-Case-Mappings-%28for-serious-hackers-only%29>
bdb9ba77 70
7ec04da5
S
71=head2 XSUBs are now 'static'
72
73XSUB C functions are now 'static', that is, they are not visible from
74outside the compilation unit. For the exceedingly rare case where
75this is not desired, a new public macro C<XS_EXTERNAL(name)> can be
76used in place of C<XS(name)>. C<ExtUtils::ParseXS> (C<xsubpp>)
77can be made to declare XSUBs with C<XS_EXTERNAL> using the
78C<EXPORT_XSUB_SYMBOLS> keyword, see L<perlxs> for details.
79
63ac71b9 80=head1 Deprecations
760696b8 81
63ac71b9
RS
82XXX Any deprecated features, syntax, modules etc. should be listed here.
83In particular, deprecated modules should be listed here even if they are
84listed as an updated module in the L</Modules and Pragmata> section.
760696b8 85
63ac71b9 86[ List each deprecation as a =head2 entry ]
760696b8 87
63ac71b9 88=head1 Performance Enhancements
115ff745 89
63ac71b9
RS
90XXX Changes which enhance performance without changing behaviour go here. There
91may well be none in a stable release.
115ff745 92
63ac71b9 93[ List each enhancement as a =item entry ]
115ff745 94
63ac71b9 95=over 4
4ea805df
CBW
96
97=item *
98
63ac71b9 99XXX
1ba7a2fb 100
63ac71b9 101=back
730e5b5b 102
63ac71b9 103=head1 Modules and Pragmata
730e5b5b 104
63ac71b9
RS
105XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
106go here. If Module::CoreList is updated, generate an initial draft of the
107following sections using F<Porting/corelist-perldelta.pl>, which prints stub
108entries to STDOUT. Results can be pasted in place of the '=head2' entries
109below. A paragraph summary for important changes should then be added by hand.
110In an ideal world, dual-life modules would have a F<Changes> file that could be
111cribbed.
730e5b5b 112
63ac71b9 113[ Within each section, list entries as a =item entry ]
730e5b5b 114
63ac71b9 115=head2 New Modules and Pragmata
a30cae0b 116
63ac71b9 117=over 4
a30cae0b
CBW
118
119=item *
120
63ac71b9 121XXX
bbc28bfc 122
63ac71b9 123=back
bbc28bfc 124
63ac71b9 125=head2 Updated Modules and Pragmata
e46d9735 126
63ac71b9 127=over 4
e46d9735
CBW
128
129=item *
130
5f8b5b70
NC
131L<AnyDBM_File> has been upgraded from version 1.00 to version 1.01.
132
133This is only a minor documentation update.
134
135=item *
136
43c6b706 137L<Archive::Extract> has been upgraded from version 0.52 to version 0.56.
4afdee4c
CBW
138
139Resolved an issue where C<unzip> executable was present in C<PATH> on MSWin32
57126352 140
d93f0209
FC
141=item *
142
755f12e5
NC
143L<CPANPLUS> has been upgraded from version 0.9109 to version 0.9110.
144
145=item *
146
50b3d220
CBW
147L<CPANPLUS::Dist::Build> has been upgraded from version 0.56 to version 0.58.
148
149=item *
150
43c6b706 151L<diagnostics> has been upgraded from version 1.24 to version 1.25.
d2006265
FC
152
153It now strips out C<SZ<><...>> formatting codes before displaying
154descriptions [perl #94488].
155
156=item *
157
4bbdbd51
NC
158L<Data::Dumper> has been upgraded from version 2.133 to version 2.134.
159
160The XS code for sorting hash keys has been simplified slightly.
161
162=item *
163
43c6b706
CBW
164L<Locale::Codes> has been upgraded from version 3.17 to version 3.18.
165
166The CIA world added non-standard values, so this is no longer used as a source
167of data.
168
169=item *
170
46661105
CB
171L<File::Glob> has been upgraded from version 1.12 to version 1.13.
172
173See L</Security>.
174
175=item *
176
43c6b706 177L<Math::BigRat> has been upgraded from version 0.2602 to version 0.2603.
d93f0209
FC
178
179C<int()> on a Math::BigRat object containing -1/2 now creates a
180Math::BigInt containing 0, rather than -0. L<Math::BigInt> does not even
181support negative zero, so the resulting object was actually malformed
182[perl #95530].
183
60527824
FR
184=item *
185
d6ee8587 186L<Module::Metadata> has been upgraded from version 1.000005_01 to version 1.000007.
d39de893
CBW
187
188=item *
189
39afdc5a
CBW
190L<Module::Load::Conditional> has been upgraded from version 0.44 to version 0.46.
191
192=item *
193
666c7ca6
NC
194L<ODBM_File> has been upgraded from version 1.11 to version 1.12.
195
196This is only a minor refactoring of the XS code to bring it closer to the
197other C<?DBM_File> modules.
198
199=item *
200
a9feb6cb
CBW
201L<perlfaq> has been upgraded from version 5.01500302 to version 5.0150033.
202
203=item *
204
43c6b706 205L<Pod::Simple> has been upgraded from version 3.18 to version 3.19.
60527824 206
7ac26854
NC
207=item *
208
209L<POSIX> has been upgraded from version 1.24 to version 1.25.
210
211L<POSIX> no longer uses L<AutoLoader>. Any code which was relying on this
212implementation detail was buggy, and may fail as a result of this change.
213The module's Perl code has been considerably simplified, roughly halving
214the number of lines, with no change in functionality.
215
63ac71b9 216=back
259925f6 217
63ac71b9 218=head2 Removed Modules and Pragmata
6252d2e2 219
63ac71b9 220=over 4
9840cdee
CBW
221
222=item *
223
63ac71b9 224XXX
54e02335 225
63ac71b9 226=back
310913d4 227
63ac71b9 228=head1 Documentation
310913d4 229
63ac71b9
RS
230XXX Changes to files in F<pod/> go here. Consider grouping entries by
231file and be sure to link to the appropriate page, e.g. L<perlfunc>.
7b2b001e 232
63ac71b9 233=head2 New Documentation
7b2b001e 234
b89e9b0d 235=head3 L<perlootut>
7b2b001e 236
b89e9b0d
DR
237This a new OO tutorial. It focuses on basic OO concepts, and then recommends
238that readers choose an OO framework from CPAN.
2df9265e 239
63ac71b9 240=head2 Changes to Existing Documentation
2df9265e 241
b89e9b0d 242=head3 L<perlobj>
dc80b0c6 243
63ac71b9 244=over 4
83b32788
CBW
245
246=item *
247
b89e9b0d
DR
248This document has been rewritten from scratch, and its coverage of various OO
249concepts has been expanded.
4eb81ef2 250
63ac71b9 251=back
4eb81ef2 252
b89e9b0d
DR
253=head2 Removed Documentation
254
255=head3 Old OO Documentation
256
257All the old OO tutorials, perltoot, perltooc, and perlboot, have been
258removed. The perlbot (bag of object tricks) document has been removed as well.
259
63ac71b9 260=head1 Diagnostics
4eb81ef2 261
63ac71b9
RS
262The following additions or changes have been made to diagnostic output,
263including warnings and fatal error messages. For the complete list of
264diagnostic messages, see L<perldiag>.
82eefd8a 265
63ac71b9
RS
266XXX New or changed warnings emitted by the core's C<C> code go here. Also
267include any changes in L<perldiag> that reconcile it to the C<C> code.
82eefd8a 268
63ac71b9
RS
269[ Within each section, list entries as a =item entry that links to perldiag,
270 e.g.
6252d2e2 271
63ac71b9 272 =item *
6252d2e2 273
63ac71b9
RS
274 L<Invalid version object|perldiag/"Invalid version object">
275]
5213914c 276
63ac71b9 277=head2 New Diagnostics
5213914c 278
63ac71b9 279XXX Newly added diagnostic messages go here
5213914c 280
63ac71b9 281=head3 New Errors
17609435 282
63ac71b9 283=over 4
17609435 284
69f26f52
CBW
285=item *
286
63ac71b9 287XXX L<message|perldiag/"message">
69f26f52 288
5438d4b8 289=back
77ccfaeb 290
63ac71b9 291=head3 New Warnings
c69a30ec 292
63ac71b9
RS
293=over 4
294
295=item *
7c420290 296
63ac71b9 297XXX L<message|perldiag/"message">
7818c927 298
63ac71b9 299=back
7818c927 300
63ac71b9 301=head2 Changes to Existing Diagnostics
dd413713 302
63ac71b9 303XXX Changes (i.e. rewording) of diagnostic messages go here
7818c927 304
5438d4b8 305=over 4
7818c927
FC
306
307=item *
308
63ac71b9 309XXX Describe change here
5aeca1f7 310
5438d4b8 311=back
5aeca1f7 312
63ac71b9 313=head1 Utility Changes
0cb4637e 314
63ac71b9
RS
315XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
316here. Most of these are built within the directories F<utils> and F<x2p>.
0cb4637e 317
63ac71b9
RS
318[ List utility changes as a =head3 entry for each utility and =item
319entries for each change
320Use L<XXX> with program names to get proper documentation linking. ]
4abaf918 321
63ac71b9 322=head3 L<XXX>
4abaf918 323
5438d4b8 324=over 4
4abaf918
Z
325
326=item *
327
63ac71b9 328XXX
8b00e523 329
e8e35311
FC
330=back
331
63ac71b9 332=head1 Configuration and Compilation
b908e258 333
63ac71b9
RS
334XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
335go here. Any other changes to the Perl build process should be listed here.
336However, any platform-specific changes should be listed in the
337L</Platform Support> section, instead.
b908e258 338
63ac71b9 339[ List changes as a =item entry ].
b908e258 340
63ac71b9 341=over 4
71449ad0
DG
342
343=item *
344
5ecd28b8
NC
345The file F<global.sym> is no longer needed, and has been removed. It
346contained a list of all exported functions, one of the files generated by
347F<regen/embed.pl> from data in F<embed.fnc> and F<regen/opcodes>. The code
348has been refactored so that the only user of F<global.sym>, F<makedef.pl>,
349now reads F<embed.fnc> and F<regen/opcodes> directly, removing the need to
350store the list of exported functions in an intermediate file.
351
352As F<global.sym> was never installed, this change will not be visible
353outside the build process.
b908e258 354
6693394d
FC
355=back
356
63ac71b9 357=head1 Testing
bbc28bfc 358
63ac71b9
RS
359XXX Any significant changes to the testing of a freshly built perl should be
360listed here. Changes which create B<new> files in F<t/> go here as do any
361large changes to the testing harness (e.g. when parallel testing was added).
362Changes to existing files in F<t/> aren't worth summarising, although the bugs
363that they represent may be covered elsewhere.
bbc28bfc 364
63ac71b9 365[ List each test improvement as a =item entry ]
b7188eb5 366
34dc2ec0 367=over 4
42a91c97 368
6693394d 369=item *
42a91c97 370
c752c500
FC
371F<t/porting/globvar.t> has been added, to run a sanity check on F<globar.sym>.
372F<globar.sym> is not needed on most *nix platforms, but is for Win32, hence
373previously was it was possible to inadvertently commit changes that worked
374perfectly locally, but broke the build on Win32.
310913d4 375
d2006265
FC
376=item *
377
378F<t/op/unlink.t> has been added to test the C<unlink> function.
379
34dc2ec0 380=back
42a91c97 381
0890f1a5 382=head1 Platform Support
975dff8c 383
63ac71b9 384XXX Any changes to platform support should be listed in the sections below.
9cfd094e 385
63ac71b9
RS
386[ Within the sections, list each platform as a =item entry with specific
387changes as paragraphs below it. ]
9cfd094e 388
63ac71b9 389=head2 New Platforms
9cfd094e 390
63ac71b9
RS
391XXX List any platforms that this version of perl compiles on, that previous
392versions did not. These will either be enabled by new files in the F<hints/>
393directories, or new subdirectories and F<README> files at the top level of the
394source tree.
7c4c6e7c 395
5438d4b8 396=over 4
95f7e41f 397
63ac71b9 398=item XXX-some-platform
95f7e41f 399
63ac71b9 400XXX
df5b44bd 401
63ac71b9 402=back
310913d4 403
63ac71b9 404=head2 Discontinued Platforms
310913d4 405
63ac71b9 406XXX List any platforms that this version of perl no longer compiles on.
310913d4 407
63ac71b9
RS
408=over 4
409
410=item XXX-some-platform
411
412XXX
310913d4 413
5438d4b8 414=back
df5b44bd 415
63ac71b9
RS
416=head2 Platform-Specific Notes
417
418XXX List any changes for specific platforms. This could include configuration
419and compilation changes or changes in portability/compatibility. However,
420changes within modules for platforms should generally be listed in the
421L</Modules and Pragmata> section.
e22e289d 422
5438d4b8 423=over 4
7818c927 424
63ac71b9 425=item XXX-some-platform
7818c927 426
63ac71b9 427XXX
f79aa60b 428
63ac71b9 429=back
7818c927 430
63ac71b9 431=head1 Internal Changes
3fdd840f 432
63ac71b9
RS
433XXX Changes which affect the interface available to C<XS> code go here.
434Other significant internal changes for future core maintainers should
435be noted as well.
3fdd840f 436
63ac71b9 437[ List each change as a =item entry ]
7ffa7e75 438
63ac71b9 439=over 4
7ffa7e75 440
862b2c43
FC
441=item *
442
63ac71b9 443XXX
862b2c43 444
63ac71b9 445=back
c973bd4f 446
63ac71b9 447=head1 Selected Bug Fixes
a6cefd81 448
63ac71b9
RS
449XXX Important bug fixes in the core language are summarised here.
450Bug fixes in files in F<ext/> and F<lib/> are best summarised in
451L</Modules and Pragmata>.
a6cefd81 452
63ac71b9 453[ List each fix as a =item entry ]
c4499eff 454
63ac71b9 455=over 4
c4499eff 456
bbc28bfc
FC
457=item *
458
d2006265
FC
459In Perl 5.15.0 C<defined(${'$'})> stopped returning true if the C<$$>
460variable had not been used yet. This has been fixed.
461
462=item *
463
b4155db2
FC
464C<defined(${"..."})>, C<defined(*{"..."})>, etc., used to
465return true for most, but not all built-in variables, if
466they had not been used yet. Many times that new built-in
467variables were added in past versions, this construct was
23496c6e 468not taken into account, so this affected C<${^GLOBAL_PHASE}> and
b4155db2
FC
469C<${^UTF8CACHE}>, among others. It also used to return false if the
470package name was given as well (C<${"::!"}>) and for subroutines in the
471CORE package [perl #97978] [perl #97492] [perl #97484].
23496c6e
FC
472
473=item *
474
d2006265
FC
475Perl 5.10.0 introduced a similar bug: C<defined(*{"foo"})> where "foo"
476represents the name of a built-in global variable used to return false if
477the variable had never been used before, but only on the I<first> call.
478This, too, has been fixed.
479
480=item *
481
482Various functions that take a filehandle argument in rvalue context
483(C<close>, C<readline>, etc.) used to call C<FETCH> multiple times, if it
484was a tied variable, and warn twice, if it was C<undef> [perl #97482].
485
486=item *
487
488C<close> and similar filehandle functions, when called on built-in global
489variables (like C<$+>), used to die if the variable happened to hold the
490undefined value, instead of producing the usual "Use of uninitialized
491value" warning.
492
493=item *
494
495When autovivified file handles were introduced in Perl 5.6.0, C<readline>
496was inadvertently made to autovivify when called as C<readline($foo)> (but
497not as C<< <$foo> >>). It has now been fixed never to autovivify.
498
499=item *
500
501C<defined ${ $tied_variable }> used to call C<FETCH> multiple times, but
502now calls it just once.
503
504=item *
505
506Some cases of dereferencing a complex expression, such as
507C<${ (), $tied } = 1>, used to call C<FETCH> multiple times, but now call
508it once.
509
510=item *
511
512For a tied variable returning a package name, C<< $tied->method >> used to
513call C<FETCH> multiple times (even up to six!), and sometimes would
514fail to call the method, due to memory corruption.
515
516=item *
517
518Calling an undefined anonymous subroutine (e.g., what $x holds after
519C<undef &{$x = sub{}}>) used to cause a "Not a CODE reference" error, which
520has been corrected to "Undefined subroutine called" [perl #71154].
bbc28bfc 521
e1a80902
FC
522=item *
523
524Causing C<@DB::args> to be freed between uses of C<caller> no longer
525results in a crash [perl #93320].
526
fdd313f4
FC
527=item *
528
529Since 5.6.0, C<*{ ... }> has been inconsistent in how it treats undefined
530values. It would die in strict mode or lvalue context for most undefined
531values, but would be treated as the empty string (with a warning) for the
532specific scalar return by C<undef()> (C<&PL_sv_undef> internally). This
533has been corrected. C<undef()> is now treated like other undefined
534scalars, as in Perl 5.005.
535
01433346
FC
536=item *
537
538It used to be possible to free the typeglob of a localised array or hash
539(e.g., C<local @{"x"}; delete $::{x}>), resulting in a crash on scope exit.
540
88d69532
FC
541=item *
542
543C<setpgrp($foo)> used to be equivalent to C<($foo, setpgrp)>, because
544C<setpgrp> was ignoring its argument if there was just one. Now it is
545equivalent to C<setpgrp($foo,0)>.
546
33d4ef81
FC
547=item *
548
8d4393cf
FC
549Assignments like C<*$tied = \&{"..."}> and C<*glob = $tied> now call FETCH
550only once.
33d4ef81 551
93564729
FC
552=item *
553
554C<chdir>, C<chmod> and C<chown> now always call FETCH if passed a tied
555variable as the last argument. They used to ignore tiedness if the last
556thing return from or assigned to the variable was a typeglob or reference
557to a typeglob.
558
63ac71b9 559=back
bbc28bfc 560
63ac71b9 561=head1 Known Problems
bbc28bfc 562
63ac71b9
RS
563XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
564tests that had to be C<TODO>ed for the release would be noted here, unless
565they were specific to a particular platform (see below).
bbc28bfc 566
63ac71b9
RS
567This is a list of some significant unfixed bugs, which are regressions
568from either 5.XXX.XXX or 5.XXX.XXX.
bbc28bfc 569
63ac71b9 570[ List each fix as a =item entry ]
bbc28bfc 571
63ac71b9 572=over 4
bbc28bfc 573
bad4ae38
FC
574=item *
575
63ac71b9 576XXX
bad4ae38 577
63ac71b9 578=back
ab6ce8ea 579
63ac71b9 580=head1 Obituary
ab6ce8ea 581
63ac71b9
RS
582XXX If any significant core contributor has died, we've added a short obituary
583here.
c62f68e3 584
44691e6f
AB
585=head1 Acknowledgements
586
63ac71b9
RS
587XXX Generate this with:
588
589 perl Porting/acknowledgements.pl v5.15.2..HEAD
29cf780c 590
44691e6f
AB
591=head1 Reporting Bugs
592
593If you find what you think is a bug, you might check the articles
34dc2ec0 594recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
595bug database at http://rt.perl.org/perlbug/ . There may also be
596information at http://www.perl.org/ , the Perl Home Page.
597
598If you believe you have an unreported bug, please run the L<perlbug>
599program included with your release. Be sure to trim your bug down
600to a tiny but sufficient test case. Your bug report, along with the
601output of C<perl -V>, will be sent off to perlbug@perl.org to be
602analysed by the Perl porting team.
603
604If the bug you are reporting has security implications, which make it
605inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 606it to perl5-security-report@perl.org. This points to a closed subscription
b4707b2a
FC
607unarchived mailing list, which includes
608all the core committers, who will be able
44691e6f
AB
609to help assess the impact of issues, figure out a resolution, and help
610co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
611platforms on which Perl is supported. Please only use this address for
612security issues in the Perl core, not for modules independently
44691e6f
AB
613distributed on CPAN.
614
615=head1 SEE ALSO
616
617The F<Changes> file for an explanation of how to view exhaustive details
618on what changed.
619
620The F<INSTALL> file for how to build Perl.
621
622The F<README> file for general stuff.
623
624The F<Artistic> and F<Copying> files for copyright information.
625
626=cut