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