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