This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: two more to-do items
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
7a29aa48
FC
3=for comment
4To do:
53f40aba3 Merge branch 'ebcdic' into blead
b65db4bb
FC
6df8c7dee Fix segfault in filehandle duplication
7b66f3475 Fix PerlIO_get_cnt and friends
7a29aa48 8
44691e6f
AB
9=head1 NAME
10
ba03bc34
SH
11[ this is a template for a new perldelta file. Any text flagged as XXX needs
12to be processed before release. ]
13
14perldelta - what is new for perl v5.19.4
e128ab2c 15
4eabcf70 16=head1 DESCRIPTION
6db9054f 17
ba03bc34 18This document describes differences between the 5.19.3 release and the 5.19.4
e08634c5 19release.
6db9054f 20
ba03bc34
SH
21If you are upgrading from an earlier release such as 5.19.2, first read
22L<perl5193delta>, which describes differences between 5.19.2 and 5.19.3.
a3fb66a4 23
ba03bc34 24=head1 Notice
a3fb66a4 25
ba03bc34 26XXX Any important notices here
a3fb66a4 27
ba03bc34 28=head1 Core Enhancements
a3fb66a4 29
ba03bc34
SH
30XXX New core language features go here. Summarize user-visible core language
31enhancements. Particularly prominent performance optimisations could go
32here, but most should go in the L</Performance Enhancements> section.
a3fb66a4 33
ba03bc34 34[ List each enhancement as a =head2 entry ]
a3fb66a4 35
f1591529
TC
36=head2 rand() now uses a consistent random number generator
37
38Previously perl would use a platform specific random number generator,
39varying between the libc C<rand()>, C<random()> or C<drand48()>.
40
41This meant that the quality of perl's random numbers would vary from
42platform to platform, from the 15 bits of C<rand()> on Win32 to
4348-bits on POSIX platforms such as Linux with C<drand48()>.
44
45Perl now uses its own internal C<drand48()> implementation on all
46platforms. [perl #115928]
47
f2ab313d 48=head2 Better 64-bit support
18ae6bbc
FC
49
50On 64-bit platforms, the internal array functions now use 64-bit offsets,
51allowing Perl arrays to hold more than 2**31 elements, if you have the
52memory available.
53
f2ab313d
FC
54The regular expression engine now supporst strings longer than 2**31
55characters. [perl #112790, #116907]
56
ba03bc34 57=head1 Security
a3fb66a4 58
ba03bc34
SH
59XXX Any security-related notices go here. In particular, any security
60vulnerabilities closed should be noted here rather than in the
61L</Selected Bug Fixes> section.
4725e868 62
ba03bc34 63[ List each security issue as a =head2 entry ]
a3fb66a4 64
ba03bc34 65=head1 Incompatible Changes
a3fb66a4 66
e1c60bf3
SH
67=head2 Locale decimal point character no longer leaks outside of
68S<C<use locale>> scope (with the exception of C<$!>)
e46375fa 69
e1c60bf3
SH
70This is actually a bug fix, but some code has come to rely on the bug being
71present, so this change is listed here. The current locale that the program is
72running under is not supposed to be visible to Perl code except within the
73scope of a S<C<use locale>>. However, until now under certain circumstances,
74the character used for a decimal point (often a comma) leaked outside the
75scope.
e46375fa 76
e1c60bf3
SH
77This continues the work released in Perl 5.19.1. It turns out that that did
78not catch all the leaks, including C<printf> and C<sprintf> not respecting
79S<C<use locale>>. If your code is affected by this change, simply add a
80S<C<use locale>>.
e46375fa 81
e1c60bf3
SH
82Now, the only known place where C<'use locale'> is not respected is in the
83stringification of L<$!|perlvar/$!>.
a3fb66a4 84
ba03bc34 85=head1 Deprecations
a3fb66a4 86
ba03bc34 87XXX Any deprecated features, syntax, modules etc. should be listed here.
a3fb66a4 88
ba03bc34 89=head2 Module removals
4725e868 90
ba03bc34 91XXX Remove this section if inapplicable.
669d990b 92
ba03bc34
SH
93The following modules will be removed from the core distribution in a
94future release, and will at that time need to be installed from CPAN.
95Distributions on CPAN which require these modules will need to list them as
96prerequisites.
669d990b 97
ba03bc34
SH
98The core versions of these modules will now issue C<"deprecated">-category
99warnings to alert you to this fact. To silence these deprecation warnings,
100install the modules in question from CPAN.
669d990b 101
ba03bc34
SH
102Note that these are (with rare exceptions) fine modules that you are encouraged
103to continue to use. Their disinclusion from core primarily hinges on their
104necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
105not usually on concerns over their design.
2cf99697 106
ba03bc34 107=over
2cf99697 108
ba03bc34
SH
109XXX Note that deprecated modules should be listed here even if they are listed
110as an updated module in the L</Modules and Pragmata> section.
21d55435 111
ba03bc34 112=back
0f0eae2c 113
ba03bc34 114[ List each other deprecation as a =head2 entry ]
21d55435 115
ba03bc34 116=head1 Performance Enhancements
a3fb66a4 117
ba03bc34 118=over 4
a3fb66a4 119
2c99af42
SH
120=item *
121
e1c60bf3
SH
122The trie performance enhancement for regular expressions has now been extended
123to those compiled under C</iaa>.
2c99af42 124
c0ca71c9 125=back
42bff0d9 126
ba03bc34 127=head1 Modules and Pragmata
195e3ea0 128
ba03bc34
SH
129XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
130go here. If Module::CoreList is updated, generate an initial draft of the
131following sections using F<Porting/corelist-perldelta.pl>, which prints stub
132entries to STDOUT. Results can be pasted in place of the '=head2' entries
133below. A paragraph summary for important changes should then be added by hand.
134In an ideal world, dual-life modules would have a F<Changes> file that could be
135cribbed.
195e3ea0 136
ba03bc34 137[ Within each section, list entries as a =item entry ]
195e3ea0 138
ba03bc34 139=head2 New Modules and Pragmata
195e3ea0
SH
140
141=over 4
142
143=item *
144
ba03bc34 145XXX
195e3ea0
SH
146
147=back
148
ba03bc34 149=head2 Updated Modules and Pragmata
42bff0d9 150
38663f11 151=over 4
42bff0d9
DG
152
153=item *
154
082a4c42
SH
155L<autodie> has been upgraded from version 2.20 to 2.21.
156
157Numerous improvements have been made, many speed-related. See the F<Changes>
158file in the CPAN distribution for full details.
159
160=item *
161
8c24c1f7 162L<B> has been upgraded from version 1.45 to 1.46.
00c5962f
TC
163
164The fix for [perl #118525] introduced a regression in the behaviour of
e1c60bf3
SH
165C<B::CV::GV>, changing the return value from a C<B::SPECIAL> object on a
166C<NULL> C<CvGV> to C<undef>. C<B::CV::GV> again returns a C<B::SPECIAL>
167object in this case. [perl #119351]
00c5962f
TC
168
169=item *
170
8c24c1f7
SH
171L<B::Concise> has been upgraded from version 0.98 to 0.99.
172
5b903226 173The handling of the C<glob> operator, broken since Perl 5.17.6, has been fixed.
8c24c1f7
SH
174
175=item *
176
d5dcec3a
Z
177L<Carp> has been upgraded from version 1.31 to 1.32.
178
6ffbec2c
Z
179=over 4
180
181=item *
182
e1c60bf3
SH
183In stack traces, subroutine arguments that are strings are now quoted in a
184consistent manner, regardless of what characters they contain and how they're
185internally represented.
6ffbec2c
Z
186
187=item *
188
0a9b5e6e
FC
189C<Carp> now takes care not to clobber the status variables C<$!> and
190C<$^E>.
191
192=item *
193
bf4588d0 194C<Carp> now won't vivify the C<overload::StrVal> glob or subroutine or the
bd098b9a 195C<overload> stash.
6ffbec2c
Z
196
197=item *
198
e1c60bf3
SH
199C<Carp> now avoids some unwanted Unicode warnings on older Perls. This doesn't
200affect behaviour with current Perl.
6ffbec2c
Z
201
202=item *
203
e1c60bf3
SH
204C<Carp::Heavy> detects version mismatch with C<Carp>, to give a good error
205message if a current (stub) C<Carp::Heavy> gets loaded by an old C<Carp> that
206expects C<Carp::Heavy> to provide subroutines.
d5dcec3a 207
6ffbec2c
Z
208=back
209
c963f488
SH
210=item *
211
3a76eb28
SH
212L<charnames> has been upgraded from version 1.38 to 1.39.
213
214This module now works on EBCDIC platforms.
215
216=item *
217
53bb269a
SH
218L<CPAN::Meta> has been upgraded from version 2.132140 to 2.132510.
219
220No changes have been made to the installed code other than the version bump to
221keep in sync with the latest CPAN release.
222
223=item *
224
202c41cb
SH
225L<CPAN::Meta::Requirements> has been upgraded from version 2.122 to 2.123.
226
e1c60bf3
SH
227No changes have been made to the installed code other than the version bump to
228keep in sync with the latest CPAN release.
202c41cb
SH
229
230=item *
231
8c24c1f7
SH
232L<Data::Dumper> has been upgraded from version 2.148 to 2.149.
233
5b903226
SH
234This upgrade is part of a larger change to make the array interface 64-bit safe
235by using SSize_t instead of I32 for array indices.
8c24c1f7 236
2f92fb87
SH
237In addition, an EBCDIC fix has been applied.
238
8c24c1f7
SH
239=item *
240
241L<Devel::Peek> has been upgraded from version 1.13 to 1.14.
242
5b903226
SH
243This upgrade is part of a larger change to preserve referential identity when
244passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
245nonexistent array elements.
8c24c1f7 246
2f92fb87
SH
247In addition, C<Dump> with no args was broken in Perl 5.19.3, but has now been
248fixed.
249
8c24c1f7
SH
250=item *
251
252L<DynaLoader> has been upgraded from version 1.19 to 1.20.
253
5b903226
SH
254The documentation now makes it clear, as has always been the case, that
255C<dl_unload_file> is only called automatically to unload all loaded shared
256objects if the perl interpreter was built with the C macro
b228daaa 257DL_UNLOAD_ALL_AT_EXIT defined. Support for GNU DLD has also been removed.
5b903226
SH
258
259=item *
260
369b9ffe 261L<Encode> has been upgraded from version 2.52 to 2.55.
f2c09143
SH
262
263An erroneous early return in C<decode_utf8> has been removed, and a bug in
369b9ffe
SH
264C<_utf8_on> under COW has been fixed. Encode also now uses L<parent> rather
265than L<base> throughout.
f2c09143
SH
266
267=item *
268
33826e50
SH
269L<Exporter> has been upgraded from version 5.69 to 5.70.
270
271A number of typos have been corrected in the documentation.
272
273=item *
274
a0e78e9f 275L<ExtUtils::CBuilder> has been upgraded from version 0.280205 to 0.280212.
2f92fb87 276
a0e78e9f
SH
277No changes have been made to the installed code other than the version bump to
278keep in sync with the latest CPAN release.
2f92fb87
SH
279
280=item *
281
33826e50
SH
282L<ExtUtils::Command> has been upgraded from version 1.17 to 1.18.
283
284No changes have been made to the installed code other than the version bump to
285keep in sync with the latest CPAN release.
286
287=item *
288
3a76eb28 289L<ExtUtils::MakeMaker> has been upgraded from version 6.72 to 6.76.
5b903226
SH
290
291Numerous updates and bug fixes are incorporated. See the F<Changes> file for
292full details.
8c24c1f7
SH
293
294=item *
295
f2c09143
SH
296L<ExtUtils::ParseXS> has been upgraded from version 3.21 to 3.22.
297
33826e50
SH
298No changes have been made to the installed code other than the version bump to
299keep in sync with the latest CPAN release.
f2c09143
SH
300
301=item *
302
77f1e6e4
SH
303L<File::Find> has been upgraded from version 1.24 to 1.25.
304
305Better diagnostics are now provided in the case of a failed C<chdir>.
306
307=item *
308
610ee5e3
TC
309L<File::Glob> has been upgraded from version 1.20 to 1.21.
310
e1c60bf3
SH
311C<glob()> now warns in the context of C<use warnings "syscalls";> if the
312supplied pattern has an internal NUL (C<"\0">) character.
610ee5e3 313
d5dcec3a
Z
314=item *
315
0f07ea36 316L<HTTP::Tiny> has been upgraded from version 0.034 to 0.035.
4403b774
SH
317
318Encoded data from C<post_form> now preserves term order if data is provided as
319an array reference. (They are still sorted for consistency if provided as a
320hash reference.)
321
322=item *
323
3a76eb28
SH
324L<I18N::LangTags> has been upgraded from version 0.39 to 0.40.
325
326Bosnian has now joined Croatian and Serbian in the lists of mutually
327intelligible Slavic languages. [perl #72594]
328
329=item *
330
77f1e6e4
SH
331L<IO> has been upgraded from version 1.28 to 1.29.
332
333A minor internals-only change has been made to the XS code.
334
335=item *
336
e1c60bf3 337L<IPC::Open3> has been upgraded from version 1.15 to 1.16.
8c24c1f7 338
5b903226
SH
339This upgrade is part of a larger change to preserve referential identity when
340passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
341nonexistent array elements.
8c24c1f7
SH
342
343=item *
344
a0109759
SH
345L<Locale::Codes> has been upgraded from version 3.26 to 3.27.
346
347New codes have been added and the (deprecated) set of FIPS-10 country codes has
348been removed.
349
350=item *
351
a8479f0e
TC
352L<Math::BigInt> has been upgraded from version 1.9992 to 1.9993.
353
e1c60bf3
SH
354Cleaned up the L<Math::BigInt> and L<Math::BigFloat> documentation to be more
355consistent with other perl documentation. [perl #86686]
a8479f0e
TC
356
357Added a bint() method for rounding towards zero. [perl #85296]
358
359=item *
360
8c24c1f7
SH
361L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31.
362
5b903226
SH
363This upgrade is part of a larger change to make the array interface 64-bit safe
364by using SSize_t instead of I32 for array indices.
8c24c1f7
SH
365
366=item *
367
37287258
SH
368L<Module::CoreList> has been upgraded from version 2.97 to 2.98.
369
370The list of Perl versions covered has been updated.
1fdd5e53 371
68cdd4b5
SH
372=item *
373
6c52f6c9 374L<Module::Load::Conditional> has been upgraded from version 0.54 to 0.58.
0022aab5
SH
375
376C<requires> has been made more robust. [cpan #83728]
377
378=item *
379
979f1f2b 380L<Module::Metadata> has been upgraded from version 1.000014 to 1.000018.
68cdd4b5
SH
381
382The module's DESCRIPTION has been re-worded regarding safety/security to
bff978fa
SH
383satisfy CVE-2013-1437. Also, versions are now detainted if needed. [cpan
384#88576]
68cdd4b5 385
93f72154
SH
386=item *
387
e1c60bf3 388L<mro> has been upgraded from version 1.13 to 1.14.
8c24c1f7 389
5b903226
SH
390This upgrade is part of a larger change to make the array interface 64-bit safe
391by using SSize_t instead of I32 for array indices.
8c24c1f7
SH
392
393=item *
394
e1c60bf3
SH
395L<parent> has been upgraded from version 0.226 to 0.227.
396
397No changes have been made to the installed code other than the version bump to
398keep in sync with the latest CPAN release.
399
400=item *
401
545c8cda
SH
402L<Parse::CPAN::Meta> has been upgraded from version 1.4405 to 1.4407.
403
404No changes have been made to the installed code other than the version bump to
405keep in sync with the latest CPAN release.
406
407=item *
408
ba58de91 409L<Perl::OSType> has been upgraded from version 1.003 to 1.005.
93f72154
SH
410
411The Unix OSType 'bitrig' has been added.
412
8c24c1f7
SH
413=item *
414
dd741cc9
SH
415L<perlfaq> has been upgraded from version 5.0150043 to 5.0150044.
416
417The use of C<gensym> in a number of examples has been removed, the use of C<&>
418in subroutine calls is now clarified and several new questions have been
419answered.
420
421=item *
422
8c24c1f7
SH
423L<re> has been upgraded from version 0.25 to 0.26.
424
e7f2d651 425A function signature has been corrected in the XS implementation.
8c24c1f7
SH
426
427=item *
428
e1c60bf3
SH
429L<Scalar::Util> has been upgraded from version 1.31 to 1.32.
430
431The documentation of C<blessed> has been improved to mention the fact that
432package "0" is defined but false.
433
434=item *
435
406cccc2
SH
436L<Socket> has been upgraded from version 2.011 to 2.012.
437
438Syntax errors when building on the WinCE platform have been fixed. [cpan #87389]
439
440=item *
441
8c24c1f7
SH
442L<Storable> has been upgraded from version 2.46 to 2.47.
443
5b903226
SH
444This upgrade is part of a larger change to preserve referential identity when
445passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
446nonexistent array elements.
8c24c1f7
SH
447
448=item *
449
2f92fb87
SH
450L<Term::ReadLine> has been upgraded from version 1.10 to 1.14.
451
452Term::ReadLine::EditLine support has been added.
453
454=item *
455
3a76eb28
SH
456L<Time::Piece> has been upgraded from version 1.22 to 1.23.
457
458Day of year parsing (like "%y%j") has been fixed.
459
460=item *
461
60f577e0
SH
462L<Unicode::Collate> has been upgraded from version 0.98 to 0.99.
463
e1c60bf3
SH
464By default, out-of-range values are replaced with C<U+FFFD> (REPLACEMENT
465CHARACTER) when C<UCA_Version> E<gt>= 22, or ignored when C<UCA_Version> E<lt>=
46620. When C<UCA_Version> E<gt>= 22, the weights of out-of-range values can be
467overridden.
60f577e0
SH
468
469=item *
470
3a76eb28
SH
471L<Unicode::UCD> has been upgraded from version 0.53 to 0.54.
472
473This module now works on EBCDIC platforms.
474
475=item *
476
5565c738
SH
477L<version> has been upgraded from version 0.9903 to 0.9904.
478
479No changes have been made to the installed code other than the version bump to
480keep in sync with the latest CPAN release.
481
482=item *
483
8c24c1f7
SH
484L<warnings> has been upgraded from version 1.18 to 1.19.
485
5b903226 486The C<syscalls> warnings category has been added to check for embedded NUL
b8f07b9f 487(C<"\0">) characters in pathnames and string arguments to other system calls.
8c24c1f7
SH
488
489=item *
490
491L<XS::Typemap> has been upgraded from version 0.10 to 0.11.
492
583aa5c2
RS
493=back
494
ba03bc34 495=head2 Removed Modules and Pragmata
a3fb66a4
SH
496
497=over 4
498
499=item *
500
ba03bc34 501XXX
a3fb66a4
SH
502
503=back
504
ba03bc34 505=head1 Documentation
8fecfff0 506
ba03bc34
SH
507XXX Changes to files in F<pod/> go here. Consider grouping entries by
508file and be sure to link to the appropriate page, e.g. L<perlfunc>.
8fecfff0 509
ba03bc34 510=head2 New Documentation
8fecfff0 511
ba03bc34 512XXX Changes which create B<new> files in F<pod/> go here.
195e3ea0 513
ba03bc34 514=head3 L<XXX>
195e3ea0 515
ba03bc34 516XXX Description of the purpose of the new file here
195e3ea0 517
ba03bc34 518=head2 Changes to Existing Documentation
195e3ea0 519
ba03bc34
SH
520XXX Changes which significantly change existing files in F<pod/> go here.
521However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
522section.
195e3ea0 523
ba03bc34 524=head3 L<XXX>
a3fb66a4
SH
525
526=over 4
527
528=item *
529
ba03bc34 530XXX Description of the change here
a3fb66a4
SH
531
532=back
533
c0ca71c9
AP
534=head1 Diagnostics
535
536The following additions or changes have been made to diagnostic output,
537including warnings and fatal error messages. For the complete list of
538diagnostic messages, see L<perldiag>.
539
ba03bc34
SH
540XXX New or changed warnings emitted by the core's C<C> code go here. Also
541include any changes in L<perldiag> that reconcile it to the C<C> code.
542
c0ca71c9
AP
543=head2 New Diagnostics
544
ba03bc34
SH
545XXX Newly added diagnostic messages go under here, separated into New Errors
546and New Warnings
547
12dcbffb 548=head3 New Errors
583aa5c2 549
38663f11 550=over 4
583aa5c2 551
b8a02ff1 552=item *
583aa5c2 553
ba03bc34 554XXX L<message|perldiag/"message">
583aa5c2 555
b8a02ff1 556=back
583aa5c2 557
12dcbffb 558=head3 New Warnings
96d496e4 559
38663f11 560=over 4
b8a02ff1
DG
561
562=item *
563
610ee5e3
TC
564L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s">
565
b8f07b9f
SH
566(W syscalls) Embedded \0 characters in pathnames or other system call arguments
567produce a warning as of 5.20. The parts after the \0 were formerly ignored by
568system calls.
487a71ff 569
12dcbffb 570=back
1310e590 571
ba03bc34
SH
572=head2 Changes to Existing Diagnostics
573
574XXX Changes (i.e. rewording) of diagnostic messages go here
e727f86a 575
12dcbffb 576=over 4
e727f86a 577
81ca6d44
FC
578=item *
579
c1d900c3
BF
580Warnings and errors from the regexp engine are now UTF-8 clean
581
582=item *
583
584The "Unknown switch condition" error message has some slight changes.
585This error triggers when there is an unknown condition in a (?(foo))
586conditional; The error message used to read:
587
588 Unknown switch condition (?(%s in regex;
589
590But what %s could be was mostly up to luck; For (?(foobar)), you
591might've seen "fo" or "f". For Unicode characters, you'd generally
592get a corrupted string.
593The message was changed to read:
594
595 Unknown switch condition (?(...)) in regex;
596
597And additionally, the '<-- HERE' marker in the error will now point
598to the correct spot in the regex.
e38fc308 599
ba03bc34 600=back
a34da6c4 601
ba03bc34 602=head1 Utility Changes
a34da6c4 603
ba03bc34
SH
604XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
605Most of these are built within the directories F<utils> and F<x2p>.
558673e6 606
ba03bc34
SH
607[ List utility changes as a =head3 entry for each utility and =item
608entries for each change
609Use L<XXX> with program names to get proper documentation linking. ]
558673e6 610
b2d74da6 611=head3 L<find2perl>
47a7c93d 612
12dcbffb 613=over 4
b5a80c26 614
7f1d4316
FC
615=item *
616
f1c106f5 617L<find2perl> now handles C<?> wildcards correctly. [perl #113054]
7f1d4316 618
ba03bc34 619=back
ef947715 620
ba03bc34 621=head1 Configuration and Compilation
ef947715 622
ba03bc34
SH
623XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
624go here. Any other changes to the Perl build process should be listed here.
625However, any platform-specific changes should be listed in the
626L</Platform Support> section, instead.
02bef66e 627
ba03bc34 628[ List changes as a =item entry ].
d30fb844 629
12dcbffb 630=over 4
21c01741 631
467582e8
FC
632=item *
633
e1c60bf3
SH
634The F<Makefile.PL> for C<SDBM_File> now generates a better F<Makefile>, which
635avoids a race condition during parallel makes, which could cause the build to
636fail. This is the last known parallel make problem (on *nix platforms), and
637therefore we believe that a parallel make should now always be error free.
4d106cc5
NC
638
639=for comment
640
641Strictly only for a build where build files such as F<Makefile.SH> have not
642been updated by C<git> in an already configured and built tree.
467582e8 643
ba03bc34 644=back
64da853d 645
ba03bc34 646=head1 Testing
8847717e 647
ba03bc34
SH
648XXX Any significant changes to the testing of a freshly built perl should be
649listed here. Changes which create B<new> files in F<t/> go here as do any
650large changes to the testing harness (e.g. when parallel testing was added).
651Changes to existing files in F<t/> aren't worth summarizing, although the bugs
652that they represent may be covered elsewhere.
8847717e 653
ba03bc34 654[ List each test improvement as a =item entry ]
f1b856da 655
ba03bc34 656=over 4
f1b856da 657
eaed284b
FC
658=item *
659
5b903226 660The test script F<t/bigmem/regexp.t> has been added to test that regular
28f52e64 661expression matches on very large strings now succeed as expected.
8c24c1f7
SH
662
663=item *
664
5b903226
SH
665Various cases of C<die>, C<last>, C<goto> and C<exit> triggering C<DESTROY> are
666now tested by the new test script F<t/op/rt119311.t>.
8c24c1f7
SH
667
668=item *
669
5b903226
SH
670The new test script F<t/win32/signal.t> tests that C<$!> and C<$^E> are now
671preserved across signal handlers by the Win32 signal emulation code.
8c24c1f7
SH
672
673=item *
674
5b903226
SH
675The test script F<t/x2p/find2perl.t> has been added to test the F<find2perl>
676program on platforms where it is practical to do so.
eaed284b 677
ba03bc34 678=back
0335212c 679
ba03bc34 680=head1 Platform Support
0335212c 681
ba03bc34 682XXX Any changes to platform support should be listed in the sections below.
c3e455cf 683
ba03bc34
SH
684[ Within the sections, list each platform as a =item entry with specific
685changes as paragraphs below it. ]
c3e455cf 686
ba03bc34 687=head2 New Platforms
019705bc 688
ba03bc34
SH
689XXX List any platforms that this version of perl compiles on, that previous
690versions did not. These will either be enabled by new files in the F<hints/>
691directories, or new subdirectories and F<README> files at the top level of the
692source tree.
019705bc 693
ba03bc34 694=over 4
25921d77 695
44d412d1 696=item Bitrig
25921d77 697
489ee6b6 698Compile support has been added for Bitrig, a fork of OpenBSD.
28ea507e 699
ba03bc34 700=back
28ea507e 701
ba03bc34 702=head2 Discontinued Platforms
28ea507e 703
ba03bc34 704XXX List any platforms that this version of perl no longer compiles on.
28ea507e 705
7b0e9f13
AD
706Configure hints and conditional code for several very old platforms
707has been removed. We have not received reports for these in many years,
708typically not since perl-5.6.0.
709
ba03bc34 710=over 4
074d6753 711
7b0e9f13 712=item AT&T 3b1
074d6753 713
7b0e9f13
AD
714Configure support for the 3b1, also known as the AT&T Unix PC (and the
715similar AT&T 7300), has been removed.
4e5b563d 716
ba03bc34 717=back
4e5b563d 718
ba03bc34 719=head2 Platform-Specific Notes
ee818f56 720
ba03bc34
SH
721XXX List any changes for specific platforms. This could include configuration
722and compilation changes or changes in portability/compatibility. However,
723changes within modules for platforms should generally be listed in the
724L</Modules and Pragmata> section.
ee818f56 725
ba03bc34 726=over 4
c054cc81 727
8c24c1f7 728=item WinCE
c054cc81 729
5b903226
SH
730The building of XS modules has largely been restored. Several still cannot
731(yet) be built but it is now possible to build Perl on WinCE with only a couple
732of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be
733incorporated soon.
efcbb8b2 734
ba03bc34 735=back
efcbb8b2 736
ba03bc34 737=head1 Internal Changes
36813eeb 738
ba03bc34
SH
739XXX Changes which affect the interface available to C<XS> code go here. Other
740significant internal changes for future core maintainers should be noted as
741well.
36813eeb 742
ba03bc34 743[ List each change as a =item entry ]
52937067 744
ba03bc34 745=over 4
52937067 746
6760cac5
FC
747=item *
748
fba42467
NC
749The internal representation has changed for the match variables C<$1>, C<$2>
750I<etc.>, C<$`>, C<$&>, C<$'>, C<${^PREMATCH}>, C<${^MATCH}> and
751C<${^POSTMATCH>. It uses slightly less memory, avoids string comparisons
752and numeric conversions during lookup, and uses 23 fewer lines of C. This
753change should not affect any external code.
671f9ff7 754
c2ee494e
FC
755=item *
756
757Arrays now use NULL internally to represent unused slots, instead of
758C<&PL_sv_undef>. C<&PL_sv_undef> is no longer treated as a special value,
759so C<av_store(av, 0, &PL_sv_undef)> will cause element 0 of that array to
760hold a read-only undefined scalar. C<$array[0] = anything> will croak and
761C<\$array[0]> will compare equal to C<\undef>.
762
ba03bc34 763=back
671f9ff7 764
ba03bc34 765=head1 Selected Bug Fixes
912a9a8f 766
ba03bc34
SH
767XXX Important bug fixes in the core language are summarized here. Bug fixes in
768files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
912a9a8f 769
ba03bc34 770[ List each fix as a =item entry ]
0d25b9d4 771
ba03bc34 772=over 4
0d25b9d4 773
a82207ba
FC
774=item *
775
e1c60bf3 776The value of C<$^E> is now saved across signal handlers on Win32. [perl #85104]
18e2e6cd 777
85037c5c
FC
778=item *
779
780A lexical filehandle (as in C<open my $fh...>) is usually given a name
781based on the current package and the name of the variable; e.g.,
782"main::$fh". Under recursion, the filehandle was losing the "$fh" part of
783the name. This has been fixed.
784
0664879b
FC
785=item *
786
787Perl 5.19.3 accidentally extended the previous bug to all closures, even
788when not called recursively; i.e., lexical handles in closure would always
789be called "main::" or "MyPackage::" etc. This has been fixed.
790
343e7167
FC
791=item *
792
793Uninitialized values returned by XSUBs are no longer exempt from
794uninitialized warnings. [perl #118693]
795
1261f9a2
FC
796=item *
797
798C<elsif ("")> no longer erroneous produces a warning about void context.
799[perl #118753]
800
c2ee494e
FC
801=item *
802
803Passing C<undef> to a subroutine now causes @_ to contain the same read-only undefined scalar that C<undef> returns. Furthermore, C<exists $_[0]> will now return true if C<undef> was the first argument.
804[perl #7508, #109726].
805
21c314ca
FC
806=item *
807
808Passing a nonexistent array element to a subroutine does not usually
809autovivify it unless the subroutine modifies its argument. This did not
810work correctly with negative indices and with nonexistent elements within
811the array. The element would be vivified immediately. The delayed
812vivification has been extended to work with those. [perl #118691]
813
7a7c28da
FC
814=item *
815
816Assigning references or globs to the scalar returned by C<$#foo> after the
0d72ebc0
FC
817@foo array has been freed no longer causes assertion failures on debugging
818builds and memory leaks on regular builds.
7a7c28da 819
8bdbe216
FC
820=item *
821
822Perl 5.19.2 threw line numbers off after some cases of line breaks
823following keywords, such as
824
825 1 unless
826 1;
827
828This has been fixed. [perl #118931]
829
96c0ab99
FC
830=item *
831
832On 64-bit platforms, large ranges like 1..1000000000000 no longer crash,
833but eat up all your memory instead. [perl #119161]
834
c2823449
FC
835=item *
836
837C<__DATA__> now puts the C<DATA> handle in the right package, even if the
838current package has been renamed through glob assignment.
839
ab82aa51
FC
840=item *
841
842The string position set by C<pos> could shift if the string changed
843representation internally to or from utf8. This could happen, e.g., with
844references to objects with string overloading.
845
c4403db5
FC
846=item *
847
cabe2f6f
FC
848Taking references to the return values of two C<pos> calls with the same
849argument, and then assigning a reference to one and C<undef> to the other,
850could result in assertion failures or memory leaks.
851
852=item *
853
c4403db5
FC
854Elements of C<@-> and C<@+> now update correctly when they refer to
855nonexistent captures. Previously, a referenced element (C<$ref = \$-[1]>)
856could refer to the wrong match after subsequent matches.
857
e7f2d651
FC
858=item *
859
860When C<die>, C<last>, C<next>, C<redo>, C<goto> and C<exit> unwind the
861scope, it is possible for DESTROY recursively to call a subroutine or
862format that is currently being exited. It that case, sometimes the lexical
863variables inside the sub would start out having values from the outer call,
864instead of being undefined as they should. This has been fixed.
865[perl #119311].
866
d66ad208
FC
867=item *
868
869C<${^MPEN>} is no longer treated as a synonym for C<${^MATCH}>.
870
ab70e266
FC
871=item *
872
873Perl now tries a little harder to return the correct line number in
874C<(caller)[2]>. [perl #115768]
875
ae66f305
FC
876=item *
877
878Line numbers inside multiline quote-like operators are now reported correctly. [perl #3643]
879
880=item *
881
882C<#line> directives inside code embedded in quote-like operators are now respected.
883
f8f2d1ac
FC
884=item *
885
886Perl 5.19.2 inadvertently stopped some lines of code from being available
887to the debugger if C<< => >> occurred at the beginning of a line and the
888previous line ended with a keyword. This is now fixed.
889
ac29d451
FC
890=item *
891
892An optimisation in Perl 5.18 made incorrect assumptions causing a bad
893interaction with the L<Devel::CallParser> CPAN module. If the module was
894loaded, then lexical variables declared in separate statements following a C<my(...)> list might fail to be cleared on scope exit.
895
f34cd7c8
FC
896=item *
897
898C<&xsub> and C<goto &xsub> calls now allow the called subroutine to
899autovivify elements of @_.
900
6f9296e1
FC
901=item *
902
903C<&xsub> and C<goto &xsub> no longer crash if C<*_> has been undefined and
904has no ARRAY entry (i.e., @_ does not exist).
905
ba03bc34 906=back
18e2e6cd 907
ba03bc34 908=head1 Known Problems
a82207ba 909
ba03bc34
SH
910XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
911tests that had to be C<TODO>ed for the release would be noted here. Unfixed
912platform specific bugs also go here.
31d5dc65 913
ba03bc34 914[ List each fix as a =item entry ]
31d5dc65 915
ba03bc34 916=over 4
31d5dc65 917
74dac2b5
FC
918=item *
919
ba03bc34 920XXX
74dac2b5 921
ba03bc34 922=back
8fecfff0 923
ba03bc34 924=head1 Obituary
8fecfff0 925
ba03bc34
SH
926XXX If any significant core contributor has died, we've added a short obituary
927here.
d7bfa554 928
583aa5c2 929=head1 Acknowledgements
a75569c0 930
ba03bc34
SH
931XXX Generate this with:
932
933 perl Porting/acknowledgements.pl v5.19.3..HEAD
f5b73711 934
44691e6f
AB
935=head1 Reporting Bugs
936
e08634c5
SH
937If you find what you think is a bug, you might check the articles recently
938posted to the comp.lang.perl.misc newsgroup and the perl bug database at
939http://rt.perl.org/perlbug/ . There may also be information at
940http://www.perl.org/ , the Perl Home Page.
44691e6f 941
e08634c5
SH
942If you believe you have an unreported bug, please run the L<perlbug> program
943included with your release. Be sure to trim your bug down to a tiny but
944sufficient test case. Your bug report, along with the output of C<perl -V>,
945will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
946
947If the bug you are reporting has security implications, which make it
e08634c5
SH
948inappropriate to send to a publicly archived mailing list, then please send it
949to perl5-security-report@perl.org. This points to a closed subscription
950unarchived mailing list, which includes all the core committers, who will be
951able to help assess the impact of issues, figure out a resolution, and help
f9001595 952co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
953platforms on which Perl is supported. Please only use this address for
954security issues in the Perl core, not for modules independently distributed on
955CPAN.
44691e6f
AB
956
957=head1 SEE ALSO
958
e08634c5
SH
959The F<Changes> file for an explanation of how to view exhaustive details on
960what changed.
44691e6f
AB
961
962The F<INSTALL> file for how to build Perl.
963
964The F<README> file for general stuff.
965
966The F<Artistic> and F<Copying> files for copyright information.
967
968=cut