This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
bump version.pm $VERSION to reflect doc changes
[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
77ccfaeb
DG
258L<HTTP::Tiny> has been upgraded from version 0.012 to version 0.013.
259
260Added support for using C<$ENV{http_proxy}> to set the default proxy host.
261
262=item *
263
508236ce
CBW
264L<IPC::Cmd> has been upgraded from version 0.70 to version 0.72
265
266Capturing of command output (both C<STDOUT> and C<STDERR>) is now supported
267using L<IPC::Open3> on MSWin32 without requiring L<IPC::Run>.
268
269=item *
270
c69a30ec
CBW
271L<Locale::Codes> has been upgraded from version 3.16 to version 3.17
272
273Added Language Extension codes (langext) and Language Variation codes
274(langvar) as defined in the IANA language registry.
275
276Added language codes from ISO 639-5
277
278Added language/script codes from the IANA language subtag
279registry
280
281Fixed an uninitialized value warning. RT 67438
282
283Fixed the return value for the all_XXX_codes and all_XXX_names functions. RT 69100
284
285Reorganized modules to move Locale::MODULE to Locale::Codes::MODULE to
286allow for cleaner future additions. The original four modules (Locale::Language,
287Locale::Currency, Locale::Country, Locale::Script) will continue to work, but
288all new sets of codes will be added in the Locale::Codes namespace.
289
290=item *
291
bb3abb05
FC
292L<attributes> has been upgraded from version 0.14 to 0.15, as part of the
293lvalue attribute warnings fix. See L</Selected Bug Fixes>, below.
2c389f6c 294
7c420290
NC
295=item *
296
297L<Math::BigInt::FastCalc> has been upgraded from version 0.28 to version 0.29.
298
299The XS code is now compiled with C<PERL_NO_GET_CONTEXT>, which will aid
300performance under ithreads.
301
0cb4637e
CBW
302=item *
303
dd413713 304L<Module::CoreList> has been upgraded from version 2.51 to 2.53.
7818c927
FC
305
306Some extraneous (and erroneous) entries have been removed
307[rt.cpan.org #69108].
308
dd413713
CBW
309The C<corelist> utility now understands the C<-r> option for
310displaying Perl release dates.
311
7818c927
FC
312=item *
313
314L<Pod::Perldoc> has been upgraded from version 3.15_05 to 3.15_06.
315
316The B<-v> option now fetches the right section for C<$0>.
317
318=item *
319
e1f74b1a 320L<Pod::Simple> has been upgraded from version 3.16 to version 3.18
5aeca1f7
CBW
321
322=item *
323
0cb4637e
CBW
324L<Unicode::Collate> has been upgraded from version 0.76 to version 0.77
325
326Applied [perl #93470] silencing compiler warnings with -Wwrite-strings
327
00f02a57
CBW
328=item *
329
330L<Win32API::File> has been upgraded from version 0.1101 to version 0.1200
331
332Added SetStdHandle and GetStdHandle functions
333
8b00e523
NC
334=item *
335
336L<threads> has been upgraded from version 1.83 to 1.84
337
338An unused variable was removed from the XS code.
339
e8e35311
FC
340=back
341
0890f1a5 342=head2 Removed Modules and Pragmata
bdb9ba77 343
0890f1a5 344=over 4
bdb9ba77
DG
345
346=item *
347
17d5d82d
FR
348Perl 4-era .pl libraries
349
350Perl used to bundle a handful of library files that predate Perl 5. Most of
351these files, which have been deprecated since version 5.14.0, have now been
352removed. If your code still relies on these libraries, you can install them
353again from C<Perl4::CoreLibs> on CPAN.
bdb9ba77
DG
354
355=back
356
0890f1a5 357=head1 Documentation
f5938650 358
0890f1a5
FC
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>.
f5938650 361
0890f1a5 362=head2 New Documentation
f5938650 363
0890f1a5 364XXX Changes which create B<new> files in F<pod/> go here.
f5938650 365
2b679393 366=head3 L<perldtrace>
bdb9ba77 367
2b679393
SM
368L<perldtrace> describes Perl's DTrace support, listing the provided probes
369and gives examples of their use.
bdb9ba77 370
7818c927
FC
371=head3 L<perl5141delta>
372
373The delta file for Perl 5.14.1 has been copied to blead.
374
0890f1a5
FC
375=head2 Changes to Existing Documentation
376
377XXX Changes which significantly change existing files in F<pod/> go here.
378However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
379section.
f5938650 380
0890f1a5 381=head3 L<XXX>
6693394d 382
0890f1a5 383=over 4
6693394d
FC
384
385=item *
386
0890f1a5 387XXX Description of the change here
6693394d 388
259925f6
S
389=item *
390
391L<perlxs> was extended with documentation on inline typemaps.
392
7818c927
FC
393=item *
394
395L<perlref> has a new L<Circular References|perlref/Circular References>
396section explaining how circularities may not be freed and how to solve that
397with weak references.
398
399=item *
400
401The documentation for smart match in L<perlsyn> has been corrected for the
402case of C<undef> on the left-hand side. The list of different smart match
403behaviours had an item in the wrong place.
404
6693394d
FC
405=back
406
34dc2ec0 407=head1 Diagnostics
b7188eb5 408
34dc2ec0
DM
409The following additions or changes have been made to diagnostic output,
410including warnings and fatal error messages. For the complete list of
411diagnostic messages, see L<perldiag>.
44691e6f 412
0890f1a5
FC
413XXX New or changed warnings emitted by the core's C<C> code go here. Also
414include any changes in L<perldiag> that reconcile it to the C<C> code.
2c389f6c 415
0890f1a5
FC
416[ Within each section, list entries as a =item entry that links to perldiag,
417 e.g.
2c389f6c 418
0890f1a5 419 =item *
b7188eb5 420
0890f1a5
FC
421 L<Invalid version object|perldiag/"Invalid version object">
422]
5076a392 423
0890f1a5 424=head2 New Diagnostics
5076a392 425
0890f1a5 426XXX Newly added diagnostic messages go here
e8e35311 427
0890f1a5 428=head3 New Errors
5076a392 429
34dc2ec0 430=over 4
5076a392 431
e8e35311 432=item *
5076a392 433
0890f1a5 434XXX L<message|perldiag/"message">
a0ed52f4 435
bdb9ba77 436=back
bdab33d1 437
0890f1a5 438=head3 New Warnings
d430b8e7 439
0890f1a5 440=over 4
5076a392 441
bdb9ba77 442=item *
5076a392 443
0890f1a5 444XXX L<message|perldiag/"message">
5076a392 445
bdb9ba77 446=back
e8e35311 447
0890f1a5 448=head2 Changes to Existing Diagnostics
42a91c97 449
0890f1a5 450XXX Changes (i.e. rewording) of diagnostic messages go here
6693394d 451
34dc2ec0 452=over 4
42a91c97 453
6693394d 454=item *
42a91c97 455
7818c927
FC
456The L<Invalid version format|perldiag/"Invalid version format (%s)">
457error message now says "negative version number" within the parentheses,
458rather than "non-numeric data", for negative numbers.
459
460=item *
461
462The two warnings
463L<Possible attempt to put comments in qw() list|perldiag/"Possible attempt to put comments in qw() list">
464and
465L<Possible attempt to separate words with commas|perldiag/"Possible attempt to separate words with commas">
466are no longer mutually exclusive: the same C<qw> construct may produce
467both.
468
469=item *
470
471Warnings that mention the names of lexical (C<my>) variables with Unicode
472characters in them now respect the presence or absence of the C<:utf8>
473layer on the output handle, instead of outputting UTF8 regardless. Also,
474the correct names are included in the strings passed to C<$SIG{__WARN__}>
475handlers, rather than the raw UTF8 bytes.
42a91c97 476
34dc2ec0 477=back
42a91c97 478
0890f1a5 479=head1 Utility Changes
69c6927c 480
0890f1a5
FC
481XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
482here. Most of these are built within the directories F<utils> and F<x2p>.
69c6927c 483
0890f1a5
FC
484[ List utility changes as a =head3 entry for each utility and =item
485entries for each change
486Use L<XXX> with program names to get proper documentation linking. ]
c13a5c80 487
0890f1a5 488=head3 L<XXX>
c13a5c80 489
0890f1a5 490=over 4
bdab33d1 491
571f0e86
NC
492=item *
493
0890f1a5 494XXX
384e62c0
DG
495
496=back
497
0890f1a5 498=head1 Configuration and Compilation
cdc10f43 499
0890f1a5
FC
500XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
501go here. Any other changes to the Perl build process should be listed here.
502However, any platform-specific changes should be listed in the
503L</Platform Support> section, instead.
cdc10f43 504
0890f1a5 505[ List changes as a =item entry ].
bdab33d1 506
34dc2ec0 507=over 4
d430b8e7
FC
508
509=item *
510
0890f1a5 511XXX
bdab33d1
DG
512
513=back
514
0890f1a5 515=head1 Testing
bdab33d1 516
0890f1a5
FC
517XXX Any significant changes to the testing of a freshly built perl should be
518listed here. Changes which create B<new> files in F<t/> go here as do any
519large changes to the testing harness (e.g. when parallel testing was added).
520Changes to existing files in F<t/> aren't worth summarising, although the bugs
521that they represent may be covered elsewhere.
f5938650 522
0890f1a5 523[ List each test improvement as a =item entry ]
f5938650 524
0890f1a5 525=over 4
f5938650
FC
526
527=item *
528
2b679393
SM
529F<t/run/dtrace.t> was added to test Perl's DTrace support. This
530test will only be run if your Perl was built with C<-Dusedtrace>
531and if calling C<dtrace> actually lets you instrument code. This
532generally requires being run as root, so this test file is primarily
533intended for use by the dtrace subcommittee of p5p.
f5938650 534
1fcb0052
PM
535=item *
536
537F<t/win32/runenv.t> was added to test aspects of Perl's environment
538variable handling on MSWin32 platforms. Previously, such tests were
539skipped on MSWin32 platforms.
540
f5938650 541=back
2fbb14a0 542
0890f1a5 543=head1 Platform Support
975dff8c 544
0890f1a5 545XXX Any changes to platform support should be listed in the sections below.
975dff8c 546
0890f1a5
FC
547[ Within the sections, list each platform as a =item entry with specific
548changes as paragraphs below it. ]
975dff8c 549
0890f1a5 550=head2 New Platforms
975dff8c 551
0890f1a5
FC
552XXX List any platforms that this version of perl compiles on, that previous
553versions did not. These will either be enabled by new files in the F<hints/>
554directories, or new subdirectories and F<README> files at the top level of the
555source tree.
975dff8c 556
0890f1a5 557=over 4
975dff8c 558
0890f1a5 559=item XXX-some-platform
975dff8c 560
0890f1a5 561XXX
975dff8c
FC
562
563=back
564
0890f1a5 565=head2 Discontinued Platforms
da507230 566
0890f1a5 567XXX List any platforms that this version of perl no longer compiles on.
da507230 568
0890f1a5 569=over 4
fad4a2e4 570
0890f1a5 571=item XXX-some-platform
4dbb339a 572
0890f1a5 573XXX
4dbb339a 574
975dff8c
FC
575=back
576
0890f1a5 577=head2 Platform-Specific Notes
6693394d 578
0890f1a5
FC
579XXX List any changes for specific platforms. This could include configuration
580and compilation changes or changes in portability/compatibility. However,
581changes within modules for platforms should generally be listed in the
582L</Modules and Pragmata> section.
6693394d 583
1fcb0052 584=head3 Windows
6693394d 585
1fcb0052
PM
586=over
587
588=item *
589
590On Windows 7, 2008 and Vista, C<@INC> is now always properly populated
591based on the value of PERL5LIB set in the environment. Previously,
592values of PERL5LIB longer than 32766 bytes were skipped when C<@INC>
593was being populated. Tests for environment handling were
594also added (see L</Testing> section). Fixes
595L<RT #87322|https://rt.perl.org/rt3/Public/Bug/Display.html?id=87322>.
596
597=back
598
599=head3 XXX-some-platform
600
601=over
602
603=item *
6693394d 604
0890f1a5 605XXX
6693394d
FC
606
607=back
608
0890f1a5 609=head1 Internal Changes
6693394d 610
0890f1a5
FC
611XXX Changes which affect the interface available to C<XS> code go here.
612Other significant internal changes for future core maintainers should
613be noted as well.
bdab33d1 614
0890f1a5 615[ List each change as a =item entry ]
f5938650 616
0890f1a5 617=over 4
f5938650
FC
618
619=item *
620
c62f68e3
FC
621The expermental C<fetch_cop_label> function has been renamed to
622C<cop_fetch_label>.
623
624=item *
625
626The C<cop_store_label> function has been added to the API, but is
627experimental.
f5938650 628
0890f1a5 629=back
25aa614d 630
0890f1a5 631=head1 Selected Bug Fixes
87d00a71 632
0890f1a5
FC
633XXX Important bug fixes in the core language are summarised here.
634Bug fixes in files in F<ext/> and F<lib/> are best summarised in
635L</Modules and Pragmata>.
87d00a71 636
0890f1a5 637[ List each fix as a =item entry ]
87d00a71 638
0890f1a5 639=over 4
87d00a71 640
da507230
FC
641=item *
642
fff96ff7
FC
643Applying the :lvalue attribute to subroutine that is already defined does
644not work properly, as the attribute changes the way the sub is compiled.
645Hence, Perl 5.12 began warning when an attempt is made to apply the
646attribute to an already defined sub. In such cases, the attribute is
647discarded.
648
649But the change in 5.12 missed the case where custom attributes are also
650present: that case still silently and ineffectively applied the attribute.
651That omission has now been corrected. C<sub foo :lvalue :Whatever> (when
652C<foo> is already defined) now warns about the :lvalue attribute, and does
653not apply it.
da507230 654
bb3abb05
FC
655L<attributes.pm|attributes> has likewise been updated to warn and not apply
656the attribute.
657
d25b0d7b
FC
658=item *
659
4bee03f8
FC
660=for comment
661Not necessary for perl5160delta
662
d25b0d7b
FC
663The remaining discrepancies between explicit and implicit return from
664lvalue subroutines have been resolved. They mainly involved which error
665message to display when a read-only value is returned in lvalue context.
666Also, returning a PADTMP (the result of most built-ins, like C<index>) in
667lvalue context is now forbidden for explicit return, as it always has been
668for implicit return. This is not a regression from 5.14, as all the cases
669in which it could happen where previously syntax errors.
670
4bee03f8
FC
671=item *
672
673=for comment
674Not necessary for perl5160delta
675
676Explicitly returning a tied C<my> variable from an lvalue subroutine in
677list lvalue context used to clear the variable before the assignment could
678happen. This is something that was missed when explicit return was made to
679work in 5.15.0.
680
d9463c66
FC
681=item *
682
683=for comment
684Not necessary for perl5160delta
685
686A minor memory leak, introduced in 5.15.0, has been fixed. It would occur
687when a hash is freed that has had its current iterator deleted
688[perl #93454].
689
7c4c6e7c
FC
690=item *
691
692The C<prototype> function now returns a prototype (the empty string) for
693the C<__FILE__>, C<__LINE__> and C<__PACKAGE__> directives, instead of
694dying, as they are indistinguishable syntactically from nullary functions
695like C<time>.
696
777d9014
FC
697=item *
698
95f7e41f
FC
699C<prototype> now returns C<undef> for all overridable infix operators. It
700used to return incorrect prototypes for some and die for others
701[perl #94984].
702
703=item *
704
777d9014
FC
705A bug affecting lvalue context propagation through nested lvalue subroutine
706calls has been fixed. Previously, returning a value in nested rvalue
707context would be treated as lvalue context by the inner subroutine call,
708resulting in some values (such as read-only values) being rejected.
709
df5b44bd
FC
710=item *
711
712Some core bugs affecting L<Hash::Util> have been fixed: locking a hash
713element that is a glob copy no longer causes subsequent assignment to it to
714corrupt the glob, and unlocking a hash element that holds a copy-on-write
715scalar no longer causes modifications to that scalar to modify other
716scalars that were sharing the same string buffer.
717
e22e289d
FC
718=item *
719
7818c927
FC
720C<when> blocks are now capable of returning variables declared inside the
721enclosing C<given> block [perl #93548].
722
723=item *
724
725A problem with context propagation when a C<do> block is an argument to
726C<return> has been fixed. It used to cause undefined to be returned in
727some cases of a C<return> inside an C<if> block which itself is followed by
728another C<return>.
729
730=item *
731
732Calling C<index> with a tainted constant no longer causes constants in
733subsequently compiled code to become tainted [perl #64804].
734
735=item *
736
c62f68e3
FC
737The peephole optimiser uses less recursion than before, making it possible
738to evaluate code like C<eval ("{\$x = 1 }\n" x 100000)> without a crash.
739
740=item *
741
742Use of lexical (C<my>) variables in code blocks embedded in regular
743expressions will no longer result in memory corruption or crashes.
744
745Nevertheless, these code blocks are still experimental, as there are still
746problems with the wrong variables being closed over (in loops for instance)
747and with abnormal exiting (e.g., C<die>) causing memory corruption.
748
749=item *
750
e22e289d
FC
751The C<SvIsCOW> C macro now returns false for read-only copies of typeglobs,
752such as those created by:
753
754 $hash{elem} = *foo;
755 Hash::Util::lock_value %hash, 'elem';
756
757It used to return true.
758
42a91c97
FC
759=back
760
c71a852f 761=head1 Known Problems
44691e6f 762
0890f1a5
FC
763XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
764tests that had to be C<TODO>ed for the release would be noted here, unless
765they were specific to a particular platform (see below).
bda24d5c 766
0890f1a5
FC
767This is a list of some significant unfixed bugs, which are regressions
768from either 5.XXX.XXX or 5.XXX.XXX.
bda24d5c 769
0890f1a5 770[ List each fix as a =item entry ]
bdb9ba77 771
0890f1a5 772=over 4
014fb485 773
d8e9570c
DG
774=item *
775
0890f1a5 776XXX
d8e9570c 777
bdb9ba77 778=back
014fb485 779
0890f1a5
FC
780=head1 Obituary
781
782XXX If any significant core contributor has died, we've added a short obituary
783here.
44691e6f 784
44691e6f
AB
785=head1 Acknowledgements
786
548e9a3a
LB
787Generate this with:
788
789 perl Porting/acknowledgements.pl v5.15.0..HEAD
29cf780c 790
44691e6f
AB
791=head1 Reporting Bugs
792
793If you find what you think is a bug, you might check the articles
34dc2ec0 794recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
795bug database at http://rt.perl.org/perlbug/ . There may also be
796information at http://www.perl.org/ , the Perl Home Page.
797
798If you believe you have an unreported bug, please run the L<perlbug>
799program included with your release. Be sure to trim your bug down
800to a tiny but sufficient test case. Your bug report, along with the
801output of C<perl -V>, will be sent off to perlbug@perl.org to be
802analysed by the Perl porting team.
803
804If the bug you are reporting has security implications, which make it
805inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 806it to perl5-security-report@perl.org. This points to a closed subscription
b4707b2a
FC
807unarchived mailing list, which includes
808all the core committers, who will be able
44691e6f
AB
809to help assess the impact of issues, figure out a resolution, and help
810co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
811platforms on which Perl is supported. Please only use this address for
812security issues in the Perl core, not for modules independently
44691e6f
AB
813distributed on CPAN.
814
815=head1 SEE ALSO
816
817The F<Changes> file for an explanation of how to view exhaustive details
818on what changed.
819
820The F<INSTALL> file for how to build Perl.
821
822The F<README> file for general stuff.
823
824The F<Artistic> and F<Copying> files for copyright information.
825
826=cut