This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Allow trie use for /iaa matching
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
ba03bc34
SH
5[ this is a template for a new perldelta file. Any text flagged as XXX needs
6to be processed before release. ]
7
8perldelta - what is new for perl v5.19.4
e128ab2c 9
4eabcf70 10=head1 DESCRIPTION
6db9054f 11
ba03bc34 12This document describes differences between the 5.19.3 release and the 5.19.4
e08634c5 13release.
6db9054f 14
ba03bc34
SH
15If you are upgrading from an earlier release such as 5.19.2, first read
16L<perl5193delta>, which describes differences between 5.19.2 and 5.19.3.
a3fb66a4 17
ba03bc34 18=head1 Notice
a3fb66a4 19
ba03bc34 20XXX Any important notices here
a3fb66a4 21
ba03bc34 22=head1 Core Enhancements
a3fb66a4 23
ba03bc34
SH
24XXX New core language features go here. Summarize user-visible core language
25enhancements. Particularly prominent performance optimisations could go
26here, but most should go in the L</Performance Enhancements> section.
a3fb66a4 27
ba03bc34 28[ List each enhancement as a =head2 entry ]
a3fb66a4 29
ba03bc34 30=head1 Security
a3fb66a4 31
ba03bc34
SH
32XXX Any security-related notices go here. In particular, any security
33vulnerabilities closed should be noted here rather than in the
34L</Selected Bug Fixes> section.
4725e868 35
ba03bc34 36[ List each security issue as a =head2 entry ]
a3fb66a4 37
ba03bc34 38=head1 Incompatible Changes
a3fb66a4 39
ba03bc34 40XXX For a release on a stable branch, this section aspires to be:
a3fb66a4 41
ba03bc34
SH
42 There are no changes intentionally incompatible with 5.XXX.XXX
43 If any exist, they are bugs, and we request that you submit a
44 report. See L</Reporting Bugs> below.
a3fb66a4 45
ba03bc34 46[ List each incompatible change as a =head2 entry ]
a3fb66a4 47
ba03bc34 48=head1 Deprecations
a3fb66a4 49
ba03bc34 50XXX Any deprecated features, syntax, modules etc. should be listed here.
a3fb66a4 51
ba03bc34 52=head2 Module removals
4725e868 53
ba03bc34 54XXX Remove this section if inapplicable.
669d990b 55
ba03bc34
SH
56The following modules will be removed from the core distribution in a
57future release, and will at that time need to be installed from CPAN.
58Distributions on CPAN which require these modules will need to list them as
59prerequisites.
669d990b 60
ba03bc34
SH
61The core versions of these modules will now issue C<"deprecated">-category
62warnings to alert you to this fact. To silence these deprecation warnings,
63install the modules in question from CPAN.
669d990b 64
ba03bc34
SH
65Note that these are (with rare exceptions) fine modules that you are encouraged
66to continue to use. Their disinclusion from core primarily hinges on their
67necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
68not usually on concerns over their design.
2cf99697 69
ba03bc34 70=over
2cf99697 71
ba03bc34
SH
72XXX Note that deprecated modules should be listed here even if they are listed
73as an updated module in the L</Modules and Pragmata> section.
21d55435 74
ba03bc34 75=back
0f0eae2c 76
ba03bc34 77[ List each other deprecation as a =head2 entry ]
21d55435 78
ba03bc34 79=head1 Performance Enhancements
a3fb66a4 80
ba03bc34 81=over 4
a3fb66a4 82
2c99af42
SH
83=item *
84
098b07d5
KW
85The trie performance enhancement for regular expressions has now been
86extended to those compiled under C</iaa>.
2c99af42 87
c0ca71c9 88=back
42bff0d9 89
ba03bc34 90=head1 Modules and Pragmata
195e3ea0 91
ba03bc34
SH
92XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
93go here. If Module::CoreList is updated, generate an initial draft of the
94following sections using F<Porting/corelist-perldelta.pl>, which prints stub
95entries to STDOUT. Results can be pasted in place of the '=head2' entries
96below. A paragraph summary for important changes should then be added by hand.
97In an ideal world, dual-life modules would have a F<Changes> file that could be
98cribbed.
195e3ea0 99
ba03bc34 100[ Within each section, list entries as a =item entry ]
195e3ea0 101
ba03bc34 102=head2 New Modules and Pragmata
195e3ea0
SH
103
104=over 4
105
106=item *
107
ba03bc34 108XXX
195e3ea0
SH
109
110=back
111
ba03bc34 112=head2 Updated Modules and Pragmata
42bff0d9 113
38663f11 114=over 4
42bff0d9
DG
115
116=item *
117
8c24c1f7 118L<B> has been upgraded from version 1.45 to 1.46.
00c5962f
TC
119
120The fix for [perl #118525] introduced a regression in the behaviour of
121C<B::CV::GV>, changing the return value from a C<B::SPECIAL> object on
122a C<NULL> C<CvGV> to C<undef>. C<B::CV::GV> again returns a
123C<B::SPECIAL> object in this case. [perl #119351]
124
125=item *
126
8c24c1f7
SH
127L<B::Concise> has been upgraded from version 0.98 to 0.99.
128
5b903226 129The handling of the C<glob> operator, broken since Perl 5.17.6, has been fixed.
8c24c1f7
SH
130
131=item *
132
d5dcec3a
Z
133L<Carp> has been upgraded from version 1.31 to 1.32.
134
6ffbec2c
Z
135=over 4
136
137=item *
138
139In stack traces, subroutine arguments that are strings are now quoted
140in a consistent manner, regardless of what characters they contain and
141how they're internally represented.
142
143=item *
144
bf4588d0 145C<Carp> now won't vivify the C<overload::StrVal> glob or subroutine or the
bd098b9a 146C<overload> stash.
6ffbec2c
Z
147
148=item *
149
150C<Carp> now avoids some unwanted Unicode warnings on older Perls. This
151doesn't affect behaviour with current Perl.
152
153=item *
154
bf4588d0
Z
155C<Carp::Heavy> detects version mismatch with C<Carp>, to give a good
156error message if a current (stub) C<Carp::Heavy> gets loaded by an old
157C<Carp> that expects C<Carp::Heavy> to provide subroutines.
d5dcec3a 158
6ffbec2c
Z
159=back
160
c963f488
SH
161=item *
162
8c24c1f7
SH
163L<Data::Dumper> has been upgraded from version 2.148 to 2.149.
164
5b903226
SH
165This upgrade is part of a larger change to make the array interface 64-bit safe
166by using SSize_t instead of I32 for array indices.
8c24c1f7
SH
167
168=item *
169
170L<Devel::Peek> has been upgraded from version 1.13 to 1.14.
171
5b903226
SH
172This upgrade is part of a larger change to preserve referential identity when
173passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
174nonexistent array elements.
8c24c1f7
SH
175
176=item *
177
178L<DynaLoader> has been upgraded from version 1.19 to 1.20.
179
5b903226
SH
180The documentation now makes it clear, as has always been the case, that
181C<dl_unload_file> is only called automatically to unload all loaded shared
182objects if the perl interpreter was built with the C macro
183DL_UNLOAD_ALL_AT_EXIT defined.
184
185=item *
186
187L<ExtUtils::MakeMaker> has been upgraded from version 6.72 to 6.74.
188
189Numerous updates and bug fixes are incorporated. See the F<Changes> file for
190full details.
8c24c1f7
SH
191
192=item *
193
610ee5e3
TC
194L<File::Glob> has been upgraded from version 1.20 to 1.21.
195
196C<glob()> now warns in the context of C<use warnings "syscalls";> if
197the supplied pattern has an internal NUL (C<"\0">) character.
198
d5dcec3a
Z
199=item *
200
8c24c1f7
SH
201L<IPC::Open3> has been upgraded from 1.15 to 1.16.
202
5b903226
SH
203This upgrade is part of a larger change to preserve referential identity when
204passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
205nonexistent array elements.
8c24c1f7
SH
206
207=item *
208
a8479f0e
TC
209L<Math::BigInt> has been upgraded from version 1.9992 to 1.9993.
210
211Cleaned up the L<Math::BigInt> and L<Math::BigFloat> documentation to
212be more consistent with other perl documentation. [perl #86686]
213
214Added a bint() method for rounding towards zero. [perl #85296]
215
216=item *
217
8c24c1f7
SH
218L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31.
219
5b903226
SH
220This upgrade is part of a larger change to make the array interface 64-bit safe
221by using SSize_t instead of I32 for array indices.
8c24c1f7
SH
222
223=item *
224
37287258
SH
225L<Module::CoreList> has been upgraded from version 2.97 to 2.98.
226
227The list of Perl versions covered has been updated.
1fdd5e53 228
68cdd4b5
SH
229=item *
230
231L<Module::Metadata> has been upgraded from version 1.000014 to 1.000016.
232
233The module's DESCRIPTION has been re-worded regarding safety/security to
234satisfy CVE-2013-1437.
235
93f72154
SH
236=item *
237
8c24c1f7
SH
238L<mro> has been upgraded from 1.13 to 1.14.
239
5b903226
SH
240This upgrade is part of a larger change to make the array interface 64-bit safe
241by using SSize_t instead of I32 for array indices.
8c24c1f7
SH
242
243=item *
244
245L<Perl::OSType> has been upgraded from version 1.003 to 1.004.
93f72154
SH
246
247The Unix OSType 'bitrig' has been added.
248
8c24c1f7
SH
249=item *
250
251L<re> has been upgraded from version 0.25 to 0.26.
252
5b903226 253A function signature has been corrected in the XS implementation.
8c24c1f7
SH
254
255=item *
256
257L<Storable> has been upgraded from version 2.46 to 2.47.
258
5b903226
SH
259This upgrade is part of a larger change to preserve referential identity when
260passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
261nonexistent array elements.
8c24c1f7
SH
262
263=item *
264
265L<warnings> has been upgraded from version 1.18 to 1.19.
266
5b903226 267The C<syscalls> warnings category has been added to check for embedded NUL
b8f07b9f 268(C<"\0">) characters in pathnames and string arguments to other system calls.
8c24c1f7
SH
269
270=item *
271
272L<XS::Typemap> has been upgraded from version 0.10 to 0.11.
273
583aa5c2
RS
274=back
275
ba03bc34 276=head2 Removed Modules and Pragmata
a3fb66a4
SH
277
278=over 4
279
280=item *
281
ba03bc34 282XXX
a3fb66a4
SH
283
284=back
285
ba03bc34 286=head1 Documentation
8fecfff0 287
ba03bc34
SH
288XXX Changes to files in F<pod/> go here. Consider grouping entries by
289file and be sure to link to the appropriate page, e.g. L<perlfunc>.
8fecfff0 290
ba03bc34 291=head2 New Documentation
8fecfff0 292
ba03bc34 293XXX Changes which create B<new> files in F<pod/> go here.
195e3ea0 294
ba03bc34 295=head3 L<XXX>
195e3ea0 296
ba03bc34 297XXX Description of the purpose of the new file here
195e3ea0 298
ba03bc34 299=head2 Changes to Existing Documentation
195e3ea0 300
ba03bc34
SH
301XXX Changes which significantly change existing files in F<pod/> go here.
302However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
303section.
195e3ea0 304
ba03bc34 305=head3 L<XXX>
a3fb66a4
SH
306
307=over 4
308
309=item *
310
ba03bc34 311XXX Description of the change here
a3fb66a4
SH
312
313=back
314
c0ca71c9
AP
315=head1 Diagnostics
316
317The following additions or changes have been made to diagnostic output,
318including warnings and fatal error messages. For the complete list of
319diagnostic messages, see L<perldiag>.
320
ba03bc34
SH
321XXX New or changed warnings emitted by the core's C<C> code go here. Also
322include any changes in L<perldiag> that reconcile it to the C<C> code.
323
c0ca71c9
AP
324=head2 New Diagnostics
325
ba03bc34
SH
326XXX Newly added diagnostic messages go under here, separated into New Errors
327and New Warnings
328
12dcbffb 329=head3 New Errors
583aa5c2 330
38663f11 331=over 4
583aa5c2 332
b8a02ff1 333=item *
583aa5c2 334
ba03bc34 335XXX L<message|perldiag/"message">
583aa5c2 336
b8a02ff1 337=back
583aa5c2 338
12dcbffb 339=head3 New Warnings
96d496e4 340
38663f11 341=over 4
b8a02ff1
DG
342
343=item *
344
610ee5e3
TC
345L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s">
346
b8f07b9f
SH
347(W syscalls) Embedded \0 characters in pathnames or other system call arguments
348produce a warning as of 5.20. The parts after the \0 were formerly ignored by
349system calls.
487a71ff 350
12dcbffb 351=back
1310e590 352
ba03bc34
SH
353=head2 Changes to Existing Diagnostics
354
355XXX Changes (i.e. rewording) of diagnostic messages go here
e727f86a 356
12dcbffb 357=over 4
e727f86a 358
81ca6d44
FC
359=item *
360
ba03bc34 361XXX Describe change here
e38fc308 362
ba03bc34 363=back
a34da6c4 364
ba03bc34 365=head1 Utility Changes
a34da6c4 366
ba03bc34
SH
367XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
368Most of these are built within the directories F<utils> and F<x2p>.
558673e6 369
ba03bc34
SH
370[ List utility changes as a =head3 entry for each utility and =item
371entries for each change
372Use L<XXX> with program names to get proper documentation linking. ]
558673e6 373
b2d74da6 374=head3 L<find2perl>
47a7c93d 375
12dcbffb 376=over 4
b5a80c26 377
7f1d4316
FC
378=item *
379
f1c106f5 380L<find2perl> now handles C<?> wildcards correctly. [perl #113054]
7f1d4316 381
ba03bc34 382=back
ef947715 383
ba03bc34 384=head1 Configuration and Compilation
ef947715 385
ba03bc34
SH
386XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
387go here. Any other changes to the Perl build process should be listed here.
388However, any platform-specific changes should be listed in the
389L</Platform Support> section, instead.
02bef66e 390
ba03bc34 391[ List changes as a =item entry ].
d30fb844 392
12dcbffb 393=over 4
21c01741 394
467582e8
FC
395=item *
396
4d106cc5
NC
397The F<Makefile.PL> for C<SDBM_File> now generates a better F<Makefile>,
398which avoids a race condition during parallel makes, which could cause the
399build to fail. This is the last known parallel make problem (on *nix
400platforms), and therefore we believe that a parallel make should now always
401be error free.
402
403=for comment
404
405Strictly only for a build where build files such as F<Makefile.SH> have not
406been updated by C<git> in an already configured and built tree.
467582e8 407
ba03bc34 408=back
64da853d 409
ba03bc34 410=head1 Testing
8847717e 411
ba03bc34
SH
412XXX Any significant changes to the testing of a freshly built perl should be
413listed here. Changes which create B<new> files in F<t/> go here as do any
414large changes to the testing harness (e.g. when parallel testing was added).
415Changes to existing files in F<t/> aren't worth summarizing, although the bugs
416that they represent may be covered elsewhere.
8847717e 417
ba03bc34 418[ List each test improvement as a =item entry ]
f1b856da 419
ba03bc34 420=over 4
f1b856da 421
eaed284b
FC
422=item *
423
5b903226 424The test script F<t/bigmem/regexp.t> has been added to test that regular
28f52e64 425expression matches on very large strings now succeed as expected.
8c24c1f7
SH
426
427=item *
428
5b903226
SH
429Various cases of C<die>, C<last>, C<goto> and C<exit> triggering C<DESTROY> are
430now tested by the new test script F<t/op/rt119311.t>.
8c24c1f7
SH
431
432=item *
433
5b903226
SH
434The new test script F<t/win32/signal.t> tests that C<$!> and C<$^E> are now
435preserved across signal handlers by the Win32 signal emulation code.
8c24c1f7
SH
436
437=item *
438
5b903226
SH
439The test script F<t/x2p/find2perl.t> has been added to test the F<find2perl>
440program on platforms where it is practical to do so.
eaed284b 441
ba03bc34 442=back
0335212c 443
ba03bc34 444=head1 Platform Support
0335212c 445
ba03bc34 446XXX Any changes to platform support should be listed in the sections below.
c3e455cf 447
ba03bc34
SH
448[ Within the sections, list each platform as a =item entry with specific
449changes as paragraphs below it. ]
c3e455cf 450
ba03bc34 451=head2 New Platforms
019705bc 452
ba03bc34
SH
453XXX List any platforms that this version of perl compiles on, that previous
454versions did not. These will either be enabled by new files in the F<hints/>
455directories, or new subdirectories and F<README> files at the top level of the
456source tree.
019705bc 457
ba03bc34 458=over 4
25921d77 459
44d412d1 460=item Bitrig
25921d77 461
44d412d1 462Compile support has been added for Bitrig, a fork of OpenBSD
28ea507e 463
ba03bc34 464=back
28ea507e 465
ba03bc34 466=head2 Discontinued Platforms
28ea507e 467
ba03bc34 468XXX List any platforms that this version of perl no longer compiles on.
28ea507e 469
ba03bc34 470=over 4
074d6753 471
ba03bc34 472=item XXX-some-platform
074d6753 473
ba03bc34 474XXX
4e5b563d 475
ba03bc34 476=back
4e5b563d 477
ba03bc34 478=head2 Platform-Specific Notes
ee818f56 479
ba03bc34
SH
480XXX List any changes for specific platforms. This could include configuration
481and compilation changes or changes in portability/compatibility. However,
482changes within modules for platforms should generally be listed in the
483L</Modules and Pragmata> section.
ee818f56 484
ba03bc34 485=over 4
c054cc81 486
8c24c1f7 487=item WinCE
c054cc81 488
5b903226
SH
489The building of XS modules has largely been restored. Several still cannot
490(yet) be built but it is now possible to build Perl on WinCE with only a couple
491of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be
492incorporated soon.
efcbb8b2 493
ba03bc34 494=back
efcbb8b2 495
ba03bc34 496=head1 Internal Changes
36813eeb 497
ba03bc34
SH
498XXX Changes which affect the interface available to C<XS> code go here. Other
499significant internal changes for future core maintainers should be noted as
500well.
36813eeb 501
ba03bc34 502[ List each change as a =item entry ]
52937067 503
ba03bc34 504=over 4
52937067 505
6760cac5
FC
506=item *
507
ba03bc34 508XXX
671f9ff7 509
ba03bc34 510=back
671f9ff7 511
ba03bc34 512=head1 Selected Bug Fixes
912a9a8f 513
ba03bc34
SH
514XXX Important bug fixes in the core language are summarized here. Bug fixes in
515files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
912a9a8f 516
ba03bc34 517[ List each fix as a =item entry ]
0d25b9d4 518
ba03bc34 519=over 4
0d25b9d4 520
a82207ba
FC
521=item *
522
3d05c417
TC
523The value of C<$^E> is now saved across signal handlers on
524Win32. [perl #85104]
18e2e6cd 525
ba03bc34 526=back
18e2e6cd 527
ba03bc34 528=head1 Known Problems
a82207ba 529
ba03bc34
SH
530XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
531tests that had to be C<TODO>ed for the release would be noted here. Unfixed
532platform specific bugs also go here.
31d5dc65 533
ba03bc34 534[ List each fix as a =item entry ]
31d5dc65 535
ba03bc34 536=over 4
31d5dc65 537
74dac2b5
FC
538=item *
539
ba03bc34 540XXX
74dac2b5 541
ba03bc34 542=back
8fecfff0 543
ba03bc34 544=head1 Obituary
8fecfff0 545
ba03bc34
SH
546XXX If any significant core contributor has died, we've added a short obituary
547here.
d7bfa554 548
583aa5c2 549=head1 Acknowledgements
a75569c0 550
ba03bc34
SH
551XXX Generate this with:
552
553 perl Porting/acknowledgements.pl v5.19.3..HEAD
f5b73711 554
44691e6f
AB
555=head1 Reporting Bugs
556
e08634c5
SH
557If you find what you think is a bug, you might check the articles recently
558posted to the comp.lang.perl.misc newsgroup and the perl bug database at
559http://rt.perl.org/perlbug/ . There may also be information at
560http://www.perl.org/ , the Perl Home Page.
44691e6f 561
e08634c5
SH
562If you believe you have an unreported bug, please run the L<perlbug> program
563included with your release. Be sure to trim your bug down to a tiny but
564sufficient test case. Your bug report, along with the output of C<perl -V>,
565will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
566
567If the bug you are reporting has security implications, which make it
e08634c5
SH
568inappropriate to send to a publicly archived mailing list, then please send it
569to perl5-security-report@perl.org. This points to a closed subscription
570unarchived mailing list, which includes all the core committers, who will be
571able to help assess the impact of issues, figure out a resolution, and help
f9001595 572co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
573platforms on which Perl is supported. Please only use this address for
574security issues in the Perl core, not for modules independently distributed on
575CPAN.
44691e6f
AB
576
577=head1 SEE ALSO
578
e08634c5
SH
579The F<Changes> file for an explanation of how to view exhaustive details on
580what changed.
44691e6f
AB
581
582The F<INSTALL> file for how to build Perl.
583
584The F<README> file for general stuff.
585
586The F<Artistic> and F<Copying> files for copyright information.
587
588=cut