This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for @& and PL_sawampersand
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
90bf1576 3=for comment
1a50d74b 4This has been completed up to a289ef89a, 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 114
cadced9f
FC
115=item *
116
117C<local $_> is faster now, as it no longer iterates through magic that it
118is not going to copy anyway.
119
66008486
FC
120=back
121
52deee2e 122=head1 Modules and Pragmata
84b2a83e 123
52deee2e
DR
124XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
125go here. If Module::CoreList is updated, generate an initial draft of the
126following sections using F<Porting/corelist-perldelta.pl>, which prints stub
127entries to STDOUT. Results can be pasted in place of the '=head2' entries
128below. A paragraph summary for important changes should then be added by hand.
129In an ideal world, dual-life modules would have a F<Changes> file that could be
130cribbed.
541cb22c 131
52deee2e 132[ Within each section, list entries as a =item entry ]
541cb22c 133
52deee2e 134=head2 New Modules and Pragmata
6d110ad0 135
e3c71926 136=over 4
6d110ad0
FC
137
138=item *
139
52deee2e 140XXX
7e7629fa 141
e3c71926 142=back
6d110ad0 143
e3c71926 144=head2 Updated Modules and Pragmata
6d110ad0 145
e3c71926 146=over 4
6d110ad0
FC
147
148=item *
149
6f103008
FC
150L<B::Deparse> has been upgraded from version 1.10 to version 1.11.
151
6ee63c28 152It now deparses C<open('random string')> correctly. It used to omit the
6f103008
FC
153quotation marks, which did not work if the string were not a valid
154identifier [perl #91416].
155
6ee63c28
FC
156A similar bug also affected hash and array elements such as
157C<< 'random string'->[0] >>, which would deparse as C<$random string[0]>.
158This has been fixed.
159
cb1728ed
FC
160Those same syntaxes used to drop the package name from variables beginning
161with a punctuation mark, as in C<< "foo::]"->{$key} >>. This, too, has
162been fixed.
163
36a6a135
FC
164B::Deparse no longer hangs when deparsing a program with stash
165circularities, such as C<BEGIN { *Acme::Acme:: = *Acme:: }> [perl #91384].
166
167C</$s[1]/> used to be deparsed as C<$s[1]> if @s were a lexical variable
2e120742
FC
168[perl #81424]. Similarly, C</$#s/> would be deparsed as C<$#s> for both
169lexical and package variables. These has been fixed.
36a6a135
FC
170
171The C</applaud> regular expression flags are no longer omitted.
172
e3ed6ae8
FC
173Feature hints are now deparsed with C<use feature> rather than C<%^H>
174assignments.
175
025130bf
FC
176A regression in 1.10 that caused C<ambient_pragmas> to disabled strict mode
177in obscure cases has been fixed.
178
c7235129
FC
179Strict mode is now fully deparsed, including subs and vars [perl #24027].
180
a7106152
FC
181The global variables C<$(>, C<$|> and C<$)> are now deparsed with braces
182(i.e., C<${(}>) in regular expressions [perl #86060].
183
6f103008
FC
184=item *
185
7f92e913
CBW
186L<CGI> has been upgraded from version 3.58 to version 3.59.
187
188We no longer read from STDIN when the Content-Length is not set, preventing
189requests with no Content-Length from freezing in some cases. This is consistent
190with the CGI RFC 3875, and is also consistent with CGI::Simple. However, the old
191behavior may have been expected by some command-line uses of CGI.pm.
192
193=item *
194
2b283575
CBW
195L<CPAN::Meta> has been upgraded from version 2.112621 to version 2.113640.
196
197Version::Requirements has now been merged as CPAN::Meta::Requirements.
198
199=item *
200
ce6b844f 201L<CPANPLUS> has been upgraded from version 0.9113 to version 0.9116.
7f41f337 202
88c5c971
CBW
203=item *
204
8f12b018
FC
205L<Data::Dumper> has been upgraded from version 2.135_01 to version
2062.135_03.
207
208It can now dump vstrings [perl #101162].
209
26afcec5
FC
210The nameless typeglob (C<*{""}>) is now dumped properly.
211
8f12b018
FC
212=item *
213
d7fbd56d
FC
214L<diagnostics> has been upgraded from version 1.26 to version 1.27.
215
216See the entry for splain in the L</Utility Changes> section, for the
217changes. The diagnostics module and the splain utility are actually one
218and the same.
219
220=item *
221
711a3903
FC
222L<ExtUtils::Packlist> has been upgraded from version 1.45 to version 1.46.
223
224It no longer produces "used once" warnings when the C<read> and C<write>
225methods are called while the main program is still compiling (e.g., from
226within a BEGIN block) [perl #107410] [rt.cpan.org #50315].
227
228=item *
229
4e6ab4ad
CBW
230L<Module::Pluggable> has been upgraded from version 3.9 to version 4.0.
231
232=item *
233
79e10968
FC
234L<overload> has been upgraded from version 1.16 to version 1.17.
235
236C<overload::Overloaded> no longer calls C<can> on the class, but uses
237another means to determine whether the object has overloading. It was
238never correct for it to call C<can>, as overloading does not respect
239AUTOLOAD. So classes that autoload methods and implement C<can> no longer
240have to account for overloading [perl #40333].
241
242=item *
243
9d055b1a
CBW
244L<perlfaq> has been upgraded from version 5.0150036 to version 5.0150037.
245
246=item *
247
cadced9f
FC
248L<PerlIO::scalar> has been upgraded from version 0.12 to version 0.13.
249
250(This is the module that implements C<< open $fh, '>', \$scalar >>.)
251
252It no longer assumes during C<seek> that $scalar is a string internally.
253If it didn't crash, it was close to doing so [perl #92706].
254
255Printing to an in-memory handle now works if the $scalar holds a reference,
256stringifying the reference before modifying it. References used to be
257treated as empty strings.
258
259Printing to an in-memory handle no longer crashes if the $scalar happens to
260hold a number internally, but no string buffer.
261
262=item *
263
60ffae32 264L<POSIX> has been upgraded from version 1.27 to version 1.29.
4e6e9b23
FC
265
266C<sigsuspend> and C<pause> now run signals handle before returning, as the
267whole point of these two functions is to wait until a signal has
268arrived, and then return I<after> it has been triggered. Delayed, or
269"safe", signals were preventing that from happening, possibly resulting in
270race conditions [perl #107216].
60ffae32
CBW
271C<POSIX::sleep> is now a direct call into the underlying OS C<sleep>
272function, instead of being a Perl wrapper on C<CORE::sleep>. C<POSIX::dup2>
273now returns the correct value on Win32 (I<i.e.> the file descriptor).
274C<POSIX::SigSet> C<sigsuspend> and C<sigpending> and C<POSIX::pause> now
275dispatch safe signals immediately before returning to their caller.
4e6e9b23
FC
276
277=item *
278
1887da8c
RS
279L<Pod::Perldoc> has been upgraded from version 3.15_01 to version 3.15_15.
280
281=item *
282
88c5c971
CBW
283L<Term::UI> has been upgraded from version 0.26 to version 0.30.
284
c0504019
TR
285=item *
286
287L<Tie::File> has been upgraded from version 0.96 to version 0.98.
288
937a45d0
KW
289=item *
290
291L<Unicode::UCD> has been upgraded from version 0.37 to version 0.38.
292This changes the output of C<prop_invmap()> for the Name_Alias property
293to reflect the changes that are planned for Unicode 6.1, so that there
294won't be a format change when upgrading to 6.1. Briefly, a second
295component of each alias is added that gives the type of alias it is.
296Examples are at L<Unicode::UCD/prop_invmap()>.
297
ef337e16
CBW
298=item *
299
300L<Version::Requirements> has been upgraded from version 0.101020 to version 0.101021.
301
302Version::Requirements is now DEPRECATED, use CPAN::Meta::Requirements,
303which is a drop-in replacement.
304
7f28d7ed 305=back
679b54e7 306
52deee2e 307=head2 Removed Modules and Pragmata
08ad9465 308
52deee2e 309=over 4
dc7edc5c 310
7788a270
CBW
311=item *
312
52deee2e 313XXX
be9a5e16 314
52deee2e 315=back
3c7c5233 316
52deee2e 317=head1 Documentation
3c7c5233 318
52deee2e
DR
319XXX Changes to files in F<pod/> go here. Consider grouping entries by
320file and be sure to link to the appropriate page, e.g. L<perlfunc>.
b42ff875 321
52deee2e 322=head2 New Documentation
b42ff875 323
52deee2e 324XXX Changes which create B<new> files in F<pod/> go here.
a71d67b1 325
52deee2e 326=head3 L<XXX>
a71d67b1 327
52deee2e 328XXX Description of the purpose of the new file here
a71d67b1 329
52deee2e 330=head2 Changes to Existing Documentation
a71d67b1 331
52deee2e
DR
332XXX Changes which significantly change existing files in F<pod/> go here.
333However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
334section.
7e7629fa 335
cadced9f
FC
336=head3 L<perlfunc>
337
338=over 4
339
340=item *
341
342C<dbmopen> treats a 0 mode as a special case, that prevents a nonexistent
343file from being created. This has been the case since Perl 5.000, but was
344never documented anywhere. Now the perlfunc entry mentions it
345[perl #90064].
346
347=item *
348
349The entry for C<split> has been rewritten. It is now far clearer than
350before.
351
352=back
353
354=head3 L<perlop> and L<perlsyn>
7e7629fa 355
52deee2e 356=over 4
7e7629fa
FC
357
358=item *
359
cadced9f
FC
360Documentation of the smartmatch operator has been reworked and moved from
361perlsyn to perlop where it belongs.
362
363=item *
364
365Documentation of the ellipsis statement (C<...>) has been reworked and
366moved from perlop to perlsyn.
c2654555 367
52deee2e 368=back
85ca3be7 369
52deee2e 370=head1 Diagnostics
85ca3be7 371
52deee2e
DR
372The following additions or changes have been made to diagnostic output,
373including warnings and fatal error messages. For the complete list of
374diagnostic messages, see L<perldiag>.
7788a270 375
52deee2e
DR
376XXX New or changed warnings emitted by the core's C<C> code go here. Also
377include any changes in L<perldiag> that reconcile it to the C<C> code.
7788a270 378
52deee2e
DR
379[ Within each section, list entries as a =item entry that links to perldiag,
380 e.g.
65ae8d99 381
52deee2e 382 =item *
a3e88ad7 383
52deee2e
DR
384 L<Invalid version object|perldiag/"Invalid version object">
385]
a3e88ad7 386
52deee2e 387=head2 New Diagnostics
a3e88ad7 388
711a3903
FC
389=over 4
390
391=item *
392
393L<Useless use of \E|perldiag/"Useless use of \E">
394
395C<\E> does nothing unless preceded by C<\Q>, C<\L> or C<\U>.
396
397=back
6138a722 398
52deee2e 399=head3 New Errors
6138a722 400
0aaeb177 401=over 4
be539103 402
a47fb3fe
CBW
403=item *
404
4888c563
FC
405L<Cannot set tied @DB::args|perldiag/"Cannot set tied @DB::args">
406
407This error occurs when C<caller> tries to set C<@DB::args> but finds it
408tied. Before this error was added, it used to crash instead.
a3f52e2e 409
52272450
FC
410=item *
411
412L<Cannot tie unreifiable array|perldiag/"Cannot tie unreifiable array">
413
414This error is part of a safety check that the C<tie> operator does before
415tying a special array like C<@_>. You should never see this message.
416
0aaeb177 417=back
a3f52e2e 418
52deee2e 419=head3 New Warnings
a47fb3fe 420
0aaeb177 421=over 4
7ef25837 422
6d110ad0
FC
423=item *
424
604a99bd
NC
425L<defined(@array) is deprecated|perldiag/"defined(@array) is deprecated">
426
427The long-deprecated C<defined(@array)> now also warns for package variables.
428Previously it only issued a warning for lexical variables.
6d110ad0
FC
429
430=back
431
0aaeb177
SH
432=head2 Changes to Existing Diagnostics
433
52deee2e 434XXX Changes (i.e. rewording) of diagnostic messages go here
61f966e7 435
52deee2e 436=over 4
66008486 437
5dd80d85
FC
438=item *
439
52deee2e 440XXX Describe change here
5dd80d85 441
3432e5a1 442=back
b420b12a 443
cadced9f
FC
444=head2 Removals
445
446=over 4
447
448=item *
449
450"sort is now a reserved word"
451
452This error used to occur when C<sort> was called without arguments, followed by C<;> or C<)>. (E.g., C<sort;> would die, but C<{sort}> was
453OK.) This error message was added in Perl 3 to catch code like
454C<close(sort)> which would no longer work. More than two decades later,
455this message is no longer appropriate. Now C<sort> without arguments is
456always allowed, and returns an empty list, as it did in those cases where
457it was already allowed [perl #90030].
458
459=back
460
0aaeb177 461=head1 Utility Changes
9cfd094e 462
52deee2e
DR
463XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
464here. Most of these are built within the directories F<utils> and F<x2p>.
d6cf2367 465
52deee2e
DR
466[ List utility changes as a =head3 entry for each utility and =item
467entries for each change
468Use L<XXX> with program names to get proper documentation linking. ]
b53e16ae 469
d7fbd56d 470=head3 L<splain>
0aaeb177 471
e3c71926 472=over 4
b53e16ae
FC
473
474=item *
475
d7fbd56d
FC
476splain no longer emits backtraces with the first line number repeated.
477This:
478
479 Uncaught exception from user code:
480 Cannot fwiddle the fwuddle at -e line 1.
481 at -e line 1
482 main::baz() called at -e line 1
483 main::bar() called at -e line 1
484 main::foo() called at -e line 1
485
486has become this:
487
488 Uncaught exception from user code:
489 Cannot fwiddle the fwuddle at -e line 1.
490 main::baz() called at -e line 1
491 main::bar() called at -e line 1
492 main::foo() called at -e line 1
ba91b4f3 493
b18aa002
FC
494=item *
495
496Some error message consist of multiple lines that are listed as separate
497entries in L<perldiag>. splain has been taught to find the separate
498entries in these cases, instead of simply failing to find the message.
499
52deee2e 500=back
ba91b4f3 501
52deee2e 502=head1 Configuration and Compilation
f4912a50 503
52deee2e
DR
504XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
505go here. Any other changes to the Perl build process should be listed here.
506However, any platform-specific changes should be listed in the
507L</Platform Support> section, instead.
a3f52e2e 508
52deee2e 509[ List changes as a =item entry ].
a3f52e2e 510
0aaeb177 511=over 4
a3f52e2e
FC
512
513=item *
514
3e975088
NC
515The Pod files for the perl FAQ, L<perlxs>, L<perlxstut> and L<perldoc>
516are once again correctly installed in the same directory as the other core
517Pods.
518
519=for 5.16.0 This isn't a regression from 5.14.x, so don't mention this.
a3f52e2e 520
0aaeb177 521=back
a3f52e2e 522
52deee2e 523=head1 Testing
a3f52e2e 524
52deee2e
DR
525XXX Any significant changes to the testing of a freshly built perl should be
526listed here. Changes which create B<new> files in F<t/> go here as do any
527large changes to the testing harness (e.g. when parallel testing was added).
528Changes to existing files in F<t/> aren't worth summarising, although the bugs
529that they represent may be covered elsewhere.
ad32999b 530
52deee2e 531[ List each test improvement as a =item entry ]
f4912a50 532
0aaeb177 533=over 4
ad32999b 534
f4912a50 535=item *
ad32999b 536
48eabb99
NC
537F<t/porting/utils.t> now tests that various utility scripts compile cleanly.
538During development, this avoids the embarrassment of inadvertently pushing a
539commit which breaks code which isn't otherwise tested by the regression test
540suite. For example, F<installperl> and F<installman>, needed by
541C<make install>, are tested here.
c15f899f 542
7f28d7ed 543=back
ad32999b 544
52deee2e 545=head1 Platform Support
d1fb015b 546
52deee2e 547XXX Any changes to platform support should be listed in the sections below.
d1fb015b 548
52deee2e
DR
549[ Within the sections, list each platform as a =item entry with specific
550changes as paragraphs below it. ]
d1fb015b 551
52deee2e 552=head2 New Platforms
66008486 553
52deee2e
DR
554XXX List any platforms that this version of perl compiles on, that previous
555versions did not. These will either be enabled by new files in the F<hints/>
556directories, or new subdirectories and F<README> files at the top level of the
557source tree.
66008486 558
52deee2e 559=over 4
7e7629fa 560
52deee2e 561=item XXX-some-platform
7e7629fa 562
52deee2e 563XXX
73512201 564
52deee2e 565=back
73512201 566
52deee2e 567=head2 Discontinued Platforms
a1f0e6ed 568
52deee2e 569XXX List any platforms that this version of perl no longer compiles on.
a1f0e6ed 570
52deee2e 571=over 4
a1f0e6ed 572
52deee2e 573=item XXX-some-platform
a1f0e6ed 574
52deee2e 575XXX
ad790500 576
52deee2e 577=back
ad790500 578
52deee2e 579=head2 Platform-Specific Notes
6d91e957 580
52deee2e
DR
581XXX List any changes for specific platforms. This could include configuration
582and compilation changes or changes in portability/compatibility. However,
583changes within modules for platforms should generally be listed in the
584L</Modules and Pragmata> section.
6d91e957 585
52deee2e 586=over 4
d6b99bf4 587
52deee2e 588=item XXX-some-platform
d6b99bf4 589
52deee2e 590XXX
d6b99bf4 591
52deee2e 592=back
d6b99bf4 593
52deee2e 594=head1 Internal Changes
d6b99bf4 595
52deee2e
DR
596XXX Changes which affect the interface available to C<XS> code go here.
597Other significant internal changes for future core maintainers should
598be noted as well.
d6b99bf4 599
52deee2e 600[ List each change as a =item entry ]
8aade7da 601
52deee2e 602=over 4
8aade7da 603
c7b728ca
SF
604=item *
605
39de7394
FC
606There are now feature bundle hints in C<PL_hints> (C<$^H>) that version
607declarations use, to avoid having to load F<feature.pm>. One setting of
608the hint bits indicates a "custom" feature bundle, which means that the
609entries in C<%^H> still apply. F<feature.pm> uses that.
610
611The C<HINT_FEATURE_MASK> macro is defined in F<perl.h> along with other
612hints. Other macros for setting and testing features and bundles are in
613the new F<feature.h>. C<FEATURE_IS_ENABLED> (which has moved to
614F<feature.h>) is no longer used throughout the codebase, but more specific
615macros, e.g., C<FEATURE_SAY_IS_ENABLED>, that are defined in F<feature.h>.
616
617=item *
618
619F<lib/feature.pm> is now a generated file, created by the new
620F<regen/feature.pl> script, which also generates F<feature.h>.
5dd80d85 621
52272450
FC
622=item *
623
624Tied arrays are now always C<AvREAL>. If C<@_> or C<DB::args> is tied, it
625is reified first, to make sure this is always the case.
626
52deee2e 627=back
5dd80d85 628
52deee2e 629=head1 Selected Bug Fixes
c7b728ca 630
52deee2e
DR
631XXX Important bug fixes in the core language are summarised here.
632Bug fixes in files in F<ext/> and F<lib/> are best summarised in
633L</Modules and Pragmata>.
c7b728ca 634
52deee2e 635[ List each fix as a =item entry ]
c7b728ca 636
52deee2e 637=over 4
84b2a83e 638
5343a617 639=item * "b . COND" in the debugger has been fixed
84b2a83e 640
5343a617
SF
641Breaking on the current line with C<b . COND> was broken by previous work and
642has now been fixed.
84b2a83e 643
07f0992c
FC
644=item * Tying C<%^H>
645
90bf1576
FC
646Tying C<%^H> no longer causes perl to crash or ignore
647the contents of C<%^H> when entering a compilation
07f0992c
FC
648scope [perl #106282].
649
36a6a135
FC
650=item * C<~> on vstrings
651
652The bitwise complement operator (and possibly other operators, too) when
653passed a vstring would leave vstring magic attached to the return value,
654even though the string had changed. This meant that
655C<< version->new(~v1.2.3) >> would create a version looking like "v1.2.3"
656even though the string passed to C<< version->new >> was actually
657"\376\375\374". This also caused L<B::Deparse> to deparse C<~v1.2.3>
658incorrectly, without the C<~> [perl #29070].
659
660=item * Vstrings blowing away magic
661
662Assigning a vstring to a magic (e.g., tied, C<$!>) variable and then
663assigning something else used to blow away all the magic. This meant that
664tied variables would come undone, C<$!> would stop getting updated on
665failed system calls, C<$|> would stop setting autoflush, and other
666mischief would take place. This has been fixed.
667
a32fcfdc
FC
668=item * C<newHVhv> and tied hashes
669
670The C<newHVhv> XS function now works on tied hashes, instead of crashing or
671returning an empty hash.
672
063b2a72
FC
673=item * Hashes will null elements
674
675It is possible from XS code to create hashes with elements that have no
676values. Perl itself sometimes creates such hashes, but they are rarely
677visible to Perl code. The hash element and slice operators used to crash
678when handling these in lvalue context. These have been fixed. They now
679produce a "Modification of non-creatable hash value attempted" error
680message.
681
8c7dd470
FC
682=item * No warning for C<open(foo::bar)>
683
684When one writes C<open foo || die>, which used to work in Perl 4, a
685"Precedence problem" warning is produced. This warning used erroneously to
686apply to fully-qualified bareword handle names as well. This has been
687corrected.
688
f7606f70
FC
689=item * C<select> and package aliasing
690
691After package aliasing (C<*foo:: = *bar::>), C<select> with 0 or 1 argument
692would sometimes return a name that could not be used to refer to the
693filehandle, or sometimes it would return C<undef> even when a filehandle
694was selected. Now it returns a typeglob reference in such cases.
695
c0a5c448
FC
696=item * C<PerlIO::get_layers> and tied variables
697
698C<PerlIO::get_layers> no longer ignores FETCH on tied variables as it used
12d5b6c4
FC
699to most of the time [perl #97956].
700
701=item * C<PerlIO::get_layers> and numbers
702
703C<PerlIO::get_layers> no longer ignores some arguments that it thinks are
704numeric, while treating others as filehandle names. It is now consistent
705for flat scalars (i.e., not references).
c0a5c448 706
3ba4cf6c
FC
707=item * Lvalue subs and strict mode
708
709Lvalue sub calls that are not determined to be such at compile time
710(C<&$name> or &{"name"}) are no longer exempt from strict refs if they
711occur in the last statement of an lvalue subroutine [perl #102486].
712
713=item * Non-lvalue sub calls in potentially lvalue context
714
715Sub calls whose subs are not visible at compile time, if
716they occurred in the last statement of an lvalue subroutine,
717would reject non-lvalue subroutines and die with "Can't modify non-lvalue
718subroutine call" [perl #102486].
719
720Non-lvalue sub calls whose subs I<are> visible at compile time exhibited
721the opposite bug. If the call occurred in the last statement of an lvalue
722subroutine, there would be no error when the lvalue sub was called in
723lvalue context. Perl would blindly assign to the temporary value returned
724by the non-lvalue subroutine.
725
726=item * AUTOLOADing lvalue subs
727
728C<AUTOLOAD> routines used to take precedence over the actual sub being
729called (i.e., when autoloading wasn't needed), for sub calls in lvalue or
730potential lvalue context, if the subroutine was not visible at compile
731time.
732
4888c563
FC
733=item * C<caller> and tied C<@DB::args>
734
735C<caller> sets C<@DB::args> to the subroutine arguments when called from
736the DB package. It used to crash when doing so if C<@DB::args> happened to
737be tied. Now it croaks instead.
738
52272450
FC
739=item * Tying C<@_>
740
741Under debugging builds, this code:
742
743 sub TIEARRAY{bless[]}
744 sub {
745 tie @_, "";
746 \@_;
747 }->(1);
748
749use to produce an "av_reify called on tied array" warning. It doesn't any
750more.
751
ad266194
FC
752=item * Unrecognised switches on C<#!> line
753
754If a switch, such as B<-x>, that cannot occur on the C<#!> line is used
755there, perl dies with "Can’t emulate...".
756
757It used to produce the same message for switches that perl did not
758recognise at all, whether on the command line or the C<#!> line.
759
760Now it produces the "Unrecognized switch" error message [perl #104288].
761
17b27d32
FC
762=item * C<system> and SIGCHLD
763
764C<system> now temporarily blocks the SIGCHLD signal handler, to prevent the
765signal handler from stealing the exit status [perl #105700].
766
b0e9fc93
FC
767=item * Deleting methods via C<delete>
768
769Deletion of methods via C<delete $Class::{method}> syntax used to update
770method caches if called in void context, but not scalar or list context.
771Now it always updates those caches.
772
d563d34b
FC
773=item * Hash element deletion and destructors
774
775When hash elements are deleted in void context, the internal hash entry is
776now freed before the value is freed, to prevent destructors call by that
777latter freeing from seeing the hash in an inconsistent state. It was
778possible to cause double-frees if the destructor freed the hash itself
779[perl #100340].
780
6e555b9a
FC
781=item * C<(s)printf>'s %n formatting code
782
783The %n formatting code, which causes the number of characters to be
784assigned to the next argument to C<printf> or C<sprintf> now actually
785assigns the number of characters, instead of the number of bytes.
786
787It also works now with special lvalue functions like C<substr> and with
788nonexistent hash and array elements [perl #103492].
789
ac8fb82c
FC
790=item * Typeglobs and threads
791
792Typeglobs returned from threads are no longer cloned if the parent thread
793already has a glob with the same name. This means that returned
794subroutines will now assign to the right package variables [perl #107366].
795
711a3903
FC
796=item * C<local $_>
797
798In Perl 5.14, C<local $_> was changed to create a new variable not tied to
799anything, even if $_ was tied before that. But, due to an oversight, it
800would still call FETCH once on a tied $_ before replacing it with the new
801variable. This has been fixed [perl #105912].
802
cadced9f
FC
803=item * Returning tied variables
804
805When returning a value from a non-lvalue subroutine, Perl copies the value.
806Sometimes it cheats for the sake of speed, and does not copy the value if
807it makes no observable difference. This optimisation was erroneously
808allowing the copy to be skipped on tied variables, causing a difference in
809behaviour depending on the tied variable's reference count. This has been
810fixed [perl #95548].
811
812=item * C<{@a = sort}> no longer crashes
813
814This particular piece of code (C<sort> with no arguments assigned to an
815array, inside a block with no C<;>) started crashing in an earlier 5.15.x
816release. It has been fixed.
817
818=item * C<utf8::decode> and read-only scalars
819
820C<utf8::decode> now refuses to modify read-only scalars [perl #91850].
821
822=item * C<dbmopen> with undefined mode
823
824C<dbmopen> now only warns once, rather than three times, if the mode
825argument is C<undef> [perl #90064].
826
827=item * Freeing an aggregate during list assignment
828
829If list assignment to a hash or array triggered destructors that freed the
830hash or array itself, a crash would ensue. This is no longer the case
831[perl #107440].
832
838cf719
FC
833=item * Confused internal bookkeeping with @ISA arrays
834
835Creating a weak reference to an @ISA array or accessing the array index
836(C<$#ISA>) could result in confused internal bookkeeping for elements
837subsequently added to the @ISA array. For instance, creating a weak
838reference to the element itself could push that weak reference on to @ISA;
839and elements added after use of C<$#ISA> would be ignored by method lookup
840[perl #85670].
841
842=item * DELETE on scalar ties
843
844Tying an element of %ENV or C<%^H> and then deleting that element would
845result in a call to the tie object's DELETE method, even though tying the
846element itself is supposed to be equivalent to tying a scalar (the element
847is, of course, a scalar) [perl #67490].
848
849=item * Freeing $_ inside C<grep> or C<map>
850
851Freeing $_ inside a C<grep> or C<map> block or a code block embedded in a
852regular expression used to result in double frees [perl #92254, #92256].
853
b00f6edb
FC
854=item * Warnings with C<+=>
855
856The C<+=> operator does not usually warn when the left-hand side is
857C<undef>, but it was doing so for tied variables. This has been fixed
858[perl #44895].
859
7a3fd9ed
FC
860=item * Tying and Autovivification
861
862When Perl autovivifies an element of a tied array or hash (which entails
863calling STORE with a new reference), it now calls FETCH immediately after
864the STORE, instead of assuming that FETCH would have returned the same
865reference. This can make it easier to implement tied objects [perl #35865, #43011].
866
1a50d74b
FC
867=item * C<@&> and C<$&>
868
869Mentioning a variable named "&" other than C<$&> (i.e., C<@&> or C<%&>) no
870longer stops C<$&> from working. The same applies to variables named "'"
871and "`" [perl #24237].
872
52deee2e 873=back
84b2a83e 874
52deee2e 875=head1 Known Problems
84b2a83e 876
52deee2e
DR
877XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
878tests that had to be C<TODO>ed for the release would be noted here, unless
879they were specific to a particular platform (see below).
84b2a83e 880
52deee2e
DR
881This is a list of some significant unfixed bugs, which are regressions
882from either 5.XXX.XXX or 5.XXX.XXX.
84b2a83e 883
52deee2e 884[ List each fix as a =item entry ]
84b2a83e 885
52deee2e 886=over 4
b53e16ae 887
7c864bb3
VP
888=item *
889
52deee2e 890XXX
7c864bb3 891
63ac71b9 892=back
bbc28bfc 893
52deee2e 894=head1 Obituary
8fe05716 895
52deee2e
DR
896XXX If any significant core contributor has died, we've added a short obituary
897here.
8fe05716 898
52deee2e 899=head1 Acknowledgements
8fe05716 900
52deee2e 901XXX Generate this with:
8fe05716 902
52deee2e 903 perl Porting/acknowledgements.pl v5.15.6..HEAD
29cf780c 904
44691e6f
AB
905=head1 Reporting Bugs
906
907If you find what you think is a bug, you might check the articles
52deee2e
DR
908recently posted to the comp.lang.perl.misc newsgroup and the perl
909bug database at http://rt.perl.org/perlbug/ . There may also be
44691e6f
AB
910information at http://www.perl.org/ , the Perl Home Page.
911
912If you believe you have an unreported bug, please run the L<perlbug>
52deee2e
DR
913program included with your release. Be sure to trim your bug down
914to a tiny but sufficient test case. Your bug report, along with the
915output of C<perl -V>, will be sent off to perlbug@perl.org to be
916analysed by the Perl porting team.
44691e6f
AB
917
918If the bug you are reporting has security implications, which make it
52deee2e
DR
919inappropriate to send to a publicly archived mailing list, then please send
920it to perl5-security-report@perl.org. This points to a closed subscription
921unarchived mailing list, which includes
922all the core committers, who will be able
923to help assess the impact of issues, figure out a resolution, and help
924co-ordinate the release of patches to mitigate or fix the problem across all
925platforms on which Perl is supported. Please only use this address for
926security issues in the Perl core, not for modules independently
927distributed on CPAN.
44691e6f
AB
928
929=head1 SEE ALSO
930
52deee2e
DR
931The F<Changes> file for an explanation of how to view exhaustive details
932on what changed.
44691e6f
AB
933
934The F<INSTALL> file for how to build Perl.
935
936The F<README> file for general stuff.
937
938The F<Artistic> and F<Copying> files for copyright information.
939
940=cut