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