This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
EU::ParseXS: Silence undefined-value-in-addition warning
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
541cb22c 3=for comment
ad790500 4This has been completed up to e7d0a3fbd9, except for
7e7629fa 5b0f2e9e nwclark Fix two bugs related to pod files outside of pod/ (important enough?)
541cb22c 6
44691e6f
AB
7=head1 NAME
8
0aaeb177
SH
9[ this is a template for a new perldelta file. Any text flagged as
10XXX needs to be processed before release. ]
760696b8 11
0aaeb177 12perldelta - what is new for perl v5.15.6
062678b2 13
0aaeb177 14=head1 DESCRIPTION
ad32999b 15
0aaeb177
SH
16This document describes differences between the 5.15.5 release and
17the 5.15.6 release.
ad32999b 18
0aaeb177
SH
19If you are upgrading from an earlier release such as 5.15.4, first read
20L<perl5155delta>, which describes differences between 5.15.4 and
215.15.5.
ad32999b 22
0aaeb177 23=head1 Notice
ad32999b 24
0aaeb177 25XXX Any important notices here
ad32999b 26
0aaeb177 27=head1 Core Enhancements
a3f52e2e 28
0aaeb177
SH
29XXX New core language features go here. Summarise user-visible core language
30enhancements. Particularly prominent performance optimisations could go
31here, but most should go in the L</Performance Enhancements> section.
a3f52e2e 32
0aaeb177 33[ List each enhancement as a =head2 entry ]
6d110ad0 34
61f966e7
FC
35=head2 C<__SUB__>
36
37The new C<__SUB__> token, available under the "current_sub" feature (see
38L<feature>) or C<use v5.15>, returns a reference to the current subroutine,
39making it easier to write recursive closures.
40
d1fb015b
FC
41=head2 New option for the debugger's B<t> command
42
43The B<t> command in the debugger, which toggles tracing mode, now accepts a
44numerical argument that determines how many levels of subroutine calls to
45trace.
46
7e7629fa
FC
47=head2 Return value of C<tied>
48
49The value returned by C<tied> on a tied variable is now the actual scalar
50that holds the object to which the variable is tied. This allows ties to
51be weakened with C<Scalar::Util::weaken(tied $tied_variable)>.
52
e3c71926 53=head1 Security
6d110ad0 54
0aaeb177
SH
55XXX Any security-related notices go here. In particular, any security
56vulnerabilities closed should be noted here rather than in the
57L</Selected Bug Fixes> section.
6d110ad0 58
6d91e957
KW
59=head2 C<is_utf8_char()>
60
61The XS-callable function C<is_utf8_char()> when presented with malformed
62UTF-8 input can read up to 12 bytes beyond the end of the string. This
63cannot be fixed without changing its API. It is not called from CPAN.
64The documentation for it now describes how to use it safely.
65
66=head2 Other C<is_utf8_foo()> functions, as well as C<utf8_to_foo()>, etc.
67
68Most of the other XS-callable functions that take UTF-8 encoded input
69implicitly assume that the UTF-8 is valid (not malformed) in regards to
70buffer length. Do not do things such as change a character's case or
71see if it is alphanumeric without first being sure that it is valid
72UTF-8. This can be safely done for a whole string by using one of the
73functions C<is_utf8_string()>, C<is_utf8_string_loc()>, and
74C<is_utf8_string_loclen()>.
6d110ad0 75
e3c71926 76=head1 Incompatible Changes
6d110ad0 77
0aaeb177 78XXX For a release on a stable branch, this section aspires to be:
ad32999b 79
0aaeb177
SH
80 There are no changes intentionally incompatible with 5.XXX.XXX
81 If any exist, they are bugs and reports are welcome.
ad32999b 82
0aaeb177 83[ List each incompatible change as a =head2 entry ]
ad32999b 84
66008486
FC
85=head2 C<substr> lvalue revamp
86
87When C<substr> is called in lvalue or potential lvalue context with two or
88three arguments, a special lvalue scalar is returned that modifies the
89original string (the first argument) when assigned to.
90
91Previously, the offsets (the second and third arguments) passed to
92C<substr> would be converted immediately to match the string, negative
93offsets being translated to positive and offsets beyond the end of the
94string being truncated.
95
96Now, the offsets are recorded without modification in the special lvalue
97scalar that is returned, and the original string is not even looked at by
98C<substr> itself, but only when the returned lvalue is read or modified.
99
100These changes result in several incompatible changes and bug fixes:
101
102=over
103
104=item *
105
106If the original string changes length after the call to C<substr> but
107before assignment to its return value, negative offsets will remember
108their position from the end of the string, affecting code like this:
109
110 my $string = "string";
111 my $lvalue = \substr $string, -4, 2;
112 print $lvalue, "\n"; # prints "ri"
113 $string = "bailing twine";
114 print $lvalue, "\n"; # prints "wi"; used to print "il"
115
116The same thing happens with an omitted third argument. The returned lvalue
117will always extend to the end of the string, even if the string becomes
118longer.
119
120=item *
121
122Tied (and otherwise magical) variables are no longer exempt from the
123"Attempt ot use reference as lvalue in substr" warning.
124
125=item *
126
127That warning now occurs when the returned lvalue is assigned to, not when
128C<substr> itself is called. This only makes a difference if the return
129value of C<substr> is referenced and assigned to later.
130
131=item *
132
133The order in which "uninitialized" warnings occur for arguments to
134C<substr> has changed.
135
136=item *
137
138Passing a substring of a read-only value or a typeglob to a function (potential lvalue context) no longer causes an immediate "Can't coerce" or "Modification of a read-only value" error. That error only occurs if and
139when the value passed is assigned to.
140
7e7629fa
FC
141The same thing happens with the "substr outside of string" error. If the
142lvalue is only read, not written to, it is now just a warning, as with
143rvalue C<substr>.
66008486
FC
144
145=item *
146
147C<substr> assignments no longer call FETCH twice if the first argument is a
148tied variable, but just once.
149
150=back
151
152It was impossible to fix all the bugs without an incompatible change, and
153the behaviour of negative offsets was never specified, so the change was
154deemed acceptable.
155
541cb22c
FC
156=head2 XS API tweak
157
158The C<newCONSTSUB_flags> C-level function, added in 5.15.4, now has a
159C<len> parameter.
160
e3c71926 161=head1 Deprecations
6d110ad0 162
0aaeb177
SH
163XXX Any deprecated features, syntax, modules etc. should be listed here.
164In particular, deprecated modules should be listed here even if they are
165listed as an updated module in the L</Modules and Pragmata> section.
ae92a9ae 166
0aaeb177 167[ List each deprecation as a =head2 entry ]
ae92a9ae 168
e3c71926 169=head1 Performance Enhancements
6d110ad0 170
0aaeb177
SH
171XXX Changes which enhance performance without changing behaviour go here. There
172may well be none in a stable release.
173
174[ List each enhancement as a =item entry ]
175
e3c71926 176=over 4
6d110ad0
FC
177
178=item *
179
679b54e7
FC
180Perl 5.12.0 sped up the destruction of objects whose classes define empty
181C<DESTROY> methods (to prevent autoloading), simply by not calling such
182empty methods. This release takes this optimisation a step further, by not
183calling any C<DESTROY> method that begins with an C<return> statement.
184This can be useful for destructors that are only used for debugging:
185
186 use constant DEBUG => 1;
187 sub DESTROY { return unless DEBUG; ... }
188
189Constant-folding will reduce the first statement to C<return;> if DEBUG is
190set to 0, triggering this optimisation.
6d110ad0 191
d1fb015b
FC
192=item *
193
194Assign to a variable that holds a typeglob or copy-on-write scalar is now
195much faster. Previously the typeglob would be stringified or the
196copy-on-write scalar would be copied before being clobbered.
197
7e7629fa
FC
198=item *
199
200Assignment to a substring in void context is now more than twice its
201previous speed. Instead of creating and returning a special lvalue scalar
202that is then assigned to, C<substr> modifies the original string itself.
203
e3c71926 204=back
6d110ad0 205
e3c71926 206=head1 Modules and Pragmata
6d110ad0 207
0aaeb177
SH
208XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
209go here. If Module::CoreList is updated, generate an initial draft of the
210following sections using F<Porting/corelist-perldelta.pl>, which prints stub
211entries to STDOUT. Results can be pasted in place of the '=head2' entries
212below. A paragraph summary for important changes should then be added by hand.
213In an ideal world, dual-life modules would have a F<Changes> file that could be
214cribbed.
215
216[ Within each section, list entries as a =item entry ]
217
e3c71926 218=head2 New Modules and Pragmata
6d110ad0 219
e3c71926 220=over 4
6d110ad0
FC
221
222=item *
223
0aaeb177 224XXX
6d110ad0
FC
225
226=back
227
e3c71926 228=head2 Updated Modules and Pragmata
6d110ad0 229
e3c71926 230=over 4
6d110ad0
FC
231
232=item *
233
f8c9502f
CBW
234L<Archive::Tar> has been upgraded from version 1.80 to version 1.82.
235
236Adjustments to handle files >8gb (>0777777777777 octal) and a feature to
237return the MD5SUM of files in the archive.
a3f52e2e 238
87b9431e
CBW
239=item *
240
74c26f06
CBW
241L<AutoLoader> has been upgraded from version 5.71 to version 5.72.
242
243=item *
244
8cea0f87
CBW
245L<B::Debug> has been upgraded from version 1.16 to version 1.17.
246
247=item *
248
679b54e7
FC
249L<B::Deparse> has been upgraded from version 1.09 to 1.10.
250
251C<sort(foo(bar))> is now deparsed correctly. (C<sort foo(bar)>, how it used
252to deparse, makes foo the sort routine, rather than a regular function
253call.)
254
255=item *
256
9505dd85 257L<Compress::Raw::Zlib> has been upgraded from version 2.042 to version 2.045.
87b9431e 258
7e700369
CBW
259=item *
260
6475ddc2 261L<Compress::Raw::Bzip2> has been upgraded from version 2.042 to version 2.045.
7e700369 262
dc7edc5c
CBW
263=item *
264
1d8dd5fc
CBW
265L<CPAN::Meta::YAML> has been upgraded from version 0.004 to version 0.005.
266
267=item *
268
9e87a279
CBW
269L<CPANPLUS> has been upgraded from version 0.9112 to version 0.9113.
270
271=item *
272
61f966e7
FC
273L<Data::Dumper> has been upgraded from version 2.134 to 2.135.
274
275The XS implementation has been updated to account for the Unicode symbol
276changes in Perl 5.15.4. It also knows how to output typeglobs with nulls
277in their names.
278
279=item *
280
ac616993
CBW
281L<ExtUtils::ParseXS> has been upgraded from version 3.05 to version 3.07.
282
283=item *
284
090349ce 285L<IO::Compress::Base> has been upgraded from version 2.042 to version 2.045.
08ad9465
CBW
286
287Added zipdetails utility.
dc7edc5c 288
7788a270
CBW
289=item *
290
4345d05b
CBW
291L<Locale::Codes> has been upgraded from version 3.18 to version 3.20.
292
293The code2XXX, XXX2code, all_XXX_codes, and all_XXX_names functions now support retired codes.
294All codesets may be specified by a constant or by their name now. Previously,
295they were specified only by a constant.
296The alias_code function exists for backward compatibility. It has been replaced by rename_country_code.
297The alias_code function will be removed sometime after September, 2013.
298All work is now done in the central module (Locale::Codes). Previously, some was still done in the
299wrapper modules (Locale::Codes::*) but that is gone now.
300Added Language Family codes (langfam) as defined in ISO 639-5.
301
302=item *
303
b42ff875
CBW
304L<Module::Loaded> has been uprgaded from version 0.06 to version 0.08.
305
306=item *
307
a71d67b1
CBW
308L<Pod::LaTeX> has been upgraded from version 0.59 to version 0.60.
309
310Added another LaTeX escape: --- => -{}-{}-
311
312Pod::LaTeX doesn't handle -- in PODs specially, passing it directly to
313LaTeX, which then proceeds to replace it with a single -. This patch
314replaces ----- with -{}-{}-{}-{}-
315
316=item *
317
7e7629fa
FC
318L<POSIX> has been upgraded from version 1.26 to 1.27.
319
320It no longer produces a "Constant subroutine TCSANOW redefined" warning on
321Windows.
322
323XXX When did it start producing that warning? Was it post-5.15.5? Even if
324it was not, adding a note will help whoever compiles perl5160delta.
325
326=item *
327
c2654555
CBW
328L<Socket> has been upgraded from version 1.94_02 to version 1.96.
329
330=item *
331
65ae8d99 332L<Unicode::Collate> has been upgraded from version 0.85 to version 0.87.
7788a270
CBW
333
334Tailored compatibility ideographs as well as unified ideographs for
335the locales: ja, ko, zh__big5han, zh__gb2312han, zh__pinyin, zh__stroke.
336
65ae8d99
CBW
337Now Locale/*.pl files are searched in @INC.
338
a3e88ad7
JP
339=item *
340
341L<UNIVERSAL> has been upgraded from version 1.10 to 1.11.
342
343Documentation change clarifies return values from UNIVERSAL::VERSION.
344
0aaeb177 345=back
6138a722 346
0aaeb177 347=head2 Removed Modules and Pragmata
6138a722 348
0aaeb177 349=over 4
be539103 350
a47fb3fe
CBW
351=item *
352
0aaeb177 353XXX
a3f52e2e 354
0aaeb177 355=back
a3f52e2e 356
0aaeb177 357=head1 Documentation
a3f52e2e 358
0aaeb177
SH
359XXX Changes to files in F<pod/> go here. Consider grouping entries by
360file and be sure to link to the appropriate page, e.g. L<perlfunc>.
a3f52e2e 361
0aaeb177 362=head2 New Documentation
ad32999b 363
0aaeb177 364XXX Changes which create B<new> files in F<pod/> go here.
ad32999b 365
0aaeb177 366=head3 L<XXX>
ad32999b 367
0aaeb177 368XXX Description of the purpose of the new file here
6138a722 369
0aaeb177 370=head2 Changes to Existing Documentation
6138a722 371
0aaeb177
SH
372XXX Changes which significantly change existing files in F<pod/> go here.
373However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
374section.
a47fb3fe 375
0aaeb177 376=head3 L<XXX>
a47fb3fe 377
0aaeb177 378=over 4
7ef25837 379
6d110ad0
FC
380=item *
381
0aaeb177 382XXX Description of the change here
6d110ad0
FC
383
384=back
385
e3c71926
FR
386=head1 Diagnostics
387
388The following additions or changes have been made to diagnostic output,
389including warnings and fatal error messages. For the complete list of
390diagnostic messages, see L<perldiag>.
6d110ad0 391
0aaeb177
SH
392XXX New or changed warnings emitted by the core's C<C> code go here. Also
393include any changes in L<perldiag> that reconcile it to the C<C> code.
6138a722 394
0aaeb177
SH
395[ Within each section, list entries as a =item entry that links to perldiag,
396 e.g.
6138a722 397
0aaeb177 398 =item *
6138a722 399
0aaeb177
SH
400 L<Invalid version object|perldiag/"Invalid version object">
401]
6138a722 402
0aaeb177 403=head2 New Diagnostics
828d6195 404
0aaeb177 405XXX Newly added diagnostic messages go here
83307084 406
0aaeb177 407=head3 New Errors
d39de893 408
3432e5a1 409=over 4
39afdc5a
CBW
410
411=item *
412
0aaeb177 413XXX L<message|perldiag/"message">
6138a722 414
e3c71926 415=back
7b8e5ef0 416
0aaeb177 417=head3 New Warnings
91710846 418
e3c71926 419=over 4
91710846
DG
420
421=item *
422
0aaeb177 423XXX L<message|perldiag/"message">
f81e39ef 424
e3c71926 425=back
a2fa999d 426
0aaeb177
SH
427=head2 Changes to Existing Diagnostics
428
429XXX Changes (i.e. rewording) of diagnostic messages go here
bd65daab 430
e3c71926 431=over 4
bd65daab 432
3f2cb5bf
SM
433=item *
434
18fbfe8d
FC
435Redefinition warnings for constant subroutines used to be mandatory, even
436occurring under C<no warnings>. Now they respect the L<warnings> pragma.
b420b12a 437
61f966e7
FC
438=item *
439
440The "Attempt to free non-existent shared string" has had the spelling of
441"non-existent" corrected to "nonexistent". It was already listed with the
442correct spelling in L<perldiag>.
443
66008486
FC
444=item *
445
446The 'Use of "foo" without parentheses is ambiguous' warning has been
447extended to apply also to user-defined subroutines with a (;$) prototype,
448and not just to built-in functions.
449
3432e5a1 450=back
b420b12a 451
0aaeb177 452=head1 Utility Changes
9cfd094e 453
0aaeb177
SH
454XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
455here. Most of these are built within the directories F<utils> and F<x2p>.
95f7e41f 456
0aaeb177
SH
457[ List utility changes as a =head3 entry for each utility and =item
458entries for each change
459Use L<XXX> with program names to get proper documentation linking. ]
95f7e41f 460
08ad9465 461=head3 L<zipdetails>
d6cf2367 462
e3c71926 463=over 4
b53e16ae
FC
464
465=item *
466
08ad9465
CBW
467L<zipdetails> displays information about the internal record structure of the zip file.
468It is not concerned with displaying any details of the compressed data stored in the zip file.
b53e16ae 469
3432e5a1 470=back
60092ce4 471
0aaeb177
SH
472=head1 Configuration and Compilation
473
474XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
475go here. Any other changes to the Perl build process should be listed here.
476However, any platform-specific changes should be listed in the
477L</Platform Support> section, instead.
478
479[ List changes as a =item entry ].
309aab3a 480
e3c71926 481=over 4
b53e16ae
FC
482
483=item *
484
60f0ee9d
NC
485F<pod/roffitall> is now build by F<pod/buildtoc>, instead of being shipped
486with the distribution. Its list of manpages is now generated (and therefore
487current). See also RT #103202 for an unresolved related issue.
a3f52e2e 488
61f966e7
FC
489=item *
490
491Perl 5.15.5 had a bug in its installation script, which did not install
492F<unicore/Name.pm>. This has been corrected [perl #104226].
493
494XXX Is that Perl version correct? Is the file path correct?
495
0aaeb177 496=back
a3f52e2e 497
0aaeb177 498=head1 Testing
a3f52e2e 499
0aaeb177
SH
500XXX Any significant changes to the testing of a freshly built perl should be
501listed here. Changes which create B<new> files in F<t/> go here as do any
502large changes to the testing harness (e.g. when parallel testing was added).
503Changes to existing files in F<t/> aren't worth summarising, although the bugs
504that they represent may be covered elsewhere.
a3f52e2e 505
0aaeb177 506[ List each test improvement as a =item entry ]
a3f52e2e 507
0aaeb177 508=over 4
a3f52e2e
FC
509
510=item *
511
d1fb015b
FC
512The F<substr.t> and F<substr_thr.t> scripts for testing C<substr> have been
513moved under F<t/op/>, where they were originally. They had been moved
514under F<t/re/> along with the substitution tests when that directory was
515created.
a3f52e2e 516
0aaeb177 517=back
a3f52e2e 518
0aaeb177 519=head1 Platform Support
a3f52e2e 520
0aaeb177 521XXX Any changes to platform support should be listed in the sections below.
a3f52e2e 522
0aaeb177
SH
523[ Within the sections, list each platform as a =item entry with specific
524changes as paragraphs below it. ]
a3f52e2e 525
0aaeb177 526=head2 New Platforms
a3f52e2e 527
0aaeb177
SH
528XXX List any platforms that this version of perl compiles on, that previous
529versions did not. These will either be enabled by new files in the F<hints/>
530directories, or new subdirectories and F<README> files at the top level of the
531source tree.
a3f52e2e 532
0aaeb177 533=over 4
a3f52e2e 534
0aaeb177 535=item XXX-some-platform
a3f52e2e 536
0aaeb177 537XXX
a3f52e2e 538
0aaeb177 539=back
a3f52e2e 540
0aaeb177 541=head2 Discontinued Platforms
ca955add 542
0aaeb177 543XXX List any platforms that this version of perl no longer compiles on.
bbdd8bad 544
0aaeb177 545=over 4
bbdd8bad 546
0aaeb177 547=item XXX-some-platform
ad32999b 548
0aaeb177 549XXX
ad32999b 550
0aaeb177 551=back
ad32999b 552
0aaeb177 553=head2 Platform-Specific Notes
ad32999b 554
0aaeb177
SH
555XXX List any changes for specific platforms. This could include configuration
556and compilation changes or changes in portability/compatibility. However,
557changes within modules for platforms should generally be listed in the
558L</Modules and Pragmata> section.
ad32999b 559
0aaeb177 560=over 4
ad32999b 561
0aaeb177 562=item XXX-some-platform
ad32999b 563
0aaeb177 564XXX
ad32999b 565
0aaeb177 566=back
ad32999b 567
0aaeb177 568=head1 Internal Changes
ad32999b 569
0aaeb177
SH
570XXX Changes which affect the interface available to C<XS> code go here.
571Other significant internal changes for future core maintainers should
572be noted as well.
ad32999b 573
0aaeb177 574[ List each change as a =item entry ]
ad32999b 575
0aaeb177 576=over 4
ad32999b 577
3973654e
FC
578=item *
579
0aaeb177 580XXX
3973654e 581
0aaeb177 582=back
cca38fda 583
0aaeb177 584=head1 Selected Bug Fixes
9c7c1651 585
0aaeb177
SH
586XXX Important bug fixes in the core language are summarised here.
587Bug fixes in files in F<ext/> and F<lib/> are best summarised in
588L</Modules and Pragmata>.
9c7c1651 589
0aaeb177 590[ List each fix as a =item entry ]
fce59cd4 591
0aaeb177 592=over 4
fce59cd4 593
b9e83cd1
FC
594=item *
595
7402016d
AB
596RT #78266: The regex engine has been leaking memory when accessing
597named captures that weren't matched as part of a regex ever since 5.10
598when they were introduced, e.g. this would consume over a hundred MB
599of memory:
600
601 perl -wle 'for (1..10_000_000) { if ("foo" =~ /(foo|(?<capture>bar))?/) { my $capture = $+{capture} } } system "ps -o rss $$"'
602
603=item *
604
541cb22c
FC
605A constant subroutine assigned to a glob whose name contains a null will no
606longer cause extra globs to pop into existence when the constant is
607referenced under its new name.
b9e83cd1 608
679b54e7
FC
609=item *
610
611C<sort> was not treating C<sub {}> and C<sub {()}> as equivalent when such
612a sub was provided as the comparison routine. It used to croak on
613C<sub {()}>.
614
615=item *
616
617Subroutines from the C<autouse> namespace are once more exempt from
618redefinition warnings. This used to work in 5.005, but was broken in 5.6
619for most subroutines. For subs created via XS that redefine subroutines
620from the C<autouse> package, this stopped working in 5.10.
621
622=item *
623
624New XSUBs now produce redefinition warnings if they overwrite existing
625subs, as they did in 5.8.x. (The C<autouse> logic was reversed in 5.10-14.
626Only subroutines from the C<autouse> namespace would warn when clobbered.)
627
628=item *
629
630Redefinition warnings triggered by the creation of XSUBs now respect
631Unicode glob names, instead of using the internal representation. This was
632missed in 5.15.4, partly because this warning was so hard to trigger. (See
633the previous item.)
634
635=item *
636
637C<newCONSTSUB> used to use compile-time warning hints, instead of run-time
638hints. The following code should never produce a redefinition warning, but
639it used to, if C<newCONSTSUB> redefine and existing subroutine:
640
641 use warnings;
642 BEGIN {
643 no warnings;
644 some_XS_function_that_calls_new_CONSTSUB();
645 }
646
61f966e7
FC
647=item *
648
649Redefinition warnings for constant subroutines are on by default (what are
650known as severe warnings in L<perldiag>). This was only the case when it
651was a glob assignment or declaration of a Perl subroutine that caused the
652warning. If the creation of XSUBs triggered the warning, it was not a
653default warning. This has been corrected.
654
655=item *
656
657The internal check to see whether a redefinition warning should occur used
658to emit "uninitialized" warnings in cases like this:
659
660 use warnings "uninitialized";
661 use constant {u=>undef,v=>undef};
662 sub foo(){u} sub foo(){v}
663
664=item *
665
666A bug fix in Perl 5.14 introduced a new bug, causing "uninitialized"
667warnings to report the wrong variable if the operator in question has
668two operands and one is C<%{...}> or C<@{...}>. This has been fixed
669[perl #103766].
670
671=item *
672
673C<< version->new("version") >> and C<printf "%vd", "version"> no longer
674crash [perl #102586].
675
d1fb015b
FC
676=item *
677
678C<$tied =~ y/a/b/>, C<chop $tied> and C<chomp $tied> now call FETCH just
679once when $tied holds a reference.
680
681=item *
682
683Four-argument C<select> now always calls FETCH on tied arguments. It used
684to skip the call if the tied argument happened to hold C<undef> or a
685typeglob.
686
687=item *
688
689Four-argument C<select> no longer produces its "Non-string passed as
690bitmask" warning on tied or tainted variables that are strings.
691
692=item *
693
694C<sysread> now always calls FETCH on the buffer passed to it if it is tied.
695It used to skip the call if the tied variable happened to hold a typeglob.
696
697=item *
698
699C<< $tied .= <> >> now calls FETCH once on C<$tied>. It used to call it
700multiple times if the last value assigned to or returned from the tied
701variable was anything other than a string or typeglob.
702
66008486
FC
703=item *
704
705The C<evalbytes> keyword added in 5.15.5 was respecting C<use utf8>
706declarations from the outer scope, when it should have been ignoring them.
707
7e7629fa
FC
708=item *
709
710C<goto &func> no longers crashes, but produces an error message, when the
711unwinding of the current subroutine's scope fires a destructor that
712undefines the subroutine being "goneto" [perl #99850].
713
73512201
DG
714=item *
715
716Arithmetic assignment (C<$left += $right>) involving overloaded objects that
717rely on the 'nomethod' override no longer segfault when the left operand is not
718overloaded.
719
a1f0e6ed
FC
720=item *
721
722Assigning C<__PACKAGE__> or any other shared hash key scalar to a stash
723element no longer causes a double free. Regardless of this change, the
724results of such assignments are still undefined.
725
726=item *
727
728Creating a C<UNIVERSAL::AUTOLOAD> sub no longer stops C<%+>, C<%-> and
729C<%!> from working some of the time [perl #105024].
730
ad790500
FC
731=item *
732
733Assigning C<__PACKAGE__> or another shared hash key string to a variable no
734longer stops that variable from being tied if it happens to be a PVMG or
735PVLV internally.
736
6d91e957
KW
737=item *
738
739When presented with malformed UTF-8 input, the XS-callable functions
740C<is_utf8_string()>, C<is_utf8_string_loc()>, and
741C<is_utf8_string_loclen()> could read beyond the end of the input
742string by up to 12 bytes. This no longer happens. [perl #32080].
743However, currently, C<is_utf8_char()> still has this defect,
744see L</is_utf8_char()> above.
745
0aaeb177 746=back
bf19b80e 747
0aaeb177 748=head1 Known Problems
bf19b80e 749
0aaeb177
SH
750XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
751tests that had to be C<TODO>ed for the release would be noted here, unless
752they were specific to a particular platform (see below).
65b66aa9 753
0aaeb177
SH
754This is a list of some significant unfixed bugs, which are regressions
755from either 5.XXX.XXX or 5.XXX.XXX.
65b66aa9 756
0aaeb177 757[ List each fix as a =item entry ]
b53e16ae 758
0aaeb177 759=over 4
b53e16ae 760
7c864bb3
VP
761=item *
762
0aaeb177 763XXX
7c864bb3 764
63ac71b9 765=back
bbc28bfc 766
0aaeb177 767=head1 Obituary
8fe05716 768
0aaeb177
SH
769XXX If any significant core contributor has died, we've added a short obituary
770here.
8fe05716 771
0aaeb177 772=head1 Acknowledgements
8fe05716 773
0aaeb177 774XXX Generate this with:
8fe05716 775
0aaeb177 776 perl Porting/acknowledgements.pl v5.15.5..HEAD
29cf780c 777
44691e6f
AB
778=head1 Reporting Bugs
779
780If you find what you think is a bug, you might check the articles
34dc2ec0 781recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
782bug database at http://rt.perl.org/perlbug/ . There may also be
783information at http://www.perl.org/ , the Perl Home Page.
784
785If you believe you have an unreported bug, please run the L<perlbug>
786program included with your release. Be sure to trim your bug down
787to a tiny but sufficient test case. Your bug report, along with the
788output of C<perl -V>, will be sent off to perlbug@perl.org to be
789analysed by the Perl porting team.
790
791If the bug you are reporting has security implications, which make it
792inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 793it to perl5-security-report@perl.org. This points to a closed subscription
b4707b2a
FC
794unarchived mailing list, which includes
795all the core committers, who will be able
44691e6f
AB
796to help assess the impact of issues, figure out a resolution, and help
797co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
798platforms on which Perl is supported. Please only use this address for
799security issues in the Perl core, not for modules independently
44691e6f
AB
800distributed on CPAN.
801
802=head1 SEE ALSO
803
804The F<Changes> file for an explanation of how to view exhaustive details
805on what changed.
806
807The F<INSTALL> file for how to build Perl.
808
809The F<README> file for general stuff.
810
811The F<Artistic> and F<Copying> files for copyright information.
812
813=cut