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