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