This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove Shell from the core distribution. Get it from CPAN now.
[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 C<Devel::DProf> has been removed from the Perl core.  Prior version was 20110228.00.
457
458 =item *
459
460 C<Shell> has been removed from the Perl core.  Prior version was 0.72_01.
461
462 =back
463
464 =head1 Documentation
465
466 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
467 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
468
469 =head2 New Documentation
470
471 XXX Changes which create B<new> files in F<pod/> go here.
472
473 =head3 L<XXX>
474
475 XXX Description of the purpose of the new file here
476
477 =head2 Changes to Existing Documentation
478
479 XXX Changes which significantly change existing files in F<pod/> go here.
480 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
481 section.
482
483 =head3 L<perlfork>
484
485 =over
486
487 =item *
488
489 Added portability caveats related to using kill on forked process.
490
491 =back
492
493 =head3 L<perlfunc>
494
495 =over
496
497 =item *
498
499 C<given>, C<when> and C<default> are now listed in L<perlfunc> (5.14.1).
500
501 =item *
502
503 The examples for the C<select> function no longer use strings for file
504 handles.
505
506 =back
507
508 =head3 L<perlguts>
509
510 =over
511
512 =item *
513
514 Some of the function descriptions in L<perlguts> were confusing, as it was
515 not clear whether they referred to the function above or below the
516 description.  This has been clarified [RT #91790].
517
518 =back
519
520 =head3 L<perllol>
521
522 =over
523
524 =item *
525
526 L<perllol> has been expanded with examples using the new C<push $scalar>
527 syntax introduced in Perl 5.14.0 (5.14.1).
528
529 =back
530
531 =head3 L<perlmod>
532
533 =over
534
535 =item *
536
537 L<perlmod> now states explicitly that some types of explicit symbol table
538 manipulation are not supported.  This codifies what was effectively already
539 the case [RT #78074].
540
541 =back
542
543 =head3 L<perlop>
544
545 =over 4
546
547 =item *
548
549 The explanation of bitwise operators has been expanded to explain how they
550 work on Unicode strings (5.14.1).
551
552 =item *
553
554 The section on the triple-dot or yada-yada operator has been moved up, as
555 it used to separate two closely related sections about the comma operator
556 (5.14.1).
557
558 =item *
559
560 More examples for C<m//g> have been added (5.14.1).
561
562 =item *
563
564 The C<<< <<\FOO >>> here-doc syntax has been documented (5.14.1).
565
566 =back
567
568 =head3 L<perlpodstyle>
569
570 =over 4
571
572 =item *
573
574 The tips on which formatting codes to use have been corrected and greatly
575 expanded.
576
577 =item *
578
579 There are now a couple of example one-liners for previewing POD files after
580 they have been edited.
581
582 =back
583
584 =head3 L<perlre>
585
586 =over
587
588 =item *
589
590 The C<(*COMMIT)> directive is now listed in the right section
591 (L<Verbs without an argument|perlre/Verbs without an argument>).
592
593 =back
594
595 =head3 L<perlrun>
596
597 =over
598
599 =item *
600
601 L<perlrun> has undergone a significant clean-up.  Most notably, the
602 B<-0x...> form of the B<-0> flag has been clarified, and the final section
603 on environment variables has been corrected and expanded (5.14.1).
604
605 =back
606
607 =head3 L<perlvar>
608
609 =over
610
611 =item *
612
613 The documentation for L<$!|perlvar/$!> has been corrected and clarified.
614 It used to state that $! could be C<undef>, which is not the case.  It was
615 also unclear as to whether system calls set C's C<errno> or Perl's C<$!>
616 [RT #91614].
617
618 =back
619
620 =head3 L<POSIX>
621
622 =over
623
624 =item *
625
626 The invocation documentation for C<WIFEXITED>, C<WEXITSTATUS>,
627 C<WIFSIGNALED>, C<WTERMSIG>, C<WIFSTOPPED>, and C<WSTOPSIG> has been
628 corrected (5.14.1).
629
630 =back
631
632 =head1 Diagnostics
633
634 The following additions or changes have been made to diagnostic output,
635 including warnings and fatal error messages.  For the complete list of
636 diagnostic messages, see L<perldiag>.
637
638 XXX New or changed warnings emitted by the core's C<C> code go here. Also
639 include any changes in L<perldiag> that reconcile it to the C<C> code.
640
641 [ Within each section, list entries as a =item entry ]
642
643 =head2 New Diagnostics
644
645 XXX Newly added diagnostic messages go here
646
647 =head3 New Warnings
648
649 =over 4
650
651 =item L<Useless assignment to a temporary|perldiag/"Useless assignment to a temporary">
652
653 Assigning to a temporary returned from an XS lvalue subroutine now produces a
654 warning [RT #31946].
655
656 =back
657
658 =head2 Changes to Existing Diagnostics
659
660 XXX Changes (i.e. rewording) of diagnostic messages go here
661
662 =over 4
663
664 =item *
665
666 XXX
667
668 =back
669
670 =head1 Utility Changes
671
672 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
673 here. Most of these are built within the directories F<utils> and F<x2p>.
674
675 [ List utility changes as a =head3 entry for each utility and =item
676 entries for each change
677 Use L<XXX> with program names to get proper documentation linking. ]
678
679 =head3 L<XXX>
680
681 =over 4
682
683 =item *
684
685 XXX
686
687 =back
688
689 =head1 Configuration and Compilation
690
691 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
692 go here.  Any other changes to the Perl build process should be listed here.
693 However, any platform-specific changes should be listed in the
694 L</Platform Support> section, instead.
695
696 [ List changes as a =item entry ].
697
698 =over 4
699
700 =item *
701
702 F<regexp.h> has been modified for compatibility with GCC's B<-Werror>
703 option, as used by some projects that include perl's header files (5.14.1).
704
705 =item *
706
707 USE_LOCALE{,_COLLATE,_CTYPE,_NUMERIC} have been added the output of perl -V
708 as they have affect the behaviour of the interpreter binary (albeit only
709 in a small area).
710
711 =back
712
713 =head1 Testing
714
715 XXX Any significant changes to the testing of a freshly built perl should be
716 listed here.  Changes which create B<new> files in F<t/> go here as do any
717 large changes to the testing harness (e.g. when parallel testing was added).
718 Changes to existing files in F<t/> aren't worth summarising, although the bugs
719 that they represent may be covered elsewhere.
720
721 [ List each test improvement as a =item entry ]
722
723 =over 4
724
725 =item *
726
727 XXX
728
729 =back
730
731 =head1 Platform Support
732
733 XXX Any changes to platform support should be listed in the sections below.
734
735 [ Within the sections, list each platform as a =item entry with specific
736 changes as paragraphs below it. ]
737
738 =head2 New Platforms
739
740 XXX List any platforms that this version of perl compiles on, that previous
741 versions did not. These will either be enabled by new files in the F<hints/>
742 directories, or new subdirectories and F<README> files at the top level of the
743 source tree.
744
745 =over 4
746
747 =item GNU/Hurd
748
749 =over
750
751 =item *
752
753 No longer overrides possible extra $ccflags values given to Configure
754 on GNU/Hurd.  C.f. Bug-Debian: http://bugs.debian.org/587901
755
756 =back
757
758 =item Mac OS X
759
760 Clarified apple developer tools requirements in README.macosx
761
762 =item MSWin32
763
764 Supplied F<makefile.mk> patched to support gcc-4.x.x and README.win32
765 updated accordingly. [RT #91354]
766
767 =item Solaris
768
769 Updated the list of required packages for building perl to reflect Solaris 9
770 and 10 in README.solaris [RT #90850]
771
772 =back
773
774 =head2 Discontinued Platforms
775
776 XXX List any platforms that this version of perl no longer compiles on.
777
778 =over 4
779
780 =item XXX-some-platform
781
782 XXX
783
784 =back
785
786 =head2 Platform-Specific Notes
787
788 XXX List any changes for specific platforms. This could include configuration
789 and compilation changes or changes in portability/compatibility.  However,
790 changes within modules for platforms should generally be listed in the
791 L</Modules and Pragmata> section.
792
793 =head3 Ubuntu Linux
794
795 =over 4
796
797 =item *
798
799 The L<ODBM_File> installation process has been updated with the new library
800 paths on Ubuntu natty [RT #90106].
801
802 =item *
803
804 I<h2ph> now gets the include paths from gcc correctly.  This stopped
805 working when Ubuntu switched to a "multiarch" setup [RT #90122].
806
807 =back
808
809 =head1 Internal Changes
810
811 XXX Changes which affect the interface available to C<XS> code go here.
812 Other significant internal changes for future core maintainers should
813 be noted as well.
814
815 =over 4
816
817 =item *
818
819 When empting a hash of its elements (e.g. via undef(%h), or %h=()), HvARRAY
820 field is no longer temporarily zeroed.  Any destructors called on the freed
821 elements see the remaining elements. Thus, %h=() becomes more like C<delete
822 $h{$_} for keys %h>.
823
824 =item *
825
826 The compiled representation of formats is now stored via the mg_ptr of
827 their PERL_MAGIC_fm. Previously it was stored in the string buffer,
828 beyond SvLEN(), the regular end of the string. SvCOMPILED() and
829 SvCOMPILED_{on,off}() now exist solely for compatibility for XS code.
830 The first is always 0, the other two now no-ops.
831
832 =item *
833
834 Boyer-Moore compiled scalars are now PVMGs, and the Boyer-Moore tables are now
835 stored via the mg_ptr of their PERL_MAGIC_bm. Previously they were PVGVs, with
836 the tables stored in the string buffer, beyond SvLEN(). This eliminates the
837 last place where the core stores data beyond SvLEN().
838
839 =item *
840
841 C<pos> in lvalue context now returns a PVMG instead of a PVLV, storing the
842 target SV in C<mg_obj>, instead of C<LvTARG()>.
843
844 =item *
845
846 Simplified logic in C<Perl_sv_magic()> introduces a small change of
847 behaviour for error cases involving unknown magic types. Previously, if
848 C<Perl_sv_magic()> was passed a magic type unknown to it, it would
849
850 =over
851
852 =item 1.
853
854 Croak "Modification of a read-only value attempted" if read only
855
856 =item 2.
857
858 Return without error if the SV happened to already have this magic
859
860 =item 3.
861
862 otherwise croak "Don't know how to handle magic of type \\%o"
863
864 =back
865
866 Now it will always croak "Don't know how to handle magic of type \\%o", even
867 on read only values, or SVs which already have the unknown magic type.
868
869 =back
870
871 =head1 Selected Bug Fixes
872
873 XXX Important bug fixes in the core language are summarised here.
874 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
875 L</Modules and Pragmata>.
876
877 [ List each fix as a =item entry ]
878
879 =head2 Regular expressions and character classes
880
881 =over 4
882
883 =item *
884
885 The new (in 5.14.0) regular expression modifier C</a> when repeated like
886 C</aa> forbids the characters outside the ASCII range that match
887 characters inside that range from matching under C</i>.  This did not
888 work under some circumstances, all involving alternation, such as:
889
890  "\N{KELVIN SIGN}" =~ /k|foo/iaa;
891
892 succeeded inappropriately.  This is now fixed.
893
894 =item *
895
896 5.14.0 introduced some memory leaks in regular expression character
897 classes such as C<[\w\s]>, which have now been fixed
898
899 =item *
900
901 An edge case in regular expression matching could potentially loop.
902 This happened only under C</i> in bracketed character classes that have
903 characters with multi-character folds, and the target string to match
904 against includes the first portion of the fold, followed by another
905 character that has a multi-character fold that begins with the remaining
906 portion of the fold, plus some more.
907
908  "s\N{U+DF}" =~ /[\x{DF}foo]/i
909
910 is one such case.  C<\xDF> folds to C<"ss">
911
912 =item *
913
914 A few characters in regular expression pattern matches did not
915 match correctly in some circumstances, all involving C</i>.  The
916 affected characters are:
917 COMBINING GREEK YPOGEGRAMMENI,
918 GREEK CAPITAL LETTER IOTA,
919 GREEK CAPITAL LETTER UPSILON,
920 GREEK PROSGEGRAMMENI,
921 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA,
922 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS,
923 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA,
924 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS,
925 LATIN SMALL LETTER LONG S,
926 LATIN SMALL LIGATURE LONG S T,
927 and
928 LATIN SMALL LIGATURE ST.
929
930 =item *
931
932 Fixed memory leak regression in regular expression compilation
933 under threading
934
935 =back
936
937 =head2 Formats
938
939 =over
940
941 =item *
942
943 A number of edge cases have been fixed with formats and C<formline>;
944 in particular, where the format itself is potentially variable (such as
945 with ties and overloading), and where the format and data differ in their
946 encoding. In both these cases, it used to possible for the output to be
947 corrupted [RT #91032].
948
949 =item *
950
951 C<formline> no longer converts its argument into a string in-place.  So
952 passing a reference to C<formline> no longer destroys the reference
953 [RT #79532].
954
955 =back
956
957 =head2 Copy-on-write scalars
958
959 Copy-on-write scalars were introduced in 5.6.0, but most Perl code
960 did not encounter them (they were used mostly internally).  Perl
961 5.10.0 extended them, such that assigning C<__PACKAGE__> or a
962 hash key to a scalar would make it copy-on-write.  Several parts
963 of Perl were not updated to account for them, but have now been fixed.
964
965 =over
966
967 =item *
968
969 C<utf8::decode> had a nasty bug that would modify copy-on-write scalars'
970 string buffers in place (i.e., skipping the copy).  This could result in
971 hashes having two elements with the same key [RT #91834].
972
973 =item *
974
975 Lvalue subroutines were not allowing COW scalars to be returned.  This was
976 fixed for lvalue scalar context in Perl 5.12.3 and 5.14.0, but list context
977 was not fixed until this release.
978
979 =item *
980
981 Elements of restricted hashes (see the L<fields> pragma) containing
982 copy-on-write values couldn't be deleted, nor could such hashes be cleared
983 (C<%hash = ()>).
984
985 =item *
986
987 Localising a tied variable used to make it read-only if it contained a
988 copy-on-write string.
989
990 =item *
991
992 L<Storable>, L<Devel::Peek> and L<PerlIO::scalar> had similar problems.
993 See L</Updated Modules and Pragmata>, above.
994
995 =back
996
997 =head2 lvalue subroutines
998
999 There have been various fixes to lvalue subroutines.
1000
1001 =over
1002
1003 =item *
1004
1005 Explicit return now returns the actual argument passed to return, instead
1006 of copying it [RT #72724] [RT #72706].
1007
1008 B<Note:> There are still some discrepancies between explicit and implicit
1009 return, which will hopefully be resolved soon.  So the exact behaviour is
1010 not set in stone yet.
1011
1012 =item *
1013
1014 Lvalue subroutines used to enforce lvalue syntax (i.e., whatever can go on
1015 the left-hand side of C<=>) for the last statement and the arguments to
1016 return.  Since lvalue subroutines are not always called in lvalue context,
1017 this restriction has been lifted.
1018
1019 =item *
1020
1021 Lvalue subroutines are less restrictive as to what values can be returned.
1022 It used to croak on values returned by C<shift> and C<delete> and from
1023 other subroutines, but no longer does so [RT #71172].
1024
1025 =item *
1026
1027 Empty lvalue subroutines (C<sub :lvalue {}>) used to return C<@_> in list
1028 context.  In fact, all subroutines used to, but regular subs were fixed in
1029 Perl 5.8.2.  Now lvalue subroutines have been likewise fixed.
1030
1031 =item *
1032
1033 Lvalue subroutines used to copy their return values in rvalue context.  Not
1034 only was this a waste of CPU cycles, but it also caused bugs.  A C<($)>
1035 prototype would cause an lvalue sub to copy its return value [RT #51408],
1036 and C<while(lvalue_sub() =~ m/.../g) { ... }> would loop endlessly
1037 [RT #78680].
1038
1039 =item *
1040
1041 Autovivification now works on values returned from lvalue subroutines
1042 [RT #7946].
1043
1044 =item *
1045
1046 When called in pass-by-reference context (e.g., subroutine arguments or a list
1047 passed to C<for>), an lvalue subroutine returning arrays or hashes used to bind
1048 the arrays (or hashes) to scalar variables--something that is not supposed to
1049 happen.  This could result in "Bizarre copy of ARRAY" errors or C<print>
1050 ignoring its arguments.  It also made nonsensical code like C<@{\$_}> "work".
1051 This was fixed in 5.14.0 if an array were the first thing returned from the
1052 subroutine (but not for C<$scalar, @array> or hashes being returned).  Now a
1053 more general fix has been applied [RT #23790].
1054
1055 =item *
1056
1057 Assignment to C<keys> returned from an lvalue sub used not to work, but now
1058 it does.
1059
1060 =back
1061
1062 =head2 Fixes related to hashes
1063
1064 =over
1065
1066 =item *
1067
1068 A bug has been fixed that would cause a "Use of freed value in iteration"
1069 error if the next two hash elements that would be iterated over are
1070 deleted [RT #85026].
1071
1072 =item *
1073
1074 Freeing deeply nested hashes no longer crashes [RT #44225].
1075
1076 =item *
1077
1078 Deleting the current hash iterator (the hash element that would be returend
1079 by the next call to C<each>) in void context used not to free it.  The hash
1080 would continue to reference it until the next iteration.  This has been
1081 fixed [RT #85026].
1082
1083 =back
1084
1085 =head2 Other notable fixes
1086
1087 =over
1088
1089 =item *
1090
1091 Passing the same constant subroutine to both C<index> and C<formline> no
1092 longer causes one or the other to fail [RT #89218].
1093
1094 =item *
1095
1096 List assignment to lexical variables declared with attributes in the same
1097 statement (C<my ($x,@y) : blimp = (72,94)>) stopped working in Perl 5.8.0.
1098 It has now been fixed.
1099
1100 =item *
1101
1102 Perl 5.10.0 introduced some faulty logic that made "U*" in the middle of
1103 a pack template equivalent to "U0" if the input string was empty.  This has
1104 been fixed [RT #90160].
1105
1106 =item *
1107
1108 Destructors on objects were not called during global destruction on objects
1109 that were not referenced by any scalars.  This could happen if an array
1110 element were blessed (e.g., C<bless \$a[0]>) or if a closure referenced a
1111 blessed variable (C<bless \my @a; sub foo { @a }>).
1112
1113 Now there is an extra pass during global destruction to fire destructors on
1114 any objects that might be left after the usual passes that check for
1115 objects referenced by scalars [RT #36347].
1116
1117 This bug fix was added in Perl 5.13.9, but caused problems with some CPAN
1118 modules that were relying on the bug.  Since it was so close to Perl
1119 5.14.0, the fix was reverted in 5.13.10, to allow more time for the modules
1120 to adapt.  Hopefully they will be fixed soon (see L</Known Problems>,
1121 below).
1122
1123 =item *
1124
1125 C<given> was not calling set-magic on the implicit lexical C<$_> that it
1126 uses.  This meant, for example, that C<pos> would be remembered from one
1127 execution of the same C<given> block to the next, even if the input were a
1128 different variable [RT #84526].
1129
1130 =item *
1131
1132 The "R" command for restarting a debugger session has been fixed to work on
1133 Windows, or any other system lacking a C<POSIX::_SC_OPEN_MAX> constant
1134 [RT #87740].
1135
1136 =item *
1137
1138 Fixed a case where it was possible that a freed buffer may have been read
1139 from when parsing a here document [RT #90128].
1140
1141 =item *
1142
1143 The C<study> function could become confused if fed a string longer than
1144 2**31 characters.  Now it simply skips such strings.
1145
1146 =item *
1147
1148 C<each(I<ARRAY>)> is now wrapped in C<defined(...)>, like C<each(I<HASH>)>,
1149 inside a C<when> condition [RT #90888].
1150
1151 =item *
1152
1153 In @INC filters (subroutines returned by subroutines in @INC), $_ used to
1154 misbehave: If returned from a subroutine, it would not be copied, but the
1155 variable itself would be returned; and freeing $_ (e.g., with C<undef *_>)
1156 would cause perl to crash.  This has been fixed [RT #91880].
1157
1158 =item *
1159
1160 An ASCII single quote (') in a symbol name is meant to be equivalent to a
1161 double colon (::) except at the end of the name.  It was not equivalent if
1162 followed by a null character, but now it is [RT #88138].
1163
1164 =item *
1165
1166 The abbreviations for four C1 control characters
1167 C<MW>
1168 C<PM>,
1169 C<RI>,
1170 and
1171 C<ST>
1172 were previously unrecognized by C<\N{}>,
1173 vianame(), and string_vianame().
1174
1175 =item *
1176
1177 Some cases of threads crashing due to memory allocation during cloning have
1178 been fixed [RT #90006].
1179
1180 =item *
1181
1182 Attempting to C<goto> out of a tied handle method used to cause memory
1183 corruption or crashes.  Now it produces an error message instead
1184 [RT #8611].
1185
1186 =back
1187
1188 =head2 Additional fixes by ticket number
1189
1190 XXX Prefix these with "\n=item *\n" once the list is final
1191
1192 Fixed RT #88822: Test failure t/re_fold_grind.t with bleadperl
1193 Fixed RT #89896: Locale::Maketext test failure
1194
1195 XXX Comments from FC: I do not think these two are necessary.
1196
1197 =head1 Known Problems
1198
1199 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
1200 tests that had to be C<TODO>ed for the release would be noted here, unless
1201 they were specific to a particular platform (see below).
1202
1203 This is a list of some significant unfixed bugs, which are regressions
1204 from either 5.XXX.XXX or 5.XXX.XXX.
1205
1206 [ List each fix as a =item entry ]
1207
1208 =over 4
1209
1210 =item *
1211
1212 The fix for RT #36347 causes test failures for C<Gtk2> and C<Tk> on some
1213 systems [RT #82542].
1214
1215 =back
1216
1217 =head1 Obituary
1218
1219 XXX If any significant core contributor has died, we've added a short obituary
1220 here.
1221
1222 =head1 Acknowledgements
1223
1224 XXX The list of people to thank goes here.
1225
1226 =head1 Reporting Bugs
1227
1228 If you find what you think is a bug, you might check the articles
1229 recently posted to the comp.lang.perl.misc newsgroup and the perl
1230 bug database at http://rt.perl.org/perlbug/ .  There may also be
1231 information at http://www.perl.org/ , the Perl Home Page.
1232
1233 If you believe you have an unreported bug, please run the L<perlbug>
1234 program included with your release.  Be sure to trim your bug down
1235 to a tiny but sufficient test case.  Your bug report, along with the
1236 output of C<perl -V>, will be sent off to perlbug@perl.org to be
1237 analysed by the Perl porting team.
1238
1239 If the bug you are reporting has security implications, which make it
1240 inappropriate to send to a publicly archived mailing list, then please send
1241 it to perl5-security-report@perl.org. This points to a closed subscription
1242 unarchived mailing list, which includes all the core committers, who be able
1243 to help assess the impact of issues, figure out a resolution, and help
1244 co-ordinate the release of patches to mitigate or fix the problem across all
1245 platforms on which Perl is supported. Please only use this address for
1246 security issues in the Perl core, not for modules independently
1247 distributed on CPAN.
1248
1249 =head1 SEE ALSO
1250
1251 The F<Changes> file for an explanation of how to view exhaustive details
1252 on what changed.
1253
1254 The F<INSTALL> file for how to build Perl.
1255
1256 The F<README> file for general stuff.
1257
1258 The F<Artistic> and F<Copying> files for copyright information.
1259
1260 =cut