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