This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
GVs of localised arrays and hashes should be refcounted
[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
36Perl 5.15., introduced subroutines in the CORE namespace. Most of them
37could only be called as barewords; i.e., they could be aliased at compile
38time and then inlined under new names.
39
40Many more of these functions can now be called through references and via
41C<&foo()> syntax, bypassing the prototype.
42
43XXX This is too vague, but the exact list of them will likely change before
445.15.3. It's currently functions whose prototypes match /^[\$_]+;?\z/.
45
63ac71b9 46=head1 Security
0afed34d 47
63ac71b9
RS
48XXX Any security-related notices go here. In particular, any security
49vulnerabilities closed should be noted here rather than in the
50L</Selected Bug Fixes> section.
135c0b08 51
63ac71b9 52[ List each security issue as a =head2 entry ]
135c0b08 53
5438d4b8 54=head1 Incompatible Changes
7818c927 55
5d1892be 56=head2 User-defined case changing operations.
7b2b001e 57
5d1892be
KW
58This feature was deprecated in Perl 5.14, and has now been removed.
59The CPAN module L<Unicode::Casing> provides better functionality without
60the drawbacks that this feature had, as are detailed in the 5.14
61documentation:
62L<http://perldoc.perl.org/5.14.0/perlunicode.html#User-Defined-Case-Mappings-%28for-serious-hackers-only%29>
bdb9ba77 63
7ec04da5
S
64=head2 XSUBs are now 'static'
65
66XSUB C functions are now 'static', that is, they are not visible from
67outside the compilation unit. For the exceedingly rare case where
68this is not desired, a new public macro C<XS_EXTERNAL(name)> can be
69used in place of C<XS(name)>. C<ExtUtils::ParseXS> (C<xsubpp>)
70can be made to declare XSUBs with C<XS_EXTERNAL> using the
71C<EXPORT_XSUB_SYMBOLS> keyword, see L<perlxs> for details.
72
63ac71b9 73=head1 Deprecations
760696b8 74
63ac71b9
RS
75XXX Any deprecated features, syntax, modules etc. should be listed here.
76In particular, deprecated modules should be listed here even if they are
77listed as an updated module in the L</Modules and Pragmata> section.
760696b8 78
63ac71b9 79[ List each deprecation as a =head2 entry ]
760696b8 80
63ac71b9 81=head1 Performance Enhancements
115ff745 82
63ac71b9
RS
83XXX Changes which enhance performance without changing behaviour go here. There
84may well be none in a stable release.
115ff745 85
63ac71b9 86[ List each enhancement as a =item entry ]
115ff745 87
63ac71b9 88=over 4
4ea805df
CBW
89
90=item *
91
63ac71b9 92XXX
1ba7a2fb 93
63ac71b9 94=back
730e5b5b 95
63ac71b9 96=head1 Modules and Pragmata
730e5b5b 97
63ac71b9
RS
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.
730e5b5b 105
63ac71b9 106[ Within each section, list entries as a =item entry ]
730e5b5b 107
63ac71b9 108=head2 New Modules and Pragmata
a30cae0b 109
63ac71b9 110=over 4
a30cae0b
CBW
111
112=item *
113
63ac71b9 114XXX
bbc28bfc 115
63ac71b9 116=back
bbc28bfc 117
63ac71b9 118=head2 Updated Modules and Pragmata
e46d9735 119
63ac71b9 120=over 4
e46d9735
CBW
121
122=item *
123
aefcd4a2 124L<Archive::Extract> has been upgraded from version 0.52 to version 0.56
4afdee4c
CBW
125
126Resolved an issue where C<unzip> executable was present in C<PATH> on MSWin32
57126352 127
d93f0209
FC
128=item *
129
d2006265
FC
130L<diagnostics> has been upgraded from version 1.24 to 1.25.
131
132It now strips out C<SZ<><...>> formatting codes before displaying
133descriptions [perl #94488].
134
135=item *
136
d93f0209
FC
137L<Math::BigRat> has been upgraded from version 0.2602 to 0.2603.
138
139C<int()> on a Math::BigRat object containing -1/2 now creates a
140Math::BigInt containing 0, rather than -0. L<Math::BigInt> does not even
141support negative zero, so the resulting object was actually malformed
142[perl #95530].
143
60527824
FR
144=item *
145
146L<Pod::Simple> has been upgraded from version 3.18 to 3.19.
147
63ac71b9 148=back
259925f6 149
63ac71b9 150=head2 Removed Modules and Pragmata
6252d2e2 151
63ac71b9 152=over 4
9840cdee
CBW
153
154=item *
155
63ac71b9 156XXX
54e02335 157
63ac71b9 158=back
310913d4 159
63ac71b9 160=head1 Documentation
310913d4 161
63ac71b9
RS
162XXX Changes to files in F<pod/> go here. Consider grouping entries by
163file and be sure to link to the appropriate page, e.g. L<perlfunc>.
7b2b001e 164
63ac71b9 165=head2 New Documentation
7b2b001e 166
63ac71b9 167XXX Changes which create B<new> files in F<pod/> go here.
7b2b001e 168
63ac71b9 169=head3 L<XXX>
2df9265e 170
63ac71b9 171XXX Description of the purpose of the new file here
2df9265e 172
63ac71b9 173=head2 Changes to Existing Documentation
2df9265e 174
63ac71b9
RS
175XXX Changes which significantly change existing files in F<pod/> go here.
176However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
177section.
dc80b0c6 178
63ac71b9 179=head3 L<XXX>
dc80b0c6 180
63ac71b9 181=over 4
83b32788
CBW
182
183=item *
184
63ac71b9 185XXX Description of the change here
4eb81ef2 186
63ac71b9 187=back
4eb81ef2 188
63ac71b9 189=head1 Diagnostics
4eb81ef2 190
63ac71b9
RS
191The following additions or changes have been made to diagnostic output,
192including warnings and fatal error messages. For the complete list of
193diagnostic messages, see L<perldiag>.
82eefd8a 194
63ac71b9
RS
195XXX New or changed warnings emitted by the core's C<C> code go here. Also
196include any changes in L<perldiag> that reconcile it to the C<C> code.
82eefd8a 197
63ac71b9
RS
198[ Within each section, list entries as a =item entry that links to perldiag,
199 e.g.
6252d2e2 200
63ac71b9 201 =item *
6252d2e2 202
63ac71b9
RS
203 L<Invalid version object|perldiag/"Invalid version object">
204]
5213914c 205
63ac71b9 206=head2 New Diagnostics
5213914c 207
63ac71b9 208XXX Newly added diagnostic messages go here
5213914c 209
63ac71b9 210=head3 New Errors
17609435 211
63ac71b9 212=over 4
17609435 213
69f26f52
CBW
214=item *
215
63ac71b9 216XXX L<message|perldiag/"message">
69f26f52 217
5438d4b8 218=back
77ccfaeb 219
63ac71b9 220=head3 New Warnings
c69a30ec 221
63ac71b9
RS
222=over 4
223
224=item *
7c420290 225
63ac71b9 226XXX L<message|perldiag/"message">
7818c927 227
63ac71b9 228=back
7818c927 229
63ac71b9 230=head2 Changes to Existing Diagnostics
dd413713 231
63ac71b9 232XXX Changes (i.e. rewording) of diagnostic messages go here
7818c927 233
5438d4b8 234=over 4
7818c927
FC
235
236=item *
237
63ac71b9 238XXX Describe change here
5aeca1f7 239
5438d4b8 240=back
5aeca1f7 241
63ac71b9 242=head1 Utility Changes
0cb4637e 243
63ac71b9
RS
244XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
245here. Most of these are built within the directories F<utils> and F<x2p>.
0cb4637e 246
63ac71b9
RS
247[ List utility changes as a =head3 entry for each utility and =item
248entries for each change
249Use L<XXX> with program names to get proper documentation linking. ]
4abaf918 250
63ac71b9 251=head3 L<XXX>
4abaf918 252
5438d4b8 253=over 4
4abaf918
Z
254
255=item *
256
63ac71b9 257XXX
8b00e523 258
e8e35311
FC
259=back
260
63ac71b9 261=head1 Configuration and Compilation
b908e258 262
63ac71b9
RS
263XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
264go here. Any other changes to the Perl build process should be listed here.
265However, any platform-specific changes should be listed in the
266L</Platform Support> section, instead.
b908e258 267
63ac71b9 268[ List changes as a =item entry ].
b908e258 269
63ac71b9 270=over 4
71449ad0
DG
271
272=item *
273
5ecd28b8
NC
274The file F<global.sym> is no longer needed, and has been removed. It
275contained a list of all exported functions, one of the files generated by
276F<regen/embed.pl> from data in F<embed.fnc> and F<regen/opcodes>. The code
277has been refactored so that the only user of F<global.sym>, F<makedef.pl>,
278now reads F<embed.fnc> and F<regen/opcodes> directly, removing the need to
279store the list of exported functions in an intermediate file.
280
281As F<global.sym> was never installed, this change will not be visible
282outside the build process.
b908e258 283
6693394d
FC
284=back
285
63ac71b9 286=head1 Testing
bbc28bfc 287
63ac71b9
RS
288XXX Any significant changes to the testing of a freshly built perl should be
289listed here. Changes which create B<new> files in F<t/> go here as do any
290large changes to the testing harness (e.g. when parallel testing was added).
291Changes to existing files in F<t/> aren't worth summarising, although the bugs
292that they represent may be covered elsewhere.
bbc28bfc 293
63ac71b9 294[ List each test improvement as a =item entry ]
b7188eb5 295
34dc2ec0 296=over 4
42a91c97 297
6693394d 298=item *
42a91c97 299
c752c500
FC
300F<t/porting/globvar.t> has been added, to run a sanity check on F<globar.sym>.
301F<globar.sym> is not needed on most *nix platforms, but is for Win32, hence
302previously was it was possible to inadvertently commit changes that worked
303perfectly locally, but broke the build on Win32.
310913d4 304
d2006265
FC
305=item *
306
307F<t/op/unlink.t> has been added to test the C<unlink> function.
308
34dc2ec0 309=back
42a91c97 310
0890f1a5 311=head1 Platform Support
975dff8c 312
63ac71b9 313XXX Any changes to platform support should be listed in the sections below.
9cfd094e 314
63ac71b9
RS
315[ Within the sections, list each platform as a =item entry with specific
316changes as paragraphs below it. ]
9cfd094e 317
63ac71b9 318=head2 New Platforms
9cfd094e 319
63ac71b9
RS
320XXX List any platforms that this version of perl compiles on, that previous
321versions did not. These will either be enabled by new files in the F<hints/>
322directories, or new subdirectories and F<README> files at the top level of the
323source tree.
7c4c6e7c 324
5438d4b8 325=over 4
95f7e41f 326
63ac71b9 327=item XXX-some-platform
95f7e41f 328
63ac71b9 329XXX
df5b44bd 330
63ac71b9 331=back
310913d4 332
63ac71b9 333=head2 Discontinued Platforms
310913d4 334
63ac71b9 335XXX List any platforms that this version of perl no longer compiles on.
310913d4 336
63ac71b9
RS
337=over 4
338
339=item XXX-some-platform
340
341XXX
310913d4 342
5438d4b8 343=back
df5b44bd 344
63ac71b9
RS
345=head2 Platform-Specific Notes
346
347XXX List any changes for specific platforms. This could include configuration
348and compilation changes or changes in portability/compatibility. However,
349changes within modules for platforms should generally be listed in the
350L</Modules and Pragmata> section.
e22e289d 351
5438d4b8 352=over 4
7818c927 353
63ac71b9 354=item XXX-some-platform
7818c927 355
63ac71b9 356XXX
f79aa60b 357
63ac71b9 358=back
7818c927 359
63ac71b9 360=head1 Internal Changes
3fdd840f 361
63ac71b9
RS
362XXX Changes which affect the interface available to C<XS> code go here.
363Other significant internal changes for future core maintainers should
364be noted as well.
3fdd840f 365
63ac71b9 366[ List each change as a =item entry ]
7ffa7e75 367
63ac71b9 368=over 4
7ffa7e75 369
862b2c43
FC
370=item *
371
63ac71b9 372XXX
862b2c43 373
63ac71b9 374=back
c973bd4f 375
63ac71b9 376=head1 Selected Bug Fixes
a6cefd81 377
63ac71b9
RS
378XXX Important bug fixes in the core language are summarised here.
379Bug fixes in files in F<ext/> and F<lib/> are best summarised in
380L</Modules and Pragmata>.
a6cefd81 381
63ac71b9 382[ List each fix as a =item entry ]
c4499eff 383
63ac71b9 384=over 4
c4499eff 385
bbc28bfc
FC
386=item *
387
d2006265
FC
388In Perl 5.15.0 C<defined(${'$'})> stopped returning true if the C<$$>
389variable had not been used yet. This has been fixed.
390
391=item *
392
393Perl 5.10.0 introduced a similar bug: C<defined(*{"foo"})> where "foo"
394represents the name of a built-in global variable used to return false if
395the variable had never been used before, but only on the I<first> call.
396This, too, has been fixed.
397
398=item *
399
400Various functions that take a filehandle argument in rvalue context
401(C<close>, C<readline>, etc.) used to call C<FETCH> multiple times, if it
402was a tied variable, and warn twice, if it was C<undef> [perl #97482].
403
404=item *
405
406C<close> and similar filehandle functions, when called on built-in global
407variables (like C<$+>), used to die if the variable happened to hold the
408undefined value, instead of producing the usual "Use of uninitialized
409value" warning.
410
411=item *
412
413When autovivified file handles were introduced in Perl 5.6.0, C<readline>
414was inadvertently made to autovivify when called as C<readline($foo)> (but
415not as C<< <$foo> >>). It has now been fixed never to autovivify.
416
417=item *
418
419C<defined ${ $tied_variable }> used to call C<FETCH> multiple times, but
420now calls it just once.
421
422=item *
423
424Some cases of dereferencing a complex expression, such as
425C<${ (), $tied } = 1>, used to call C<FETCH> multiple times, but now call
426it once.
427
428=item *
429
430For a tied variable returning a package name, C<< $tied->method >> used to
431call C<FETCH> multiple times (even up to six!), and sometimes would
432fail to call the method, due to memory corruption.
433
434=item *
435
436Calling an undefined anonymous subroutine (e.g., what $x holds after
437C<undef &{$x = sub{}}>) used to cause a "Not a CODE reference" error, which
438has been corrected to "Undefined subroutine called" [perl #71154].
bbc28bfc 439
e1a80902
FC
440=item *
441
442Causing C<@DB::args> to be freed between uses of C<caller> no longer
443results in a crash [perl #93320].
444
fdd313f4
FC
445=item *
446
447Since 5.6.0, C<*{ ... }> has been inconsistent in how it treats undefined
448values. It would die in strict mode or lvalue context for most undefined
449values, but would be treated as the empty string (with a warning) for the
450specific scalar return by C<undef()> (C<&PL_sv_undef> internally). This
451has been corrected. C<undef()> is now treated like other undefined
452scalars, as in Perl 5.005.
453
01433346
FC
454=item *
455
456It used to be possible to free the typeglob of a localised array or hash
457(e.g., C<local @{"x"}; delete $::{x}>), resulting in a crash on scope exit.
458
63ac71b9 459=back
bbc28bfc 460
63ac71b9 461=head1 Known Problems
bbc28bfc 462
63ac71b9
RS
463XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
464tests that had to be C<TODO>ed for the release would be noted here, unless
465they were specific to a particular platform (see below).
bbc28bfc 466
63ac71b9
RS
467This is a list of some significant unfixed bugs, which are regressions
468from either 5.XXX.XXX or 5.XXX.XXX.
bbc28bfc 469
63ac71b9 470[ List each fix as a =item entry ]
bbc28bfc 471
63ac71b9 472=over 4
bbc28bfc 473
bad4ae38
FC
474=item *
475
63ac71b9 476XXX
bad4ae38 477
63ac71b9 478=back
ab6ce8ea 479
63ac71b9 480=head1 Obituary
ab6ce8ea 481
63ac71b9
RS
482XXX If any significant core contributor has died, we've added a short obituary
483here.
c62f68e3 484
44691e6f
AB
485=head1 Acknowledgements
486
63ac71b9
RS
487XXX Generate this with:
488
489 perl Porting/acknowledgements.pl v5.15.2..HEAD
29cf780c 490
44691e6f
AB
491=head1 Reporting Bugs
492
493If you find what you think is a bug, you might check the articles
34dc2ec0 494recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
495bug database at http://rt.perl.org/perlbug/ . There may also be
496information at http://www.perl.org/ , the Perl Home Page.
497
498If you believe you have an unreported bug, please run the L<perlbug>
499program included with your release. Be sure to trim your bug down
500to a tiny but sufficient test case. Your bug report, along with the
501output of C<perl -V>, will be sent off to perlbug@perl.org to be
502analysed by the Perl porting team.
503
504If the bug you are reporting has security implications, which make it
505inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 506it to perl5-security-report@perl.org. This points to a closed subscription
b4707b2a
FC
507unarchived mailing list, which includes
508all the core committers, who will be able
44691e6f
AB
509to help assess the impact of issues, figure out a resolution, and help
510co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
511platforms on which Perl is supported. Please only use this address for
512security issues in the Perl core, not for modules independently
44691e6f
AB
513distributed on CPAN.
514
515=head1 SEE ALSO
516
517The F<Changes> file for an explanation of how to view exhaustive details
518on what changed.
519
520The F<INSTALL> file for how to build Perl.
521
522The F<README> file for general stuff.
523
524The F<Artistic> and F<Copying> files for copyright information.
525
526=cut