This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Some perldelta updates
[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
6693394d
FC
149It also fixes deparsing of C<keys>, C<each> and C<value> with a scalar
150argument (RT #91008) and C<readpipe> followed by a complex expression (as
151opposed to a simple scalar variable).
152
153It now puts C<CORE::> in front of overridable core keywords if they
154conflict with user-defined subroutines.
760696b8
FC
155
156=item *
157
1c861f7c
CBW
158L<CGI> has been upgraded from version 3.52 to version 3.54
159
160The DELETE HTTP verb is now supported.
161
162=item *
163
164L<Compress::Zlib> has been upgraded from version 2.033 to version 2.035
165
166=item *
167
168L<Compress::Raw::Bzip2> has been upgraded from version 2.033 to version 2.035
169
170=item *
171
172L<Compress::Raw::Zlib> has been upgraded from version 2.033 to version 2.035
173
174=item *
175
176L<CPAN::Meta> has been upgraded from version 2.110440 to version 2.110930
177
1c861f7c
CBW
178=item *
179
180L<CPANPLUS> has been upgraded from version 0.9103 to version 0.9105
181
182Now understands specifying modules to install in the format 'Module/Type.pm'
183
184=item *
185
186L<CPANPLUS::Dist::Build> has been upgraded from version 0.54 to version 0.56
187
188=item *
189
bdab33d1
DG
190L<Data::Dumper> has been upgraded from version 2.128 to 2.131.
191
192=item *
193
1c861f7c
CBW
194L<DB_File> has been upgraded from version 1.821 to version 1.822
195
196Warnings are now in sync with perl's
197
198=item *
199
200L<Digest::SHA> has been upgraded from version 5.61 to version 5.62
201
202No longer loads L<MIME::Base64> as this was unnecessary.
203
204=item *
205
975dff8c
FC
206L<Devel::Peek> has been upgraded from version 1.07 to 1.08.
207
208Its C<fill_mstats> function no longer refuses to write to copy-on-write
209scalars.
210
211=item *
212
1c861f7c
CBW
213L<Encode> has been upgraded from version 2.42 to version 2.43
214
215Missing aliases added, a deep recursion error fixed and various
216documentation updates.
217
218=item *
219
bdab33d1
DG
220L<ExtUtils::CBuilder> updated from version 0.280203 to 0.280204. The new version
221append CFLAGS and LDFLAGS to their Config.pm counterparts.
222
223=item *
224
1c861f7c
CBW
225L<Filter::Util::Call> has been upgraded from version 1.08 to version 1.39
226
227C<decrypt> fixed to work with v5.14.0
228
229=item *
230
bdab33d1
DG
231L<Filter::Simple> updated from version 0.85 to 0.87
232
233=item *
234
235L<FindBin> updated from version 1.50 to 1.51.
236
6693394d
FC
237It no longer returns a wrong result if a script of the same name as the
238current one exists in the path and is executable.
239
bdab33d1
DG
240=item *
241
1c861f7c
CBW
242L<JSON::PP> has been upgraded from version 2.27105 to version 2.27200
243
244Fixed C<incr_parse> decoding string more correctly.
245
246=item *
247
76fadaa8
LB
248L<I18N::LangTags> has been upgraded from version 0.35_01 to version 0.36.
249
250Fix broken URLs for RFCs.
251
252=item *
253
031f91ce
NC
254L<IPC::Open3> has been upgraded from version 1.10 to version 1.11.
255
256=over 4
257
258=item *
259
260Fixes a bug which prevented use of open3 on Windows when *STDIN, *STDOUT or
261*STDERR had been localized.
262
9f3ee5ee
NC
263=item *
264
265Fixes a bug which prevented duplicating numeric file descriptors on Windows.
266
031f91ce
NC
267=back
268
269=item *
270
f95396b3 271L<Math::Complex> has been upgraded from version 1.56 to version 1.57.
3194a40a
Z
272
273Correct copy constructor usage.
274Fix polarwise formatting with numeric format specifier.
275More stable C<great_circle_direction> algorithm.
276
277=item *
278
6693394d
FC
279L<Module::CoreList> has been upgraded from version 2.49 to 2.50.
280
281Updated for v5.12.4.
bdab33d1
DG
282
283=item *
284
b43aaa67
LB
285L<mro> has been updated to remove two broken URLs in the documentation.
286
287=item *
288
1c861f7c
CBW
289L<Object::Accessor> has been upgraded from version 0.38 to version 0.42
290
291Eliminated use of C<exists> on array elements which has been deprecated.
292
293=item *
294
e5904012
NC
295L<PerlIO::encoding> has been upgraded from version 0.14 to 0.15
296
297=item *
298
975dff8c
FC
299L<PerlIO::scalar> has been upgraded from version 0.11 to 0.12.
300
301It fixes a problem with C<< open my $fh, ">", \$scalar >> not working if
302C<$scalar> is a copy-on-write scalar.
303
304=item *
305
760696b8
FC
306XXX If any changes are made, the version will need to be bumped again.
307What blead has is currently (as of a9d1f3db, 7th of June) identical to
3085.14.1's version.
309
310L<Pod::Perldoc> has been upgraded from version 3.15_03 to 3.15_04.
311
312It corrects the search paths on VMS [RT #90640].
313
314=item *
315
daca484d
NC
316L<Storable> has been upgraded from version 2.27 to version 2.28.
317
975dff8c
FC
318It no longer turns copy-on-write scalars into read-only scalars when
319freezing and thawing.
320
daca484d
NC
321=item *
322
1c861f7c
CBW
323L<Sys::Syslog> has been upgraded from version 0.27 to version 0.29
324
325Large number of Request Tickets resolved.
326
327=item *
328
f95396b3 329L<Time::HiRes> has been upgraded from version 1.9721_01 to version 1.9722.
91a2e9f6
Z
330
331Portability fix, and avoiding some compiler warnings.
332
333=item *
334
1c861f7c
CBW
335L<Unicode::Collate> has been upgraded from version 0.73 to version 0.76
336
337Updated to CLDR 1.9.1
338
339=item *
340
341L<Unicode::Normalize> has been upgraded from version 1.10 to version 1.12
342
343Fixes for the removal of C<unicore/CompositionExclusions.txt> from core.
344
345=item *
346
347L<XSLoader> has been upgraded from version 0.13 to version 0.15
348
349Integrated changes from bleadperl
350
351=item *
352
34dc2ec0 353XXX
9780b8fa 354
e8e35311
FC
355=back
356
34dc2ec0 357=head2 Removed Modules and Pragmata
bdb0cce8 358
34dc2ec0 359=over 4
44691e6f 360
5076a392 361=item *
44691e6f 362
34dc2ec0 363XXX
e8e35311
FC
364
365=back
366
34dc2ec0 367=head1 Documentation
44691e6f 368
34dc2ec0
DM
369XXX Changes to files in F<pod/> go here. Consider grouping entries by
370file and be sure to link to the appropriate page, e.g. L<perlfunc>.
6d96b0fe 371
34dc2ec0 372=head2 New Documentation
6d96b0fe 373
34dc2ec0 374XXX Changes which create B<new> files in F<pod/> go here.
6d96b0fe 375
34dc2ec0 376=head3 L<XXX>
e8e35311 377
34dc2ec0 378XXX Description of the purpose of the new file here
6d96b0fe 379
34dc2ec0 380=head2 Changes to Existing Documentation
b7188eb5 381
34dc2ec0
DM
382XXX Changes which significantly change existing files in F<pod/> go here.
383However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
384section.
b7188eb5 385
bdab33d1
DG
386=head3 L<perlfork>
387
388=over
389
390=item *
391
392Added portability caveats related to using kill on forked process.
393
394=back
395
760696b8
FC
396=head3 L<perlfunc>
397
398=over
399
400=item *
401
402C<given>, C<when> and C<default> are now listed in L<perlfunc> (5.14.1).
403
6693394d
FC
404=item *
405
406The examples for the C<select> function no longer use strings for file
407handles.
408
760696b8
FC
409=back
410
411=head3 L<perllol>
412
413=over
414
415=item *
416
417L<perllol> has been expanded with examples using the new C<push $scalar>
418syntax introduced in Perl 5.14.0 (5.14.1).
419
420=back
421
6693394d
FC
422=head3 L<perlmod>
423
424=over
425
426=item *
427
428L<perlmod> now states explicitly that some types of explicit symbol table
429manipulation are not supported. This codifies what was effectively already
430the case [RT #78074].
431
432=back
433
760696b8 434=head3 L<perlop>
b7188eb5 435
34dc2ec0 436=over 4
e8e35311 437
2c389f6c
FC
438=item *
439
760696b8
FC
440The explanation of bitwise operators has been expanded to explain how they
441work on Unicode strings (5.14.1).
442
443=item *
444
445The section on the triple-dot or yada-yada operator has been moved up, as
446it used to separate two closely related sections about the comma operator
447(5.14.1).
448
449=item *
450
451More examples for C<m//g> have been added (5.14.1).
452
453=item *
454
455The C<<< <<\FOO >>> here-doc syntax has been documented (5.14.1).
456
457=back
458
6693394d
FC
459=head3 L<perlpodstyle>
460
461=over 4
462
463=item *
464
465The tips on which formatting codes to use have been corrected and greatly
466expanded.
467
468=item *
469
470There are now a couple of example one-liners for previewing POD files after
471they have been edited.
472
473=back
474
475=head3 L<perlre>
476
477=over
478
479=item *
480
481The C<(*COMMIT)> directive is now listed in the right section
482(L<Verbs without an argument|perlre/Verbs without an argument>).
483
484=back
485
760696b8
FC
486=head3 L<perlrun>
487
488=over
489
490=item *
491
492L<perlrun> has undergone a significant clean-up. Most notably, the
493B<-0x...> form of the B<-0> flag has been clarified, and the final section
494on environment variables has been corrected and expanded (5.14.1).
2c389f6c 495
e8e35311
FC
496=back
497
6693394d
FC
498=head3 L<POSIX>
499
500=over
501
502=item *
503
504The invocation documentation for C<WIFEXITED>, C<WEXITSTATUS>,
505C<WIFSIGNALED>, C<WTERMSIG>, C<WIFSTOPPED>, and C<WSTOPSIG> has been
506corrected (5.14.1).
507
508=back
509
34dc2ec0 510=head1 Diagnostics
b7188eb5 511
34dc2ec0
DM
512The following additions or changes have been made to diagnostic output,
513including warnings and fatal error messages. For the complete list of
514diagnostic messages, see L<perldiag>.
44691e6f 515
34dc2ec0
DM
516XXX New or changed warnings emitted by the core's C<C> code go here. Also
517include any changes in L<perldiag> that reconcile it to the C<C> code.
6c9cd4a1 518
34dc2ec0 519[ Within each section, list entries as a =item entry ]
6c9cd4a1 520
34dc2ec0 521=head2 New Diagnostics
44691e6f 522
34dc2ec0 523XXX Newly added diagnostic messages go here
44691e6f 524
bdab33d1
DG
525=head3 New Warnings
526
34dc2ec0 527=over 4
44691e6f 528
bdab33d1 529=item L<Useless assignment to a temporary|perldiag/"Useless assignment to a temporary">
44691e6f 530
bdab33d1
DG
531Assigning to a temporary returned from an XS lvalue subroutine now produces a
532warning [RT #31946].
2c389f6c
FC
533
534=back
535
34dc2ec0 536=head2 Changes to Existing Diagnostics
b7188eb5 537
34dc2ec0 538XXX Changes (i.e. rewording) of diagnostic messages go here
b7188eb5 539
34dc2ec0 540=over 4
b7188eb5 541
5076a392 542=item *
b7188eb5 543
34dc2ec0 544XXX
b7188eb5 545
e8e35311 546=back
5076a392 547
34dc2ec0 548=head1 Utility Changes
5076a392 549
34dc2ec0
DM
550XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
551here. Most of these are built within the directories F<utils> and F<x2p>.
5076a392 552
34dc2ec0
DM
553[ List utility changes as a =head3 entry for each utility and =item
554entries for each change
555Use L<XXX> with program names to get proper documentation linking. ]
5076a392 556
34dc2ec0 557=head3 L<XXX>
5076a392 558
34dc2ec0 559=over 4
5076a392
FC
560
561=item *
562
34dc2ec0 563XXX
5076a392 564
2c389f6c 565=back
e8e35311 566
34dc2ec0 567=head1 Configuration and Compilation
5076a392 568
34dc2ec0
DM
569XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
570go here. Any other changes to the Perl build process should be listed here.
571However, any platform-specific changes should be listed in the
572L</Platform Support> section, instead.
2c389f6c 573
34dc2ec0 574[ List changes as a =item entry ].
2c389f6c 575
34dc2ec0 576=over 4
5076a392 577
e8e35311 578=item *
5076a392 579
760696b8
FC
580F<regexp.h> has been modified for compatibility with GCC's B<-Werror>
581option, as used by some projects that include perl's header files (5.14.1).
5076a392 582
bdab33d1
DG
583=item *
584
585USE_LOCALE{,_COLLATE,_CTYPE,_NUMERIC} have been added the output of perl -V
586as they have affect the behaviour of the interpreter binary (albeit only
587in a small area).
588
34dc2ec0 589=back
5076a392 590
34dc2ec0 591=head1 Testing
5076a392 592
34dc2ec0
DM
593XXX Any significant changes to the testing of a freshly built perl should be
594listed here. Changes which create B<new> files in F<t/> go here as do any
595large changes to the testing harness (e.g. when parallel testing was added).
596Changes to existing files in F<t/> aren't worth summarising, although the bugs
597that they represent may be covered elsewhere.
5076a392 598
34dc2ec0 599[ List each test improvement as a =item entry ]
5076a392 600
34dc2ec0 601=over 4
5076a392
FC
602
603=item *
604
34dc2ec0 605XXX
e8e35311 606
34dc2ec0 607=back
5076a392 608
34dc2ec0 609=head1 Platform Support
5076a392 610
34dc2ec0 611XXX Any changes to platform support should be listed in the sections below.
5076a392 612
34dc2ec0
DM
613[ Within the sections, list each platform as a =item entry with specific
614changes as paragraphs below it. ]
5076a392 615
34dc2ec0 616=head2 New Platforms
5076a392 617
34dc2ec0
DM
618XXX List any platforms that this version of perl compiles on, that previous
619versions did not. These will either be enabled by new files in the F<hints/>
620directories, or new subdirectories and F<README> files at the top level of the
621source tree.
cdc10f43 622
34dc2ec0 623=over 4
cdc10f43 624
bdab33d1 625=item GNU/Hurd
d430b8e7 626
bdab33d1
DG
627=over
628
629=item *
630
631No longer overrides possible extra $ccflags values given to Configure
632on GNU/Hurd. C.f. Bug-Debian: http://bugs.debian.org/587901
633
634=back
635
636=item Mac OS X
637
638Clarified apple developer tools requirements in README.macosx
639
640=item MSWin32
641
642Supplied F<makefile.mk> patched to support gcc-4.x.x and README.win32
643updated accordingly. [RT #91354]
644
645=item Solaris
646
647Updated the list of required packages for building perl to reflect Solaris 9
648and 10 in README.solaris [RT #90850]
d430b8e7 649
2c389f6c 650=back
5076a392 651
34dc2ec0 652=head2 Discontinued Platforms
5076a392 653
34dc2ec0 654XXX List any platforms that this version of perl no longer compiles on.
5076a392 655
34dc2ec0 656=over 4
e8e35311 657
34dc2ec0 658=item XXX-some-platform
e8e35311 659
34dc2ec0 660XXX
1e463951 661
c71a852f 662=back
b7188eb5 663
34dc2ec0 664=head2 Platform-Specific Notes
42a91c97 665
34dc2ec0
DM
666XXX List any changes for specific platforms. This could include configuration
667and compilation changes or changes in portability/compatibility. However,
668changes within modules for platforms should generally be listed in the
669L</Modules and Pragmata> section.
42a91c97 670
6693394d
FC
671=head3 Ubuntu Linux
672
34dc2ec0 673=over 4
42a91c97 674
6693394d 675=item *
42a91c97 676
6693394d
FC
677The L<ODBM_File> installation process has been updated with the new library
678paths on Ubuntu natty [RT #90106].
679
680=item *
681
682I<h2ph> now gets the include paths from gcc correctly. This stopped
683working when Ubuntu switched to a "multiarch" setup [RT #90122].
42a91c97 684
34dc2ec0 685=back
42a91c97 686
34dc2ec0 687=head1 Internal Changes
42a91c97 688
34dc2ec0
DM
689XXX Changes which affect the interface available to C<XS> code go here.
690Other significant internal changes for future core maintainers should
691be noted as well.
42a91c97 692
34dc2ec0 693=over 4
42a91c97 694
2c389f6c
FC
695=item *
696
c13a5c80
NC
697When empting a hash of its elements (e.g. via undef(%h), or %h=()), HvARRAY
698field is no longer temporarily zeroed. Any destructors called on the freed
699elements see the remaining elements. Thus, %h=() becomes more like C<delete
700$h{$_} for keys %h>.
701
702=item *
703
74e0ddf7
NC
704The compiled representation of formats is now stored via the mg_ptr of
705their PERL_MAGIC_fm. Previously it was stored in the string buffer,
706beyond SvLEN(), the regular end of the string. SvCOMPILED() and
707SvCOMPILED_{on,off}() now exist solely for compatibility for XS code.
708The first is always 0, the other two now no-ops.
cdc10f43 709
bdab33d1
DG
710=item *
711
c13a5c80
NC
712Boyer-Moore compiled scalars are now PVMGs, and the Boyer-Moore tables are now
713stored via the mg_ptr of their PERL_MAGIC_bm. Previously they were PVGVs, with
714the tables stored in the string buffer, beyond SvLEN(). This eliminates the
715last place where the core stores data beyond SvLEN().
bdab33d1 716
34dc2ec0 717=back
cdc10f43 718
34dc2ec0 719=head1 Selected Bug Fixes
cdc10f43 720
34dc2ec0
DM
721XXX Important bug fixes in the core language are summarised here.
722Bug fixes in files in F<ext/> and F<lib/> are best summarised in
723L</Modules and Pragmata>.
cdc10f43 724
34dc2ec0 725[ List each fix as a =item entry ]
d430b8e7 726
bdab33d1
DG
727=head2 Regular expressions and character classes
728
34dc2ec0 729=over 4
d430b8e7
FC
730
731=item *
732
f7a45dff
KW
733The new (in 5.14.0) regular expression modifier C</a> when repeated like
734C</aa> forbids the characters outside the ASCII range that match
735characters inside that range from matching under C</i>. This did not
736work under some circumstances, all involving alternation, such as:
737
738 "\N{KELVIN SIGN}" =~ /k|foo/iaa;
739
6693394d 740succeeded inappropriately. This is now fixed.
f7a45dff
KW
741
742=item *
743
7445.14.0 introduced some memory leaks in regular expression character
bdab33d1 745classes such as C<[\w\s]>, which have now been fixed
f7a45dff
KW
746
747=item *
748
749An edge case in regular expression matching could potentially loop.
750This happened only under C</i> in bracketed character classes that have
751characters with multi-character folds, and the target string to match
752against includes the first portion of the fold, followed by another
753character that has a multi-character fold that begins with the remaining
754portion of the fold, plus some more.
755
756 "s\N{U+DF}" =~ /[\x{DF}foo]/i
757
bdab33d1 758is one such case. C<\xDF> folds to C<"ss">
f7a45dff
KW
759
760=item *
761
762A few characters in regular expression pattern matches did not
763match correctly in some circumstances, all involving C</i>. The
764affected characters are:
765COMBINING GREEK YPOGEGRAMMENI,
766GREEK CAPITAL LETTER IOTA,
767GREEK CAPITAL LETTER UPSILON,
768GREEK PROSGEGRAMMENI,
769GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA,
770GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS,
771GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA,
772GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS,
773LATIN SMALL LETTER LONG S,
774LATIN SMALL LIGATURE LONG S T,
775and
776LATIN SMALL LIGATURE ST.
d430b8e7 777
2fbb14a0
DG
778=item *
779
bdab33d1
DG
780Fixed memory leak regression in regular expression compilation
781under threading
782
783=back
784
785=head2 Formats
786
787A number of edge cases have been fixed with formats and formline;
2fbb14a0
DG
788in particular, where the format itself is potentially variable (such as
789with ties and overloading), and where the format and data differ in their
790encoding. In both these cases, it used to possible for the output to be
791corrupted.
792
bdab33d1 793=head2 Copy-on-write scalars
975dff8c 794
6693394d
FC
795Copy-on-write scalars were introduced in 5.6.0, but most Perl code
796did not encounter them (they were used mostly internally). Perl
7975.10.0 extended them, such that assigning C<__PACKAGE__> or a
798hash key to a scalar would make it copy-on-write. Several parts
bdab33d1 799of Perl were not updated to account for them, but have now been fixed.
975dff8c
FC
800
801=over
802
803=item *
804
805C<utf8::decode> had a nasty bug that would modify copy-on-write scalars'
806string buffers in place (i.e., skipping the copy). This could result in
807hashes having two elements with the same key [RT #91834].
808
809=item *
810
811Lvalue subroutines were not allowing COW scalars to be returned. This was
812fixed for lvalue scalar context in Perl 5.12.3 and 5.14.0, but list context
813was not fixed until this release.
814
815=item *
816
817Elements of restricted hashes (see the L<fields> pragma) containing
818copy-on-write values couldn't be deleted, nor could such hashes be cleared
819(C<%hash = ()>).
820
821=item *
822
823Localising a tied variable used to make it read-only if it contained a
824copy-on-write string.
825
826=item *
827
828L<Storable>, L<Devel::Peek> and L<PerlIO::scalar> had similar problems.
829See L</Updated Modules and Pragmata>, above.
830
831=back
832
bdab33d1 833=head2 lvalue subroutines
975dff8c 834
bdab33d1 835There have been various fixes to lvalue subroutines.
975dff8c
FC
836
837=over
838
839=item *
840
841Explicit return now returns the actual argument passed to return, instead
842of copying it [RT #72724].
843
844=item *
845
846Lvalue subroutines used to enforce lvalue syntax (i.e., whatever can go on
847the left-hand side of C<=>) for the last statement and the arguments to
848return. Since lvalue subroutines are not always called in lvalue context,
849this restriction has been lifted.
850
851=item *
852
853Lvalue subroutines are less restrictive as to what values can be returned.
854It used to croak on values returned by C<shift> and C<delete> and from
855other subroutines, but no longer does so.
856
857=item *
858
859Empty lvalue subroutines (C<sub :lvalue {}>) used to return C<@_> in list
860context. In fact, all subroutines used to, but regular subs were fixed in
861Perl 5.8.2. Now lvalue subroutines have been likewise fixed.
862
863=item *
864
865Lvalue subroutines used to copy their return values in rvalue context. Not
866only was this a waste of CPU cycles, but it also caused bugs. A C<($)>
867prototype would cause an lvalue sub to copy its return value [RT #62498],
868and C<while(lvalue_sub() =~ m/.../g) { ... }> would loop endlessly
869[RT #78680].
870
871=item *
872
873Autovivification now works on values returned from lvalue subroutines
874[RT #7946].
875
876=item *
877
bdab33d1
DG
878When called in pass-by-reference context (e.g., subroutine arguments or a list
879passed to C<for>), an lvalue subroutine returning arrays or hashes used to bind
880the arrays (or hashes) to scalar variables--something that is not supposed to
881happen. This could result in "Bizzare copy of ARRAY" errors or C<print>
882ignoring its arguments. It also made non-sensical code like C<@{\$_}> "work".
883This was fixed in 5.14.0 if an array were the first thing returned from the
884subroutine (but not for C<$scalar, @array> or hashes being returned). Now a
885more general fix has been applied [RT #23790].
975dff8c 886
fad4a2e4
FC
887=item *
888
889Assignment to C<keys> returned from an lvalue sub used not to work, but now
890it does.
891
975dff8c
FC
892=back
893
6693394d 894=head2 Fixes related to hashes
bdab33d1
DG
895
896=over
897
898=item *
899
900A bug has been fixed that would cause a "Use of freed value in iteration"
901error if the next two hash elements that would be iterated over are
6693394d
FC
902deleted [RT #85026].
903
904=item *
905
906Freeing deeply nested hashes no longer crashes [RT #44225].
907
908=item *
909
910Deleting the current hash iterator (the hash element that would be returend
911by the next call to C<each>) in void context used not to free it. The hash
912would continue to reference it until the next iteration. This has been
913fixed [RT #85026].
914
915=back
916
917=head2 Other notable fixes
918
919=over
bdab33d1
DG
920
921=item *
922
923Passing the same constant subroutine to both C<index> and C<formline> no
924longer causes one or the other to fail [RT #89218].
925
f5d1ed10
FC
926=item *
927
928List assignment to lexical variables declared with attributes in the same
929statement (C<my ($x,@y) : blimp = (72,94)>) stopped working in Perl 5.8.0.
930It has now been fixed.
931
bdab33d1
DG
932=item *
933
6693394d
FC
934Perl 5.10.0 introduced some faulty logic that made "U*" in the middle of
935a pack template equivalent to "U0" if the input string was empty. This has
936been fixed [RT #90160].
937
938=item *
939
940Destructors on objects were not called during global destruction on objects
941that were not referenced by any scalars. This could happen if an array
942element were blessed (e.g., C<bless \$a[0]>) or if a closure referenced a
943blessed variable (C<bless \my @a; sub foo { @a }>).
944
945Now there is an extra pass during global destruction to fire destructors on
946any objects that might be left after the usual passes that check for
947objects referenced by scalars [RT #36347].
948
949This bug fix was added in Perl 5.13.9, but caused problems with some CPAN
950modules that were relying on the bug. Since it was so close to Perl
9515.14.0, the fix was reverted in 5.13.10, to allow more time for the modules
952to adapt. Hopefully they will be fixed soon (see L</Known Problems>,
953below).
954
955=item *
956
957C<given> was not calling set-magic on the implicit lexical C<$_> that it
958uses. This meant, for example, that C<pos> would be remembered from one
959execution of the same C<given> block to the next, even if the input were a
960different variable [RT #84526].
961
962=item *
963
964The "R" command for restarting a debugger session has been fixed to work on
965Windows, or any other system lacking a C<POSIX::_SC_OPEN_MAX> constant
966[RT #87740].
967
968=item *
969
970Fixed a case where it was possible that a freed buffer may have been read
971from when parsing a here document [RT #90128].
972
973=item *
974
975The C<study> function could become confused if fed a string longer than
9762**31 characters. Now it simply skips such strings.
977
978=item *
979
980C<each(I<ARRAY>)> is now wrapped in C<defined(...)>, like C<each(I<HASH>)>,
981inside a C<when> condition [RT #90888].
bdab33d1 982
42a91c97
FC
983=back
984
bdab33d1
DG
985=head2 Additional fixes by ticket number
986
987XXX Prefix these with "\n=item *\n" once the list is final
988
bdab33d1
DG
989Fixed RT #88822: Test failure t/re_fold_grind.t with bleadperl
990Fixed RT #89896: Locale::Maketext test failure
bdab33d1
DG
991Fixed RT #91032: formline: bugs with non-string formats
992Fixed RT #91880: C<$_> refcounting problems in @INC filters
993Fixed RT #92258: <$fh> hangs on a glob copy
6693394d
FC
994
995XXX Comments from FC: I do not think #88822 and #89896 are necessary.
bdab33d1 996
c71a852f 997=head1 Known Problems
44691e6f 998
34dc2ec0
DM
999XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
1000tests that had to be C<TODO>ed for the release would be noted here, unless
1001they were specific to a particular platform (see below).
cdc10f43 1002
34dc2ec0
DM
1003This is a list of some significant unfixed bugs, which are regressions
1004from either 5.XXX.XXX or 5.XXX.XXX.
cdc10f43 1005
34dc2ec0 1006[ List each fix as a =item entry ]
ca767864 1007
34dc2ec0 1008=over 4
cf5da40b
CB
1009
1010=item *
1011
6693394d
FC
1012The fix for RT #36347 causes test failures for C<Gtk2> and C<Tk> on some
1013systems [RT #82542].
cf5da40b 1014
c71a852f 1015=back
014fb485 1016
c71a852f 1017=head1 Obituary
014fb485 1018
34dc2ec0
DM
1019XXX If any significant core contributor has died, we've added a short obituary
1020here.
44691e6f 1021
44691e6f
AB
1022=head1 Acknowledgements
1023
34dc2ec0 1024XXX The list of people to thank goes here.
29cf780c 1025
44691e6f
AB
1026=head1 Reporting Bugs
1027
1028If you find what you think is a bug, you might check the articles
34dc2ec0 1029recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
1030bug database at http://rt.perl.org/perlbug/ . There may also be
1031information at http://www.perl.org/ , the Perl Home Page.
1032
1033If you believe you have an unreported bug, please run the L<perlbug>
1034program included with your release. Be sure to trim your bug down
1035to a tiny but sufficient test case. Your bug report, along with the
1036output of C<perl -V>, will be sent off to perlbug@perl.org to be
1037analysed by the Perl porting team.
1038
1039If the bug you are reporting has security implications, which make it
1040inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 1041it to perl5-security-report@perl.org. This points to a closed subscription
44691e6f
AB
1042unarchived mailing list, which includes all the core committers, who be able
1043to help assess the impact of issues, figure out a resolution, and help
1044co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
1045platforms on which Perl is supported. Please only use this address for
1046security issues in the Perl core, not for modules independently
44691e6f
AB
1047distributed on CPAN.
1048
1049=head1 SEE ALSO
1050
1051The F<Changes> file for an explanation of how to view exhaustive details
1052on what changed.
1053
1054The F<INSTALL> file for how to build Perl.
1055
1056The F<README> file for general stuff.
1057
1058The F<Artistic> and F<Copying> files for copyright information.
1059
1060=cut