This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta - Restore 525553cafc, accidentally undone by e7f2d65136
[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
94902151
SH
430This upgrade is part of a larger change to support 64-bit string lengths in the
431regular expression engine.
8c24c1f7
SH
432
433=item *
434
e1c60bf3
SH
435L<Scalar::Util> has been upgraded from version 1.31 to 1.32.
436
437The documentation of C<blessed> has been improved to mention the fact that
438package "0" is defined but false.
439
440=item *
441
406cccc2
SH
442L<Socket> has been upgraded from version 2.011 to 2.012.
443
444Syntax errors when building on the WinCE platform have been fixed. [cpan #87389]
445
446=item *
447
8c24c1f7
SH
448L<Storable> has been upgraded from version 2.46 to 2.47.
449
5b903226
SH
450This upgrade is part of a larger change to preserve referential identity when
451passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
452nonexistent array elements.
8c24c1f7
SH
453
454=item *
455
2f92fb87
SH
456L<Term::ReadLine> has been upgraded from version 1.10 to 1.14.
457
458Term::ReadLine::EditLine support has been added.
459
460=item *
461
3a76eb28
SH
462L<Time::Piece> has been upgraded from version 1.22 to 1.23.
463
464Day of year parsing (like "%y%j") has been fixed.
465
466=item *
467
60f577e0
SH
468L<Unicode::Collate> has been upgraded from version 0.98 to 0.99.
469
e1c60bf3
SH
470By default, out-of-range values are replaced with C<U+FFFD> (REPLACEMENT
471CHARACTER) when C<UCA_Version> E<gt>= 22, or ignored when C<UCA_Version> E<lt>=
47220. When C<UCA_Version> E<gt>= 22, the weights of out-of-range values can be
473overridden.
60f577e0
SH
474
475=item *
476
3a76eb28
SH
477L<Unicode::UCD> has been upgraded from version 0.53 to 0.54.
478
479This module now works on EBCDIC platforms.
480
481=item *
482
5565c738
SH
483L<version> has been upgraded from version 0.9903 to 0.9904.
484
485No changes have been made to the installed code other than the version bump to
486keep in sync with the latest CPAN release.
487
488=item *
489
8c24c1f7
SH
490L<warnings> has been upgraded from version 1.18 to 1.19.
491
5b903226 492The C<syscalls> warnings category has been added to check for embedded NUL
b8f07b9f 493(C<"\0">) characters in pathnames and string arguments to other system calls.
8c24c1f7
SH
494
495=item *
496
497L<XS::Typemap> has been upgraded from version 0.10 to 0.11.
498
583aa5c2
RS
499=back
500
ba03bc34 501=head2 Removed Modules and Pragmata
a3fb66a4
SH
502
503=over 4
504
505=item *
506
ba03bc34 507XXX
a3fb66a4
SH
508
509=back
510
ba03bc34 511=head1 Documentation
8fecfff0 512
ba03bc34
SH
513XXX Changes to files in F<pod/> go here. Consider grouping entries by
514file and be sure to link to the appropriate page, e.g. L<perlfunc>.
8fecfff0 515
ba03bc34 516=head2 New Documentation
8fecfff0 517
ba03bc34 518XXX Changes which create B<new> files in F<pod/> go here.
195e3ea0 519
ba03bc34 520=head3 L<XXX>
195e3ea0 521
ba03bc34 522XXX Description of the purpose of the new file here
195e3ea0 523
ba03bc34 524=head2 Changes to Existing Documentation
195e3ea0 525
ba03bc34
SH
526XXX Changes which significantly change existing files in F<pod/> go here.
527However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
528section.
195e3ea0 529
ba03bc34 530=head3 L<XXX>
a3fb66a4
SH
531
532=over 4
533
534=item *
535
ba03bc34 536XXX Description of the change here
a3fb66a4
SH
537
538=back
539
c0ca71c9
AP
540=head1 Diagnostics
541
542The following additions or changes have been made to diagnostic output,
543including warnings and fatal error messages. For the complete list of
544diagnostic messages, see L<perldiag>.
545
ba03bc34
SH
546XXX New or changed warnings emitted by the core's C<C> code go here. Also
547include any changes in L<perldiag> that reconcile it to the C<C> code.
548
c0ca71c9
AP
549=head2 New Diagnostics
550
ba03bc34
SH
551XXX Newly added diagnostic messages go under here, separated into New Errors
552and New Warnings
553
12dcbffb 554=head3 New Errors
583aa5c2 555
38663f11 556=over 4
583aa5c2 557
b8a02ff1 558=item *
583aa5c2 559
ba03bc34 560XXX L<message|perldiag/"message">
583aa5c2 561
b8a02ff1 562=back
583aa5c2 563
12dcbffb 564=head3 New Warnings
96d496e4 565
38663f11 566=over 4
b8a02ff1
DG
567
568=item *
569
610ee5e3
TC
570L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s">
571
b8f07b9f
SH
572(W syscalls) Embedded \0 characters in pathnames or other system call arguments
573produce a warning as of 5.20. The parts after the \0 were formerly ignored by
574system calls.
487a71ff 575
12dcbffb 576=back
1310e590 577
ba03bc34
SH
578=head2 Changes to Existing Diagnostics
579
580XXX Changes (i.e. rewording) of diagnostic messages go here
e727f86a 581
12dcbffb 582=over 4
e727f86a 583
81ca6d44
FC
584=item *
585
c1d900c3
BF
586Warnings and errors from the regexp engine are now UTF-8 clean
587
588=item *
589
590The "Unknown switch condition" error message has some slight changes.
591This error triggers when there is an unknown condition in a (?(foo))
592conditional; The error message used to read:
593
594 Unknown switch condition (?(%s in regex;
595
596But what %s could be was mostly up to luck; For (?(foobar)), you
597might've seen "fo" or "f". For Unicode characters, you'd generally
598get a corrupted string.
599The message was changed to read:
600
601 Unknown switch condition (?(...)) in regex;
602
603And additionally, the '<-- HERE' marker in the error will now point
604to the correct spot in the regex.
e38fc308 605
ba03bc34 606=back
a34da6c4 607
ba03bc34 608=head1 Utility Changes
a34da6c4 609
ba03bc34
SH
610XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
611Most of these are built within the directories F<utils> and F<x2p>.
558673e6 612
ba03bc34
SH
613[ List utility changes as a =head3 entry for each utility and =item
614entries for each change
615Use L<XXX> with program names to get proper documentation linking. ]
558673e6 616
b2d74da6 617=head3 L<find2perl>
47a7c93d 618
12dcbffb 619=over 4
b5a80c26 620
7f1d4316
FC
621=item *
622
f1c106f5 623L<find2perl> now handles C<?> wildcards correctly. [perl #113054]
7f1d4316 624
ba03bc34 625=back
ef947715 626
ba03bc34 627=head1 Configuration and Compilation
ef947715 628
ba03bc34
SH
629XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
630go here. Any other changes to the Perl build process should be listed here.
631However, any platform-specific changes should be listed in the
632L</Platform Support> section, instead.
02bef66e 633
ba03bc34 634[ List changes as a =item entry ].
d30fb844 635
12dcbffb 636=over 4
21c01741 637
467582e8
FC
638=item *
639
e1c60bf3
SH
640The F<Makefile.PL> for C<SDBM_File> now generates a better F<Makefile>, which
641avoids a race condition during parallel makes, which could cause the build to
642fail. This is the last known parallel make problem (on *nix platforms), and
643therefore we believe that a parallel make should now always be error free.
4d106cc5
NC
644
645=for comment
646
647Strictly only for a build where build files such as F<Makefile.SH> have not
648been updated by C<git> in an already configured and built tree.
467582e8 649
ba03bc34 650=back
64da853d 651
ba03bc34 652=head1 Testing
8847717e 653
ba03bc34
SH
654XXX Any significant changes to the testing of a freshly built perl should be
655listed here. Changes which create B<new> files in F<t/> go here as do any
656large changes to the testing harness (e.g. when parallel testing was added).
657Changes to existing files in F<t/> aren't worth summarizing, although the bugs
658that they represent may be covered elsewhere.
8847717e 659
ba03bc34 660[ List each test improvement as a =item entry ]
f1b856da 661
ba03bc34 662=over 4
f1b856da 663
eaed284b
FC
664=item *
665
5b903226 666The test script F<t/bigmem/regexp.t> has been added to test that regular
28f52e64 667expression matches on very large strings now succeed as expected.
8c24c1f7
SH
668
669=item *
670
5b903226
SH
671Various cases of C<die>, C<last>, C<goto> and C<exit> triggering C<DESTROY> are
672now tested by the new test script F<t/op/rt119311.t>.
8c24c1f7
SH
673
674=item *
675
5b903226
SH
676The new test script F<t/win32/signal.t> tests that C<$!> and C<$^E> are now
677preserved across signal handlers by the Win32 signal emulation code.
8c24c1f7
SH
678
679=item *
680
5b903226
SH
681The test script F<t/x2p/find2perl.t> has been added to test the F<find2perl>
682program on platforms where it is practical to do so.
eaed284b 683
ba03bc34 684=back
0335212c 685
ba03bc34 686=head1 Platform Support
0335212c 687
ba03bc34 688XXX Any changes to platform support should be listed in the sections below.
c3e455cf 689
ba03bc34
SH
690[ Within the sections, list each platform as a =item entry with specific
691changes as paragraphs below it. ]
c3e455cf 692
ba03bc34 693=head2 New Platforms
019705bc 694
ba03bc34
SH
695XXX List any platforms that this version of perl compiles on, that previous
696versions did not. These will either be enabled by new files in the F<hints/>
697directories, or new subdirectories and F<README> files at the top level of the
698source tree.
019705bc 699
ba03bc34 700=over 4
25921d77 701
44d412d1 702=item Bitrig
25921d77 703
489ee6b6 704Compile support has been added for Bitrig, a fork of OpenBSD.
28ea507e 705
ba03bc34 706=back
28ea507e 707
ba03bc34 708=head2 Discontinued Platforms
28ea507e 709
ba03bc34 710XXX List any platforms that this version of perl no longer compiles on.
28ea507e 711
7b0e9f13
AD
712Configure hints and conditional code for several very old platforms
713has been removed. We have not received reports for these in many years,
714typically not since perl-5.6.0.
715
ba03bc34 716=over 4
074d6753 717
7b0e9f13 718=item AT&T 3b1
074d6753 719
7b0e9f13
AD
720Configure support for the 3b1, also known as the AT&T Unix PC (and the
721similar AT&T 7300), has been removed.
4e5b563d 722
ba03bc34 723=back
4e5b563d 724
ba03bc34 725=head2 Platform-Specific Notes
ee818f56 726
ba03bc34
SH
727XXX List any changes for specific platforms. This could include configuration
728and compilation changes or changes in portability/compatibility. However,
729changes within modules for platforms should generally be listed in the
730L</Modules and Pragmata> section.
ee818f56 731
ba03bc34 732=over 4
c054cc81 733
8c24c1f7 734=item WinCE
c054cc81 735
5b903226
SH
736The building of XS modules has largely been restored. Several still cannot
737(yet) be built but it is now possible to build Perl on WinCE with only a couple
738of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be
739incorporated soon.
efcbb8b2 740
ba03bc34 741=back
efcbb8b2 742
ba03bc34 743=head1 Internal Changes
36813eeb 744
ba03bc34
SH
745XXX Changes which affect the interface available to C<XS> code go here. Other
746significant internal changes for future core maintainers should be noted as
747well.
36813eeb 748
ba03bc34 749[ List each change as a =item entry ]
52937067 750
ba03bc34 751=over 4
52937067 752
6760cac5
FC
753=item *
754
fba42467
NC
755The internal representation has changed for the match variables C<$1>, C<$2>
756I<etc.>, C<$`>, C<$&>, C<$'>, C<${^PREMATCH}>, C<${^MATCH}> and
757C<${^POSTMATCH>. It uses slightly less memory, avoids string comparisons
758and numeric conversions during lookup, and uses 23 fewer lines of C. This
759change should not affect any external code.
671f9ff7 760
c2ee494e
FC
761=item *
762
763Arrays now use NULL internally to represent unused slots, instead of
764C<&PL_sv_undef>. C<&PL_sv_undef> is no longer treated as a special value,
765so C<av_store(av, 0, &PL_sv_undef)> will cause element 0 of that array to
766hold a read-only undefined scalar. C<$array[0] = anything> will croak and
767C<\$array[0]> will compare equal to C<\undef>.
768
ba03bc34 769=back
671f9ff7 770
ba03bc34 771=head1 Selected Bug Fixes
912a9a8f 772
ba03bc34
SH
773XXX Important bug fixes in the core language are summarized here. Bug fixes in
774files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
912a9a8f 775
ba03bc34 776[ List each fix as a =item entry ]
0d25b9d4 777
ba03bc34 778=over 4
0d25b9d4 779
a82207ba
FC
780=item *
781
e1c60bf3 782The value of C<$^E> is now saved across signal handlers on Win32. [perl #85104]
18e2e6cd 783
85037c5c
FC
784=item *
785
786A lexical filehandle (as in C<open my $fh...>) is usually given a name
787based on the current package and the name of the variable; e.g.,
788"main::$fh". Under recursion, the filehandle was losing the "$fh" part of
789the name. This has been fixed.
790
0664879b
FC
791=item *
792
793Perl 5.19.3 accidentally extended the previous bug to all closures, even
794when not called recursively; i.e., lexical handles in closure would always
795be called "main::" or "MyPackage::" etc. This has been fixed.
796
343e7167
FC
797=item *
798
799Uninitialized values returned by XSUBs are no longer exempt from
800uninitialized warnings. [perl #118693]
801
1261f9a2
FC
802=item *
803
804C<elsif ("")> no longer erroneous produces a warning about void context.
805[perl #118753]
806
c2ee494e
FC
807=item *
808
809Passing 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.
810[perl #7508, #109726].
811
21c314ca
FC
812=item *
813
814Passing a nonexistent array element to a subroutine does not usually
815autovivify it unless the subroutine modifies its argument. This did not
816work correctly with negative indices and with nonexistent elements within
817the array. The element would be vivified immediately. The delayed
818vivification has been extended to work with those. [perl #118691]
819
7a7c28da
FC
820=item *
821
822Assigning references or globs to the scalar returned by C<$#foo> after the
0d72ebc0
FC
823@foo array has been freed no longer causes assertion failures on debugging
824builds and memory leaks on regular builds.
7a7c28da 825
8bdbe216
FC
826=item *
827
828Perl 5.19.2 threw line numbers off after some cases of line breaks
829following keywords, such as
830
831 1 unless
832 1;
833
834This has been fixed. [perl #118931]
835
96c0ab99
FC
836=item *
837
838On 64-bit platforms, large ranges like 1..1000000000000 no longer crash,
839but eat up all your memory instead. [perl #119161]
840
c2823449
FC
841=item *
842
843C<__DATA__> now puts the C<DATA> handle in the right package, even if the
844current package has been renamed through glob assignment.
845
ab82aa51
FC
846=item *
847
848The string position set by C<pos> could shift if the string changed
849representation internally to or from utf8. This could happen, e.g., with
850references to objects with string overloading.
851
c4403db5
FC
852=item *
853
cabe2f6f
FC
854Taking references to the return values of two C<pos> calls with the same
855argument, and then assigning a reference to one and C<undef> to the other,
856could result in assertion failures or memory leaks.
857
858=item *
859
c4403db5
FC
860Elements of C<@-> and C<@+> now update correctly when they refer to
861nonexistent captures. Previously, a referenced element (C<$ref = \$-[1]>)
862could refer to the wrong match after subsequent matches.
863
e7f2d651
FC
864=item *
865
866When C<die>, C<last>, C<next>, C<redo>, C<goto> and C<exit> unwind the
867scope, it is possible for DESTROY recursively to call a subroutine or
868format that is currently being exited. It that case, sometimes the lexical
869variables inside the sub would start out having values from the outer call,
870instead of being undefined as they should. This has been fixed.
871[perl #119311].
872
d66ad208
FC
873=item *
874
875C<${^MPEN>} is no longer treated as a synonym for C<${^MATCH}>.
876
ab70e266
FC
877=item *
878
879Perl now tries a little harder to return the correct line number in
880C<(caller)[2]>. [perl #115768]
881
ae66f305
FC
882=item *
883
884Line numbers inside multiline quote-like operators are now reported correctly. [perl #3643]
885
886=item *
887
888C<#line> directives inside code embedded in quote-like operators are now respected.
889
f8f2d1ac
FC
890=item *
891
bc86bb16
FC
892Line numbers are now correct inside the second here-doc when two here-doc
893markers occur on the same line.
894
895=item *
896
b3c26d51
FC
897Starting with Perl 5.12, line numbers were off by one if the B<-d> switch
898was used on the #! line. Now they are correct.
899
900=item *
901
f8f2d1ac
FC
902Perl 5.19.2 inadvertently stopped some lines of code from being available
903to the debugger if C<< => >> occurred at the beginning of a line and the
904previous line ended with a keyword. This is now fixed.
905
ac29d451
FC
906=item *
907
b3c26d51
FC
908Perl 5.19.2 allowed the PERL5DB environment variable to contain multiple
909lines of code. But those lines were not made available to the debugger.
910Now the are all stuffed into line number 0, accessible via C<$dbline[0]>
911in the debugger.
912
913=item *
914
ac29d451
FC
915An optimisation in Perl 5.18 made incorrect assumptions causing a bad
916interaction with the L<Devel::CallParser> CPAN module. If the module was
917loaded, then lexical variables declared in separate statements following a C<my(...)> list might fail to be cleared on scope exit.
918
f34cd7c8
FC
919=item *
920
921C<&xsub> and C<goto &xsub> calls now allow the called subroutine to
922autovivify elements of @_.
923
6f9296e1
FC
924=item *
925
926C<&xsub> and C<goto &xsub> no longer crash if C<*_> has been undefined and
927has no ARRAY entry (i.e., @_ does not exist).
928
82d5eae5
FC
929=item *
930
1144b44d
FC
931C<&xsub> and C<goto &xsub> now work with tied @_.
932
933=item *
934
82d5eae5
FC
935Overlong identifiers no longer cause a buffer overflow (and a crash). They
936started doing so in Perl 5.18.
937
cfbe45f9
FC
938=item *
939
940The warning "Scalar value @hash{foo} better written as $hash{foo}" now
941produces far fewer false positives. In particular,
942C<@hash{+function_returning_a_list}> and C<@hash{ qw "foo bar baz" }> no
943longer warn. The same applies to array slices. [perl #28380, #114024]
944
ba03bc34 945=back
18e2e6cd 946
ba03bc34 947=head1 Known Problems
a82207ba 948
ba03bc34
SH
949XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
950tests that had to be C<TODO>ed for the release would be noted here. Unfixed
951platform specific bugs also go here.
31d5dc65 952
ba03bc34 953[ List each fix as a =item entry ]
31d5dc65 954
ba03bc34 955=over 4
31d5dc65 956
74dac2b5
FC
957=item *
958
ba03bc34 959XXX
74dac2b5 960
ba03bc34 961=back
8fecfff0 962
ba03bc34 963=head1 Obituary
8fecfff0 964
ba03bc34
SH
965XXX If any significant core contributor has died, we've added a short obituary
966here.
d7bfa554 967
583aa5c2 968=head1 Acknowledgements
a75569c0 969
ba03bc34
SH
970XXX Generate this with:
971
972 perl Porting/acknowledgements.pl v5.19.3..HEAD
f5b73711 973
44691e6f
AB
974=head1 Reporting Bugs
975
e08634c5
SH
976If you find what you think is a bug, you might check the articles recently
977posted to the comp.lang.perl.misc newsgroup and the perl bug database at
978http://rt.perl.org/perlbug/ . There may also be information at
979http://www.perl.org/ , the Perl Home Page.
44691e6f 980
e08634c5
SH
981If you believe you have an unreported bug, please run the L<perlbug> program
982included with your release. Be sure to trim your bug down to a tiny but
983sufficient test case. Your bug report, along with the output of C<perl -V>,
984will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
985
986If the bug you are reporting has security implications, which make it
e08634c5
SH
987inappropriate to send to a publicly archived mailing list, then please send it
988to perl5-security-report@perl.org. This points to a closed subscription
989unarchived mailing list, which includes all the core committers, who will be
990able to help assess the impact of issues, figure out a resolution, and help
f9001595 991co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
992platforms on which Perl is supported. Please only use this address for
993security issues in the Perl core, not for modules independently distributed on
994CPAN.
44691e6f
AB
995
996=head1 SEE ALSO
997
e08634c5
SH
998The F<Changes> file for an explanation of how to view exhaustive details on
999what changed.
44691e6f
AB
1000
1001The F<INSTALL> file for how to build Perl.
1002
1003The F<README> file for general stuff.
1004
1005The F<Artistic> and F<Copying> files for copyright information.
1006
1007=cut