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