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