This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Deparse $#{/} correctly
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
d2006265 3=for comment
d6cf2367
FC
4This has been completed up to 84c2f6fdcb.
5
d2006265 6
44691e6f
AB
7=head1 NAME
8
63ac71b9
RS
9[ this is a template for a new perldelta file. Any text flagged as
10XXX needs to be processed before release. ]
11
f25d4e05 12perldelta - what is new for perl v5.15.3
760696b8 13
5438d4b8 14=head1 DESCRIPTION
5cd408a2 15
f25d4e05
RS
16This document describes differences between the 5.15.2 release and
17the 5.15.3 release.
5cd408a2 18
f25d4e05
RS
19If you are upgrading from an earlier release such as 5.15.1, first read
20L<perl5152delta>, which describes differences between 5.15.1 and
215.15.2.
062678b2 22
63ac71b9 23=head1 Notice
4185c919 24
63ac71b9 25XXX Any important notices here
0afed34d 26
63ac71b9 27=head1 Core Enhancements
0afed34d 28
63ac71b9
RS
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.
0afed34d 32
63ac71b9 33[ List each enhancement as a =head2 entry ]
0afed34d 34
d2006265
FC
35=head2 More CORE subs are callable through references
36
c148612c 37Perl 5.15.2 introduced subroutines in the CORE namespace. Most of them
d2006265
FC
38could only be called as barewords; i.e., they could be aliased at compile
39time and then inlined under new names.
40
2702a50a
FC
41Almost all of these functions can now be called through references and via
42C<&foo()> syntax, bypassing the prototype. See L<CORE> for a list of the
43exceptions.
d2006265 44
d6cf2367
FC
45=head2 New debugger commands
46
47The debugger now has C<disable> and C<enable> commands for disabling
48existing breakpoints and reënabling them. See L<perldebug>.
49
63ac71b9 50=head1 Security
0afed34d 51
63ac71b9
RS
52XXX Any security-related notices go here. In particular, any security
53vulnerabilities closed should be noted here rather than in the
54L</Selected Bug Fixes> section.
135c0b08 55
63ac71b9 56[ List each security issue as a =head2 entry ]
135c0b08 57
46661105
CB
58=head2 C<File::Glob::bsd_glob()> memory error with GLOB_ALTDIRFUNC (CVE-2011-2728).
59
60Calling C<File::Glob::bsd_glob> with the unsupported flag GLOB_ALTDIRFUNC would
61cause an access violation / segfault. A Perl program that accepts a flags value from
62an external source could expose itself to denial of service or arbitrary code
63execution attacks. There are no known exploits in the wild. The problem has been
64corrected by explicitly disabling all unsupported flags and setting unused function
65pointers to null. Bug reported by Clément Lecigne.
66
5438d4b8 67=head1 Incompatible Changes
7818c927 68
e1dccc0d
Z
69=head2 $[ has been removed
70
71The array/string index offsetting mechanism, controlled by the C<$[> magic
72variable, has been removed. C<$[> now always reads as zero. Writing a
73zero to it is still permitted, but writing a non-zero value causes an
74exception. Those hopelessly addicted to FORTRAN-style 1-based indexing
75may wish to use the module L<Array::Base>, which provides an independent
76implementation of the index offsetting concept, or L<Classic::Perl>,
77which allows L<Array::Base> to be controlled through assignment to C<$[>.
78
5d1892be 79=head2 User-defined case changing operations.
7b2b001e 80
5d1892be
KW
81This feature was deprecated in Perl 5.14, and has now been removed.
82The CPAN module L<Unicode::Casing> provides better functionality without
83the drawbacks that this feature had, as are detailed in the 5.14
84documentation:
85L<http://perldoc.perl.org/5.14.0/perlunicode.html#User-Defined-Case-Mappings-%28for-serious-hackers-only%29>
bdb9ba77 86
7ec04da5
SM
87=head2 XSUBs are now 'static'
88
89XSUB C functions are now 'static', that is, they are not visible from
404452ea
SM
90outside the compilation unit. Users can use the new C<XS_EXTERNAL(name)>
91and C<XS_INTERNAL(name)> macros to pick the desired linking behaviour.
92The ordinary C<XS(name)> declaration for XSUBs will continue to declare
93non-'static' XSUBs for compatibility, but the XS compiler,
94C<ExtUtils::ParseXS> (C<xsubpp>) will emit 'static' XSUBs by default.
95C<ExtUtils::ParseXS>'s behaviour can be reconfigured from XS using the
7ec04da5
SM
96C<EXPORT_XSUB_SYMBOLS> keyword, see L<perlxs> for details.
97
d6cf2367
FC
98=head2 Borland compiler
99
100All support for the Borland compiler has been dropped. The code had not
101worked for a long time anyway.
102
5d4ff231
FC
103=head2 Weakening read-only references
104
105Weakening read-only references is no longer permitted. It should never
106hove worked anyway, and in some cases could result in crashes.
107
63ac71b9 108=head1 Deprecations
760696b8 109
63ac71b9
RS
110XXX Any deprecated features, syntax, modules etc. should be listed here.
111In particular, deprecated modules should be listed here even if they are
112listed as an updated module in the L</Modules and Pragmata> section.
760696b8 113
63ac71b9 114[ List each deprecation as a =head2 entry ]
760696b8 115
63ac71b9 116=head1 Performance Enhancements
115ff745 117
63ac71b9
RS
118XXX Changes which enhance performance without changing behaviour go here. There
119may well be none in a stable release.
115ff745 120
63ac71b9 121[ List each enhancement as a =item entry ]
115ff745 122
63ac71b9 123=over 4
4ea805df
CBW
124
125=item *
126
63ac71b9 127XXX
1ba7a2fb 128
63ac71b9 129=back
730e5b5b 130
63ac71b9 131=head1 Modules and Pragmata
730e5b5b 132
63ac71b9
RS
133XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
134go here. If Module::CoreList is updated, generate an initial draft of the
135following sections using F<Porting/corelist-perldelta.pl>, which prints stub
136entries to STDOUT. Results can be pasted in place of the '=head2' entries
137below. A paragraph summary for important changes should then be added by hand.
138In an ideal world, dual-life modules would have a F<Changes> file that could be
139cribbed.
730e5b5b 140
63ac71b9 141[ Within each section, list entries as a =item entry ]
730e5b5b 142
63ac71b9 143=head2 New Modules and Pragmata
a30cae0b 144
63ac71b9 145=over 4
a30cae0b
CBW
146
147=item *
148
63ac71b9 149XXX
bbc28bfc 150
63ac71b9 151=back
bbc28bfc 152
63ac71b9 153=head2 Updated Modules and Pragmata
e46d9735 154
63ac71b9 155=over 4
e46d9735
CBW
156
157=item *
158
5f8b5b70
NC
159L<AnyDBM_File> has been upgraded from version 1.00 to version 1.01.
160
161This is only a minor documentation update.
162
163=item *
164
43c6b706 165L<Archive::Extract> has been upgraded from version 0.52 to version 0.56.
4afdee4c
CBW
166
167Resolved an issue where C<unzip> executable was present in C<PATH> on MSWin32
57126352 168
d93f0209
FC
169=item *
170
93e94d8a
CBW
171L<Archive::Tar> has been upgraded from version 1.76 to version 1.78.
172
173=item *
174
6ec73527
FC
175L<B::Deparse> has been upgraded from version 1.07 to 1.08.
176
177It now correctly deparses C<$#{/}>.
178
179=item *
180
13975bd1
CBW
181L<CPAN::Meta> has been upgraded from version 2.112150 to version 2.112580.
182
183=item *
184
53b10071
CBW
185L<CPAN::Meta::YAML> has been upgraded from version 0.003 to version 0.004.
186
187=item *
188
891b5d1e 189L<CPANPLUS> has been upgraded from version 0.9109 to version 0.9111.
755f12e5
NC
190
191=item *
192
50b3d220
CBW
193L<CPANPLUS::Dist::Build> has been upgraded from version 0.56 to version 0.58.
194
195=item *
196
49ef49fe
CBW
197L<Devel::PPPort> has been upgraded from version 3.19 to version 3.20.
198
199=item *
200
43c6b706 201L<diagnostics> has been upgraded from version 1.24 to version 1.25.
d2006265
FC
202
203It now strips out C<SZ<><...>> formatting codes before displaying
204descriptions [perl #94488].
205
206=item *
207
4bbdbd51
NC
208L<Data::Dumper> has been upgraded from version 2.133 to version 2.134.
209
210The XS code for sorting hash keys has been simplified slightly.
211
212=item *
213
f87cd9fa
CBW
214L<Exporter> has been upgraded from version 5.64_03 to version 5.65.
215
216=item *
217
404452ea 218L<ExtUtils::ParseXS> has been upgraded from version 3.03_01 to version 3.04_04.
98e61122
NC
219
220The handling of C<dVAR> in the generated XS code has been simplified.
221
404452ea
SM
222The previously broken "INCLUDE: ... |" functionality has been repaired
223(CPAN RT #70213).
224
225A compatibility-workaround for modules that cannot
226live with the new XSUB staticness (see I<XSUBs are now static> above)
227has been implemented with the C<PERL_EUPXS_ALWAYS_EXPORT> and
228C<PERL_EUPXS_NEVER_EXPORT> preprocessor defines.
229
230The compiler warnings when -except option is used with F<xsubpp>
231have been fixed.
232
233The XSUB.h changes to make C<XS(name)> use C<XS_INTERNAL(name)>
234by default (which were in the 5.15.2 dev release of perl)
235have been reverted since too many CPAN modules expect to
236be able to refer to XSUBs declared with C<XS(name)>.
237Instead, C<ExtUtils::ParseXS> will define a copy of the
238C<XS_INTERNAL>/C<XS_EXTERNAL> macros as necessary going back to
239perl 5.10.0. By default, ExtUtils::ParseXS will use
240C<XS_INTERNAL(name)> instead of C<XS(name)>.
241
242Fixed regression for input-typemap override in XS argument
243list (CPAN RT #70448).
244
245C<ExtUtils::Typemaps> now properly strips trailing semicolons
246from inputmaps. These could previously trigger warnings (errors
247in strict C89 compilers) due to additional semicolons being
248interpreted as empty statements.
249
250Now detects and throws a warning if there is a C<CODE> section using
251C<RETVAL>, but no C<OUTPUT> section (CPAN RT #69536).
252
98e61122
NC
253=item *
254
43c6b706
CBW
255L<Locale::Codes> has been upgraded from version 3.17 to version 3.18.
256
257The CIA world added non-standard values, so this is no longer used as a source
258of data.
259
260=item *
261
46661105
CB
262L<File::Glob> has been upgraded from version 1.12 to version 1.13.
263
d6cf2367
FC
264On Windows, tilde (~) expansion now checks the C<USERPROFILE> environment
265variable, after checking C<HOME>.
266
267See also L</Security>.
46661105
CB
268
269=item *
270
0b2be169
FC
271L<Filter::Simple> has been upgrade from version 0.87 to 0.88.
272
273It is now better at detecting the end of a pod section. It always checks
274for =cut, instead of checking for =end (if the pod begins with =begin) or
275the end of the paragraph (if the pod begins with =for) [perl #92436].
276
828d6195
FC
277It is also better at detecting variables. A method call on a variable is
278no longer considered part of the variable name, so strings passed to a
279method are now hidden from filters that do not want to deal with strings
280[perl #92436].
281
0b2be169
FC
282=item *
283
986a805c
FC
284L<IO> has been upgraded from version 1.25_05 to 1.25_06, and L<IO::Handle>
285from version 1.32 to 1.33.
286
287Together, these upgrades fix a problem with IO::Handle's C<getline> and
288C<getlines> methods. When these methods are called on the special ARGV
289handle, the next file is automatically opened, as happens with the built-in
290C<< <> >> and C<readline> functions. But, unlike the built-ins, these
291methods were not respecting the caller's use of the L<open> pragma and
292applying the approprate I/O layers to the newly-opened file
293[rt.cpan.org #66474].
294
295=item *
296
43c6b706 297L<Math::BigRat> has been upgraded from version 0.2602 to version 0.2603.
d93f0209
FC
298
299C<int()> on a Math::BigRat object containing -1/2 now creates a
300Math::BigInt containing 0, rather than -0. L<Math::BigInt> does not even
301support negative zero, so the resulting object was actually malformed
302[perl #95530].
303
60527824
FR
304=item *
305
d6cf2367
FC
306L<Module::CoreList> has been upgraded from version 2.55 to 2.56.
307
308It was missing a few entries: L<DB_File> in 5.8.2, L<Errno> in 5.6.0 and
3095.6.1, and L<VMS::Filespec> in 5.12.3.
310
311=item *
312
d6ee8587 313L<Module::Metadata> has been upgraded from version 1.000005_01 to version 1.000007.
d39de893
CBW
314
315=item *
316
39afdc5a
CBW
317L<Module::Load::Conditional> has been upgraded from version 0.44 to version 0.46.
318
319=item *
320
666c7ca6
NC
321L<ODBM_File> has been upgraded from version 1.11 to version 1.12.
322
323This is only a minor refactoring of the XS code to bring it closer to the
324other C<?DBM_File> modules.
325
326=item *
327
d6cf2367
FC
328L<open> has been upgraded from version 1.08 to 1.09.
329
330It no longer turns of layers on standard handles when invoked without the
331":std" directive. Similarly, when invoked I<with> the ":std" directive, it
332now clears layers on STDERR before applying the new ones, and not just on
333STDIN and STDOUT [perl #92728].
334
335=item *
336
c56bc1f6 337L<perlfaq> has been upgraded from version 5.01500302 to version 5.0150034.
a9feb6cb
CBW
338
339=item *
340
43c6b706 341L<Pod::Simple> has been upgraded from version 3.18 to version 3.19.
60527824 342
7ac26854
NC
343=item *
344
345L<POSIX> has been upgraded from version 1.24 to version 1.25.
346
347L<POSIX> no longer uses L<AutoLoader>. Any code which was relying on this
348implementation detail was buggy, and may fail as a result of this change.
349The module's Perl code has been considerably simplified, roughly halving
29d1ad9e
NC
350the number of lines, with no change in functionality. The XS code has
351been refactored to reduce the size of the shared object by about 12%,
352with no change in functionality. More POSIX functions now have tests.
7ac26854 353
518487b2
NC
354C<POSIX::Termios::setattr> now defaults the third argument to C<TCSANOW>,
355instead of 0. On most platforms C<TCSANOW> is defined as 0, but on some
3560 is not a valid parameter, which caused a call with defaults to fail.
357
daef35db
NC
358=item *
359
b420b12a
NC
360L<Storable> has been upgraded from version 2.31 to version 2.32.
361
362XS code which duplicates functionality of F<ppport.h> has been removed.
363Tests should now pass on older versions of L<Test::More>. Storable now
364builds and passes tests back to perl 5.004.
365
366=item *
367
d6cf2367
FC
368L<threads::shared> has been upgraded from version 1.38 to 1.40.
369
370Destructors on shared objects used to be ignored sometimes if the objects
371were referenced only by shared data structures. This has been mostly
372fixed, but destructors may still be ignored if the objects still exist at
373global destruction time [perl #98204].
374
375=item *
376
daef35db
NC
377L<XSLoader> has been upgraded from version 0.15 to version 0.16.
378
63ac71b9 379=back
259925f6 380
63ac71b9 381=head2 Removed Modules and Pragmata
6252d2e2 382
63ac71b9 383=over 4
9840cdee
CBW
384
385=item *
386
63ac71b9 387XXX
54e02335 388
63ac71b9 389=back
310913d4 390
63ac71b9 391=head1 Documentation
310913d4 392
63ac71b9
RS
393XXX Changes to files in F<pod/> go here. Consider grouping entries by
394file and be sure to link to the appropriate page, e.g. L<perlfunc>.
7b2b001e 395
63ac71b9 396=head2 New Documentation
7b2b001e 397
b89e9b0d 398=head3 L<perlootut>
7b2b001e 399
b89e9b0d
DR
400This a new OO tutorial. It focuses on basic OO concepts, and then recommends
401that readers choose an OO framework from CPAN.
2df9265e 402
63ac71b9 403=head2 Changes to Existing Documentation
2df9265e 404
b89e9b0d 405=head3 L<perlobj>
dc80b0c6 406
63ac71b9 407=over 4
83b32788
CBW
408
409=item *
410
b89e9b0d
DR
411This document has been rewritten from scratch, and its coverage of various OO
412concepts has been expanded.
4eb81ef2 413
63ac71b9 414=back
4eb81ef2 415
d6cf2367
FC
416=head3 L<perlpragma>
417
418=over 4
419
420=item *
421
422There is now a standard convention for naming keys in the C<%^H>,
423documented under L<Key naming|perlpragma/Key naming>.
424
425=back
426
b89e9b0d
DR
427=head2 Removed Documentation
428
429=head3 Old OO Documentation
430
431All the old OO tutorials, perltoot, perltooc, and perlboot, have been
d6cf2367
FC
432removed. The perlbot (bag of object tricks) document has been removed as well.
433
434=head3 Development Deltas
435
436The old perldelta files for development cycles prior to 5.15 have been
437removed.
b89e9b0d 438
63ac71b9 439=head1 Diagnostics
4eb81ef2 440
63ac71b9
RS
441The following additions or changes have been made to diagnostic output,
442including warnings and fatal error messages. For the complete list of
443diagnostic messages, see L<perldiag>.
82eefd8a 444
63ac71b9
RS
445XXX New or changed warnings emitted by the core's C<C> code go here. Also
446include any changes in L<perldiag> that reconcile it to the C<C> code.
82eefd8a 447
63ac71b9
RS
448[ Within each section, list entries as a =item entry that links to perldiag,
449 e.g.
6252d2e2 450
63ac71b9 451 =item *
6252d2e2 452
63ac71b9
RS
453 L<Invalid version object|perldiag/"Invalid version object">
454]
5213914c 455
63ac71b9 456=head2 New Diagnostics
5213914c 457
63ac71b9 458XXX Newly added diagnostic messages go here
5213914c 459
63ac71b9 460=head3 New Errors
17609435 461
63ac71b9 462=over 4
17609435 463
69f26f52
CBW
464=item *
465
63ac71b9 466XXX L<message|perldiag/"message">
69f26f52 467
5438d4b8 468=back
77ccfaeb 469
63ac71b9 470=head3 New Warnings
c69a30ec 471
63ac71b9
RS
472=over 4
473
474=item *
7c420290 475
63ac71b9 476XXX L<message|perldiag/"message">
7818c927 477
63ac71b9 478=back
7818c927 479
63ac71b9 480=head2 Changes to Existing Diagnostics
dd413713 481
63ac71b9 482XXX Changes (i.e. rewording) of diagnostic messages go here
7818c927 483
5438d4b8 484=over 4
7818c927
FC
485
486=item *
487
63ac71b9 488XXX Describe change here
5aeca1f7 489
5438d4b8 490=back
5aeca1f7 491
63ac71b9 492=head1 Utility Changes
0cb4637e 493
63ac71b9
RS
494XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
495here. Most of these are built within the directories F<utils> and F<x2p>.
0cb4637e 496
63ac71b9
RS
497[ List utility changes as a =head3 entry for each utility and =item
498entries for each change
499Use L<XXX> with program names to get proper documentation linking. ]
4abaf918 500
7d167fe7 501=head3 L<h2ph>
4abaf918 502
5438d4b8 503=over 4
4abaf918
Z
504
505=item *
506
7d167fe7
FC
507L<h2ph> used to generate code of the form
508
509 unless(defined(&FOO)) {
510 sub FOO () {42;}
511 }
512
513But the subroutine is a compile-time declaration, and is hence unaffected
514by the condition. It has now been corrected to emit a string C<eval>
515around the subroutine [perl #99368].
8b00e523 516
e8e35311
FC
517=back
518
63ac71b9 519=head1 Configuration and Compilation
b908e258 520
63ac71b9
RS
521XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
522go here. Any other changes to the Perl build process should be listed here.
523However, any platform-specific changes should be listed in the
524L</Platform Support> section, instead.
b908e258 525
63ac71b9 526[ List changes as a =item entry ].
b908e258 527
63ac71b9 528=over 4
71449ad0
DG
529
530=item *
531
5ecd28b8
NC
532The file F<global.sym> is no longer needed, and has been removed. It
533contained a list of all exported functions, one of the files generated by
534F<regen/embed.pl> from data in F<embed.fnc> and F<regen/opcodes>. The code
535has been refactored so that the only user of F<global.sym>, F<makedef.pl>,
536now reads F<embed.fnc> and F<regen/opcodes> directly, removing the need to
537store the list of exported functions in an intermediate file.
538
539As F<global.sym> was never installed, this change will not be visible
540outside the build process.
b908e258 541
6693394d
FC
542=back
543
63ac71b9 544=head1 Testing
bbc28bfc 545
63ac71b9
RS
546XXX Any significant changes to the testing of a freshly built perl should be
547listed here. Changes which create B<new> files in F<t/> go here as do any
548large changes to the testing harness (e.g. when parallel testing was added).
549Changes to existing files in F<t/> aren't worth summarising, although the bugs
550that they represent may be covered elsewhere.
bbc28bfc 551
63ac71b9 552[ List each test improvement as a =item entry ]
b7188eb5 553
34dc2ec0 554=over 4
42a91c97 555
6693394d 556=item *
42a91c97 557
c752c500
FC
558F<t/porting/globvar.t> has been added, to run a sanity check on F<globar.sym>.
559F<globar.sym> is not needed on most *nix platforms, but is for Win32, hence
560previously was it was possible to inadvertently commit changes that worked
561perfectly locally, but broke the build on Win32.
310913d4 562
d2006265
FC
563=item *
564
565F<t/op/unlink.t> has been added to test the C<unlink> function.
566
34dc2ec0 567=back
42a91c97 568
0890f1a5 569=head1 Platform Support
975dff8c 570
63ac71b9 571XXX Any changes to platform support should be listed in the sections below.
9cfd094e 572
63ac71b9
RS
573[ Within the sections, list each platform as a =item entry with specific
574changes as paragraphs below it. ]
9cfd094e 575
63ac71b9 576=head2 New Platforms
9cfd094e 577
63ac71b9
RS
578XXX List any platforms that this version of perl compiles on, that previous
579versions did not. These will either be enabled by new files in the F<hints/>
580directories, or new subdirectories and F<README> files at the top level of the
581source tree.
7c4c6e7c 582
5438d4b8 583=over 4
95f7e41f 584
63ac71b9 585=item XXX-some-platform
95f7e41f 586
63ac71b9 587XXX
df5b44bd 588
63ac71b9 589=back
310913d4 590
63ac71b9 591=head2 Discontinued Platforms
310913d4 592
63ac71b9 593XXX List any platforms that this version of perl no longer compiles on.
310913d4 594
63ac71b9
RS
595=over 4
596
597=item XXX-some-platform
598
599XXX
310913d4 600
5438d4b8 601=back
df5b44bd 602
63ac71b9
RS
603=head2 Platform-Specific Notes
604
605XXX List any changes for specific platforms. This could include configuration
606and compilation changes or changes in portability/compatibility. However,
607changes within modules for platforms should generally be listed in the
608L</Modules and Pragmata> section.
e22e289d 609
5438d4b8 610=over 4
7818c927 611
63ac71b9 612=item XXX-some-platform
7818c927 613
63ac71b9 614XXX
f79aa60b 615
63ac71b9 616=back
7818c927 617
63ac71b9 618=head1 Internal Changes
3fdd840f 619
63ac71b9
RS
620XXX Changes which affect the interface available to C<XS> code go here.
621Other significant internal changes for future core maintainers should
622be noted as well.
3fdd840f 623
63ac71b9 624[ List each change as a =item entry ]
7ffa7e75 625
63ac71b9 626=over 4
7ffa7e75 627
862b2c43
FC
628=item *
629
c39e29ea
FC
630The C<is_gv_magical_sv> function has been eliminated and merged with
631C<gv_fetchpvn_flags>. It used to be called to determine whether a GV
632should be autovivified in rvalue context. Now it has been replaced with a
633new C<GV_ADDMG> flag (not part of the API).
634
635=item *
636
637Padlists are now marked C<AvREAL>; i.e., reference-counted. They have
638always been reference-counted, but were not marked real, because F<pad.c>
639did its own clean-up, instead of using the usual clean-up code in F<sv.c>.
640That caused problems in thread cloning, so now the C<AvREAL> flag is on,
641but is turned off in F<pad.c> right before the padlist is freed (after
642F<pad.c> has done its custom freeing of the pads).
862b2c43 643
d6cf2367
FC
644=item *
645
646All the C files that make up the Perl core have been converted to UTF-8.
647
63ac71b9 648=back
c973bd4f 649
63ac71b9 650=head1 Selected Bug Fixes
a6cefd81 651
63ac71b9
RS
652XXX Important bug fixes in the core language are summarised here.
653Bug fixes in files in F<ext/> and F<lib/> are best summarised in
654L</Modules and Pragmata>.
a6cefd81 655
63ac71b9 656[ List each fix as a =item entry ]
c4499eff 657
63ac71b9 658=over 4
c4499eff 659
bbc28bfc
FC
660=item *
661
d2006265
FC
662In Perl 5.15.0 C<defined(${'$'})> stopped returning true if the C<$$>
663variable had not been used yet. This has been fixed.
664
665=item *
666
b4155db2
FC
667C<defined(${"..."})>, C<defined(*{"..."})>, etc., used to
668return true for most, but not all built-in variables, if
669they had not been used yet. Many times that new built-in
670variables were added in past versions, this construct was
23496c6e 671not taken into account, so this affected C<${^GLOBAL_PHASE}> and
b4155db2
FC
672C<${^UTF8CACHE}>, among others. It also used to return false if the
673package name was given as well (C<${"::!"}>) and for subroutines in the
674CORE package [perl #97978] [perl #97492] [perl #97484].
23496c6e
FC
675
676=item *
677
d2006265
FC
678Perl 5.10.0 introduced a similar bug: C<defined(*{"foo"})> where "foo"
679represents the name of a built-in global variable used to return false if
680the variable had never been used before, but only on the I<first> call.
681This, too, has been fixed.
682
683=item *
684
685Various functions that take a filehandle argument in rvalue context
686(C<close>, C<readline>, etc.) used to call C<FETCH> multiple times, if it
687was a tied variable, and warn twice, if it was C<undef> [perl #97482].
688
689=item *
690
691C<close> and similar filehandle functions, when called on built-in global
692variables (like C<$+>), used to die if the variable happened to hold the
693undefined value, instead of producing the usual "Use of uninitialized
694value" warning.
695
696=item *
697
698When autovivified file handles were introduced in Perl 5.6.0, C<readline>
699was inadvertently made to autovivify when called as C<readline($foo)> (but
700not as C<< <$foo> >>). It has now been fixed never to autovivify.
701
702=item *
703
704C<defined ${ $tied_variable }> used to call C<FETCH> multiple times, but
705now calls it just once.
706
707=item *
708
709Some cases of dereferencing a complex expression, such as
710C<${ (), $tied } = 1>, used to call C<FETCH> multiple times, but now call
711it once.
712
713=item *
714
715For a tied variable returning a package name, C<< $tied->method >> used to
716call C<FETCH> multiple times (even up to six!), and sometimes would
717fail to call the method, due to memory corruption.
718
719=item *
720
721Calling an undefined anonymous subroutine (e.g., what $x holds after
722C<undef &{$x = sub{}}>) used to cause a "Not a CODE reference" error, which
723has been corrected to "Undefined subroutine called" [perl #71154].
bbc28bfc 724
e1a80902
FC
725=item *
726
727Causing C<@DB::args> to be freed between uses of C<caller> no longer
728results in a crash [perl #93320].
729
fdd313f4
FC
730=item *
731
732Since 5.6.0, C<*{ ... }> has been inconsistent in how it treats undefined
733values. It would die in strict mode or lvalue context for most undefined
734values, but would be treated as the empty string (with a warning) for the
735specific scalar return by C<undef()> (C<&PL_sv_undef> internally). This
736has been corrected. C<undef()> is now treated like other undefined
737scalars, as in Perl 5.005.
738
01433346
FC
739=item *
740
741It used to be possible to free the typeglob of a localised array or hash
742(e.g., C<local @{"x"}; delete $::{x}>), resulting in a crash on scope exit.
743
88d69532
FC
744=item *
745
746C<setpgrp($foo)> used to be equivalent to C<($foo, setpgrp)>, because
747C<setpgrp> was ignoring its argument if there was just one. Now it is
748equivalent to C<setpgrp($foo,0)>.
749
33d4ef81
FC
750=item *
751
8d4393cf
FC
752Assignments like C<*$tied = \&{"..."}> and C<*glob = $tied> now call FETCH
753only once.
33d4ef81 754
93564729
FC
755=item *
756
d6cf2367
FC
757C<chdir>, C<chmod>, C<chown>, C<utime>, C<truncate>, C<stat>, C<lstat> and the filetest ops (C<-r>, C<-x>, etc.)
758now always call FETCH if passed a tied
93564729
FC
759variable as the last argument. They used to ignore tiedness if the last
760thing return from or assigned to the variable was a typeglob or reference
761to a typeglob.
762
c39e29ea
FC
763=item *
764
765Perl 5.15.1 inadvertently stopped C<*foo =~ s/\*//r> from working, as it
766would try to force the *foo glob into a string. This has been fixed
767[perl #97954].
768
769=item *
770
771If things were arranged in memory the right way, it was possible for
772thread joining to emit "Attempt to free unreferenced scalar" warnings if
773C<caller> had been used from the C<DB> package prior to thread creation,
774due to the way pads were reference-counted and cloned [perl #98092].
775
776=item *
777
778CORE:: subs were introduced in the previous development release, but
779C<defined &{"CORE::..."}> did not return true. That has been rectified
780[perl #97484].
781
782=item *
783
784Lvalue subroutines were made to autovivify in 5.15.0, but it did not work
785in some cases involving an intervening list operator between the
786dereference operator and the subroutine call (C<${(), lvsub()}>)
787[perl #98184].
788
d6cf2367
FC
789=item *
790
791A bug has been fixed that occurs when a tied variable is used as a
792subroutine reference: if the last thing assigned to or returned from the
793variable was a reference or typeglob, the C<\&$tied> could either crash or
794return the wrong subroutine. The reference case is a regression introduced
795in Perl 5.10.0. For typeglobs, it has probably never worked till now.
796
797=item *
798
799C<given> was not scoping its implicit $_ properly, resulting in memory
800leaks or "Variable is not available" warnings [perl #94682].
801
802=item *
803
804C<-l> followed by a bareword no longer "eats" the previous argument to
805the list operator in whose argument list it resides. In less convoluted
806English: C<print "bar", -l foo> now actually prints "bar", because C<-l>
807on longer eats it.
808
809=item *
810
811In 5.14.0, filetest ops (C<-r>, C<-x>, etc.) started calling FETCH on a
812tied argument belonging to the previous argument to a list operator, if
813called with a bareword argument or no argument at all. This has been
814fixed, so C<push @foo, $tied, -r> no longer calls FETCH on C<$tied>.
815
816=item *
817
818C<shmread> was not setting the scalar flags correctly when reading from
819shared memory, causing the existing cached numeric representation in the
820scalar to persist [perl #98480].
821
5d4ff231
FC
822=item *
823
824Weakening the first argument to an automatically-invoked C<DESTROY> method
825could result in erroneous "DESTROY created new reference" errors or
826crashes. Now it is an error to weaken a read-only reference.
827
a3342be3
FC
828=item *
829
830Under miniperl (used to configure modules when perl itself is built),
831C<glob> now clears %ENV before calling csh, since the latter croaks on some
832systems if it does not like the contents of the LS_COLORS enviroment
833variable [perl #98662].
834
60092ce4
FC
835=item *
836
837C<++> and C<--> now work on copies of globs, instead of dying.
838
309aab3a
FC
839=item *
840
841The subroutines in the CORE:: namespace that were introduced in the
842previous development release run with the lexical hints (strict, warnings)
843of the caller, just as though the built-in function had been called. But
844this was not the case for C<goto &CORE::sub>. The CORE sub would end up
845running with the lexical hints of the subroutine it replaced, instead of
846that subroutine's caller. This has been fixed.
847
1f26655e
FC
848=item *
849
850Stacked C<-l> (followed immediately by other filetest operators) did not
851work previously; now it does. It is only permitted when the rightmost
852filetest op has the special "_" handle for its argument and the most
853recent C<stat>/C<lstat> call was an C<lstat>.
854
433644ee
FC
855=item *
856
857In Perl 5.6, C<-l> followed by anything other than a bareword would treat
858its argument as a file name. That was changed in 5.8 for glob references
859(C<\*foo>), but not for globs themselves (C<*foo>). Glob references
860started being treated as file handles, but only if warnings were turned on.
861In other words, it was simply buggy and inconsistent. Now the 5.6
862behaviour has been restored.
863
63ac71b9 864=back
bbc28bfc 865
63ac71b9 866=head1 Known Problems
bbc28bfc 867
63ac71b9
RS
868XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
869tests that had to be C<TODO>ed for the release would be noted here, unless
870they were specific to a particular platform (see below).
bbc28bfc 871
63ac71b9
RS
872This is a list of some significant unfixed bugs, which are regressions
873from either 5.XXX.XXX or 5.XXX.XXX.
bbc28bfc 874
63ac71b9 875[ List each fix as a =item entry ]
bbc28bfc 876
63ac71b9 877=over 4
bbc28bfc 878
bad4ae38
FC
879=item *
880
63ac71b9 881XXX
bad4ae38 882
63ac71b9 883=back
ab6ce8ea 884
63ac71b9 885=head1 Obituary
ab6ce8ea 886
63ac71b9
RS
887XXX If any significant core contributor has died, we've added a short obituary
888here.
c62f68e3 889
44691e6f
AB
890=head1 Acknowledgements
891
63ac71b9
RS
892XXX Generate this with:
893
894 perl Porting/acknowledgements.pl v5.15.2..HEAD
29cf780c 895
44691e6f
AB
896=head1 Reporting Bugs
897
898If you find what you think is a bug, you might check the articles
34dc2ec0 899recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
900bug database at http://rt.perl.org/perlbug/ . There may also be
901information at http://www.perl.org/ , the Perl Home Page.
902
903If you believe you have an unreported bug, please run the L<perlbug>
904program included with your release. Be sure to trim your bug down
905to a tiny but sufficient test case. Your bug report, along with the
906output of C<perl -V>, will be sent off to perlbug@perl.org to be
907analysed by the Perl porting team.
908
909If the bug you are reporting has security implications, which make it
910inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 911it to perl5-security-report@perl.org. This points to a closed subscription
b4707b2a
FC
912unarchived mailing list, which includes
913all the core committers, who will be able
44691e6f
AB
914to help assess the impact of issues, figure out a resolution, and help
915co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
916platforms on which Perl is supported. Please only use this address for
917security issues in the Perl core, not for modules independently
44691e6f
AB
918distributed on CPAN.
919
920=head1 SEE ALSO
921
922The F<Changes> file for an explanation of how to view exhaustive details
923on what changed.
924
925The F<INSTALL> file for how to build Perl.
926
927The F<README> file for general stuff.
928
929The F<Artistic> and F<Copying> files for copyright information.
930
931=cut