This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: delete $+{...} was in the wrong section
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 This has been logged up to 97a3247,
5 except for:
6 57ef47cc7bcd1b57927d5010f363ccaa10f1d990
7 b2ea9a00b30eb5881b863d7239dd6a3721e73136
8 ca556bcdca736b2f85c11650c70b2371169c0225
9 e4487e9b537f1be1e95aba1c87790c2a411788a7
10 68b590d93559da1f7a0d3956202180d507013365
11 cb525dbe8838a8e289f2e8f893dd8df441c740c4
12
13 =head1 NAME
14
15 [ this is a template for a new perldelta file. Any text flagged as
16 XXX needs to be processed before release. ]
17
18 perldelta - what is new for perl v5.13.6
19
20 =head1 DESCRIPTION
21
22 This document describes differences between the 5.13.5 release and
23 the 5.13.6 release.
24
25 If you are upgrading from an earlier release such as 5.13.4, first read
26 L<perl5135delta>, which describes differences between 5.13.4 and
27 5.13.5.
28
29 =head1 Notice
30
31 XXX Any important notices here
32
33 =head1 Core Enhancements
34
35 XXX New core language features go here. Summarise user-visible core language
36 enhancements. Particularly prominent performance optimisations could go
37 here, but most should go in the L</Performance Enhancements> section.
38
39 [ List each enhancement as a =head2 entry ]
40
41 =head2  C<(?^...)> regex construct added to signify default modifiers
42
43 A caret (also called a "cirumflex accent") C<"^"> immediately following
44 a C<"(?"> in a regular expression now means that the subexpression is to
45 not inherit the surrounding modifiers such as C</i>, but to revert to the
46 Perl defaults.  Any modifiers following the caret override the defaults.
47
48 The stringification of regular expressions now uses this notation.  The
49 main purpose of this is to allow tests that rely on the stringification
50 to not have to change when new modifiers are added.  See
51 L<perlre/Extended Patterns>.
52
53 =head2 C<"d">, C<"l">, and C<"u"> regex modifiers added
54
55 These modifiers are currently only available within a C<(?...)> construct.
56
57 The C<"l"> modifier says to compile the regular expression as if it were
58 in the scope of C<use locale>, even if it is not.
59
60 The C<"u"> modifier currently does nothing.
61
62 The C<"d"> modifier is used in the scope of C<use locale> to compile the
63 regular expression as if it were not in that scope.
64 See L<perlre/(?dlupimsx-imsx)>.
65
66 =head2 C<\N{...}> now handles Unicode named character sequences
67
68 Unicode has a number of named character sequences, in which particular sequences
69 of code points are given names.  C<\N{...}> now recognizes these.
70 See L<charnames>.
71
72 =head2 New function C<charnames::string_vianame()>
73
74 This function is a run-time version of C<\N{...}>, returning the string
75 of characters whose Unicode name is its parameter.  It can handle
76 Unicode named character sequences, whereas the pre-existing
77 C<charnames::vianame()> cannot, as the latter returns a single code
78 point.
79 See L<charnames>.
80
81 =head2 Reentrant regular expression engine
82
83 It is now safe to use regular expressions within C<(?{...})> and
84 C<(??{...})> code blocks inside regular expressions.
85
86 These block are still experimental, however, and still have problems with
87 lexical (C<my>) variables, lexical pragmata and abnormal exiting.
88
89 =head2 Custom per-subroutine check hooks
90
91 XS code in an extension module can now annotate a subroutine (whether
92 implemented in XS or in Perl) so that nominated XS code will be called
93 at compile time (specifically as part of op checking) to change the op
94 tree of that subroutine.  The compile-time check function (supplied by
95 the extension module) can implement argument processing that can't be
96 expressed as a prototype, generate customised compile-time warnings,
97 perform constant folding for a pure function, inline a subroutine
98 consisting of sufficiently simple ops, replace the whole call with a
99 custom op, and so on.  This was previously all possible by hooking the
100 C<entersub> op checker, but the new mechanism makes it easy to tie the
101 hook to a specific subroutine.  See L<perlapi/cv_set_call_checker>.
102
103 To help in writing custom check hooks, several subtasks within standard
104 C<entersub> op checking have been separated out and exposed in the API.
105
106 =head2 Return value of C<delete $+{...}>
107
108 Custom regular expression engines can now determine the return value of
109 C<delete> on an entry of C<%+> or C<%->.
110
111 =head1 Security
112
113 XXX Any security-related notices go here.  In particular, any security
114 vulnerabilities closed should be noted here rather than in the
115 L</Selected Bug Fixes> section.
116
117 [ List each security issue as a =head2 entry ]
118
119 =head1 Incompatible Changes
120
121 =head2 Stringification of regexes has changed
122
123 Default regular expression modifiers are now notated by using
124 C<(?^...)>.  Code relying on the old stringification will fail.  The
125 purpose of this is so that when new modifiers are added, such code will
126 not have to change (after this one time), as the stringification will
127 automatically incorporate the new modifiers.
128
129 Code that needs to work properly with both old- and new-style regexes
130 can avoid the whole issue by using (for Perls since 5.9.5):
131
132  use re qw(regexp_pattern);
133  my ($pat, $mods) = regexp_pattern($re_ref);
134
135 where C<$re_ref> is a reference to a compiled regular expression.  Upon
136 return, C<$mods> will be a string containing all the non-default
137 modifiers used when the regular expression was compiled, and C<$pattern>
138 the actual pattern.
139
140 If the actual stringification is important, or older Perls need to be
141 supported, you can use something like the following:
142
143     # Accept both old and new-style stringification
144     my $modifiers = (qr/foobar/ =~ /\Q(?^/) ? '^' : '-xism';
145
146 And then use C<$modifiers> instead of C<-xism>.
147
148 =head2 Regular expressions retain their localeness when interpolated
149
150 Regular expressions compiled under C<"use locale"> now retain this when
151 interpolated into a new regular expression compiled outside a
152 C<"use locale">, and vice-versa.
153
154 Previously, a regular expression interpolated into another one inherited
155 the localeness of the surrounding one, losing whatever state it
156 originally had.  This is considered a bug fix, but may trip up code that
157 has come to rely on the incorrect behavior.
158
159 =head2 Directory handles not copied to threads
160
161 On systems that do not have a C<fchdir> function, newly-created threads no
162 longer inherit directory handles from their parent threads. Such programs
163 would probably have crashed anyway
164 L<[perl #75154]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75154>.
165
166 =head2 Negation treats strings differently from before
167
168 The unary negation operator C<-> now treats strings that look like numbers
169 as numbers
170 L<[perl #57706]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=57706>.
171
172 =head2 Negative zero
173
174 Negative zero (-0.0), when converted to a string, now becomes "0" on all
175 platforms. It used to become "-0" on some, but "0" on others.
176
177 If you still need to determine whether a zero is negative, use
178 C<sprintf("%g", $zero) =~ /^-/> or the L<Data::Float> module on CPAN.
179
180 =head1 Deprecations
181
182 XXX Any deprecated features, syntax, modules etc. should be listed here.
183 In particular, deprecated modules should be listed here even if they are
184 listed as an updated module in the L</Modules and Pragmata> section.
185
186 [ List each deprecation as a =head2 entry ]
187
188 =head1 Performance Enhancements
189
190 XXX Changes which enhance performance without changing behaviour go here. There
191 may well be none in a stable release.
192
193 [ List each enhancement as a =item entry ]
194
195 =over 4
196
197 =item *
198
199 The bulk of the C<Tie::Hash::NamedCapture> module used to be in the perl
200 core. It has now been moved to an XS module, to reduce the overhead for
201 programs that do not use C<%+> or C<%->.
202
203 =back
204
205 =head1 Modules and Pragmata
206
207 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
208 go here.  If Module::CoreList is updated, generate an initial draft of the
209 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
210 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
211 below.  A paragraph summary for important changes should then be added by hand.
212 In an ideal world, dual-life modules would have a F<Changes> file that could be
213 cribbed.
214
215 [ Within each section, list entries as a =item entry ]
216
217 =head2 New Modules and Pragmata
218
219 =over 4
220
221 =item *
222
223 XXX
224
225 =back
226
227 =head2 Updated Modules and Pragmata
228
229 =over 4
230
231 =item *
232
233 C<Archive::Extract> has been upgraded from version 0.42 to 0.44
234
235 =item *
236
237 C<Carp> has been upgraded from version 1.18 to 1.19.
238
239 It no longer autovivifies the C<*CORE::GLOBAL::caller> glob, something it
240 started doing in 1.18, which was released with perl 5.13.4
241 L<[perl #78082]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=78082>
242
243 =item *
244
245 C<Data::Dumper> has been upgraded from version 2.128 to 2.129.
246
247 C<Dumpxs> no longer crashes with globs returned by C<*$io_ref>
248 L<[perl #72332]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72332>.
249
250 =item *
251
252 C<Digest::MD5> has been upgraded from version 2.40 to 2.51.
253
254 It is now safe to use this module in combination with threads.
255
256 =item *
257
258 C<File::DosGlob> has been upgraded from version 1.02 to 1.03.
259
260 It allows patterns containing literal parentheses (they no longer need to
261 be escaped). On Windows, it no longer adds an extra F<./> to the file names
262 returned when the pattern is a relative glob with a drive specification,
263 like F<c:*.pl>
264 L<[perl #71712]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71712>.
265
266 =item *
267
268 C<File::Find> has been upgraded from version 1.17 to 1.18.
269
270 It improves handling of backslashes on Windows, so that paths such as
271 F<c:\dir\/file> are no longer generated
272 L<[perl #71710]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>.
273
274 =item *
275
276 C<if> has been upgraded from version 0.05 to 0.06
277
278 =item *
279
280 C<IPC::Open3> has been upgraded from version 1.06 to 1.07.
281
282 The internal C<xclose> routine now knows how to handle file descriptors, as
283 documented, so duplicating STDIN in a child process using its file
284 descriptor now works
285 L<[perl #76474]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>.
286
287 =item *
288
289 C<Locale::Codes> has been upgraded from version 3.13 to 3.14.
290
291 =item *
292
293 C<Locale::Maketext> has been upgraded from version 1.15 to 1.16.
294
295 It fixes an infinite loop in C<Locale::Maketext::Guts::_compile()> when
296 working with tainted values
297 (L<CPAN RT #40727|https://rt.cpan.org/Public/Bug/Display.html?id=40727>).
298
299 C<< ->maketext >> calls will now backup and restore C<$@> so that error
300 messages are not supressed
301 (L<CPAN RT #34182|https://rt.cpan.org/Public/Bug/Display.html?id=34182>).
302
303 =item *
304
305 C<Math::BigInt> has been upgraded from version 1.95 to 1.97.
306
307 This prevents C<sqrt($int)> from crashing under C<use bigrat;>
308 L<[perl #73534]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=73534>.
309
310 =item *
311
312 C<NEXT> has been upgraded from version 0.64 to 0.65.
313
314 =item *
315
316 C<overload> has been upgraded from version 1.10 to 1.11.
317
318 C<overload::Method> can now handle subroutines that are themselves blessed
319 into overloaded classes
320 L<[perl #71998]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71998>.
321
322 =item *
323
324 C<PathTools> has been upgraded from version 3.31_01 to 3.34.
325
326 =item *
327
328 C<sigtrap> has been upgraded from version 1.04 to 1.05.
329
330 It no longer tries to modify read-only arguments when generating a
331 backtrace
332 L<[perl #72340]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72340>.
333
334 =item *
335
336 C<threads> has been upgraded from version 1.77_03 to 1.81_01.
337
338 =item *
339
340 C<threads::shared> has been upgrade from version 1.33_03 to 1.34
341
342 =item *
343
344 C<Unicode::Collate> has been upgraded from version 0.59 to 0.62
345
346 U::C::Locale newly supports locales: ar, de__phonebook, hu, hy, nso, om, 
347 tn, vi, hr, ig, sq, se to and uk
348
349 =item *
350
351 C<Unicode::Normalize> has been upgraded from version 1.06 to 1.07
352
353 =back
354
355 =head2 Removed Modules and Pragmata
356
357 =over 4
358
359 =item *
360
361 XXX
362
363 =back
364
365 =head1 Documentation
366
367 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
368 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
369
370 =head2 New Documentation
371
372 XXX Changes which create B<new> files in F<pod/> go here.
373
374 =head3 L<XXX>
375
376 XXX Description of the purpose of the new file here
377
378 =head2 Changes to Existing Documentation
379
380 XXX Changes which significantly change existing files in F<pod/> go here.
381 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
382 section.
383
384 =head3 L<XXX>
385
386 =over 4
387
388 =item *
389
390 The documentation for the C<SvTRUE> macro was simply wrong in stating that
391 get-magic is not processed. It has been corrected.
392
393 =back
394
395 =head1 Diagnostics
396
397 The following additions or changes have been made to diagnostic output,
398 including warnings and fatal error messages.  For the complete list of
399 diagnostic messages, see L<perldiag>.
400
401 XXX New or changed warnings emitted by the core's C<C> code go here. Also
402 include any changes in L<perldiag> that reconcile it to the C<C> code.
403
404 [ Within each section, list entries as a =item entry ]
405
406 =head2 New Diagnostics
407
408 XXX Newly added diagnostic messages go here
409
410 =over 4
411
412 =item *
413
414 XXX
415
416 =back
417
418 =head2 Changes to Existing Diagnostics
419
420 XXX Changes (i.e. rewording) of diagnostic messages go here
421
422 =over 4
423
424 =item *
425
426 The 'Layer does not match this perl' error message has been replaced with
427 these more helpful messages:
428
429 =over 4
430
431 =item *
432
433 PerlIO layer function table size (%d) does not match size expected by this
434 perl (%d)
435
436 =item *
437
438 PerlIO layer instance size (%d) does not match size expected by this perl
439 (%d)
440
441 =back
442
443 L<[perl #73754]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=73754>
444
445 =back
446
447 =head1 Utility Changes
448
449 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
450 here. Most of these are built within the directories F<utils> and F<x2p>.
451
452 [ List utility changes as a =head3 entry for each utility and =item
453 entries for each change
454 Use L<XXX> with program names to get proper documentation linking. ]
455
456 =head3 L<XXX>
457
458 =over 4
459
460 =item *
461
462 XXX
463
464 =back
465
466 =head1 Configuration and Compilation
467
468 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
469 go here.  Any other changes to the Perl build process should be listed here.
470 However, any platform-specific changes should be listed in the
471 L</Platform Support> section, instead.
472
473 [ List changes as a =item entry ].
474
475 =over 4
476
477 =item *
478
479 XXX
480
481 =back
482
483 =head1 Testing
484
485 XXX Any significant changes to the testing of a freshly built perl should be
486 listed here.  Changes which create B<new> files in F<t/> go here as do any
487 large changes to the testing harness (e.g. when parallel testing was added).
488 Changes to existing files in F<t/> aren't worth summarising, although the bugs
489 that they represent may be covered elsewhere.
490
491 [ List each test improvement as a =item entry ]
492
493 =over 4
494
495 =item *
496
497 The script F<t/op/threads-dirh.t> has been added, which tests interaction
498 of threads and directory handles.
499
500 =back
501
502 =head1 Platform Support
503
504 XXX Any changes to platform support should be listed in the sections below.
505
506 [ Within the sections, list each platform as a =item entry with specific
507 changes as paragraphs below it. ]
508
509 =head2 New Platforms
510
511 XXX List any platforms that this version of perl compiles on, that previous
512 versions did not. These will either be enabled by new files in the F<hints/>
513 directories, or new subdirectories and F<README> files at the top level of the
514 source tree.
515
516 =over 4
517
518 =item XXX-some-platform
519
520 XXX
521
522 =back
523
524 =head2 Discontinued Platforms
525
526 XXX List any platforms that this version of perl no longer compiles on.
527
528 =over 4
529
530 =item XXX-some-platform
531
532 XXX
533
534 =back
535
536 =head2 Platform-Specific Notes
537
538 XXX List any changes for specific platforms. This could include configuration
539 and compilation changes or changes in portability/compatibility.  However,
540 changes within modules for platforms should generally be listed in the
541 L</Modules and Pragmata> section.
542
543 =over 4
544
545 =item IRIX
546
547 Conversion of strings to floating-point numbers is now more accurate on
548 IRIX systems
549 L<[perl #32380]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=32380>.
550
551 =item Mac OS X
552
553 Early versions of Mac OS X (Darwin) had buggy implementations of the
554 C<setregid>, C<setreuid>, C<setrgid> and C<setruid> functions, so perl
555 would pretend they did not exist.
556
557 These functions are now recognised on Mac OS 10.5 (Leopard; Darwin 9) and
558 higher, as they have been fixed
559 L<[perl #72990]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72990>.
560
561 =item OpenVOS
562
563 perl now builds again with OpenVOS (formerly known as Stratus VOS)
564 L<[perl #78132]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=78132>.
565
566 =item Windows
567
568 C<$Config{gccversion}> is now set correctly when perl is built using the
569 mingw64 compiler from L<http://mingw64.org>
570 L<[perl #73754]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=73754>.
571
572 The build process proceeds more smoothly with mingw and dmake when
573 F<C:\MSYS\bin> is in the PATH, due to a C<Cwd> fix.
574
575 =back
576
577 =head1 Internal Changes
578
579 XXX Changes which affect the interface available to C<XS> code go here.
580 Other significant internal changes for future core maintainers should
581 be noted as well.
582
583 [ List each test improvement as a =item entry ]
584
585 =over 4
586
587 =item *
588
589 See L</Regular expressions retain their localeness when interpolated>,
590 above.
591
592 =item *
593
594 The C<sv_cmp_flags>, C<sv_cmp_locale_flags>, C<sv_eq_flags> and
595 C<sv_collxfrm_flags> functions have been added. These are like their
596 non-_flags counterparts, but allow one to specify whether get-magic is
597 processed.
598
599 The C<sv_cmp>, C<sv_cmp_locale>, C<sv_eq> and C<sv_collxfrm> functions have
600 been replaced with wrappers around the new functions. 
601
602 =item *
603
604 A new C<sv_2bool_flags> function has been added.
605
606 This is like C<sv_2bool>, but it lets the calling code decide whether
607 get-magic is handled. C<sv_2bool> is now a macro that calls the new
608 function.
609
610 =item *
611
612 A new macro, C<SvTRUE_nomg>, has been added.
613
614 This is like C<SvTRUE>, except that it does not process magic. It uses the
615 new C<sv_2bool_flags> function.
616
617 =item *
618
619 C<sv_catsv_flags> no longer calls C<mg_get> on its second argument (the
620 source string) if the flags passed to it do not include SV_GMAGIC. So it
621 now matches the documentation.
622
623 =item *
624
625 A new interface has been added for custom check hooks on subroutines. See
626 L/Custom per-subroutine check hooks>, above.
627
628 =item *
629
630 List op building functions have been added to the
631 API.  See L<op_append_elem|perlapi/op_append_elem>,
632 L<op_append_list|perlapi/op_append_list>, and
633 L<op_prepend_elem|perlapi/op_prepend_elem>.
634
635 =item *
636
637 The L<LINKLIST|perlapi/LINKLIST> macro, part of op building that
638 constructs the execution-order op chain, has been added to the API.
639
640 =item *
641
642 Many functions ending with pvn now have equivalent pv/pvs/sv versions.
643
644 =item *
645
646 The C<save_freeop>, C<save_op>, C<save_pushi32ptr> and <save_pushptrptr>
647 functions have been added to the API.
648
649 =item *
650
651 The new API function C<parse_stmtseq()> parses a sequence of statements, up
652 to closing brace or EOF.
653
654 =back
655
656 =head1 Selected Bug Fixes
657
658 XXX Important bug fixes in the core language are summarised here.
659 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
660 L</Modules and Pragmata>.
661
662 [ List each fix as a =item entry ]
663
664 =over 4
665
666 =item *
667
668 A regular expression match in the right-hand side of a global substitution
669 (C<s///g>) that is in the same scope will no longer cause match variables
670 to have the wrong values on subsequent iterations. This can happen when an
671 array or hash subscript is interpolated in the right-hand side, as in
672 C<s|(.)|@a{ print($1), /./ }|g>
673 L<[perl #19078]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=19078>.
674
675 =item *
676
677 Constant-folding used to cause
678
679   $text =~ ( 1 ? /phoo/ : /bear/)
680
681 to turn into
682
683   $text =~ /phoo/
684
685 at compile time. Now it correctly matches against C<$_>
686 L<[perl #20444]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=20444>.
687
688 =item *
689
690 Parsing Perl code (either with string C<eval> or by loading modules) from
691 within a C<UNITCHECK> block no longer causes the interpreter to crash
692 L<[perl #70614]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=70614>.
693
694 =item *
695
696 When C<-d> is used on the shebang (C<#!>) line, the debugger now has access
697 to the lines of the main program. In the past, this sometimes worked and
698 sometimes did not, depending on what order things happened to be arranged
699 in memory
700 L<[perl #71806]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71806>.
701
702 =item *
703
704 The C<y///> or C<tr///> operator now calls get-magic (e.g., the C<FETCH>
705 method of a tie) on its left-hand side just once, not twice
706 L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
707
708 =item *
709
710 String comparison (C<eq>, C<ne>, C<lt>, C<gt>, C<le>, C<ge> and
711 C<cmp>) and logical not (C<not> and C<!>) operators no longer call magic
712 (e.g., tie methods) twice on their operands
713 L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
714
715 This bug was introduced in an earlier 5.13 release, and does not affect
716 perl 5.12.
717
718 =item *
719
720 When a tied (or other magic) variable is used as, or in, a regular
721 expression, it no longer has its C<FETCH> method called twice
722 L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
723
724 This bug was introduced in an earlier 5.13 release, and does not affect
725 perl 5.12.
726
727 =item *
728
729 The C<-C> command line option can now be followed by other options
730 L<[perl #72434]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72434>.
731
732 =item *
733
734 Assigning a glob to a PVLV used to convert it to a plain string. Now it
735 works correctly, and a PVLV can hold a glob. This would happen when a
736 nonexistent hash or array element was passed to a subroutine:
737
738   sub { $_[0] = *foo }->($hash{key});
739   # $_[0] would have been the string "*main::foo"
740
741 It also happened when a glob was assigned to, or returned from, an element
742 of a tied array or hash
743 L<[perl #36051]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=36051>.
744
745 =item *
746
747 Creating a new thread when directory handles were open used to cause a
748 crash, because the handles were not cloned, but simply passed to the new
749 thread, resulting in a double free.
750
751 Now directory handles are cloned properly, on systems that have a C<fchdir>
752 function. On other systems, new threads simply do not inherit directory
753 handles from their parent threads
754 L<[perl #75154]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75154>.
755
756 =item *
757
758 The regular expression parser no longer hangs when parsing C<\18> and
759 C<\88>.
760
761 This bug was introduced in version 5.13.5 and did not affect earlier
762 versions
763 L<[perl #78058]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78058>.
764
765 =item *
766
767 Subroutine redefinition works once more in the debugger
768 L<[perl #48332]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=48332>.
769
770 =item *
771
772 The C<&> C<|> C<^> bitwise operators no longer coerce read-only arguments
773 L<[perl #20661]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=20661>.
774
775 =item *
776
777 Stringifying a scalar containing -0.0 no longer has the affect of turning
778 false into true
779 L<[perl #45133]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=45133>.
780
781 =item *
782
783 Aliasing packages by assigning to globs or deleting packages by deleting
784 their containing stash elements used to have erratic effects on method
785 resolution, because the internal 'isa' caches were not reset. This has been
786 fixed.
787
788 =item *
789
790 C<sort> with a custom sort routine could crash if too many nested
791 subroutine calls occurrred from within the sort routine
792 L<[perl #77930]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77930>.
793
794 This bug was introduced in an earlier 5.13 release, and did not affect
795 perl 5.12.
796
797 =item *
798
799 The C<eval_sv> and C<eval_pv> C functions now set C<$@> correctly when
800 there is a syntax error and no C<G_KEEPERR> flag, and never set it if the
801 C<G_KEEPERR> flag is present 
802 L<[perl #3719]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=3719>.
803
804 =item *
805
806 Nested C<map> and C<grep> blocks no longer leak memory when processing
807 large lists
808 L<[perl #48004]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=48004>.
809
810 =item *
811
812 Malformed C<version> objects no longer cause crashes
813 L<[perl #78286]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78286>.
814
815 =item *
816
817 The interpreter no longer crashes when freeing deeply-nested arrays of
818 arrays. Hashes have not been fixed yet
819 L<[perl #44225]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=44225>.
820
821 =back
822
823 =head1 Known Problems
824
825 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
826 tests that had to be C<TODO>ed for the release would be noted here, unless
827 they were specific to a particular platform (see below).
828
829 This is a list of some significant unfixed bugs, which are regressions
830 from either 5.XXX.XXX or 5.XXX.XXX.
831
832 [ List each fix as a =item entry ]
833
834 =over 4
835
836 =item *
837
838 XXX
839
840 =back
841
842 =head1 Obituary
843
844 XXX If any significant core contributor has died, we've added a short obituary
845 here.
846
847 =head1 Errata
848
849 =over 4
850
851 =item *
852
853 Fixed a typo in L<perl5135delta> regarding array slices and smart matching
854
855 =back
856
857 =head1 Acknowledgements
858
859 XXX The list of people to thank goes here.
860
861 =head1 Reporting Bugs
862
863 If you find what you think is a bug, you might check the articles
864 recently posted to the comp.lang.perl.misc newsgroup and the perl
865 bug database at http://rt.perl.org/perlbug/ .  There may also be
866 information at http://www.perl.org/ , the Perl Home Page.
867
868 If you believe you have an unreported bug, please run the B<perlbug>
869 program included with your release.  Be sure to trim your bug down
870 to a tiny but sufficient test case.  Your bug report, along with the
871 output of C<perl -V>, will be sent off to perlbug@perl.org to be
872 analysed by the Perl porting team.
873
874 If the bug you are reporting has security implications, which make it
875 inappropriate to send to a publicly archived mailing list, then please send
876 it to perl5-security-report@perl.org. This points to a closed subscription
877 unarchived mailing list, which includes all the core committers, who be able
878 to help assess the impact of issues, figure out a resolution, and help
879 co-ordinate the release of patches to mitigate or fix the problem across all
880 platforms on which Perl is supported. Please only use this address for
881 security issues in the Perl core, not for modules independently
882 distributed on CPAN.
883
884 =head1 SEE ALSO
885
886 The F<Changes> file for an explanation of how to view exhaustive details
887 on what changed.
888
889 The F<INSTALL> file for how to build Perl.
890
891 The F<README> file for general stuff.
892
893 The F<Artistic> and F<Copying> files for copyright information.
894
895 =cut