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