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