This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Break out from deprecate::import the "check if it's core" code.
[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.13.10
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.XXX.XXX release and
13 the 5.XXX.XXX release.
14
15 If you are upgrading from an earlier release such as 5.YYY.YYY, first read
16 L<perl5YYYdelta>, which describes differences between 5.ZZZ.ZZZ and
17 5.YYY.YYY.
18
19 =head1 Notice
20
21 XXX Any important notices here
22
23 =head1 Core Enhancements
24
25 XXX New core language features go here. Summarise user-visible core language
26 enhancements. Particularly prominent performance optimisations could go
27 here, but most should go in the L</Performance Enhancements> section.
28
29 [ List each enhancement as a =head2 entry ]
30
31 =head2 Add C<\p{Titlecase}> as a synonym for C<\p{Title}>
32
33 This synonym is added for symmetry with the Unicode property names
34 C<\p{Uppercase}> and C<\p{Lowercase}>.
35
36 =head2 New regular expression modifier option C</aa>
37
38 Doubling the C</a> regular expression modifier increases its effect,
39 so that in case-insensitive matching, no ASCII character will match a
40 non-ASCII character.  For example, normally,
41
42     'k' =~ /\N{KELVIN SIGN}/
43
44 will match; it won't under C</aa>.  Note that like C</a>, C</aa>
45 in 5.14 will not actually be able to be used as a suffix at the end of a
46 regular expression.
47
48 =head2 New warnings categories for problematic (non-)Unicode code points.
49
50 Three new warnings subcategories of <utf8> have been added.  These
51 allow you to turn off warnings for their covered events, while allowing
52 the other UTF-8 warnings to remain on.  The three categories are:
53 C<surrogate> when UTF-16 surrogates are encountered;
54 C<nonchar> when Unicode non-character code points are encountered;
55 and C<non_unicode> when code points that are above the legal Unicode
56 maximum of 0x10FFFF are encountered.
57
58 =head1 Security
59
60 XXX Any security-related notices go here.  In particular, any security
61 vulnerabilities closed should be noted here rather than in the
62 L</Selected Bug Fixes> section.
63
64 [ List each security issue as a =head2 entry ]
65
66 =head1 Incompatible Changes
67
68 XXX For a release on a stable branch, this section aspires to be:
69
70     There are no changes intentionally incompatible with 5.XXX.XXX. If any
71     exist, they are bugs and reports are welcome.
72
73 [ List each incompatible change as a =head2 entry ]
74
75 =head2 Most C<\p{}> properties are now immune from case-insensitive matching
76
77 For most Unicode properties, it doesn't make sense to have them match
78 differently under C</i> case-insensitive matching than not.  And doing
79 so leads to unexpected results and potential security holes.  For
80 example
81
82  m/\p{ASCII_Hex_Digit}+/i
83
84 could previously match non-ASCII characters because of the Unicode
85 matching rules.  There were a number of bugs in this feature until an
86 earlier release in the 5.13 series.  Now this release reverts, and
87 removes the feature completely except for the few properties where
88 people have come to expect it, namely the ones where casing is an
89 integral part of their functionality, such as C<m/\p{Uppercase}/i> and
90 C<m/\p{Lowercase}/i>, both of which match the exact same code points,
91 namely those matched by C<m/\p{Cased}/i>.  Details are in
92 L<perlrecharclass/Unicode Properties>.
93
94 User-defined property handlers that need to match differently under
95 C</i> must change to read the new boolean parameter passed it which is
96 non-zero if case-insensitive matching is in effect; 0 if not.  See
97 L<perluniprops/User-Defined Character Properties>.
98
99 =head2 [perl #82996] Use the user's from address as return-path in perlbug
100
101 Many systems these days don't have a valid Internet domain name and
102 perlbug@perl.org does not accept email with a return-path that does
103 not resolve. Therefore pass the user's address to sendmail so it's
104 less likely to get stuck in a mail queue somewhere. (019cfd2)
105
106 =head2 regex: \p{} in pattern implies Unicode semantics
107
108 Now, a Unicode property match specified in the pattern will indicate
109 that the pattern is meant for matching according to Unicode rules
110 (e40e74f)
111
112 =head2 add GvCV_set() and GvGP_set() macros and change GvGP()
113
114 This allows a future commit to eliminate some backref magic between GV
115 and CVs, which will require complete control over assignment to the
116 gp_cv slot.
117
118 If you've been using GvGP() in lvalue context this change will break
119 your code, you should use GvGP_set() instead. (c43ae56)
120
121 =head2 _swash_inversion_hash is no longer exported as part of the API
122
123 This function shouldn't be called from XS code. (4c2e113)
124
125 =head2 Unreferenced objects in global destruction
126
127 The fix for [perl #36347], which made sure that destructors were called on
128 unreferenced objects, broke the tests for three CPAN modules, which
129 apparently rely on the bug.
130
131 To provide more time for fixing them (as this is such a minor bug), we
132 have reverted the fix until after perl 5.14.0.
133
134 This resolves [perl #82542] and other related tickets.
135
136 =head2 C<close> on shared pipes
137
138 The C<close> function no longer waits for the child process to exit if the
139 underlying file descriptor is still in use by another thread, to avoid
140 deadlocks. It returns true in such cases.
141
142 =head1 Deprecations
143
144 XXX Any deprecated features, syntax, modules etc. should be listed here.
145 In particular, deprecated modules should be listed here even if they are
146 listed as an updated module in the L</Modules and Pragmata> section.
147
148 =head2 User-defined case-mapping
149
150 This feature is being deprecated due to its many issues, as documented in
151 L<perlunicode/User-Defined Case Mappings (for serious hackers only)>.
152 It is planned to remove this feature in Perl 5.16.  A CPAN module
153 providing improved functionality is being prepared for release by the
154 time 5.14 is.
155
156 [ List each deprecation as a =head2 entry ]
157
158 =head1 Performance Enhancements
159
160 XXX Changes which enhance performance without changing behaviour go here. There
161 may well be none in a stable release.
162
163 [ List each enhancement as a =item entry ]
164
165 =over 4
166
167 =item *
168
169 XXX
170
171 =back
172
173 =head1 Modules and Pragmata
174
175 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
176 go here.  If Module::CoreList is updated, generate an initial draft of the
177 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
178 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
179 below.  A paragraph summary for important changes should then be added by hand.
180 In an ideal world, dual-life modules would have a F<Changes> file that could be
181 cribbed.
182
183 [ Within each section, list entries as a =item entry ]
184
185 =head2 New Modules and Pragmata
186
187 =over 4
188
189 =item *
190
191 C<CPAN::Meta> version 2.110440 has been added as a dual-life module. It
192 provides a standard library to read, interpret and write CPAN distribution
193 metadata files (e.g. META.json and META.yml) which describes a
194 distribution, its contents, and the requirements for building it and
195 installing it. The latest CPAN distribution metadata specification is
196 included as C<CPAN::Meta::Spec> and notes on changes in the specification
197 over time are given in C<CPAN::Meta::History>.
198
199 =item *
200
201 C<Version::Requirements> version 0.101020 has been added as a dual-life
202 module.  It provides a standard library to model and manipulates module
203 prerequisites and version constraints as defined in the L<CPAN::Meta::Spec>.
204
205 =back
206
207 =head2 Updated Modules and Pragmata
208
209 =over 4
210
211 =item *
212
213 C<B> has been upgraded from version 1.27 to 1.28.
214
215 =item *
216
217 C<Carp> has been upgraded from version 1.19 to 1.20.
218
219 [perl #82854] It now avoids using regular expressions that cause perl to
220 load its Unicode tables, in order to avoid the 'BEGIN not safe after
221 errors' error that will ensue if there has been a syntax error.
222
223 =item *
224
225 C<CGI> has been upgraded from version 3.51 to 3.52
226
227 =item *
228
229 C<CPAN> has been upgraded from version 1.94_64 to 1.94_65
230
231 Includes support for META.json and MYMETA.json.
232
233 =item *
234
235 C<CPANPLUS> has been upgraded from version 0.9011 to 0.9101
236
237 Includes support for META.json and MYMETA.json and a change to
238 using Digest::SHA for CPAN checksums.
239
240 =item *
241
242 C<deprecate> has been upgraded from version 0.01 to 0.02.
243
244 =item *
245
246 C<diagnostics> has been upgraded from version 1.21 to 1.22.
247
248 It now renders pod links slightly better, and has been taught to find
249 descriptions for messages that share their descriptions with other
250 messages.
251
252 =item *
253
254 C<Devel::DProf> has been upgraded from version 20080331.00 to 20110217.00.
255
256 Merely loading C<Devel::DProf> now no longer triggers profiling to start.
257 C<use Devel::DProf> and C<perl -d:DProf ...> still behave as before and start
258 the profiler.
259
260 =item *
261
262 C<DynaLoader> has been upgraded from version 1.12 to 1.13.
263
264 [perl #84358] It no longer inherits from AutoLoader; hence it no longer
265 produces weird error messages for unsuccessful method calls on classes that
266 inherit from DynaLoader.
267
268 =item *
269
270 C<IO::Select> has been upgraded from version 1.17 to 1.18.
271
272 It now allows IO::Handle objects (and objects in derived classes) to be
273 removed from an IO::Select set even if the underlying file descriptor is
274 closed or invalid.
275
276 =item *
277
278 C<IPC::Cmd> has been upgraded from version 0.68 to 0.70
279
280 =item *
281
282 C<HTTP::Tiny> has been upgraded from version 0.009 to 0.010
283
284 =item *
285
286 C<Math::BigInt> has been upgraded from version 1.99_04 to 1.992.
287
288 =item *
289
290 C<Module::Build> has been upgraded from version 0.3607 to 0.37_04.
291
292 A notable change is the deprecation of several modules.
293 Module::Build::Version has been deprecated and Module::Build now relies
294 directly upon L<version>.  Module::Build::ModuleInfo has been deprecated in
295 favor of a standalone copy of it called L<Module::Metadata>.
296 Module::Build::YAML has been deprecated in favor of L<CPAN::Meta::YAML>.
297
298 Module::Build now also generates META.json and MYMETA.json files
299 in accordance with version 2 of the CPAN distribution metadata specification,
300 L<CPAN::Meta::Spec>.  The older format META.yml and MYMETA.yml files are
301 still generated, as well.
302
303 =item *
304
305 C<Module::Load::Conditional> has been upgraded from version 0.40 to 0.44
306
307 =item *
308
309 C<Module::Metadata> has been upgraded from version 1.000003 to 1.000004.
310
311 =item *
312
313 C<overload> has been upgraded from version 1.12 to 1.13.
314
315 The documentation has greatly improved. See L</Documentation> below.
316
317 =item *
318
319 C<Parse::CPAN::Meta> has been upgraded from version 1.40 to 1.4401.
320
321 The latest Parse::CPAN::Meta can now read YAML or JSON files using
322 L<CPAN::Meta::YAML> and L<JSON::PP>, which are now part of the Perl core.
323
324 =item *
325
326 C<re> has been upgraded from version 0.16 to 0.17.
327
328 It now supports the double-a flag: C<use re '/aa';>
329
330 The C<regmust> function used to crash when called on a regular expression
331 belonging to a pluggable engine. Now it has been disabled for those.
332
333 C<regmust> no longer leaks memory.
334
335 =item *
336
337 C<Term::UI> has been upgraded from version 0.24 to 0.26
338
339 =item *
340
341 C<Unicode::Collate> has been upgraded from version 0.68 to 0.72
342
343 This also sees the switch from using the pure-perl version of this
344 module to the XS version.`
345
346 =item *
347
348 C<VMS::DCLsym> has been upgraded from version 1.04 to 1.05.
349
350 Two bugs have been fixed [perl #84086]:
351
352 The symbol table name was lost when tying a hash, due to a thinko in
353 C<TIEHASH>. The result was that all tied hashes interacted with the
354 local symbol table.
355
356 Unless a symbol table name had been explicitly specified in the call
357 to the constructor, querying the special key ':LOCAL' failed to
358 identify objects connected to the local symbol table.
359
360 =item *
361
362 Added new function C<Unicode::UCD::num()>.  This function will return the
363 numeric value of the string passed it; C<undef> if the string in its
364 entirety has no safe numeric value.
365
366 To be safe, a string must be a single character which has a numeric
367 value, or consist entirely of characters that match \d, coming from the
368 same Unicode block of digits.  Thus, a mix of  Bengali and Western
369 digits would be considered unsafe, as well as a mix of half- and
370 full-width digits, but strings consisting entirely of Devanagari digits
371 or of "Mathematical Bold" digits would would be safe.
372
373 =item *
374
375 C<CPAN> has been upgraded from version1.94_63 to 1.94_64.
376
377 =item *
378
379 XXX
380
381 =back
382
383 =head2 Removed Modules and Pragmata
384
385 =over 4
386
387 =item *
388
389 XXX
390
391 =back
392
393 =head1 Documentation
394
395 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
396 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
397
398 =head2 New Documentation
399
400 XXX Changes which create B<new> files in F<pod/> go here.
401
402 =head3 L<XXX>
403
404 XXX Description of the purpose of the new file here
405
406 =head2 Changes to Existing Documentation
407
408 XXX Changes which significantly change existing files in F<pod/> go here.
409 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
410 section.
411
412 =head3 L<overload>
413
414 =over 4
415
416 =item *
417
418 L<overload>'s documentation has practically undergone a rewrite. It
419 is now much more straightforward and clear.
420
421 =back
422
423 =head3 L<perlhack> and perlrepository
424
425 =over 4
426
427 =item *
428
429 The L<perlhack> and perlrepository documents have been heavily edited and
430 split up into several new documents.
431
432 The L<perlhack> document is now much shorter, and focuses on the Perl 5
433 development process and submitting patches to Perl. The technical content has
434 been moved to several new documents, L<perlsource>, L<perlinterp>,
435 L<perlhacktut>, and L<perlhacktips>. This technical content has only been
436 lightly edited.
437
438 The perlrepository document has been renamed to L<perlgit>. This new document
439 is just a how-to on using git with the Perl source code. Any other content
440 that used to be in perlrepository has been moved to perlhack.
441
442 =back
443
444 =head3 L<perlfunc>
445
446 =over 4
447
448 =item *
449
450 The documentation for the C<map> function now contains more examples,
451 see B<perldoc -f map> (f947627)
452
453 =back
454
455 =head3 L<perlfaq4>
456
457 =over 4
458
459 =item *
460
461 Examples in L<perlfaq4> have been updated to show the use of
462 L<Time::Piece>. (9243591)
463
464 =back
465
466 =head3 Miscellaneous
467
468 =over 4
469
470 =item *
471
472 Many POD related RT bugs and other issues which are too numerous to
473 enumerate have been solved by Michael Stevens.
474
475 =back
476
477 =head1 Diagnostics
478
479 The following additions or changes have been made to diagnostic output,
480 including warnings and fatal error messages.  For the complete list of
481 diagnostic messages, see L<perldiag>.
482
483 XXX New or changed warnings emitted by the core's C<C> code go here. Also
484 include any changes in L<perldiag> that reconcile it to the C<C> code.
485
486 [ Within each section, list entries as a =item entry ]
487
488 =head2 New Diagnostics
489
490 XXX Newly added diagnostic messages go here
491
492 =over 4
493
494 =item "\b{" is deprecated; use "\b\{" instead
495
496 =item "\B{" is deprecated; use "\B\{" instead
497
498 Use of an unescaped "{" immediately following a C<\b> or C<\B> is now
499 deprecated so as to reserve its use for Perl itself in a future release.
500
501 =item regcomp: Add warning if \p is used under locale. (fb2e24c)
502
503 C<\p> implies Unicode matching rules, which are likely going to be
504 different than the locale's.
505
506 =item panic: gp_free failed to free glob pointer - something is repeatedly re-creating entries
507
508 This new error is triggered if a destructor called on an object in a
509 typeglob that is being freed creates a new typeglob entry containing an
510 object with a destructor that creates a new entry containing an object....
511
512 =item refcnt: fd %d%s
513
514 This new error only occurs if a internal consistency check fails when a
515 pipe is about to be closed.
516
517 =back
518
519 =head2 Changes to Existing Diagnostics
520
521 XXX Changes (i.e. rewording) of diagnostic messages go here
522
523 =over 4
524
525 =item *
526
527 The warning message about regex unrecognized escapes passed through is
528 changed to include any literal '{' following the 2-char escape.  e.g.,
529 "\q{" will include the { in the message as part of the escape
530 (216bfc0).
531
532 =item * C<binmode $fh, ':scalar'> no longer warns (8250589)
533
534 Perl will now no longer produce this warning:
535
536     $ perl -we 'open my $f, ">", \my $x; binmode $f, "scalar"'
537     Use of uninitialized value in binmode at -e line 1.
538
539 =item *
540
541 XXX
542
543 =back
544
545 =head1 Utility Changes
546
547 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
548 here. Most of these are built within the directories F<utils> and F<x2p>.
549
550 [ List utility changes as a =head3 entry for each utility and =item
551 entries for each change
552 Use L<XXX> with program names to get proper documentation linking. ]
553
554 =head3 L<XXX>
555
556 =over 4
557
558 =item *
559
560 XXX
561
562 =back
563
564 =head1 Configuration and Compilation
565
566 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
567 go here.  Any other changes to the Perl build process should be listed here.
568 However, any platform-specific changes should be listed in the
569 L</Platform Support> section, instead.
570
571 [ List changes as a =item entry ].
572
573 =over 4
574
575 =item * make reg_eval_scope.t TODOs consistently fail (daaf7ac)
576
577 Some of the TODO tests in reg_eval_scope.t spuriously passed under
578 non-threaded builds. Make the tests harder so they always fail.
579
580 Since one of the key bugs in (?{..}) is the trashing of the parent pad,
581 add some extra lexical vars to the parent scope and check they're still
582 there at the end.
583
584 =item *
585
586 Stop EU::CBuilder's tests from failing in parallel (cbf59d5)
587
588 It used to use the same paths for temporary files in all tests. This
589 blew up randomly when the tests were run in parallel.
590
591 =item *
592
593 XXX
594
595 =back
596
597 =head1 Testing
598
599 XXX Any significant changes to the testing of a freshly built perl should be
600 listed here.  Changes which create B<new> files in F<t/> go here as do any
601 large changes to the testing harness (e.g. when parallel testing was added).
602 Changes to existing files in F<t/> aren't worth summarising, although the bugs
603 that they represent may be covered elsewhere.
604
605 [ List each test improvement as a =item entry ]
606
607 =over 4
608
609 =item *
610
611 F<porting/FindExt.t> now skips all tests on a static (-Uusedl) build
612 of perl.
613
614 =item *
615
616 F<porting/FindExt.t> now passes on non-Win32 platforms when some
617 extensions are built statically.
618
619 =back
620
621 =head1 Platform Support
622
623 XXX Any changes to platform support should be listed in the sections below.
624
625 [ Within the sections, list each platform as a =item entry with specific
626 changes as paragraphs below it. ]
627
628 =head2 New Platforms
629
630 XXX List any platforms that this version of perl compiles on, that previous
631 versions did not. These will either be enabled by new files in the F<hints/>
632 directories, or new subdirectories and F<README> files at the top level of the
633 source tree.
634
635 =over 4
636
637 =item XXX-some-platform
638
639 XXX
640
641 =back
642
643 =head2 Discontinued Platforms
644
645 XXX List any platforms that this version of perl no longer compiles on.
646
647 =over 4
648
649 =item XXX-some-platform
650
651 XXX
652
653 =back
654
655 =head2 Platform-Specific Notes
656
657 XXX List any changes for specific platforms. This could include configuration
658 and compilation changes or changes in portability/compatibility.  However,
659 changes within modules for platforms should generally be listed in the
660 L</Modules and Pragmata> section.
661
662 =over 4
663
664 =item Windows
665
666 =over 4
667
668 =item *
669
670 The C<test-prep> build target now depends on F<pod/perltoc.pod> to allow the
671 F<t/porting/buildtoc.t> test to run successfully.
672
673 =back
674
675 =item MirBSD
676
677 =over 4
678
679 =item *
680
681 [perl #82988] Skip hanging taint.t test on MirBSD 10 (1fb83d0)
682
683 Skip a hanging test under MirBSD that was already being skipped under
684 OpenBSD.
685
686 =item *
687
688 Previously if you build perl with a shared libperl.so on MirBSD (the
689 default config), it will work up to the installation; however, once
690 installed, it will be unable to find libperl. Treat path handling
691 like in the other BSD dialects.
692
693 =back
694
695 =back
696
697 =head1 Internal Changes
698
699 XXX Changes which affect the interface available to C<XS> code go here.
700 Other significant internal changes for future core maintainers should
701 be noted as well.
702
703 [ List each test improvement as a =item entry ]
704
705 =over 4
706
707 =item * Fix harmless invalid read in Perl_re_compile() (f6d9469)
708
709 [perl #2460] described a case where electric fence reported an invalid
710 read. This could be reproduced under valgrind with blead and -e'/x/',
711 but only on a non-debugging build.
712
713 This was because it was checking for certain pairs of nodes (e.g. BOL + END)
714 and wasn't allowing for EXACT nodes, which have the string at the next
715 node position when using a naive NEXTOPER(first). In the non-debugging
716 build, the nodes aren't initialised to zero, and a 1-char EXACT node isn't
717 long enough to spill into the type field of the "next node".
718
719 Fix this by only using NEXTOPER(first) when we know the first node is
720 kosher.
721
722 =item * Break out the generated function Perl_keywords() into F<keywords.c>, a new file. (26ea9e1)
723
724 As it and Perl_yylex() both need FEATURE_IS_ENABLED, feature_is_enabled() is
725 no longer static, and the two macro definitions move from toke.c to perl.h
726
727 Previously, one had to cut and paste the output of perl_keywords.pl into the
728 middle of toke.c, and it was not clear that it was generated code.
729
730 =item *
731
732 A lot of tests have been ported from Test to Test::More, e.g. in
733 3842ad6.
734
735 =item * Increase default PerlIO buffer size. (b83080d)
736
737 The previous default size of a PerlIO buffer (4096 bytes) has been increased
738 to the larger of 8192 bytes and your local BUFSIZ.  Benchmarks show that doubling
739 this decade-old default increases read and write performance in the neighborhood
740 of 25% to 50% when using the default layers of perlio on top of unix.  To choose
741 a non-default size, such as to get back the old value or to obtain and even
742 larger value, configure with:
743
744      ./Configure -Accflags=-DPERLIOBUF_DEFAULT_BUFSIZ=N
745
746 where N is the desired size in bytes; it should probably be a multiple of
747 your page size.
748
749
750 =item *
751
752 XXX
753
754 =back
755
756 =head1 Selected Bug Fixes
757
758 XXX Important bug fixes in the core language are summarised here.
759 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
760 L</Modules and Pragmata>.
761
762 [ List each fix as a =item entry ]
763
764 =over 4
765
766 =item *
767
768 A Unicode C<\p{}> property match in a regular expression pattern will
769 now force Unicode rules for the rest of the regular expression
770
771 =item *
772
773 [perl #38456] binmode FH, ":crlf" only modifies top crlf layer (7826b36)
774
775 When pushed on top of the stack, crlf will no longer enable crlf layers
776 lower in the stack. This will prevent unexpected results.
777
778 =item *
779
780 Fix 'raw' layer for RT #80764 (ecfd064)
781
782 Made a ':raw' open do what it advertises to do (first open the file,
783 then binmode it), instead of leaving off the top layer.
784
785 =item *
786
787 Use PerlIOBase_open for pop, utf8 and bytes layers (c0888ac)
788
789 Three of Perl's builtin PerlIO layers (C<:pop>, C<:utf8> and
790 C<:bytes>) didn't allow stacking when opening a file. For example
791 this:
792
793     open FH, '>:pop:perlio', 'some.file' or die $!;
794
795 Would throw an error: "Invalid argument". This has been fixed in this
796 release.
797
798 =item *
799
800 An issue present since 5.13.1, where s/A/B/ with A utf8 and B
801 non-utf8, could cause corruption or segfaults has been
802 fixed. (c95ca9b)
803
804 =item *
805
806 String evals will no longer fail after 2 billion scopes have been
807 compiled (d1bfb64, 2df5bdd, 0d311cd and 6012dc8)
808
809 =item *
810
811 [perl #81750] When strict 'refs' mode is off,
812 C<%{...}> in rvalue context returns C<undef> if
813 its argument is undefined. An optimisation introduced in perl 5.12.0 to
814 make C<keys %{...}> faster when used as a boolean did not take this into
815 account, causing C<keys %{+undef}> (and C<keys %$foo> when C<$foo> is
816 undefined) to be an error, which it should only be in strict mode.
817
818 =item *
819
820 [perl #83194] Combining the vector (%v) flag and dynamic precision would
821 cause sprintf to confuse the order of its arguments, making it treat the
822 string as the precision and vice versa.
823
824 =item *
825
826 [perl #77692] Sometimes the UTF8 length cache would not be reset on a value
827 returned by substr, causing C<length(substr($uni_string,...))> to give
828 wrong answers. With C<${^UTF8CACHE}> set to -1, it would produce a 'panic'
829 error message, too.
830
831 =item *
832
833 During the restoration of a localised typeglob on scope exit, any
834 destructors called as a result would be able to see the typeglob in an
835 inconsistent state, containing freed entries, which could result in a
836 crash. This would affect code like this:
837
838   local *@;
839   eval { die bless [] }; # puts an object in $@
840   sub DESTROY {
841     local $@; # boom
842   }
843
844 Now the glob entries are cleared before any destructors are called. This
845 also means that destructors can vivify entries in the glob. So perl tries
846 again and, if the entries are re-created too many times, dies with a
847 'panic: gp_free...' error message.
848
849 =item *
850
851 [perl #78494] When pipes are shared between threads, the C<close> function
852 (and any implicit close, such as on thread exit) no longer blocks.
853
854 =item *
855
856 Several contexts no longer allow a Unicode character to begin a word
857 that should never begin words, for an example an accent that must follow
858 another character previously could precede all other characters.
859
860 =back
861
862 =head1 Known Problems
863
864 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
865 tests that had to be C<TODO>ed for the release would be noted here, unless
866 they were specific to a particular platform (see below).
867
868 This is a list of some significant unfixed bugs, which are regressions
869 from either 5.XXX.XXX or 5.XXX.XXX.
870
871 [ List each fix as a =item entry ]
872
873 =over 4
874
875 =item *
876
877 XXX
878
879 =back
880
881 =head1 Obituary
882
883 XXX If any significant core contributor has died, we've added a short obituary
884 here.
885
886 =head1 Acknowledgements
887
888 XXX The list of people to thank goes here.
889
890 =head1 Reporting Bugs
891
892 If you find what you think is a bug, you might check the articles
893 recently posted to the comp.lang.perl.misc newsgroup and the perl
894 bug database at http://rt.perl.org/perlbug/ .  There may also be
895 information at http://www.perl.org/ , the Perl Home Page.
896
897 If you believe you have an unreported bug, please run the L<perlbug>
898 program included with your release.  Be sure to trim your bug down
899 to a tiny but sufficient test case.  Your bug report, along with the
900 output of C<perl -V>, will be sent off to perlbug@perl.org to be
901 analysed by the Perl porting team.
902
903 If the bug you are reporting has security implications, which make it
904 inappropriate to send to a publicly archived mailing list, then please send
905 it to perl5-security-report@perl.org. This points to a closed subscription
906 unarchived mailing list, which includes all the core committers, who be able
907 to help assess the impact of issues, figure out a resolution, and help
908 co-ordinate the release of patches to mitigate or fix the problem across all
909 platforms on which Perl is supported. Please only use this address for
910 security issues in the Perl core, not for modules independently
911 distributed on CPAN.
912
913 =head1 SEE ALSO
914
915 The F<Changes> file for an explanation of how to view exhaustive details
916 on what changed.
917
918 The F<INSTALL> file for how to build Perl.
919
920 The F<README> file for general stuff.
921
922 The F<Artistic> and F<Copying> files for copyright information.
923
924 =cut