This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
In vmsify, leave ../ path components alone.
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
90bf1576 3=for comment
711a3903 4This has been completed up to 7c2b3c783b, except for:
d25a863e 58629c11317 smueller Escape double-quotes in generated #line directives
4e6e9b23
FC
68dc67a69b shlomif perl -d: display lines inside subroutines.
73dfd1b5cd2 leont Export PerlIOBase_open
90bf1576 8
44691e6f
AB
9=head1 NAME
10
52deee2e
DR
11[ this is a template for a new perldelta file. Any text flagged as
12XXX needs to be processed before release. ]
062678b2 13
52deee2e 14perldelta - what is new for perl v5.15.7
ad32999b 15
52deee2e 16=head1 DESCRIPTION
ad32999b 17
52deee2e
DR
18This document describes differences between the 5.15.6 release and
19the 5.15.7 release.
ad32999b 20
52deee2e
DR
21If you are upgrading from an earlier release such as 5.15.5, first read
22L<perl5156delta>, which describes differences between 5.15.5 and
235.15.6.
a3f52e2e 24
52deee2e 25=head1 Notice
61f966e7 26
52deee2e 27XXX Any important notices here
61f966e7 28
52deee2e 29=head1 Core Enhancements
d1fb015b 30
52deee2e
DR
31XXX New core language features go here. Summarise user-visible core language
32enhancements. Particularly prominent performance optimisations could go
33here, but most should go in the L</Performance Enhancements> section.
7e7629fa 34
52deee2e 35[ List each enhancement as a =head2 entry ]
7e7629fa 36
fbb93542
KW
37=head2 C<use charnames> no longer needed for C<\N{I<name>}>
38
39The C<charnames> module is now automatically loaded when needed as if
40the C<:full> and C<:short> options had been specified. See
41L<charnames>.
42
8c85651d
KW
43=head2 Improved performance for Unicode properties in regular expressions
44
45Matching a code point against a Unicode property is now done via a
46binary search instead of linear. This means for example that the worst
47case for a 1000 item property is 10 probes instead of 1000. This
48inefficiency has been compensated for in the past by permanently storing
49in a hash the results of a given probe plus the results for the adjacent
5064 code points, under the theory that near-by code points are likely to
51be searched for. A separate hash was used for each mention of a Unicode
52property in each regular expression. Thus, C<qr/\p{foo}abc\p{foo}/>
53would generate two hashes. Any probes in one instance would be unknown
54to the other, and the hashes could expand separately to be quite large
55if the regular expression were used on many different widely-separated
56code points. This can lead to running out of memory in extreme cases.
57Now, however, there is just one hash shared by all instances of a given
58property. This means that if C<\p{foo}> is matched against "A" in one
59regular expression in a thread, the result will be known immediately to
60all regular expressions, and the relentless march of using up memory is
61slowed considerably.
62
e3c71926 63=head1 Security
6d110ad0 64
52deee2e
DR
65XXX Any security-related notices go here. In particular, any security
66vulnerabilities closed should be noted here rather than in the
67L</Selected Bug Fixes> section.
7f28d7ed 68
52deee2e 69[ List each security issue as a =head2 entry ]
7f28d7ed 70
52deee2e 71=head1 Incompatible Changes
7f28d7ed 72
52deee2e 73XXX For a release on a stable branch, this section aspires to be:
7f28d7ed 74
52deee2e
DR
75 There are no changes intentionally incompatible with 5.XXX.XXX
76 If any exist, they are bugs, and we request that you submit a
77 report. See L</Reporting Bugs> below.
7f28d7ed 78
52deee2e 79[ List each incompatible change as a =head2 entry ]
7f28d7ed 80
52deee2e 81=head1 Deprecations
7f28d7ed 82
52deee2e
DR
83XXX Any deprecated features, syntax, modules etc. should be listed here.
84In particular, deprecated modules should be listed here even if they are
85listed as an updated module in the L</Modules and Pragmata> section.
66008486 86
52deee2e 87[ List each deprecation as a =head2 entry ]
66008486 88
ef337e16
CBW
89=head2 Deprecated Modules
90
91=over
92
93=item L<Version::Requirements>
94
95Version::Requirements is now DEPRECATED, use CPAN::Meta::Requirements,
96which is a drop-in replacement. It will be deleted from perl.git blead
97in v5.17.0.
98
99=back
100
52deee2e 101=head1 Performance Enhancements
66008486 102
52deee2e
DR
103XXX Changes which enhance performance without changing behaviour go here. There
104may well be none in a stable release.
66008486 105
52deee2e 106[ List each enhancement as a =item entry ]
66008486 107
52deee2e 108=over 4
66008486
FC
109
110=item *
111
39de7394
FC
112Version declarations with the C<use> keyword (e.g., C<use 5.012>) are now
113faster, as they enable features without loading F<feature.pm>.
66008486
FC
114
115=back
116
52deee2e 117=head1 Modules and Pragmata
84b2a83e 118
52deee2e
DR
119XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
120go here. If Module::CoreList is updated, generate an initial draft of the
121following sections using F<Porting/corelist-perldelta.pl>, which prints stub
122entries to STDOUT. Results can be pasted in place of the '=head2' entries
123below. A paragraph summary for important changes should then be added by hand.
124In an ideal world, dual-life modules would have a F<Changes> file that could be
125cribbed.
541cb22c 126
52deee2e 127[ Within each section, list entries as a =item entry ]
541cb22c 128
52deee2e 129=head2 New Modules and Pragmata
6d110ad0 130
e3c71926 131=over 4
6d110ad0
FC
132
133=item *
134
52deee2e 135XXX
7e7629fa 136
e3c71926 137=back
6d110ad0 138
e3c71926 139=head2 Updated Modules and Pragmata
6d110ad0 140
e3c71926 141=over 4
6d110ad0
FC
142
143=item *
144
6f103008
FC
145L<B::Deparse> has been upgraded from version 1.10 to version 1.11.
146
6ee63c28 147It now deparses C<open('random string')> correctly. It used to omit the
6f103008
FC
148quotation marks, which did not work if the string were not a valid
149identifier [perl #91416].
150
6ee63c28
FC
151A similar bug also affected hash and array elements such as
152C<< 'random string'->[0] >>, which would deparse as C<$random string[0]>.
153This has been fixed.
154
cb1728ed
FC
155Those same syntaxes used to drop the package name from variables beginning
156with a punctuation mark, as in C<< "foo::]"->{$key} >>. This, too, has
157been fixed.
158
36a6a135
FC
159B::Deparse no longer hangs when deparsing a program with stash
160circularities, such as C<BEGIN { *Acme::Acme:: = *Acme:: }> [perl #91384].
161
162C</$s[1]/> used to be deparsed as C<$s[1]> if @s were a lexical variable
2e120742
FC
163[perl #81424]. Similarly, C</$#s/> would be deparsed as C<$#s> for both
164lexical and package variables. These has been fixed.
36a6a135
FC
165
166The C</applaud> regular expression flags are no longer omitted.
167
e3ed6ae8
FC
168Feature hints are now deparsed with C<use feature> rather than C<%^H>
169assignments.
170
025130bf
FC
171A regression in 1.10 that caused C<ambient_pragmas> to disabled strict mode
172in obscure cases has been fixed.
173
c7235129
FC
174Strict mode is now fully deparsed, including subs and vars [perl #24027].
175
a7106152
FC
176The global variables C<$(>, C<$|> and C<$)> are now deparsed with braces
177(i.e., C<${(}>) in regular expressions [perl #86060].
178
6f103008
FC
179=item *
180
7f92e913
CBW
181L<CGI> has been upgraded from version 3.58 to version 3.59.
182
183We no longer read from STDIN when the Content-Length is not set, preventing
184requests with no Content-Length from freezing in some cases. This is consistent
185with the CGI RFC 3875, and is also consistent with CGI::Simple. However, the old
186behavior may have been expected by some command-line uses of CGI.pm.
187
188=item *
189
2b283575
CBW
190L<CPAN::Meta> has been upgraded from version 2.112621 to version 2.113640.
191
192Version::Requirements has now been merged as CPAN::Meta::Requirements.
193
194=item *
195
ce6b844f 196L<CPANPLUS> has been upgraded from version 0.9113 to version 0.9116.
7f41f337 197
88c5c971
CBW
198=item *
199
8f12b018
FC
200L<Data::Dumper> has been upgraded from version 2.135_01 to version
2012.135_03.
202
203It can now dump vstrings [perl #101162].
204
26afcec5
FC
205The nameless typeglob (C<*{""}>) is now dumped properly.
206
8f12b018
FC
207=item *
208
d7fbd56d
FC
209L<diagnostics> has been upgraded from version 1.26 to version 1.27.
210
211See the entry for splain in the L</Utility Changes> section, for the
212changes. The diagnostics module and the splain utility are actually one
213and the same.
214
215=item *
216
711a3903
FC
217L<ExtUtils::Packlist> has been upgraded from version 1.45 to version 1.46.
218
219It no longer produces "used once" warnings when the C<read> and C<write>
220methods are called while the main program is still compiling (e.g., from
221within a BEGIN block) [perl #107410] [rt.cpan.org #50315].
222
223=item *
224
4e6ab4ad
CBW
225L<Module::Pluggable> has been upgraded from version 3.9 to version 4.0.
226
227=item *
228
9d055b1a
CBW
229L<perlfaq> has been upgraded from version 5.0150036 to version 5.0150037.
230
231=item *
232
60ffae32 233L<POSIX> has been upgraded from version 1.27 to version 1.29.
4e6e9b23
FC
234
235C<sigsuspend> and C<pause> now run signals handle before returning, as the
236whole point of these two functions is to wait until a signal has
237arrived, and then return I<after> it has been triggered. Delayed, or
238"safe", signals were preventing that from happening, possibly resulting in
239race conditions [perl #107216].
60ffae32
CBW
240C<POSIX::sleep> is now a direct call into the underlying OS C<sleep>
241function, instead of being a Perl wrapper on C<CORE::sleep>. C<POSIX::dup2>
242now returns the correct value on Win32 (I<i.e.> the file descriptor).
243C<POSIX::SigSet> C<sigsuspend> and C<sigpending> and C<POSIX::pause> now
244dispatch safe signals immediately before returning to their caller.
4e6e9b23
FC
245
246=item *
247
1887da8c
RS
248L<Pod::Perldoc> has been upgraded from version 3.15_01 to version 3.15_15.
249
250=item *
251
88c5c971
CBW
252L<Term::UI> has been upgraded from version 0.26 to version 0.30.
253
c0504019
TR
254=item *
255
256L<Tie::File> has been upgraded from version 0.96 to version 0.98.
257
937a45d0
KW
258=item *
259
260L<Unicode::UCD> has been upgraded from version 0.37 to version 0.38.
261This changes the output of C<prop_invmap()> for the Name_Alias property
262to reflect the changes that are planned for Unicode 6.1, so that there
263won't be a format change when upgrading to 6.1. Briefly, a second
264component of each alias is added that gives the type of alias it is.
265Examples are at L<Unicode::UCD/prop_invmap()>.
266
ef337e16
CBW
267=item *
268
269L<Version::Requirements> has been upgraded from version 0.101020 to version 0.101021.
270
271Version::Requirements is now DEPRECATED, use CPAN::Meta::Requirements,
272which is a drop-in replacement.
273
7f28d7ed 274=back
679b54e7 275
52deee2e 276=head2 Removed Modules and Pragmata
08ad9465 277
52deee2e 278=over 4
dc7edc5c 279
7788a270
CBW
280=item *
281
52deee2e 282XXX
be9a5e16 283
52deee2e 284=back
3c7c5233 285
52deee2e 286=head1 Documentation
3c7c5233 287
52deee2e
DR
288XXX Changes to files in F<pod/> go here. Consider grouping entries by
289file and be sure to link to the appropriate page, e.g. L<perlfunc>.
b42ff875 290
52deee2e 291=head2 New Documentation
b42ff875 292
52deee2e 293XXX Changes which create B<new> files in F<pod/> go here.
a71d67b1 294
52deee2e 295=head3 L<XXX>
a71d67b1 296
52deee2e 297XXX Description of the purpose of the new file here
a71d67b1 298
52deee2e 299=head2 Changes to Existing Documentation
a71d67b1 300
52deee2e
DR
301XXX Changes which significantly change existing files in F<pod/> go here.
302However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
303section.
7e7629fa 304
52deee2e 305=head3 L<XXX>
7e7629fa 306
52deee2e 307=over 4
7e7629fa
FC
308
309=item *
310
52deee2e 311XXX Description of the change here
c2654555 312
52deee2e 313=back
85ca3be7 314
52deee2e 315=head1 Diagnostics
85ca3be7 316
52deee2e
DR
317The following additions or changes have been made to diagnostic output,
318including warnings and fatal error messages. For the complete list of
319diagnostic messages, see L<perldiag>.
7788a270 320
52deee2e
DR
321XXX New or changed warnings emitted by the core's C<C> code go here. Also
322include any changes in L<perldiag> that reconcile it to the C<C> code.
7788a270 323
52deee2e
DR
324[ Within each section, list entries as a =item entry that links to perldiag,
325 e.g.
65ae8d99 326
52deee2e 327 =item *
a3e88ad7 328
52deee2e
DR
329 L<Invalid version object|perldiag/"Invalid version object">
330]
a3e88ad7 331
52deee2e 332=head2 New Diagnostics
a3e88ad7 333
711a3903
FC
334=over 4
335
336=item *
337
338L<Useless use of \E|perldiag/"Useless use of \E">
339
340C<\E> does nothing unless preceded by C<\Q>, C<\L> or C<\U>.
341
342=back
6138a722 343
52deee2e 344=head3 New Errors
6138a722 345
0aaeb177 346=over 4
be539103 347
a47fb3fe
CBW
348=item *
349
4888c563
FC
350L<Cannot set tied @DB::args|perldiag/"Cannot set tied @DB::args">
351
352This error occurs when C<caller> tries to set C<@DB::args> but finds it
353tied. Before this error was added, it used to crash instead.
a3f52e2e 354
52272450
FC
355=item *
356
357L<Cannot tie unreifiable array|perldiag/"Cannot tie unreifiable array">
358
359This error is part of a safety check that the C<tie> operator does before
360tying a special array like C<@_>. You should never see this message.
361
0aaeb177 362=back
a3f52e2e 363
52deee2e 364=head3 New Warnings
a47fb3fe 365
0aaeb177 366=over 4
7ef25837 367
6d110ad0
FC
368=item *
369
52deee2e 370XXX L<message|perldiag/"message">
6d110ad0
FC
371
372=back
373
0aaeb177
SH
374=head2 Changes to Existing Diagnostics
375
52deee2e 376XXX Changes (i.e. rewording) of diagnostic messages go here
61f966e7 377
52deee2e 378=over 4
66008486 379
5dd80d85
FC
380=item *
381
52deee2e 382XXX Describe change here
5dd80d85 383
3432e5a1 384=back
b420b12a 385
0aaeb177 386=head1 Utility Changes
9cfd094e 387
52deee2e
DR
388XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
389here. Most of these are built within the directories F<utils> and F<x2p>.
d6cf2367 390
52deee2e
DR
391[ List utility changes as a =head3 entry for each utility and =item
392entries for each change
393Use L<XXX> with program names to get proper documentation linking. ]
b53e16ae 394
d7fbd56d 395=head3 L<splain>
0aaeb177 396
e3c71926 397=over 4
b53e16ae
FC
398
399=item *
400
d7fbd56d
FC
401splain no longer emits backtraces with the first line number repeated.
402This:
403
404 Uncaught exception from user code:
405 Cannot fwiddle the fwuddle at -e line 1.
406 at -e line 1
407 main::baz() called at -e line 1
408 main::bar() called at -e line 1
409 main::foo() called at -e line 1
410
411has become this:
412
413 Uncaught exception from user code:
414 Cannot fwiddle the fwuddle at -e line 1.
415 main::baz() called at -e line 1
416 main::bar() called at -e line 1
417 main::foo() called at -e line 1
ba91b4f3 418
b18aa002
FC
419=item *
420
421Some error message consist of multiple lines that are listed as separate
422entries in L<perldiag>. splain has been taught to find the separate
423entries in these cases, instead of simply failing to find the message.
424
52deee2e 425=back
ba91b4f3 426
52deee2e 427=head1 Configuration and Compilation
f4912a50 428
52deee2e
DR
429XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
430go here. Any other changes to the Perl build process should be listed here.
431However, any platform-specific changes should be listed in the
432L</Platform Support> section, instead.
a3f52e2e 433
52deee2e 434[ List changes as a =item entry ].
a3f52e2e 435
0aaeb177 436=over 4
a3f52e2e
FC
437
438=item *
439
3e975088
NC
440The Pod files for the perl FAQ, L<perlxs>, L<perlxstut> and L<perldoc>
441are once again correctly installed in the same directory as the other core
442Pods.
443
444=for 5.16.0 This isn't a regression from 5.14.x, so don't mention this.
a3f52e2e 445
0aaeb177 446=back
a3f52e2e 447
52deee2e 448=head1 Testing
a3f52e2e 449
52deee2e
DR
450XXX Any significant changes to the testing of a freshly built perl should be
451listed here. Changes which create B<new> files in F<t/> go here as do any
452large changes to the testing harness (e.g. when parallel testing was added).
453Changes to existing files in F<t/> aren't worth summarising, although the bugs
454that they represent may be covered elsewhere.
ad32999b 455
52deee2e 456[ List each test improvement as a =item entry ]
f4912a50 457
0aaeb177 458=over 4
ad32999b 459
f4912a50 460=item *
ad32999b 461
48eabb99
NC
462F<t/porting/utils.t> now tests that various utility scripts compile cleanly.
463During development, this avoids the embarrassment of inadvertently pushing a
464commit which breaks code which isn't otherwise tested by the regression test
465suite. For example, F<installperl> and F<installman>, needed by
466C<make install>, are tested here.
c15f899f 467
7f28d7ed 468=back
ad32999b 469
52deee2e 470=head1 Platform Support
d1fb015b 471
52deee2e 472XXX Any changes to platform support should be listed in the sections below.
d1fb015b 473
52deee2e
DR
474[ Within the sections, list each platform as a =item entry with specific
475changes as paragraphs below it. ]
d1fb015b 476
52deee2e 477=head2 New Platforms
66008486 478
52deee2e
DR
479XXX List any platforms that this version of perl compiles on, that previous
480versions did not. These will either be enabled by new files in the F<hints/>
481directories, or new subdirectories and F<README> files at the top level of the
482source tree.
66008486 483
52deee2e 484=over 4
7e7629fa 485
52deee2e 486=item XXX-some-platform
7e7629fa 487
52deee2e 488XXX
73512201 489
52deee2e 490=back
73512201 491
52deee2e 492=head2 Discontinued Platforms
a1f0e6ed 493
52deee2e 494XXX List any platforms that this version of perl no longer compiles on.
a1f0e6ed 495
52deee2e 496=over 4
a1f0e6ed 497
52deee2e 498=item XXX-some-platform
a1f0e6ed 499
52deee2e 500XXX
ad790500 501
52deee2e 502=back
ad790500 503
52deee2e 504=head2 Platform-Specific Notes
6d91e957 505
52deee2e
DR
506XXX List any changes for specific platforms. This could include configuration
507and compilation changes or changes in portability/compatibility. However,
508changes within modules for platforms should generally be listed in the
509L</Modules and Pragmata> section.
6d91e957 510
52deee2e 511=over 4
d6b99bf4 512
52deee2e 513=item XXX-some-platform
d6b99bf4 514
52deee2e 515XXX
d6b99bf4 516
52deee2e 517=back
d6b99bf4 518
52deee2e 519=head1 Internal Changes
d6b99bf4 520
52deee2e
DR
521XXX Changes which affect the interface available to C<XS> code go here.
522Other significant internal changes for future core maintainers should
523be noted as well.
d6b99bf4 524
52deee2e 525[ List each change as a =item entry ]
8aade7da 526
52deee2e 527=over 4
8aade7da 528
c7b728ca
SF
529=item *
530
39de7394
FC
531There are now feature bundle hints in C<PL_hints> (C<$^H>) that version
532declarations use, to avoid having to load F<feature.pm>. One setting of
533the hint bits indicates a "custom" feature bundle, which means that the
534entries in C<%^H> still apply. F<feature.pm> uses that.
535
536The C<HINT_FEATURE_MASK> macro is defined in F<perl.h> along with other
537hints. Other macros for setting and testing features and bundles are in
538the new F<feature.h>. C<FEATURE_IS_ENABLED> (which has moved to
539F<feature.h>) is no longer used throughout the codebase, but more specific
540macros, e.g., C<FEATURE_SAY_IS_ENABLED>, that are defined in F<feature.h>.
541
542=item *
543
544F<lib/feature.pm> is now a generated file, created by the new
545F<regen/feature.pl> script, which also generates F<feature.h>.
5dd80d85 546
52272450
FC
547=item *
548
549Tied arrays are now always C<AvREAL>. If C<@_> or C<DB::args> is tied, it
550is reified first, to make sure this is always the case.
551
52deee2e 552=back
5dd80d85 553
52deee2e 554=head1 Selected Bug Fixes
c7b728ca 555
52deee2e
DR
556XXX Important bug fixes in the core language are summarised here.
557Bug fixes in files in F<ext/> and F<lib/> are best summarised in
558L</Modules and Pragmata>.
c7b728ca 559
52deee2e 560[ List each fix as a =item entry ]
c7b728ca 561
52deee2e 562=over 4
84b2a83e 563
5343a617 564=item * "b . COND" in the debugger has been fixed
84b2a83e 565
5343a617
SF
566Breaking on the current line with C<b . COND> was broken by previous work and
567has now been fixed.
84b2a83e 568
07f0992c
FC
569=item * Tying C<%^H>
570
90bf1576
FC
571Tying C<%^H> no longer causes perl to crash or ignore
572the contents of C<%^H> when entering a compilation
07f0992c
FC
573scope [perl #106282].
574
36a6a135
FC
575=item * C<~> on vstrings
576
577The bitwise complement operator (and possibly other operators, too) when
578passed a vstring would leave vstring magic attached to the return value,
579even though the string had changed. This meant that
580C<< version->new(~v1.2.3) >> would create a version looking like "v1.2.3"
581even though the string passed to C<< version->new >> was actually
582"\376\375\374". This also caused L<B::Deparse> to deparse C<~v1.2.3>
583incorrectly, without the C<~> [perl #29070].
584
585=item * Vstrings blowing away magic
586
587Assigning a vstring to a magic (e.g., tied, C<$!>) variable and then
588assigning something else used to blow away all the magic. This meant that
589tied variables would come undone, C<$!> would stop getting updated on
590failed system calls, C<$|> would stop setting autoflush, and other
591mischief would take place. This has been fixed.
592
a32fcfdc
FC
593=item * C<newHVhv> and tied hashes
594
595The C<newHVhv> XS function now works on tied hashes, instead of crashing or
596returning an empty hash.
597
063b2a72
FC
598=item * Hashes will null elements
599
600It is possible from XS code to create hashes with elements that have no
601values. Perl itself sometimes creates such hashes, but they are rarely
602visible to Perl code. The hash element and slice operators used to crash
603when handling these in lvalue context. These have been fixed. They now
604produce a "Modification of non-creatable hash value attempted" error
605message.
606
8c7dd470
FC
607=item * No warning for C<open(foo::bar)>
608
609When one writes C<open foo || die>, which used to work in Perl 4, a
610"Precedence problem" warning is produced. This warning used erroneously to
611apply to fully-qualified bareword handle names as well. This has been
612corrected.
613
f7606f70
FC
614=item * C<select> and package aliasing
615
616After package aliasing (C<*foo:: = *bar::>), C<select> with 0 or 1 argument
617would sometimes return a name that could not be used to refer to the
618filehandle, or sometimes it would return C<undef> even when a filehandle
619was selected. Now it returns a typeglob reference in such cases.
620
c0a5c448
FC
621=item * C<PerlIO::get_layers> and tied variables
622
623C<PerlIO::get_layers> no longer ignores FETCH on tied variables as it used
12d5b6c4
FC
624to most of the time [perl #97956].
625
626=item * C<PerlIO::get_layers> and numbers
627
628C<PerlIO::get_layers> no longer ignores some arguments that it thinks are
629numeric, while treating others as filehandle names. It is now consistent
630for flat scalars (i.e., not references).
c0a5c448 631
3ba4cf6c
FC
632=item * Lvalue subs and strict mode
633
634Lvalue sub calls that are not determined to be such at compile time
635(C<&$name> or &{"name"}) are no longer exempt from strict refs if they
636occur in the last statement of an lvalue subroutine [perl #102486].
637
638=item * Non-lvalue sub calls in potentially lvalue context
639
640Sub calls whose subs are not visible at compile time, if
641they occurred in the last statement of an lvalue subroutine,
642would reject non-lvalue subroutines and die with "Can't modify non-lvalue
643subroutine call" [perl #102486].
644
645Non-lvalue sub calls whose subs I<are> visible at compile time exhibited
646the opposite bug. If the call occurred in the last statement of an lvalue
647subroutine, there would be no error when the lvalue sub was called in
648lvalue context. Perl would blindly assign to the temporary value returned
649by the non-lvalue subroutine.
650
651=item * AUTOLOADing lvalue subs
652
653C<AUTOLOAD> routines used to take precedence over the actual sub being
654called (i.e., when autoloading wasn't needed), for sub calls in lvalue or
655potential lvalue context, if the subroutine was not visible at compile
656time.
657
4888c563
FC
658=item * C<caller> and tied C<@DB::args>
659
660C<caller> sets C<@DB::args> to the subroutine arguments when called from
661the DB package. It used to crash when doing so if C<@DB::args> happened to
662be tied. Now it croaks instead.
663
52272450
FC
664=item * Tying C<@_>
665
666Under debugging builds, this code:
667
668 sub TIEARRAY{bless[]}
669 sub {
670 tie @_, "";
671 \@_;
672 }->(1);
673
674use to produce an "av_reify called on tied array" warning. It doesn't any
675more.
676
ad266194
FC
677=item * Unrecognised switches on C<#!> line
678
679If a switch, such as B<-x>, that cannot occur on the C<#!> line is used
680there, perl dies with "Can’t emulate...".
681
682It used to produce the same message for switches that perl did not
683recognise at all, whether on the command line or the C<#!> line.
684
685Now it produces the "Unrecognized switch" error message [perl #104288].
686
17b27d32
FC
687=item * C<system> and SIGCHLD
688
689C<system> now temporarily blocks the SIGCHLD signal handler, to prevent the
690signal handler from stealing the exit status [perl #105700].
691
b0e9fc93
FC
692=item * Deleting methods via C<delete>
693
694Deletion of methods via C<delete $Class::{method}> syntax used to update
695method caches if called in void context, but not scalar or list context.
696Now it always updates those caches.
697
d563d34b
FC
698=item * Hash element deletion and destructors
699
700When hash elements are deleted in void context, the internal hash entry is
701now freed before the value is freed, to prevent destructors call by that
702latter freeing from seeing the hash in an inconsistent state. It was
703possible to cause double-frees if the destructor freed the hash itself
704[perl #100340].
705
6e555b9a
FC
706=item * C<(s)printf>'s %n formatting code
707
708The %n formatting code, which causes the number of characters to be
709assigned to the next argument to C<printf> or C<sprintf> now actually
710assigns the number of characters, instead of the number of bytes.
711
712It also works now with special lvalue functions like C<substr> and with
713nonexistent hash and array elements [perl #103492].
714
ac8fb82c
FC
715=item * Typeglobs and threads
716
717Typeglobs returned from threads are no longer cloned if the parent thread
718already has a glob with the same name. This means that returned
719subroutines will now assign to the right package variables [perl #107366].
720
711a3903
FC
721=item * C<local $_>
722
723In Perl 5.14, C<local $_> was changed to create a new variable not tied to
724anything, even if $_ was tied before that. But, due to an oversight, it
725would still call FETCH once on a tied $_ before replacing it with the new
726variable. This has been fixed [perl #105912].
727
52deee2e 728=back
84b2a83e 729
52deee2e 730=head1 Known Problems
84b2a83e 731
52deee2e
DR
732XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
733tests that had to be C<TODO>ed for the release would be noted here, unless
734they were specific to a particular platform (see below).
84b2a83e 735
52deee2e
DR
736This is a list of some significant unfixed bugs, which are regressions
737from either 5.XXX.XXX or 5.XXX.XXX.
84b2a83e 738
52deee2e 739[ List each fix as a =item entry ]
84b2a83e 740
52deee2e 741=over 4
b53e16ae 742
7c864bb3
VP
743=item *
744
52deee2e 745XXX
7c864bb3 746
63ac71b9 747=back
bbc28bfc 748
52deee2e 749=head1 Obituary
8fe05716 750
52deee2e
DR
751XXX If any significant core contributor has died, we've added a short obituary
752here.
8fe05716 753
52deee2e 754=head1 Acknowledgements
8fe05716 755
52deee2e 756XXX Generate this with:
8fe05716 757
52deee2e 758 perl Porting/acknowledgements.pl v5.15.6..HEAD
29cf780c 759
44691e6f
AB
760=head1 Reporting Bugs
761
762If you find what you think is a bug, you might check the articles
52deee2e
DR
763recently posted to the comp.lang.perl.misc newsgroup and the perl
764bug database at http://rt.perl.org/perlbug/ . There may also be
44691e6f
AB
765information at http://www.perl.org/ , the Perl Home Page.
766
767If you believe you have an unreported bug, please run the L<perlbug>
52deee2e
DR
768program included with your release. Be sure to trim your bug down
769to a tiny but sufficient test case. Your bug report, along with the
770output of C<perl -V>, will be sent off to perlbug@perl.org to be
771analysed by the Perl porting team.
44691e6f
AB
772
773If the bug you are reporting has security implications, which make it
52deee2e
DR
774inappropriate to send to a publicly archived mailing list, then please send
775it to perl5-security-report@perl.org. This points to a closed subscription
776unarchived mailing list, which includes
777all the core committers, who will be able
778to help assess the impact of issues, figure out a resolution, and help
779co-ordinate the release of patches to mitigate or fix the problem across all
780platforms on which Perl is supported. Please only use this address for
781security issues in the Perl core, not for modules independently
782distributed on CPAN.
44691e6f
AB
783
784=head1 SEE ALSO
785
52deee2e
DR
786The F<Changes> file for an explanation of how to view exhaustive details
787on what changed.
44691e6f
AB
788
789The F<INSTALL> file for how to build Perl.
790
791The F<README> file for general stuff.
792
793The F<Artistic> and F<Copying> files for copyright information.
794
795=cut