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