begin filling the 5.16.0 delta from 5.15.1
[perl.git] / Porting / perl5160delta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perl5160delta - what is new for perl v5.16.0
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.14.0 release and
10 the 5.16.0 release.
11
12 If you are upgrading from an earlier release such as 5.12.0, first read
13 L<perl5140delta>, which describes differences between 5.12.0 and
14 5.14.0.
15
16 =head1 Notice
17
18 XXX Any important notices here
19
20 =head1 Core Enhancements
21
22 =head2 C<CORE::> works on all keywords
23
24 The C<CORE::> prefix can now be used on keywords enabled by
25 L<feature.pm|feature>, even outside the scope of C<use feature>.  Relevant
26 documentation files L<CORE>, L<feature>, L<perlfunc>, L<perlsub>, and
27 L<perlsyn> have been updated.
28
29 =head2 C<continue> no longer requires the "switch" feature
30
31 The C<continue> keyword has two meanings.  It can introduce a C<continue>
32 block after a loop, or it can exit the current C<when> block.  Up till now,
33 the latter meaning was only valid with the "switch" feature enabled, and
34 was a syntax error otherwise.  Since the main purpose of feature.pm is to
35 avoid conflicts with user-defined subroutines, there is no reason for
36 C<continue> to depend on it.
37
38 =head2 C<$$> can be assigned to
39
40 C<$$> was made read-only in Perl 5.8.0.  But only sometimes: C<local $$>
41 would make it writable again.  Some CPAN modules were using C<local $$> or
42 XS code to bypass the read-only check, so there is no reason to keep C<$$>
43 read-only.  (This change also allowed a bug to be fixed while maintaining
44 backward compatibility.)
45
46 =head2 Features inside the debugger
47
48 The current Perl's feature bundle is now enabled for commands entered in
49 the interactive debugger.
50
51 =head2 C<\N{...}> can now have Unicode loose name matching
52
53 This is described in the C<charnames> item in
54 L</Updated Modules and Pragmata> below.
55
56 =head2 Breakpoints with file names
57
58 The debugger's "b" command for setting breakpoints now allows a line number
59 to be prefixed with a file name.  See
60 L<perldebug/"b [file]:[line] [condition]">.
61
62 =head2 C<splice()> doesn't warn when truncating
63
64 You can now limit the size of an array using C<splice(@a,MAX_LEN)> without
65 worrying about warnings.
66
67 =head2 The C<\$> prototype accepts any scalar lvalue
68
69 The C<\$> and C<\[$]> subroutine prototypes now accept any scalar lvalue
70 argument.  Previously they only accepted scalars beginning with C<$> and
71 hash and array elements.  This change makes them consistent with the way
72 the built-in C<read> and C<recv> functions (among others) parse their
73 arguments. This means that one can override the built-in functions with
74 custom subroutines that parse their arguments the same way.
75
76 =head2 You can now C<study> more than one string
77
78 The restriction that you can only have one C<study> active at a time has been
79 removed. You can now usefully C<study> as many strings as you want (until you
80 exhaust memory).
81
82 =head2 The Unicode C<Script_Extensions> property is now supported.
83
84 New in Unicode 6.0, this is an improved C<Script> property.  Details
85 are in L<perlunicode/Scripts>.
86
87 =head2 DTrace probes for interpreter phase change
88
89 The C<phase-change> probes will fire when the interpreter's phase
90 changes, which tracks the C<${^GLOBAL_PHASE}> variable. C<arg0> is
91 the new phase name; C<arg1> is the old one. This is useful mostly
92 for limiting your instrumentation to one or more of: compile time,
93 run time, destruct time.
94
95 =head2 New Pad API
96
97 Many new functions have been added to the API for manipulating lexical
98 pads.  See L<perlapi/Pad Data Structures> for more information.
99
100 =head1 Security
101
102 XXX Any security-related notices go here.  In particular, any security
103 vulnerabilities closed should be noted here rather than in the
104 L</Selected Bug Fixes> section.
105
106 [ List each security issue as a =head2 entry ]
107
108 =head1 Incompatible Changes
109
110 =head2 Tying scalars that hold typeglobs
111
112 Attempting to tie a scalar after a typeglob was assigned to it would
113 instead tie the handle in the typeglob's IO slot.  This meant that it was
114 impossible to tie the scalar itself.  Similar problems affected C<tied> and
115 C<untie>: C<tied $scalar> would return false on a tied scalar if the last
116 thing returned was a typeglob, and C<untie $scalar> on such a tied scalar
117 would do nothing.
118
119 We fixed this problem before Perl 5.14.0, but it caused problems with some
120 CPAN modules, so we put in a deprecation cycle instead.
121
122 Now the deprecation has been removed and this bug has been fixed.  So
123 C<tie $scalar> will always tie the scalar, not the handle it holds.  To tie
124 the handle, use C<tie *$scalar> (with an explicit asterisk).  The same
125 applies to C<tied *$scalar> and C<untie *$scalar>.
126
127 =head2 IPC::Open3 no longer provides C<xfork()>, C<xclose_on_exec()>
128 and C<xpipe_anon()>
129
130 All three functions were private, undocumented and unexported.  They do
131 not appear to be used by any code on CPAN.  Two have been inlined and one
132 deleted entirely.
133
134 =head2 C<$$> no longer caches PID
135
136 Previously, if one embeds Perl or uses XS and calls fork(3) from C, Perls
137 notion of C<$$> could go out of sync with what getpid() returns. By always
138 fetching the value of C<$$> via getpid(), this potential bug is eliminated.
139 Code that depends on the caching behavior will break.  As described in
140 L</Core Enhancements>, C<$$> is now writable, but it will be reset during a
141 fork.
142
143 =head1 Deprecations
144
145 XXX Any deprecated features, syntax, modules etc. should be listed here.
146 In particular, deprecated modules should be listed here even if they are
147 listed as an updated module in the L</Modules and Pragmata> section.
148
149 [ List each deprecation as a =head2 entry ]
150
151 =head1 Future Deprecations
152
153 This section serves as a notice of feature that are I<likely> to be
154 L<deprecated|perlpolicy/deprecated> in the next release of perl (5.18.0).  If
155 your code depends on these features, you should contact the Perl 5 Porters via
156 the L<mailing list|http://lists.perl.org/list/perl5-porters.html> or L<perlbug>
157 to explain your use case and inform the deprecation process.
158
159 =head1 Performance Enhancements
160
161 =over 4
162
163 =item *
164
165 The short-circuiting operators C<&&>, C<||>, and C<//>, when chained
166 (such as C<$a || $b || $c>), are now considerably faster to short-circuit,
167 due to reduced optree traversal.
168
169 =item *
170
171 The implementation of C<s///r> makes one fewer copy of the scalar's value.
172
173 =item *
174
175 If a studied scalar is C<split> with a regex, the engine will now take
176 advantage of the C<study> data.
177
178 =item *
179
180 C<study> now uses considerably less memory for shorter strings. Strings shorter
181 than 65535 characters use roughly half the memory than previously, strings
182 shorter than 255 characters use roughly one quarter of the memory.
183
184 =item *
185
186 Recursive calls to lvalue subroutines in lvalue scalar context use less
187 memory.
188
189 =back
190
191 =head1 Modules and Pragmata
192
193 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
194 go here.  If Module::CoreList is updated, generate an initial draft of the
195 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
196 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
197 below.  A paragraph summary for important changes should then be added by hand.
198 In an ideal world, dual-life modules would have a F<Changes> file that could be
199 cribbed.
200
201 [ Within each section, list entries as a =item entry ]
202
203 =head2 New Modules and Pragmata
204
205 =over 4
206
207 =item *
208
209 XXX
210
211 =back
212
213 =head2 Updated Modules and Pragmata
214
215 =over 4
216
217 =item *
218
219 L<XXX> has been upgraded from version 0.69 to version 0.70.
220
221 =back
222
223 =head2 Removed Modules and Pragmata
224
225 As promised in Perl 5.14.0's release notes, the following modules have
226 been removed from the core distribution, and if needed should be installed
227 from CPAN instead.
228
229 =over
230
231 =item *
232
233 C<Devel::DProf> has been removed from the Perl core.  Prior version was 20110228.00.
234
235 =item *
236
237 C<Shell> has been removed from the Perl core.  Prior version was 0.72_01.
238
239 =back
240
241 =head1 Documentation
242
243 =head2 New Documentation
244
245 =head3 L<perldtrace>
246
247 L<perldtrace> describes Perl's DTrace support, listing the provided probes
248 and gives examples of their use.
249
250 =head2 Changes to Existing Documentation
251
252 =head3 L<perlguts>
253
254 =over
255
256 =item *
257
258 Some of the function descriptions in L<perlguts> were confusing, as it was
259 not clear whether they referred to the function above or below the
260 description.  This has been clarified [perl #91790].
261
262 =back
263
264 =head3 L<perllol>
265
266 =over
267
268 =item *
269
270 L<perllol> has been expanded with examples using the new C<push $scalar>
271 syntax introduced in Perl 5.14.0 (5.14.1).
272
273 =back
274
275 =head3 L<perlmod>
276
277 =over
278
279 =item *
280
281 L<perlmod> now states explicitly that some types of explicit symbol table
282 manipulation are not supported.  This codifies what was effectively already
283 the case [perl #78074].
284
285 =back
286
287 =head3 L<perlop>
288
289 =over 4
290
291 =item *
292
293 The explanation of bitwise operators has been expanded to explain how they
294 work on Unicode strings (5.14.1).
295
296 =item *
297
298 The section on the triple-dot or yada-yada operator has been moved up, as
299 it used to separate two closely related sections about the comma operator
300 (5.14.1).
301
302 =item *
303
304 More examples for C<m//g> have been added (5.14.1).
305
306 =item *
307
308 The C<<< <<\FOO >>> here-doc syntax has been documented (5.14.1).
309
310 =back
311
312 =head3 L<perlpodstyle>
313
314 =over 4
315
316 =item *
317
318 The tips on which formatting codes to use have been corrected and greatly
319 expanded.
320
321 =item *
322
323 There are now a couple of example one-liners for previewing POD files after
324 they have been edited.
325
326 =back
327
328 =head3 L<perlsub>
329
330 =over
331
332 =item *
333
334 The L<perlsub/"Lvalue subroutines"> section has been amended to reflect
335 changes and bug fixes introduced in Perl 5.15.0.
336
337 =back
338
339 =head3 L<perlre>
340
341 =over
342
343 =item *
344
345 The C<(*COMMIT)> directive is now listed in the right section
346 (L<Verbs without an argument|perlre/Verbs without an argument>).
347
348 =back
349
350 =head3 L<perlrun>
351
352 =over
353
354 =item *
355
356 L<perlrun> has undergone a significant clean-up.  Most notably, the
357 B<-0x...> form of the B<-0> flag has been clarified, and the final section
358 on environment variables has been corrected and expanded (5.14.1).
359
360 =back
361
362 =head3 L<perltie>
363
364 =over
365
366 =item *
367
368 Documented the required syntax for tying handles.
369
370 =back
371
372 =head3 L<perlvar>
373
374 =over
375
376 =item *
377
378 The documentation for L<$!|perlvar/$!> has been corrected and clarified.
379 It used to state that $! could be C<undef>, which is not the case.  It was
380 also unclear as to whether system calls set C's C<errno> or Perl's C<$!>
381 [perl #91614].
382
383 =item *
384
385 Documentation for L<$$|perlvar/$$> has been amended with additional
386 cautions regarding changing the process ID.
387
388 =back
389
390 =over 4
391
392 =item *
393
394 L<perlxs> was extended with documentation on inline typemaps.
395
396 =item *
397
398 L<perlref> has a new L<Circular References|perlref/Circular References>
399 section explaining how circularities may not be freed and how to solve that
400 with weak references.
401
402 =item *
403
404 The documentation for smart match in L<perlsyn> has been corrected for the
405 case of C<undef> on the left-hand side.  The list of different smart match
406 behaviours had an item in the wrong place.
407
408 =item *
409
410 Parts of L<perlapi> were clarified, and Perl equivalents of some C
411 functions have been added as an additional mode of exposition.
412
413 =item *
414
415 A few parts of L<perlre> and L<perlrecharclass> were clarified.
416
417 =back
418
419 =head1 Diagnostics
420
421 The following additions or changes have been made to diagnostic output,
422 including warnings and fatal error messages.  For the complete list of
423 diagnostic messages, see L<perldiag>.
424
425 XXX New or changed warnings emitted by the core's C<C> code go here. Also
426 include any changes in L<perldiag> that reconcile it to the C<C> code.
427
428 [ Within each section, list entries as a =item entry that links to perldiag,
429   e.g.
430
431   =item *
432
433   L<Invalid version object|perldiag/"Invalid version object">
434 ]
435
436 =head2 New Diagnostics
437
438 XXX Newly added diagnostic messages go here
439
440 =head3 New Errors
441
442 =over 4
443
444 =item *
445
446 XXX L<message|perldiag/"message">
447
448 =back
449
450 =head3 New Warnings
451
452 =over 4
453
454 =item L<Useless assignment to a temporary|perldiag/"Useless assignment to a temporary">
455
456 Assigning to a temporary returned from an XS lvalue subroutine now produces a
457 warning [perl #31946].
458
459 =back
460
461 =head2 Changes to Existing Diagnostics
462
463 =over 4
464
465 =item *
466
467 The L<Invalid version format|perldiag/"Invalid version format (%s)">
468 error message now says "negative version number" within the parentheses,
469 rather than "non-numeric data", for negative numbers.
470
471 =item *
472
473 The two warnings
474 L<Possible attempt to put comments in qw() list|perldiag/"Possible attempt to put comments in qw() list">
475 and
476 L<Possible attempt to separate words with commas|perldiag/"Possible attempt to separate words with commas">
477 are no longer mutually exclusive: the same C<qw> construct may produce
478 both.
479
480 =item *
481
482 Warnings that mention the names of lexical (C<my>) variables with Unicode
483 characters in them now respect the presence or absence of the C<:utf8>
484 layer on the output handle, instead of outputting UTF8 regardless.  Also,
485 the correct names are included in the strings passed to C<$SIG{__WARN__}>
486 handlers, rather than the raw UTF8 bytes.
487
488 =back
489
490 =over 4
491
492 =item *
493
494 XXX Describe change here
495
496 =back
497
498 =head1 Utility Changes
499
500 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
501 here. Most of these are built within the directories F<utils> and F<x2p>.
502
503 [ List utility changes as a =head3 entry for each utility and =item
504 entries for each change
505 Use L<XXX> with program names to get proper documentation linking. ]
506
507 =head3 L<XXX>
508
509 =over 4
510
511 =item *
512
513 XXX
514
515 =back
516
517 =head1 Configuration and Compilation
518
519 =over 4
520
521 =item *
522
523 F<regexp.h> has been modified for compatibility with GCC's B<-Werror>
524 option, as used by some projects that include perl's header files (5.14.1).
525
526 =item *
527
528 C<USE_LOCALE{,_COLLATE,_CTYPE,_NUMERIC}> have been added the output of perl -V
529 as they have affect the behaviour of the interpreter binary (albeit only
530 in a small area).
531
532 =item *
533
534 The code and tests for L<IPC::Open2> have been moved from F<ext/IPC-Open2>
535 into F<ext/IPC-Open3>, as C<IPC::Open2::open2()> is implemented as a thin
536 wrapper around C<IPC::Open3::_open3()>, and hence is very tightly coupled to
537 it.
538
539 =item *
540
541 The magic types and magic vtables are now generated from data in a new script
542 F<regen/mg_vtable.pl>, instead of being maintained by hand. As different EBCDIC
543 variants can't agree on the code point for '~', the character to code point
544 conversion is done at build time by F<generate_uudmap> to a new generated header
545 F<mg_data.h>. C<PL_vtbl_bm> and C<PL_vtbl_fm> are now defined by the
546 pre-processor as C<PL_vtbl_regexp>, instead of being distinct C variables.
547 C<PL_vtbl_sig> has been removed.
548
549 =item *
550
551 Building with C<-DPERL_GLOBAL_STRUCT> works again. This configuration is not
552 generally used.
553
554 =item *
555
556 Perl configured with I<MAD> now correctly frees C<MADPROP> structures when
557 OPs are freed. C<MADPROP>s are now allocated with C<PerlMemShared_malloc()>
558
559 =back
560
561 =head1 Testing
562
563 XXX Any significant changes to the testing of a freshly built perl should be
564 listed here.  Changes which create B<new> files in F<t/> go here as do any
565 large changes to the testing harness (e.g. when parallel testing was added).
566 Changes to existing files in F<t/> aren't worth summarising, although the bugs
567 that they represent may be covered elsewhere.
568
569 [ List each test improvement as a =item entry ]
570
571 =over 4
572
573 =item *
574
575 XXX
576
577 =back
578
579 =head1 Platform Support
580
581 XXX Any changes to platform support should be listed in the sections below.
582
583 [ Within the sections, list each platform as a =item entry with specific
584 changes as paragraphs below it. ]
585
586 =head2 New Platforms
587
588 XXX List any platforms that this version of perl compiles on, that previous
589 versions did not. These will either be enabled by new files in the F<hints/>
590 directories, or new subdirectories and F<README> files at the top level of the
591 source tree.
592
593 =over 4
594
595 =item XXX-some-platform
596
597 XXX
598
599 =back
600
601 =head2 Discontinued Platforms
602
603 XXX List any platforms that this version of perl no longer compiles on.
604
605 =over 4
606
607 =item XXX-some-platform
608
609 XXX
610
611 =back
612
613 =head2 Platform-Specific Notes
614
615 XXX List any changes for specific platforms. This could include configuration
616 and compilation changes or changes in portability/compatibility.  However,
617 changes within modules for platforms should generally be listed in the
618 L</Modules and Pragmata> section.
619
620 =over 4
621
622 =item XXX-some-platform
623
624 XXX
625
626 =back
627
628 =head1 Internal Changes
629
630 XXX Changes which affect the interface available to C<XS> code go here.
631 Other significant internal changes for future core maintainers should
632 be noted as well.
633
634 [ List each change as a =item entry ]
635
636 =over 4
637
638 =item *
639
640 XXX
641
642 =back
643
644 =head1 Selected Bug Fixes
645
646 =head2 Regular expressions and character classes
647
648 =over 4
649
650 =item *
651
652 The new (in 5.14.0) regular expression modifier C</a> when repeated like
653 C</aa> forbids the characters outside the ASCII range that match
654 characters inside that range from matching under C</i>.  This did not
655 work under some circumstances, all involving alternation, such as:
656
657  "\N{KELVIN SIGN}" =~ /k|foo/iaa;
658
659 succeeded inappropriately.  This is now fixed.
660
661 =item *
662
663 5.14.0 introduced some memory leaks in regular expression character
664 classes such as C<[\w\s]>, which have now been fixed (5.14.1)
665
666 =item *
667
668 An edge case in regular expression matching could potentially loop.
669 This happened only under C</i> in bracketed character classes that have
670 characters with multi-character folds, and the target string to match
671 against includes the first portion of the fold, followed by another
672 character that has a multi-character fold that begins with the remaining
673 portion of the fold, plus some more.
674
675  "s\N{U+DF}" =~ /[\x{DF}foo]/i
676
677 is one such case.  C<\xDF> folds to C<"ss">. (5.14.1)
678
679 =item *
680
681 A few characters in regular expression pattern matches did not
682 match correctly in some circumstances, all involving C</i>.  The
683 affected characters are:
684 COMBINING GREEK YPOGEGRAMMENI,
685 GREEK CAPITAL LETTER IOTA,
686 GREEK CAPITAL LETTER UPSILON,
687 GREEK PROSGEGRAMMENI,
688 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA,
689 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS,
690 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA,
691 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS,
692 LATIN SMALL LETTER LONG S,
693 LATIN SMALL LIGATURE LONG S T,
694 and
695 LATIN SMALL LIGATURE ST.
696
697 =item *
698
699 Fixed memory leak regression in regular expression compilation
700 under threading
701
702 =back
703
704 =head2 Formats
705
706 =over
707
708 =item *
709
710 A number of edge cases have been fixed with formats and C<formline>;
711 in particular, where the format itself is potentially variable (such as
712 with ties and overloading), and where the format and data differ in their
713 encoding. In both these cases, it used to possible for the output to be
714 corrupted [perl #91032].
715
716 =item *
717
718 C<formline> no longer converts its argument into a string in-place.  So
719 passing a reference to C<formline> no longer destroys the reference
720 [perl #79532].
721
722 =back
723
724 =head2 Copy-on-write scalars
725
726 Copy-on-write scalars were introduced in 5.8.0, but most Perl code
727 did not encounter them (they were used mostly internally).  Perl
728 5.10.0 extended them, such that assigning C<__PACKAGE__> or a
729 hash key to a scalar would make it copy-on-write.  Several parts
730 of Perl were not updated to account for them, but have now been fixed.
731
732 =over
733
734 =item *
735
736 C<utf8::decode> had a nasty bug that would modify copy-on-write scalars'
737 string buffers in place (i.e., skipping the copy).  This could result in
738 hashes having two elements with the same key [perl #91834].
739
740 =item *
741
742 Lvalue subroutines were not allowing COW scalars to be returned.  This was
743 fixed for lvalue scalar context in Perl 5.12.3 and 5.14.0, but list context
744 was not fixed until this release.
745
746 =item *
747
748 Elements of restricted hashes (see the L<fields> pragma) containing
749 copy-on-write values couldn't be deleted, nor could such hashes be cleared
750 (C<%hash = ()>).
751
752 =item *
753
754 Localising a tied variable used to make it read-only if it contained a
755 copy-on-write string.
756
757 =item *
758
759 L<Storable>, L<Devel::Peek> and L<PerlIO::scalar> had similar problems.
760 See L</Updated Modules and Pragmata>, above.
761
762 =back
763
764 =head2 lvalue subroutines
765
766 There have been various fixes to lvalue subroutines.
767
768 =over
769
770 =item *
771
772 Explicit return now returns the actual argument passed to return, instead
773 of copying it [perl #72724] [perl #72706].
774
775 B<Note:> There are still some discrepancies between explicit and implicit
776 return, which will hopefully be resolved soon.  So the exact behaviour is
777 not set in stone yet.
778
779 =item *
780
781 Lvalue subroutines used to enforce lvalue syntax (i.e., whatever can go on
782 the left-hand side of C<=>) for the last statement and the arguments to
783 return.  Since lvalue subroutines are not always called in lvalue context,
784 this restriction has been lifted.
785
786 =item *
787
788 Lvalue subroutines are less restrictive as to what values can be returned.
789 It used to croak on values returned by C<shift> and C<delete> and from
790 other subroutines, but no longer does so [perl #71172].
791
792 =item *
793
794 Empty lvalue subroutines (C<sub :lvalue {}>) used to return C<@_> in list
795 context.  In fact, all subroutines used to, but regular subs were fixed in
796 Perl 5.8.2.  Now lvalue subroutines have been likewise fixed.
797
798 =item *
799
800 Lvalue subroutines used to copy their return values in rvalue context.  Not
801 only was this a waste of CPU cycles, but it also caused bugs.  A C<($)>
802 prototype would cause an lvalue sub to copy its return value [perl #51408],
803 and C<while(lvalue_sub() =~ m/.../g) { ... }> would loop endlessly
804 [perl #78680].
805
806 =item *
807
808 Autovivification now works on values returned from lvalue subroutines
809 [perl #7946].
810
811 =item *
812
813 When called in pass-by-reference context (e.g., subroutine arguments or a list
814 passed to C<for>), an lvalue subroutine returning arrays or hashes used to bind
815 the arrays (or hashes) to scalar variables--something that is not supposed to
816 happen.  This could result in "Bizarre copy of ARRAY" errors or C<print>
817 ignoring its arguments.  It also made nonsensical code like C<@{\$_}> "work".
818 This was fixed in 5.14.0 if an array were the first thing returned from the
819 subroutine (but not for C<$scalar, @array> or hashes being returned).  Now a
820 more general fix has been applied [perl #23790].
821
822 =item *
823
824 When called in pass-by-reference context, lvalue subroutines used to copy
825 any read-only value that was returned.  E.g., C< sub :lvalue { $] } >
826 would not return C<$]>, but a copy of it.
827
828 =item *
829
830 Assignment to C<keys> returned from an lvalue sub used not to work, but now
831 it does.
832
833 =item *
834
835 Applying the C<:lvalue> attribute to an XSUB or to an aliased subroutine
836 stub with C<< sub foo :lvalue; >> syntax stopped working in Perl 5.12.
837 This has been fixed.
838
839 =back
840
841 =head2 Fixes related to hashes
842
843 =over
844
845 =item *
846
847 A bug has been fixed that would cause a "Use of freed value in iteration"
848 error if the next two hash elements that would be iterated over are
849 deleted [perl #85026]. (5.14.1)
850
851 =item *
852
853 Freeing deeply nested hashes no longer crashes [perl #44225].
854
855 =item *
856
857 Deleting the current hash iterator (the hash element that would be returend
858 by the next call to C<each>) in void context used not to free it.  The hash
859 would continue to reference it until the next iteration.  This has been
860 fixed [perl #85026].
861
862 =back
863
864 =head2 Other notable fixes
865
866 =over
867
868 =item *
869
870 Passing the same constant subroutine to both C<index> and C<formline> no
871 longer causes one or the other to fail [perl #89218]. (5.14.1)
872
873 =item *
874
875 List assignment to lexical variables declared with attributes in the same
876 statement (C<my ($x,@y) : blimp = (72,94)>) stopped working in Perl 5.8.0.
877 It has now been fixed.
878
879 =item *
880
881 Perl 5.10.0 introduced some faulty logic that made "U*" in the middle of
882 a pack template equivalent to "U0" if the input string was empty.  This has
883 been fixed [perl #90160].
884
885 =item *
886
887 Destructors on objects were not called during global destruction on objects
888 that were not referenced by any scalars.  This could happen if an array
889 element were blessed (e.g., C<bless \$a[0]>) or if a closure referenced a
890 blessed variable (C<bless \my @a; sub foo { @a }>).
891
892 Now there is an extra pass during global destruction to fire destructors on
893 any objects that might be left after the usual passes that check for
894 objects referenced by scalars [perl #36347].
895
896 This bug fix was added in Perl 5.13.9, but caused problems with some CPAN
897 modules that were relying on the bug.  Since it was so close to Perl
898 5.14.0, the fix was reverted in 5.13.10, to allow more time for the modules
899 to adapt.  Hopefully they will be fixed soon (see L</Known Problems>,
900 below).
901
902 =item *
903
904 C<given> was not calling set-magic on the implicit lexical C<$_> that it
905 uses.  This meant, for example, that C<pos> would be remembered from one
906 execution of the same C<given> block to the next, even if the input were a
907 different variable [perl #84526].
908
909 =item *
910
911 The "R" command for restarting a debugger session has been fixed to work on
912 Windows, or any other system lacking a C<POSIX::_SC_OPEN_MAX> constant
913 [perl #87740].
914
915 =item *
916
917 Fixed a case where it was possible that a freed buffer may have been read
918 from when parsing a here document [perl #90128]. (5.14.1)
919
920 =item *
921
922 The C<study> function could become confused if fed a string longer than
923 2**31 characters.  Now it simply skips such strings.
924
925 =item *
926
927 C<each(I<ARRAY>)> is now wrapped in C<defined(...)>, like C<each(I<HASH>)>,
928 inside a C<while> condition [perl #90888].
929
930 =item *
931
932 In @INC filters (subroutines returned by subroutines in @INC), $_ used to
933 misbehave: If returned from a subroutine, it would not be copied, but the
934 variable itself would be returned; and freeing $_ (e.g., with C<undef *_>)
935 would cause perl to crash.  This has been fixed [perl #91880].
936
937 =item *
938
939 An ASCII single quote (') in a symbol name is meant to be equivalent to a
940 double colon (::) except at the end of the name.  It was not equivalent if
941 followed by a null character, but now it is [perl #88138].
942
943 =item *
944
945 The abbreviations for four C1 control characters
946 C<MW>
947 C<PM>,
948 C<RI>,
949 and
950 C<ST>
951 were previously unrecognized by C<\N{}>,
952 vianame(), and string_vianame().
953
954 =item *
955
956 Some cases of threads crashing due to memory allocation during cloning have
957 been fixed [perl #90006].
958
959 =item *
960
961 Attempting to C<goto> out of a tied handle method used to cause memory
962 corruption or crashes.  Now it produces an error message instead
963 [perl #8611].
964
965 =item *
966
967 Perl skips copying values returned from a subroutine if it thinks the value
968 is not in use elsewhere.  Due to faulty logic, this would happen with the
969 result of C<delete>, C<shift> or C<splice>, even if the result was
970 referenced elsewhere.  So C<< \sub { delete $_[0] }->($x) >> would return a
971 reference to C<$x>.  This has been fixed [perl #91844].
972
973 =item *
974
975 Applying the :lvalue attribute to subroutine that is already defined does
976 not work properly, as the attribute changes the way the sub is compiled.
977 Hence, Perl 5.12 began warning when an attempt is made to apply the
978 attribute to an already defined sub.  In such cases, the attribute is
979 discarded.
980
981 But the change in 5.12 missed the case where custom attributes are also
982 present: that case still silently and ineffectively applied the attribute.
983 That omission has now been corrected.  C<sub foo :lvalue :Whatever> (when
984 C<foo> is already defined) now warns about the :lvalue attribute, and does
985 not apply it.
986
987 L<attributes.pm|attributes> has likewise been updated to warn and not apply
988 the attribute.
989
990 =item *
991
992 The remaining discrepancies between explicit and implicit return from
993 lvalue subroutines have been resolved.  They mainly involved which error
994 message to display when a read-only value is returned in lvalue context.
995 Also, returning a PADTMP (the result of most built-ins, like C<index>) in
996 lvalue context is now forbidden for explicit return, as it always has been
997 for implicit return.  This is not a regression from 5.14, as all the cases
998 in which it could happen where previously syntax errors.
999
1000 =item *
1001
1002 Explicitly returning a tied C<my> variable from an lvalue subroutine in
1003 list lvalue context used to clear the variable before the assignment could
1004 happen.  This is something that was missed when explicit return was made to
1005 work in 5.15.0.
1006
1007 =item *
1008
1009 A minor memory leak, introduced in 5.15.0, has been fixed.  It would occur
1010 when a hash is freed that has had its current iterator deleted
1011 [perl #93454].
1012
1013 =item *
1014
1015 The C<prototype> function no longer dies for the C<__FILE__>, C<__LINE__>
1016 and C<__PACKAGE__> directives.  It now returns an empty-string prototype
1017 for them, because they are syntactically very similar to nullary functions
1018 like C<time>.
1019
1020 =item *
1021
1022 C<prototype> now returns C<undef> for all overridable infix operators,
1023 such as C<eq>, which are not callable in any way resembling functions.
1024 It used to return incorrect prototypes for some and die for others
1025 [perl #94984].
1026
1027 =item *
1028
1029 A bug affecting lvalue context propagation through nested lvalue subroutine
1030 calls has been fixed.  Previously, returning a value in nested rvalue
1031 context would be treated as lvalue context by the inner subroutine call,
1032 resulting in some values (such as read-only values) being rejected.
1033
1034 =item *
1035
1036 Some core bugs affecting L<Hash::Util> have been fixed: locking a hash
1037 element that is a glob copy no longer causes subsequent assignment to it to
1038 corrupt the glob, and unlocking a hash element that holds a copy-on-write
1039 scalar no longer causes modifications to that scalar to modify other
1040 scalars that were sharing the same string buffer.
1041
1042 =item *
1043
1044 C<when> blocks are now capable of returning variables declared inside the
1045 enclosing C<given> block [perl #93548].
1046
1047 =item *
1048
1049 A problem with context propagation when a C<do> block is an argument to
1050 C<return> has been fixed.  It used to cause C<undef> to be returned in
1051 some cases of a C<return> inside an C<if> block which itself is followed by
1052 another C<return>.
1053
1054 =item *
1055
1056 Calling C<index> with a tainted constant no longer causes constants in
1057 subsequently compiled code to become tainted [perl #64804].
1058
1059 =item *
1060
1061 Use of lexical (C<my>) variables in code blocks embedded in regular
1062 expressions will no longer result in memory corruption or crashes.
1063
1064 Nevertheless, these code blocks are still experimental, as there are still
1065 problems with the wrong variables being closed over (in loops for instance)
1066 and with abnormal exiting (e.g., C<die>) causing memory corruption.
1067
1068 =item *
1069
1070 The C<SvIsCOW> C macro now returns false for read-only copies of typeglobs,
1071 such as those created by:
1072
1073   $hash{elem} = *foo;
1074   Hash::Util::lock_value %hash, 'elem';
1075
1076 It used to return true.
1077
1078 =item *
1079
1080 Assignment to C<$^A> (the format output accumulator) now recalculates
1081 the number of lines output.
1082
1083 =item *
1084
1085 The regexp optimiser no longer crashes on debugging builds when merging
1086 fixed-string nodes with inconvenient contents.
1087
1088 =back
1089
1090 =head1 Known Problems
1091
1092 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
1093 tests that had to be C<TODO>ed for the release would be noted here, unless
1094 they were specific to a particular platform (see below).
1095
1096 This is a list of some significant unfixed bugs, which are regressions
1097 from either 5.XXX.XXX or 5.XXX.XXX.
1098
1099 [ List each fix as a =item entry ]
1100
1101 =over 4
1102
1103 =item *
1104
1105 XXX
1106
1107 =back
1108
1109 =head1 Obituary
1110
1111 XXX If any significant core contributor has died, we've added a short obituary
1112 here.
1113
1114 =head1 Acknowledgements
1115
1116 XXX Generate this with:
1117
1118   perl Porting/acknowledgements.pl v5.15.7..HEAD
1119
1120 =head1 Reporting Bugs
1121
1122 If you find what you think is a bug, you might check the articles
1123 recently posted to the comp.lang.perl.misc newsgroup and the perl
1124 bug database at http://rt.perl.org/perlbug/ .  There may also be
1125 information at http://www.perl.org/ , the Perl Home Page.
1126
1127 If you believe you have an unreported bug, please run the L<perlbug>
1128 program included with your release.  Be sure to trim your bug down
1129 to a tiny but sufficient test case.  Your bug report, along with the
1130 output of C<perl -V>, will be sent off to perlbug@perl.org to be
1131 analysed by the Perl porting team.
1132
1133 If the bug you are reporting has security implications, which make it
1134 inappropriate to send to a publicly archived mailing list, then please send
1135 it to perl5-security-report@perl.org. This points to a closed subscription
1136 unarchived mailing list, which includes
1137 all the core committers, who will be able
1138 to help assess the impact of issues, figure out a resolution, and help
1139 co-ordinate the release of patches to mitigate or fix the problem across all
1140 platforms on which Perl is supported. Please only use this address for
1141 security issues in the Perl core, not for modules independently
1142 distributed on CPAN.
1143
1144 =head1 SEE ALSO
1145
1146 The F<Changes> file for an explanation of how to view exhaustive details
1147 on what changed.
1148
1149 The F<INSTALL> file for how to build Perl.
1150
1151 The F<README> file for general stuff.
1152
1153 The F<Artistic> and F<Copying> files for copyright information.
1154
1155 =cut