This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta update
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
7818c927 3=for comment
c62f68e3 4This has been completed up to aebc0cbe, except for:
7818c927
FC
5bb789b09de07edfb74477eb1603949c96d60927d (Dave Mitchell)
6
44691e6f
AB
7=head1 NAME
8
0890f1a5
FC
9[ this is a template for a new perldelta file. Any text flagged as
10XXX needs to be processed before release. ]
6e925ecb 11
0890f1a5 12perldelta - what is new for perl v5.15.1
f5938650 13
0890f1a5 14=head1 DESCRIPTION
760696b8 15
0890f1a5
FC
16This document describes differences between the 5.15.1 release and
17the 5.15.0 release.
760696b8 18
0890f1a5
FC
19If you are upgrading from an earlier release such as 5.14.0, first read
20L<perl5150delta>, which describes differences between 5.14.0 and
215.15.0.
760696b8 22
0890f1a5 23=head1 Notice
760696b8 24
0890f1a5 25XXX Any important notices here
6693394d 26
0890f1a5 27=head1 Core Enhancements
6693394d 28
0890f1a5
FC
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.
6693394d 32
0890f1a5 33[ List each enhancement as a =head2 entry ]
6693394d 34
5cd408a2
EB
35=head2 C<splice()> doesn't warn when truncating
36
37You can now limit the size of an array using C<splice(@a,MAX_LEN)> without
38worrying about warnings.
39
062678b2
FC
40=head2 The C<\$> prototype accepts any scalar lvalue
41
42The C<\$> and C<\[$]> subroutine prototypes now accept any scalar lvalue
43argument. Previously they only accepted scalars beginning with C<$> and
44hash and array elements. This change makes them consistent with the way
45the built-in C<read> and C<recv> functions (among others) parse their
46arguments. This means that one can override the built-in functions with
47custom subroutines that parse their arguments the same way.
48
4185c919
NC
49=head2 You can now C<study> more than one string
50
51The restriction that you can only have one C<study> active at a time has been
52removed. You can now usefully C<study> as many strings as you want (until you
53exhaust memory).
54
82aed44a
KW
55=head2 The Unicode C<Script_Extensions> property is now supported.
56
57New in Unicode 6.0, this is an improved C<Script> property. Details
58are in L<perlunicode/Scripts>.
59
2b679393
SM
60=head2 DTrace probes for interpreter phase change
61
62The C<phase-change> probes will fire when the interpreter's phase
63changes, which tracks the C<${^GLOBAL_PHASE}> variable. C<arg0> is
64the new phase name; C<arg1> is the old one. This is useful mostly
65for limiting your instrumentation to one or more of: compile time,
66run time, destruct time.
67
7818c927
FC
68=head2 New Pad API
69
70Many new functions have been added to the API for manipulating lexical
71pads. See L<perlapi/Pad Data Structures> for more information.
72
0890f1a5 73=head1 Security
6693394d 74
0890f1a5
FC
75XXX Any security-related notices go here. In particular, any security
76vulnerabilities closed should be noted here rather than in the
77L</Selected Bug Fixes> section.
b7188eb5 78
0890f1a5 79[ List each security issue as a =head2 entry ]
e8e35311 80
0890f1a5 81=head1 Incompatible Changes
2c389f6c 82
0890f1a5 83XXX For a release on a stable branch, this section aspires to be:
760696b8 84
307f4217
NC
85 There are no changes intentionally incompatible with 5.XXX.XXX
86 If any exist, they are bugs and reports are welcome.
760696b8 87
0890f1a5 88[ List each incompatible change as a =head2 entry ]
760696b8 89
0890f1a5 90=head1 Deprecations
760696b8 91
0890f1a5
FC
92XXX Any deprecated features, syntax, modules etc. should be listed here.
93In particular, deprecated modules should be listed here even if they are
94listed as an updated module in the L</Modules and Pragmata> section.
760696b8 95
0890f1a5 96[ List each deprecation as a =head2 entry ]
760696b8 97
0890f1a5 98=head1 Performance Enhancements
760696b8 99
0890f1a5
FC
100XXX Changes which enhance performance without changing behaviour go here. There
101may well be none in a stable release.
760696b8 102
0890f1a5 103[ List each enhancement as a =item entry ]
6693394d
FC
104
105=over 4
106
107=item *
108
92c695db
S
109The short-circuiting operators C<&&>, C<||>, and C<//> are now
110considerably faster in the short-circuiting case due to reduced
111OP-tree traversal.
112
113=item *
114
f199eb7b 115The implementation of C<s///r> makes one less copy of the scalar's value.
6693394d 116
bfafcb9a
NC
117=item *
118
119If a studied scalar is C<split> with a regex, the engine will now take
120advantage of the C<study> data.
121
72de20cd
NC
122=item *
123
124C<study> now uses considerably less memory for shorter strings. Strings shorter
125than 65535 characters use roughly half the memory than previously, strings
126shorter than 255 characters use roughly one quarter of the memory.
127
93905212
FC
128=item *
129
130Recursive calls to lvalue subroutines in lvalue scalar context use less
131memory.
132
6693394d
FC
133=back
134
0890f1a5 135=head1 Modules and Pragmata
bdb9ba77 136
0890f1a5
FC
137XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
138go here. If Module::CoreList is updated, generate an initial draft of the
139following sections using F<Porting/corelist-perldelta.pl>, which prints stub
140entries to STDOUT. Results can be pasted in place of the '=head2' entries
141below. A paragraph summary for important changes should then be added by hand.
142In an ideal world, dual-life modules would have a F<Changes> file that could be
143cribbed.
bdb9ba77 144
0890f1a5 145[ Within each section, list entries as a =item entry ]
bdb9ba77 146
0890f1a5 147=head2 New Modules and Pragmata
6693394d 148
0890f1a5 149=over 4
6693394d
FC
150
151=item *
152
7818c927
FC
153The logic for parsing, merging, and dumping XS typemaps has been extracted
154from C<ExtUtils::ParseXS> into a module of its own, L<ExtUtils::Typemaps>.
155C<ExtUtils::Typemaps> offers an interface to typemap handling outside of
156the scope of the XS compiler itself.
157
158As a first use case of the improved API and extensibility, typemaps can now
159be included inline in XS code with a HEREDOC-like syntax:
160
161 TYPEMAP: <<END_TYPEMAP
162 MyType T_IV
163 END_TYPEMAP
6693394d
FC
164
165=back
166
0890f1a5 167=head2 Updated Modules and Pragmata
760696b8 168
0890f1a5 169=over 4
760696b8
FC
170
171=item *
172
7818c927 173L<B::Deparse> has been upgrade from version 1.05 to 1.06.
259925f6 174
7818c927
FC
175It now correctly deparses interpolation of punctuation variables (like
176C<@*>) that do not interpolate without braces [perl #93990].
259925f6
S
177
178=item *
179
90a3c601
CBW
180L<CGI> has been upgraded from version 3.54 to version 3.55
181
182[THINGS THAT MAY BREAK YOUR CODE]
183
184C<url()> was fixed to return C<PATH_INFO> when it is explicitly requested
185with either the path=>1 or path_info=>1 flag.
186
187If your code is running under mod_rewrite (or compatible) and you are calling C<self_url()> or
188you are calling C<url()> and passing path_info=>1, These methods will actually be
189returning C<PATH_INFO> now, as you have explicitly requested, or has C<self_url()>
190has requested on your behalf.
191
192The C<PATH_INFO> has been omitted in such URLs since the issue was introduced
193in the 3.12 release in December, 2005.
194
195This bug is so old your application may have come to depend on it or
196workaround it. Check for application before upgrading to this release.
197
198Examples of affected method calls:
199
200 $q->url(-absolute => 1, -query => 1, -path_info => 1 )
201 $q->url(-path=>1)
202 $q->url(-full=>1,-path=>1)
203 $q->url(-rewrite=>1,-path=>1)
204 $q->self_url();
205
206=item *
207
cd272cae 208L<Compress::Raw::Bzip2> has been upgraded from version 2.035 to version 2.037
1d5c9fb0
CBW
209
210=item *
211
98a34606 212L<Compress::Raw::Zlib> has been upgraded from version 2.035 to version 2.037
bc771c2e
CBW
213
214Added offset parameter to CRC32
215
216=item *
217
101c03fa 218L<Compress::Zlib> has been upgraded from version 2.035 to version 2.037
529174d6
CBW
219
220IO::Compress::Zip and IO::Uncompress::Unzip now have support for LZMA (method 14).
101c03fa
CBW
221There is a fix for a CRC issue in IO::Compress::Unzip and it supports Streamed
222Stored context now. And fixed a Zip64 issue in
529174d6
CBW
223IO::Compress::Zip when the content size was exactly 0xFFFFFFFF.
224
225=item *
226
67a23c79 227L<CPANPLUS> has been upgraded from version 0.9105 to version 0.9108
17f2f4a8
CBW
228
229=item *
230
7818c927
FC
231L<Cwd> has been upgraded from version 3.36 to 3.37, to address an
232incompatibility with the EPIC debugger.
233
234=item *
235
236L<diagnostics> has been upgraded from version 1.22 to 1.23.
237
238It now knows how to find descriptions for diagnostic messages ending with a
239dot, instead getting confused by it.
240
241=item *
242
4b5789fe
CBW
243L<ExtUtils::MakeMaker> has been upgraded from version 6.57_05 to version 6.58
244
245=item *
246
7818c927
FC
247L<ExtUtils::ParseXS> has been upgraded from version 2.2210 to 3.00_01.
248
249Much of L<ExtUtils::ParseXS>, the module behind the XS compiler C<xsubpp>,
250was rewritten and cleaned up. It has been made somewhat more extensible
251and now finally uses strictures.
252
253The typemap logic has been moved into a separate module,
254L<ExtUtils::Typemaps>. See L</New Modules and Pragmata>, above.
255
256=item *
257
508236ce
CBW
258L<IPC::Cmd> has been upgraded from version 0.70 to version 0.72
259
260Capturing of command output (both C<STDOUT> and C<STDERR>) is now supported
261using L<IPC::Open3> on MSWin32 without requiring L<IPC::Run>.
262
263=item *
264
c69a30ec
CBW
265L<Locale::Codes> has been upgraded from version 3.16 to version 3.17
266
267Added Language Extension codes (langext) and Language Variation codes
268(langvar) as defined in the IANA language registry.
269
270Added language codes from ISO 639-5
271
272Added language/script codes from the IANA language subtag
273registry
274
275Fixed an uninitialized value warning. RT 67438
276
277Fixed the return value for the all_XXX_codes and all_XXX_names functions. RT 69100
278
279Reorganized modules to move Locale::MODULE to Locale::Codes::MODULE to
280allow for cleaner future additions. The original four modules (Locale::Language,
281Locale::Currency, Locale::Country, Locale::Script) will continue to work, but
282all new sets of codes will be added in the Locale::Codes namespace.
283
284=item *
285
bb3abb05
FC
286L<attributes> has been upgraded from version 0.14 to 0.15, as part of the
287lvalue attribute warnings fix. See L</Selected Bug Fixes>, below.
2c389f6c 288
7c420290
NC
289=item *
290
291L<Math::BigInt::FastCalc> has been upgraded from version 0.28 to version 0.29.
292
293The XS code is now compiled with C<PERL_NO_GET_CONTEXT>, which will aid
294performance under ithreads.
295
0cb4637e
CBW
296=item *
297
dd413713 298L<Module::CoreList> has been upgraded from version 2.51 to 2.53.
7818c927
FC
299
300Some extraneous (and erroneous) entries have been removed
301[rt.cpan.org #69108].
302
dd413713
CBW
303The C<corelist> utility now understands the C<-r> option for
304displaying Perl release dates.
305
7818c927
FC
306=item *
307
308L<Pod::Perldoc> has been upgraded from version 3.15_05 to 3.15_06.
309
310The B<-v> option now fetches the right section for C<$0>.
311
312=item *
313
5aeca1f7
CBW
314L<Pod::Simple> has been upgraded from version 3.16 to version 3.17
315
316=item *
317
0cb4637e
CBW
318L<Unicode::Collate> has been upgraded from version 0.76 to version 0.77
319
320Applied [perl #93470] silencing compiler warnings with -Wwrite-strings
321
00f02a57
CBW
322=item *
323
324L<Win32API::File> has been upgraded from version 0.1101 to version 0.1200
325
326Added SetStdHandle and GetStdHandle functions
327
8b00e523
NC
328=item *
329
330L<threads> has been upgraded from version 1.83 to 1.84
331
332An unused variable was removed from the XS code.
333
e8e35311
FC
334=back
335
0890f1a5 336=head2 Removed Modules and Pragmata
bdb9ba77 337
0890f1a5 338=over 4
bdb9ba77
DG
339
340=item *
341
17d5d82d
FR
342Perl 4-era .pl libraries
343
344Perl used to bundle a handful of library files that predate Perl 5. Most of
345these files, which have been deprecated since version 5.14.0, have now been
346removed. If your code still relies on these libraries, you can install them
347again from C<Perl4::CoreLibs> on CPAN.
bdb9ba77
DG
348
349=back
350
0890f1a5 351=head1 Documentation
f5938650 352
0890f1a5
FC
353XXX Changes to files in F<pod/> go here. Consider grouping entries by
354file and be sure to link to the appropriate page, e.g. L<perlfunc>.
f5938650 355
0890f1a5 356=head2 New Documentation
f5938650 357
0890f1a5 358XXX Changes which create B<new> files in F<pod/> go here.
f5938650 359
2b679393 360=head3 L<perldtrace>
bdb9ba77 361
2b679393
SM
362L<perldtrace> describes Perl's DTrace support, listing the provided probes
363and gives examples of their use.
bdb9ba77 364
7818c927
FC
365=head3 L<perl5141delta>
366
367The delta file for Perl 5.14.1 has been copied to blead.
368
0890f1a5
FC
369=head2 Changes to Existing Documentation
370
371XXX Changes which significantly change existing files in F<pod/> go here.
372However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
373section.
f5938650 374
0890f1a5 375=head3 L<XXX>
6693394d 376
0890f1a5 377=over 4
6693394d
FC
378
379=item *
380
0890f1a5 381XXX Description of the change here
6693394d 382
259925f6
S
383=item *
384
385L<perlxs> was extended with documentation on inline typemaps.
386
7818c927
FC
387=item *
388
389L<perlref> has a new L<Circular References|perlref/Circular References>
390section explaining how circularities may not be freed and how to solve that
391with weak references.
392
393=item *
394
395The documentation for smart match in L<perlsyn> has been corrected for the
396case of C<undef> on the left-hand side. The list of different smart match
397behaviours had an item in the wrong place.
398
6693394d
FC
399=back
400
34dc2ec0 401=head1 Diagnostics
b7188eb5 402
34dc2ec0
DM
403The following additions or changes have been made to diagnostic output,
404including warnings and fatal error messages. For the complete list of
405diagnostic messages, see L<perldiag>.
44691e6f 406
0890f1a5
FC
407XXX New or changed warnings emitted by the core's C<C> code go here. Also
408include any changes in L<perldiag> that reconcile it to the C<C> code.
2c389f6c 409
0890f1a5
FC
410[ Within each section, list entries as a =item entry that links to perldiag,
411 e.g.
2c389f6c 412
0890f1a5 413 =item *
b7188eb5 414
0890f1a5
FC
415 L<Invalid version object|perldiag/"Invalid version object">
416]
5076a392 417
0890f1a5 418=head2 New Diagnostics
5076a392 419
0890f1a5 420XXX Newly added diagnostic messages go here
e8e35311 421
0890f1a5 422=head3 New Errors
5076a392 423
34dc2ec0 424=over 4
5076a392 425
e8e35311 426=item *
5076a392 427
0890f1a5 428XXX L<message|perldiag/"message">
a0ed52f4 429
bdb9ba77 430=back
bdab33d1 431
0890f1a5 432=head3 New Warnings
d430b8e7 433
0890f1a5 434=over 4
5076a392 435
bdb9ba77 436=item *
5076a392 437
0890f1a5 438XXX L<message|perldiag/"message">
5076a392 439
bdb9ba77 440=back
e8e35311 441
0890f1a5 442=head2 Changes to Existing Diagnostics
42a91c97 443
0890f1a5 444XXX Changes (i.e. rewording) of diagnostic messages go here
6693394d 445
34dc2ec0 446=over 4
42a91c97 447
6693394d 448=item *
42a91c97 449
7818c927
FC
450The L<Invalid version format|perldiag/"Invalid version format (%s)">
451error message now says "negative version number" within the parentheses,
452rather than "non-numeric data", for negative numbers.
453
454=item *
455
456The two warnings
457L<Possible attempt to put comments in qw() list|perldiag/"Possible attempt to put comments in qw() list">
458and
459L<Possible attempt to separate words with commas|perldiag/"Possible attempt to separate words with commas">
460are no longer mutually exclusive: the same C<qw> construct may produce
461both.
462
463=item *
464
465Warnings that mention the names of lexical (C<my>) variables with Unicode
466characters in them now respect the presence or absence of the C<:utf8>
467layer on the output handle, instead of outputting UTF8 regardless. Also,
468the correct names are included in the strings passed to C<$SIG{__WARN__}>
469handlers, rather than the raw UTF8 bytes.
42a91c97 470
34dc2ec0 471=back
42a91c97 472
0890f1a5 473=head1 Utility Changes
69c6927c 474
0890f1a5
FC
475XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
476here. Most of these are built within the directories F<utils> and F<x2p>.
69c6927c 477
0890f1a5
FC
478[ List utility changes as a =head3 entry for each utility and =item
479entries for each change
480Use L<XXX> with program names to get proper documentation linking. ]
c13a5c80 481
0890f1a5 482=head3 L<XXX>
c13a5c80 483
0890f1a5 484=over 4
bdab33d1 485
571f0e86
NC
486=item *
487
0890f1a5 488XXX
384e62c0
DG
489
490=back
491
0890f1a5 492=head1 Configuration and Compilation
cdc10f43 493
0890f1a5
FC
494XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
495go here. Any other changes to the Perl build process should be listed here.
496However, any platform-specific changes should be listed in the
497L</Platform Support> section, instead.
cdc10f43 498
0890f1a5 499[ List changes as a =item entry ].
bdab33d1 500
34dc2ec0 501=over 4
d430b8e7
FC
502
503=item *
504
0890f1a5 505XXX
bdab33d1
DG
506
507=back
508
0890f1a5 509=head1 Testing
bdab33d1 510
0890f1a5
FC
511XXX Any significant changes to the testing of a freshly built perl should be
512listed here. Changes which create B<new> files in F<t/> go here as do any
513large changes to the testing harness (e.g. when parallel testing was added).
514Changes to existing files in F<t/> aren't worth summarising, although the bugs
515that they represent may be covered elsewhere.
f5938650 516
0890f1a5 517[ List each test improvement as a =item entry ]
f5938650 518
0890f1a5 519=over 4
f5938650
FC
520
521=item *
522
2b679393
SM
523F<t/run/dtrace.t> was added to test Perl's DTrace support. This
524test will only be run if your Perl was built with C<-Dusedtrace>
525and if calling C<dtrace> actually lets you instrument code. This
526generally requires being run as root, so this test file is primarily
527intended for use by the dtrace subcommittee of p5p.
f5938650
FC
528
529=back
2fbb14a0 530
0890f1a5 531=head1 Platform Support
975dff8c 532
0890f1a5 533XXX Any changes to platform support should be listed in the sections below.
975dff8c 534
0890f1a5
FC
535[ Within the sections, list each platform as a =item entry with specific
536changes as paragraphs below it. ]
975dff8c 537
0890f1a5 538=head2 New Platforms
975dff8c 539
0890f1a5
FC
540XXX List any platforms that this version of perl compiles on, that previous
541versions did not. These will either be enabled by new files in the F<hints/>
542directories, or new subdirectories and F<README> files at the top level of the
543source tree.
975dff8c 544
0890f1a5 545=over 4
975dff8c 546
0890f1a5 547=item XXX-some-platform
975dff8c 548
0890f1a5 549XXX
975dff8c
FC
550
551=back
552
0890f1a5 553=head2 Discontinued Platforms
da507230 554
0890f1a5 555XXX List any platforms that this version of perl no longer compiles on.
da507230 556
0890f1a5 557=over 4
fad4a2e4 558
0890f1a5 559=item XXX-some-platform
4dbb339a 560
0890f1a5 561XXX
4dbb339a 562
975dff8c
FC
563=back
564
0890f1a5 565=head2 Platform-Specific Notes
6693394d 566
0890f1a5
FC
567XXX List any changes for specific platforms. This could include configuration
568and compilation changes or changes in portability/compatibility. However,
569changes within modules for platforms should generally be listed in the
570L</Modules and Pragmata> section.
6693394d 571
0890f1a5 572=over 4
6693394d 573
0890f1a5 574=item XXX-some-platform
6693394d 575
0890f1a5 576XXX
6693394d
FC
577
578=back
579
0890f1a5 580=head1 Internal Changes
6693394d 581
0890f1a5
FC
582XXX Changes which affect the interface available to C<XS> code go here.
583Other significant internal changes for future core maintainers should
584be noted as well.
bdab33d1 585
0890f1a5 586[ List each change as a =item entry ]
f5938650 587
0890f1a5 588=over 4
f5938650
FC
589
590=item *
591
c62f68e3
FC
592The expermental C<fetch_cop_label> function has been renamed to
593C<cop_fetch_label>.
594
595=item *
596
597The C<cop_store_label> function has been added to the API, but is
598experimental.
f5938650 599
0890f1a5 600=back
25aa614d 601
0890f1a5 602=head1 Selected Bug Fixes
87d00a71 603
0890f1a5
FC
604XXX Important bug fixes in the core language are summarised here.
605Bug fixes in files in F<ext/> and F<lib/> are best summarised in
606L</Modules and Pragmata>.
87d00a71 607
0890f1a5 608[ List each fix as a =item entry ]
87d00a71 609
0890f1a5 610=over 4
87d00a71 611
da507230
FC
612=item *
613
fff96ff7
FC
614Applying the :lvalue attribute to subroutine that is already defined does
615not work properly, as the attribute changes the way the sub is compiled.
616Hence, Perl 5.12 began warning when an attempt is made to apply the
617attribute to an already defined sub. In such cases, the attribute is
618discarded.
619
620But the change in 5.12 missed the case where custom attributes are also
621present: that case still silently and ineffectively applied the attribute.
622That omission has now been corrected. C<sub foo :lvalue :Whatever> (when
623C<foo> is already defined) now warns about the :lvalue attribute, and does
624not apply it.
da507230 625
bb3abb05
FC
626L<attributes.pm|attributes> has likewise been updated to warn and not apply
627the attribute.
628
d25b0d7b
FC
629=item *
630
4bee03f8
FC
631=for comment
632Not necessary for perl5160delta
633
d25b0d7b
FC
634The remaining discrepancies between explicit and implicit return from
635lvalue subroutines have been resolved. They mainly involved which error
636message to display when a read-only value is returned in lvalue context.
637Also, returning a PADTMP (the result of most built-ins, like C<index>) in
638lvalue context is now forbidden for explicit return, as it always has been
639for implicit return. This is not a regression from 5.14, as all the cases
640in which it could happen where previously syntax errors.
641
4bee03f8
FC
642=item *
643
644=for comment
645Not necessary for perl5160delta
646
647Explicitly returning a tied C<my> variable from an lvalue subroutine in
648list lvalue context used to clear the variable before the assignment could
649happen. This is something that was missed when explicit return was made to
650work in 5.15.0.
651
d9463c66
FC
652=item *
653
654=for comment
655Not necessary for perl5160delta
656
657A minor memory leak, introduced in 5.15.0, has been fixed. It would occur
658when a hash is freed that has had its current iterator deleted
659[perl #93454].
660
7c4c6e7c
FC
661=item *
662
663The C<prototype> function now returns a prototype (the empty string) for
664the C<__FILE__>, C<__LINE__> and C<__PACKAGE__> directives, instead of
665dying, as they are indistinguishable syntactically from nullary functions
666like C<time>.
667
777d9014
FC
668=item *
669
670A bug affecting lvalue context propagation through nested lvalue subroutine
671calls has been fixed. Previously, returning a value in nested rvalue
672context would be treated as lvalue context by the inner subroutine call,
673resulting in some values (such as read-only values) being rejected.
674
df5b44bd
FC
675=item *
676
677Some core bugs affecting L<Hash::Util> have been fixed: locking a hash
678element that is a glob copy no longer causes subsequent assignment to it to
679corrupt the glob, and unlocking a hash element that holds a copy-on-write
680scalar no longer causes modifications to that scalar to modify other
681scalars that were sharing the same string buffer.
682
e22e289d
FC
683=item *
684
7818c927
FC
685C<when> blocks are now capable of returning variables declared inside the
686enclosing C<given> block [perl #93548].
687
688=item *
689
690A problem with context propagation when a C<do> block is an argument to
691C<return> has been fixed. It used to cause undefined to be returned in
692some cases of a C<return> inside an C<if> block which itself is followed by
693another C<return>.
694
695=item *
696
697Calling C<index> with a tainted constant no longer causes constants in
698subsequently compiled code to become tainted [perl #64804].
699
700=item *
701
c62f68e3
FC
702The peephole optimiser uses less recursion than before, making it possible
703to evaluate code like C<eval ("{\$x = 1 }\n" x 100000)> without a crash.
704
705=item *
706
707Use of lexical (C<my>) variables in code blocks embedded in regular
708expressions will no longer result in memory corruption or crashes.
709
710Nevertheless, these code blocks are still experimental, as there are still
711problems with the wrong variables being closed over (in loops for instance)
712and with abnormal exiting (e.g., C<die>) causing memory corruption.
713
714=item *
715
e22e289d
FC
716The C<SvIsCOW> C macro now returns false for read-only copies of typeglobs,
717such as those created by:
718
719 $hash{elem} = *foo;
720 Hash::Util::lock_value %hash, 'elem';
721
722It used to return true.
723
42a91c97
FC
724=back
725
c71a852f 726=head1 Known Problems
44691e6f 727
0890f1a5
FC
728XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
729tests that had to be C<TODO>ed for the release would be noted here, unless
730they were specific to a particular platform (see below).
bda24d5c 731
0890f1a5
FC
732This is a list of some significant unfixed bugs, which are regressions
733from either 5.XXX.XXX or 5.XXX.XXX.
bda24d5c 734
0890f1a5 735[ List each fix as a =item entry ]
bdb9ba77 736
0890f1a5 737=over 4
014fb485 738
d8e9570c
DG
739=item *
740
0890f1a5 741XXX
d8e9570c 742
bdb9ba77 743=back
014fb485 744
0890f1a5
FC
745=head1 Obituary
746
747XXX If any significant core contributor has died, we've added a short obituary
748here.
44691e6f 749
44691e6f
AB
750=head1 Acknowledgements
751
548e9a3a
LB
752Generate this with:
753
754 perl Porting/acknowledgements.pl v5.15.0..HEAD
29cf780c 755
44691e6f
AB
756=head1 Reporting Bugs
757
758If you find what you think is a bug, you might check the articles
34dc2ec0 759recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
760bug database at http://rt.perl.org/perlbug/ . There may also be
761information at http://www.perl.org/ , the Perl Home Page.
762
763If you believe you have an unreported bug, please run the L<perlbug>
764program included with your release. Be sure to trim your bug down
765to a tiny but sufficient test case. Your bug report, along with the
766output of C<perl -V>, will be sent off to perlbug@perl.org to be
767analysed by the Perl porting team.
768
769If the bug you are reporting has security implications, which make it
770inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 771it to perl5-security-report@perl.org. This points to a closed subscription
b4707b2a
FC
772unarchived mailing list, which includes
773all the core committers, who will be able
44691e6f
AB
774to help assess the impact of issues, figure out a resolution, and help
775co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
776platforms on which Perl is supported. Please only use this address for
777security issues in the Perl core, not for modules independently
44691e6f
AB
778distributed on CPAN.
779
780=head1 SEE ALSO
781
782The F<Changes> file for an explanation of how to view exhaustive details
783on what changed.
784
785The F<INSTALL> file for how to build Perl.
786
787The F<README> file for general stuff.
788
789The F<Artistic> and F<Copying> files for copyright information.
790
791=cut