This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix typo in perlmod
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
34dc2ec0
DM
5[ this is a template for a new perldelta file. Any text flagged as
6XXX needs to be processed before release. ]
c71a852f 7
34dc2ec0 8perldelta - what is new for perl v5.15.0
6e925ecb 9
34dc2ec0 10=head1 DESCRIPTION
a27ff1be 11
34dc2ec0
DM
12This document describes differences between the 5.15.0 release and
13the 5.14.0 release.
a27ff1be 14
34dc2ec0
DM
15If you are upgrading from an earlier release such as 5.YYY.YYY, first read
16L<perl5YYYdelta>, which describes differences between 5.ZZZ.ZZZ and
175.YYY.YYY.
a27ff1be 18
760696b8
FC
19Some of the changes have been included in Perl 5.14.1. These are
20indicated with a "(5.14.1)" marker.
21
bdab33d1
DG
22XXX compare this perldelta to 5.14.1 and double check the notation
23
34dc2ec0 24=head1 Notice
a27ff1be 25
34dc2ec0 26XXX Any important notices here
a27ff1be 27
34dc2ec0 28=head1 Core Enhancements
a27ff1be 29
34dc2ec0
DM
30XXX New core language features go here. Summarise user-visible core language
31enhancements. Particularly prominent performance optimisations could go
32here, but most should go in the L</Performance Enhancements> section.
a27ff1be 33
34dc2ec0 34[ List each enhancement as a =head2 entry ]
a27ff1be 35
9dcb8368
FC
36=head2 C<CORE::> works on all keywords
37
38The C<CORE::> prefix can now be used on keywords enabled by
39L<feature.pm|feature>, even outside the scope of C<use feature>.
40
34dc2ec0 41=head1 Security
a27ff1be 42
34dc2ec0
DM
43XXX Any security-related notices go here. In particular, any security
44vulnerabilities closed should be noted here rather than in the
45L</Selected Bug Fixes> section.
a27ff1be 46
34dc2ec0 47[ List each security issue as a =head2 entry ]
a27ff1be 48
34dc2ec0 49=head1 Incompatible Changes
9a5a48b7 50
34dc2ec0 51[ List each incompatible change as a =head2 entry ]
9a5a48b7 52
bdab33d1
DG
53=head2 C<$$> no longer caches PID
54
55Previously, if one embeds Perl or uses XS and calls fork(3) from C, Perls
56notion of C<$$> could go out of sync with what getpid() returns. By always
57fetching the value of C<$$> via getpid(), this potential bug is eliminated.
58Code that depends on the caching behavior will break.
59
34dc2ec0 60=head1 Deprecations
cdc10f43 61
34dc2ec0
DM
62XXX Any deprecated features, syntax, modules etc. should be listed here.
63In particular, deprecated modules should be listed here even if they are
64listed as an updated module in the L</Modules and Pragmata> section.
cdc10f43 65
34dc2ec0 66[ List each deprecation as a =head2 entry ]
9a5a48b7 67
34dc2ec0 68=head1 Performance Enhancements
9a5a48b7 69
34dc2ec0
DM
70XXX Changes which enhance performance without changing behaviour go here. There
71may well be none in a stable release.
9a5a48b7 72
34dc2ec0 73[ List each enhancement as a =item entry ]
9a5a48b7 74
34dc2ec0 75=over 4
c8c13991 76
5076a392
FC
77=item *
78
34dc2ec0 79XXX
e8e35311
FC
80
81=back
82
34dc2ec0 83=head1 Modules and Pragmata
c8c13991 84
34dc2ec0
DM
85XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
86go here. If Module::CoreList is updated, generate an initial draft of the
87following sections using F<Porting/corelist-perldelta.pl>, which prints stub
88entries to STDOUT. Results can be pasted in place of the '=head2' entries
89below. A paragraph summary for important changes should then be added by hand.
90In an ideal world, dual-life modules would have a F<Changes> file that could be
91cribbed.
f00d3350 92
34dc2ec0 93[ Within each section, list entries as a =item entry ]
e9784f55 94
34dc2ec0 95=head2 New Modules and Pragmata
d430b8e7 96
34dc2ec0 97=over 4
d430b8e7 98
31ecc2aa
FC
99=item *
100
34dc2ec0 101XXX
31ecc2aa 102
e9784f55 103=back
c34a735e 104
34dc2ec0 105=head2 Updated Modules and Pragmata
24b164a5 106
34dc2ec0 107=over 4
2c389f6c 108
9780b8fa
FC
109=item *
110
bdab33d1
DG
111L<constant> has been updated from version 1.21 to 1.22.
112
113=item *
114
1c861f7c
CBW
115L<Archive::Extract> has been upgraded from version 0.48 to version 0.52
116
117Includes a fix for FreeBSD to only use C<unzip> if it is located in
118C</usr/local/bin>, as FreeBSD 9.0 will ship with a limited C<unzip> in
119C</usr/bin>.
120
121=item *
122
bdab33d1
DG
123L<Attribute::Handlers> updated from version 0.88 to 0.91
124
125=item *
126
daca484d
NC
127L<B> has been upgraded from version 1.29 to version 1.30.
128
129=item *
130
760696b8
FC
131L<B::Deparse> has been upgraded from version 1.03 to 1.05.
132
133It addresses two regressions in Perl 5.14.0:
134
135=over
136
137=item *
138
139Deparsing of the C<glob> operator and its diamond (C<< <> >>) form now
140works again [RT #90898] (5.14.1).
141
142=item *
143
144The presence of subroutines named C<::::> or C<::::::> no longer causes
145B::Deparse to hang (5.14.1).
146
147=back
148
149XXX Other Deparse fixes go here.
150
151=item *
152
1c861f7c
CBW
153L<CGI> has been upgraded from version 3.52 to version 3.54
154
155The DELETE HTTP verb is now supported.
156
157=item *
158
159L<Compress::Zlib> has been upgraded from version 2.033 to version 2.035
160
161=item *
162
163L<Compress::Raw::Bzip2> has been upgraded from version 2.033 to version 2.035
164
165=item *
166
167L<Compress::Raw::Zlib> has been upgraded from version 2.033 to version 2.035
168
169=item *
170
171L<CPAN::Meta> has been upgraded from version 2.110440 to version 2.110930
172
1c861f7c
CBW
173=item *
174
175L<CPANPLUS> has been upgraded from version 0.9103 to version 0.9105
176
177Now understands specifying modules to install in the format 'Module/Type.pm'
178
179=item *
180
181L<CPANPLUS::Dist::Build> has been upgraded from version 0.54 to version 0.56
182
183=item *
184
bdab33d1
DG
185L<Data::Dumper> has been upgraded from version 2.128 to 2.131.
186
187=item *
188
1c861f7c
CBW
189L<DB_File> has been upgraded from version 1.821 to version 1.822
190
191Warnings are now in sync with perl's
192
193=item *
194
195L<Digest::SHA> has been upgraded from version 5.61 to version 5.62
196
197No longer loads L<MIME::Base64> as this was unnecessary.
198
199=item *
200
975dff8c
FC
201L<Devel::Peek> has been upgraded from version 1.07 to 1.08.
202
203Its C<fill_mstats> function no longer refuses to write to copy-on-write
204scalars.
205
206=item *
207
1c861f7c
CBW
208L<Encode> has been upgraded from version 2.42 to version 2.43
209
210Missing aliases added, a deep recursion error fixed and various
211documentation updates.
212
213=item *
214
bdab33d1
DG
215L<ExtUtils::CBuilder> updated from version 0.280203 to 0.280204. The new version
216append CFLAGS and LDFLAGS to their Config.pm counterparts.
217
218=item *
219
1c861f7c
CBW
220L<Filter::Util::Call> has been upgraded from version 1.08 to version 1.39
221
222C<decrypt> fixed to work with v5.14.0
223
224=item *
225
bdab33d1
DG
226L<Filter::Simple> updated from version 0.85 to 0.87
227
228=item *
229
230L<FindBin> updated from version 1.50 to 1.51.
231
232=item *
233
1c861f7c
CBW
234L<JSON::PP> has been upgraded from version 2.27105 to version 2.27200
235
236Fixed C<incr_parse> decoding string more correctly.
237
238=item *
239
76fadaa8
LB
240L<I18N::LangTags> has been upgraded from version 0.35_01 to version 0.36.
241
242Fix broken URLs for RFCs.
243
244=item *
245
031f91ce
NC
246L<IPC::Open3> has been upgraded from version 1.10 to version 1.11.
247
248=over 4
249
250=item *
251
252Fixes a bug which prevented use of open3 on Windows when *STDIN, *STDOUT or
253*STDERR had been localized.
254
9f3ee5ee
NC
255=item *
256
257Fixes a bug which prevented duplicating numeric file descriptors on Windows.
258
031f91ce
NC
259=back
260
261=item *
262
f95396b3 263L<Math::Complex> has been upgraded from version 1.56 to version 1.57.
3194a40a
Z
264
265Correct copy constructor usage.
266Fix polarwise formatting with numeric format specifier.
267More stable C<great_circle_direction> algorithm.
268
269=item *
270
bdab33d1
DG
271L<Module::CoreList> has been updated to include Perl 5.12.4.
272
273=item *
274
b43aaa67
LB
275L<mro> has been updated to remove two broken URLs in the documentation.
276
277=item *
278
1c861f7c
CBW
279L<Object::Accessor> has been upgraded from version 0.38 to version 0.42
280
281Eliminated use of C<exists> on array elements which has been deprecated.
282
283=item *
284
e5904012
NC
285L<PerlIO::encoding> has been upgraded from version 0.14 to 0.15
286
287=item *
288
975dff8c
FC
289L<PerlIO::scalar> has been upgraded from version 0.11 to 0.12.
290
291It fixes a problem with C<< open my $fh, ">", \$scalar >> not working if
292C<$scalar> is a copy-on-write scalar.
293
294=item *
295
760696b8
FC
296XXX If any changes are made, the version will need to be bumped again.
297What blead has is currently (as of a9d1f3db, 7th of June) identical to
2985.14.1's version.
299
300L<Pod::Perldoc> has been upgraded from version 3.15_03 to 3.15_04.
301
302It corrects the search paths on VMS [RT #90640].
303
304=item *
305
daca484d
NC
306L<Storable> has been upgraded from version 2.27 to version 2.28.
307
975dff8c
FC
308It no longer turns copy-on-write scalars into read-only scalars when
309freezing and thawing.
310
daca484d
NC
311=item *
312
1c861f7c
CBW
313L<Sys::Syslog> has been upgraded from version 0.27 to version 0.29
314
315Large number of Request Tickets resolved.
316
317=item *
318
f95396b3 319L<Time::HiRes> has been upgraded from version 1.9721_01 to version 1.9722.
91a2e9f6
Z
320
321Portability fix, and avoiding some compiler warnings.
322
323=item *
324
0b3bdea4
LB
325L<Module::CoreList> has been upgraded from version 2.49 to 2.50.
326
327Updated for v5.12.4.
328
329=item *
330
1c861f7c
CBW
331L<Unicode::Collate> has been upgraded from version 0.73 to version 0.76
332
333Updated to CLDR 1.9.1
334
335=item *
336
337L<Unicode::Normalize> has been upgraded from version 1.10 to version 1.12
338
339Fixes for the removal of C<unicore/CompositionExclusions.txt> from core.
340
341=item *
342
343L<XSLoader> has been upgraded from version 0.13 to version 0.15
344
345Integrated changes from bleadperl
346
347=item *
348
34dc2ec0 349XXX
9780b8fa 350
e8e35311
FC
351=back
352
34dc2ec0 353=head2 Removed Modules and Pragmata
bdb0cce8 354
34dc2ec0 355=over 4
44691e6f 356
5076a392 357=item *
44691e6f 358
34dc2ec0 359XXX
e8e35311
FC
360
361=back
362
34dc2ec0 363=head1 Documentation
44691e6f 364
34dc2ec0
DM
365XXX Changes to files in F<pod/> go here. Consider grouping entries by
366file and be sure to link to the appropriate page, e.g. L<perlfunc>.
6d96b0fe 367
34dc2ec0 368=head2 New Documentation
6d96b0fe 369
34dc2ec0 370XXX Changes which create B<new> files in F<pod/> go here.
6d96b0fe 371
34dc2ec0 372=head3 L<XXX>
e8e35311 373
34dc2ec0 374XXX Description of the purpose of the new file here
6d96b0fe 375
34dc2ec0 376=head2 Changes to Existing Documentation
b7188eb5 377
34dc2ec0
DM
378XXX Changes which significantly change existing files in F<pod/> go here.
379However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
380section.
b7188eb5 381
bdab33d1
DG
382=head3 L<perlfork>
383
384=over
385
386=item *
387
388Added portability caveats related to using kill on forked process.
389
390=back
391
760696b8
FC
392=head3 L<perlfunc>
393
394=over
395
396=item *
397
398C<given>, C<when> and C<default> are now listed in L<perlfunc> (5.14.1).
399
400=back
401
402=head3 L<perllol>
403
404=over
405
406=item *
407
408L<perllol> has been expanded with examples using the new C<push $scalar>
409syntax introduced in Perl 5.14.0 (5.14.1).
410
411=back
412
413=head3 L<perlop>
b7188eb5 414
34dc2ec0 415=over 4
e8e35311 416
2c389f6c
FC
417=item *
418
760696b8
FC
419The explanation of bitwise operators has been expanded to explain how they
420work on Unicode strings (5.14.1).
421
422=item *
423
424The section on the triple-dot or yada-yada operator has been moved up, as
425it used to separate two closely related sections about the comma operator
426(5.14.1).
427
428=item *
429
430More examples for C<m//g> have been added (5.14.1).
431
432=item *
433
434The C<<< <<\FOO >>> here-doc syntax has been documented (5.14.1).
435
436=back
437
438=head3 L<perlrun>
439
440=over
441
442=item *
443
444L<perlrun> has undergone a significant clean-up. Most notably, the
445B<-0x...> form of the B<-0> flag has been clarified, and the final section
446on environment variables has been corrected and expanded (5.14.1).
2c389f6c 447
e8e35311
FC
448=back
449
34dc2ec0 450=head1 Diagnostics
b7188eb5 451
34dc2ec0
DM
452The following additions or changes have been made to diagnostic output,
453including warnings and fatal error messages. For the complete list of
454diagnostic messages, see L<perldiag>.
44691e6f 455
34dc2ec0
DM
456XXX New or changed warnings emitted by the core's C<C> code go here. Also
457include any changes in L<perldiag> that reconcile it to the C<C> code.
6c9cd4a1 458
34dc2ec0 459[ Within each section, list entries as a =item entry ]
6c9cd4a1 460
34dc2ec0 461=head2 New Diagnostics
44691e6f 462
34dc2ec0 463XXX Newly added diagnostic messages go here
44691e6f 464
bdab33d1
DG
465=head3 New Warnings
466
34dc2ec0 467=over 4
44691e6f 468
bdab33d1 469=item L<Useless assignment to a temporary|perldiag/"Useless assignment to a temporary">
44691e6f 470
bdab33d1
DG
471Assigning to a temporary returned from an XS lvalue subroutine now produces a
472warning [RT #31946].
2c389f6c
FC
473
474=back
475
34dc2ec0 476=head2 Changes to Existing Diagnostics
b7188eb5 477
34dc2ec0 478XXX Changes (i.e. rewording) of diagnostic messages go here
b7188eb5 479
34dc2ec0 480=over 4
b7188eb5 481
5076a392 482=item *
b7188eb5 483
34dc2ec0 484XXX
b7188eb5 485
e8e35311 486=back
5076a392 487
34dc2ec0 488=head1 Utility Changes
5076a392 489
34dc2ec0
DM
490XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
491here. Most of these are built within the directories F<utils> and F<x2p>.
5076a392 492
34dc2ec0
DM
493[ List utility changes as a =head3 entry for each utility and =item
494entries for each change
495Use L<XXX> with program names to get proper documentation linking. ]
5076a392 496
34dc2ec0 497=head3 L<XXX>
5076a392 498
34dc2ec0 499=over 4
5076a392
FC
500
501=item *
502
34dc2ec0 503XXX
5076a392 504
2c389f6c 505=back
e8e35311 506
34dc2ec0 507=head1 Configuration and Compilation
5076a392 508
34dc2ec0
DM
509XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
510go here. Any other changes to the Perl build process should be listed here.
511However, any platform-specific changes should be listed in the
512L</Platform Support> section, instead.
2c389f6c 513
34dc2ec0 514[ List changes as a =item entry ].
2c389f6c 515
34dc2ec0 516=over 4
5076a392 517
e8e35311 518=item *
5076a392 519
760696b8
FC
520F<regexp.h> has been modified for compatibility with GCC's B<-Werror>
521option, as used by some projects that include perl's header files (5.14.1).
5076a392 522
bdab33d1
DG
523=item *
524
525USE_LOCALE{,_COLLATE,_CTYPE,_NUMERIC} have been added the output of perl -V
526as they have affect the behaviour of the interpreter binary (albeit only
527in a small area).
528
34dc2ec0 529=back
5076a392 530
34dc2ec0 531=head1 Testing
5076a392 532
34dc2ec0
DM
533XXX Any significant changes to the testing of a freshly built perl should be
534listed here. Changes which create B<new> files in F<t/> go here as do any
535large changes to the testing harness (e.g. when parallel testing was added).
536Changes to existing files in F<t/> aren't worth summarising, although the bugs
537that they represent may be covered elsewhere.
5076a392 538
34dc2ec0 539[ List each test improvement as a =item entry ]
5076a392 540
34dc2ec0 541=over 4
5076a392
FC
542
543=item *
544
34dc2ec0 545XXX
e8e35311 546
34dc2ec0 547=back
5076a392 548
34dc2ec0 549=head1 Platform Support
5076a392 550
34dc2ec0 551XXX Any changes to platform support should be listed in the sections below.
5076a392 552
34dc2ec0
DM
553[ Within the sections, list each platform as a =item entry with specific
554changes as paragraphs below it. ]
5076a392 555
34dc2ec0 556=head2 New Platforms
5076a392 557
34dc2ec0
DM
558XXX List any platforms that this version of perl compiles on, that previous
559versions did not. These will either be enabled by new files in the F<hints/>
560directories, or new subdirectories and F<README> files at the top level of the
561source tree.
cdc10f43 562
34dc2ec0 563=over 4
cdc10f43 564
bdab33d1 565=item GNU/Hurd
d430b8e7 566
bdab33d1
DG
567=over
568
569=item *
570
571No longer overrides possible extra $ccflags values given to Configure
572on GNU/Hurd. C.f. Bug-Debian: http://bugs.debian.org/587901
573
574=back
575
576=item Mac OS X
577
578Clarified apple developer tools requirements in README.macosx
579
580=item MSWin32
581
582Supplied F<makefile.mk> patched to support gcc-4.x.x and README.win32
583updated accordingly. [RT #91354]
584
585=item Solaris
586
587Updated the list of required packages for building perl to reflect Solaris 9
588and 10 in README.solaris [RT #90850]
d430b8e7 589
2c389f6c 590=back
5076a392 591
34dc2ec0 592=head2 Discontinued Platforms
5076a392 593
34dc2ec0 594XXX List any platforms that this version of perl no longer compiles on.
5076a392 595
34dc2ec0 596=over 4
e8e35311 597
34dc2ec0 598=item XXX-some-platform
e8e35311 599
34dc2ec0 600XXX
1e463951 601
c71a852f 602=back
b7188eb5 603
34dc2ec0 604=head2 Platform-Specific Notes
42a91c97 605
34dc2ec0
DM
606XXX List any changes for specific platforms. This could include configuration
607and compilation changes or changes in portability/compatibility. However,
608changes within modules for platforms should generally be listed in the
609L</Modules and Pragmata> section.
42a91c97 610
34dc2ec0 611=over 4
42a91c97 612
34dc2ec0 613=item XXX-some-platform
42a91c97 614
34dc2ec0 615XXX
42a91c97 616
34dc2ec0 617=back
42a91c97 618
34dc2ec0 619=head1 Internal Changes
42a91c97 620
34dc2ec0
DM
621XXX Changes which affect the interface available to C<XS> code go here.
622Other significant internal changes for future core maintainers should
623be noted as well.
42a91c97 624
34dc2ec0 625=over 4
42a91c97 626
2c389f6c
FC
627=item *
628
c13a5c80
NC
629When empting a hash of its elements (e.g. via undef(%h), or %h=()), HvARRAY
630field is no longer temporarily zeroed. Any destructors called on the freed
631elements see the remaining elements. Thus, %h=() becomes more like C<delete
632$h{$_} for keys %h>.
633
634=item *
635
74e0ddf7
NC
636The compiled representation of formats is now stored via the mg_ptr of
637their PERL_MAGIC_fm. Previously it was stored in the string buffer,
638beyond SvLEN(), the regular end of the string. SvCOMPILED() and
639SvCOMPILED_{on,off}() now exist solely for compatibility for XS code.
640The first is always 0, the other two now no-ops.
cdc10f43 641
bdab33d1
DG
642=item *
643
c13a5c80
NC
644Boyer-Moore compiled scalars are now PVMGs, and the Boyer-Moore tables are now
645stored via the mg_ptr of their PERL_MAGIC_bm. Previously they were PVGVs, with
646the tables stored in the string buffer, beyond SvLEN(). This eliminates the
647last place where the core stores data beyond SvLEN().
bdab33d1 648
34dc2ec0 649=back
cdc10f43 650
34dc2ec0 651=head1 Selected Bug Fixes
cdc10f43 652
34dc2ec0
DM
653XXX Important bug fixes in the core language are summarised here.
654Bug fixes in files in F<ext/> and F<lib/> are best summarised in
655L</Modules and Pragmata>.
cdc10f43 656
34dc2ec0 657[ List each fix as a =item entry ]
d430b8e7 658
bdab33d1
DG
659=head2 Regular expressions and character classes
660
34dc2ec0 661=over 4
d430b8e7
FC
662
663=item *
664
f7a45dff
KW
665The new (in 5.14.0) regular expression modifier C</a> when repeated like
666C</aa> forbids the characters outside the ASCII range that match
667characters inside that range from matching under C</i>. This did not
668work under some circumstances, all involving alternation, such as:
669
670 "\N{KELVIN SIGN}" =~ /k|foo/iaa;
671
672succeeded inaprropriately. This is now fixed.
673
674=item *
675
6765.14.0 introduced some memory leaks in regular expression character
bdab33d1 677classes such as C<[\w\s]>, which have now been fixed
f7a45dff
KW
678
679=item *
680
681An edge case in regular expression matching could potentially loop.
682This happened only under C</i> in bracketed character classes that have
683characters with multi-character folds, and the target string to match
684against includes the first portion of the fold, followed by another
685character that has a multi-character fold that begins with the remaining
686portion of the fold, plus some more.
687
688 "s\N{U+DF}" =~ /[\x{DF}foo]/i
689
bdab33d1 690is one such case. C<\xDF> folds to C<"ss">
f7a45dff
KW
691
692=item *
693
694A few characters in regular expression pattern matches did not
695match correctly in some circumstances, all involving C</i>. The
696affected characters are:
697COMBINING GREEK YPOGEGRAMMENI,
698GREEK CAPITAL LETTER IOTA,
699GREEK CAPITAL LETTER UPSILON,
700GREEK PROSGEGRAMMENI,
701GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA,
702GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS,
703GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA,
704GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS,
705LATIN SMALL LETTER LONG S,
706LATIN SMALL LIGATURE LONG S T,
707and
708LATIN SMALL LIGATURE ST.
d430b8e7 709
2fbb14a0
DG
710=item *
711
bdab33d1
DG
712Fixed memory leak regression in regular expression compilation
713under threading
714
715=back
716
717=head2 Formats
718
719A number of edge cases have been fixed with formats and formline;
2fbb14a0
DG
720in particular, where the format itself is potentially variable (such as
721with ties and overloading), and where the format and data differ in their
722encoding. In both these cases, it used to possible for the output to be
723corrupted.
724
bdab33d1 725=head2 Copy-on-write scalars
975dff8c
FC
726
727XXX Someone tell me whether this first clause is correct (see commit
728765f542d):
729
730Copy-on-write scalars were introduced in 5.10.0. These occur when
731C<__PACKAGE__> or a hash key is a assigned to a scalar. Several parts
bdab33d1 732of Perl were not updated to account for them, but have now been fixed.
975dff8c
FC
733
734=over
735
736=item *
737
738C<utf8::decode> had a nasty bug that would modify copy-on-write scalars'
739string buffers in place (i.e., skipping the copy). This could result in
740hashes having two elements with the same key [RT #91834].
741
742=item *
743
744Lvalue subroutines were not allowing COW scalars to be returned. This was
745fixed for lvalue scalar context in Perl 5.12.3 and 5.14.0, but list context
746was not fixed until this release.
747
748=item *
749
750Elements of restricted hashes (see the L<fields> pragma) containing
751copy-on-write values couldn't be deleted, nor could such hashes be cleared
752(C<%hash = ()>).
753
754=item *
755
756Localising a tied variable used to make it read-only if it contained a
757copy-on-write string.
758
759=item *
760
761L<Storable>, L<Devel::Peek> and L<PerlIO::scalar> had similar problems.
762See L</Updated Modules and Pragmata>, above.
763
764=back
765
bdab33d1 766=head2 lvalue subroutines
975dff8c 767
bdab33d1 768There have been various fixes to lvalue subroutines.
975dff8c
FC
769
770=over
771
772=item *
773
774Explicit return now returns the actual argument passed to return, instead
775of copying it [RT #72724].
776
777=item *
778
779Lvalue subroutines used to enforce lvalue syntax (i.e., whatever can go on
780the left-hand side of C<=>) for the last statement and the arguments to
781return. Since lvalue subroutines are not always called in lvalue context,
782this restriction has been lifted.
783
784=item *
785
786Lvalue subroutines are less restrictive as to what values can be returned.
787It used to croak on values returned by C<shift> and C<delete> and from
788other subroutines, but no longer does so.
789
790=item *
791
792Empty lvalue subroutines (C<sub :lvalue {}>) used to return C<@_> in list
793context. In fact, all subroutines used to, but regular subs were fixed in
794Perl 5.8.2. Now lvalue subroutines have been likewise fixed.
795
796=item *
797
798Lvalue subroutines used to copy their return values in rvalue context. Not
799only was this a waste of CPU cycles, but it also caused bugs. A C<($)>
800prototype would cause an lvalue sub to copy its return value [RT #62498],
801and C<while(lvalue_sub() =~ m/.../g) { ... }> would loop endlessly
802[RT #78680].
803
804=item *
805
806Autovivification now works on values returned from lvalue subroutines
807[RT #7946].
808
809=item *
810
bdab33d1
DG
811When called in pass-by-reference context (e.g., subroutine arguments or a list
812passed to C<for>), an lvalue subroutine returning arrays or hashes used to bind
813the arrays (or hashes) to scalar variables--something that is not supposed to
814happen. This could result in "Bizzare copy of ARRAY" errors or C<print>
815ignoring its arguments. It also made non-sensical code like C<@{\$_}> "work".
816This was fixed in 5.14.0 if an array were the first thing returned from the
817subroutine (but not for C<$scalar, @array> or hashes being returned). Now a
818more general fix has been applied [RT #23790].
975dff8c 819
fad4a2e4
FC
820=item *
821
822Assignment to C<keys> returned from an lvalue sub used not to work, but now
823it does.
824
975dff8c
FC
825=back
826
bdab33d1
DG
827=head2 Other notable fixes
828
829=over
830
831=item *
832
833A bug has been fixed that would cause a "Use of freed value in iteration"
834error if the next two hash elements that would be iterated over are
835deleted [RT #85026]
836
837=item *
838
839Passing the same constant subroutine to both C<index> and C<formline> no
840longer causes one or the other to fail [RT #89218].
841
f5d1ed10
FC
842=item *
843
844List assignment to lexical variables declared with attributes in the same
845statement (C<my ($x,@y) : blimp = (72,94)>) stopped working in Perl 5.8.0.
846It has now been fixed.
847
bdab33d1
DG
848=item *
849
850Fixed perldoc search path for VMS.
851
42a91c97
FC
852=back
853
bdab33d1
DG
854=head2 Additional fixes by ticket number
855
856XXX Prefix these with "\n=item *\n" once the list is final
857
858Fixed RT #78074: Make it explicit that symtab manipulation is not supported
859Fixed RT #84526: given wasn't calling set magic
860Fixed RT #87740: Perl debugger restart fails on Windows
861Fixed RT #88822: Test failure t/re_fold_grind.t with bleadperl
862Fixed RT #89896: Locale::Maketext test failure
863Fixed RT #90106: ODBM_File failures on Ubuntu natty
864Fixed RT #90122: Make h2ph correctly search gcc include directories
865Fixed RT #90160: U* gives ‘U0 mode on an empty string’
866Fixed RT #90888: C<each(ARRAY)> on scalar context should wrapped into C<defined()>
867Fixed RT #90898: B::Deparse failure on glob()
868Fixed RT #91032: formline: bugs with non-string formats
869Fixed RT #91880: C<$_> refcounting problems in @INC filters
870Fixed RT #92258: <$fh> hangs on a glob copy
871Fixed RT #92290 and RT #92406: Returning a pad var from an lvalue sub
872
c71a852f 873=head1 Known Problems
44691e6f 874
34dc2ec0
DM
875XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
876tests that had to be C<TODO>ed for the release would be noted here, unless
877they were specific to a particular platform (see below).
cdc10f43 878
34dc2ec0
DM
879This is a list of some significant unfixed bugs, which are regressions
880from either 5.XXX.XXX or 5.XXX.XXX.
cdc10f43 881
34dc2ec0 882[ List each fix as a =item entry ]
ca767864 883
34dc2ec0 884=over 4
cf5da40b
CB
885
886=item *
887
34dc2ec0 888XXX
cf5da40b 889
c71a852f 890=back
014fb485 891
c71a852f 892=head1 Obituary
014fb485 893
34dc2ec0
DM
894XXX If any significant core contributor has died, we've added a short obituary
895here.
44691e6f 896
44691e6f
AB
897=head1 Acknowledgements
898
34dc2ec0 899XXX The list of people to thank goes here.
29cf780c 900
44691e6f
AB
901=head1 Reporting Bugs
902
903If you find what you think is a bug, you might check the articles
34dc2ec0 904recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
905bug database at http://rt.perl.org/perlbug/ . There may also be
906information at http://www.perl.org/ , the Perl Home Page.
907
908If you believe you have an unreported bug, please run the L<perlbug>
909program included with your release. Be sure to trim your bug down
910to a tiny but sufficient test case. Your bug report, along with the
911output of C<perl -V>, will be sent off to perlbug@perl.org to be
912analysed by the Perl porting team.
913
914If the bug you are reporting has security implications, which make it
915inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 916it to perl5-security-report@perl.org. This points to a closed subscription
44691e6f
AB
917unarchived mailing list, which includes all the core committers, who be able
918to help assess the impact of issues, figure out a resolution, and help
919co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
920platforms on which Perl is supported. Please only use this address for
921security issues in the Perl core, not for modules independently
44691e6f
AB
922distributed on CPAN.
923
924=head1 SEE ALSO
925
926The F<Changes> file for an explanation of how to view exhaustive details
927on what changed.
928
929The F<INSTALL> file for how to build Perl.
930
931The F<README> file for general stuff.
932
933The F<Artistic> and F<Copying> files for copyright information.
934
935=cut