This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta - A little copy-editing
[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
99366d6d 36=head2 C<rand> now uses a consistent random number generator
f1591529 37
99366d6d
SH
38Previously perl would use a platform specific random number generator, varying
39between the libc rand(), random() or drand48().
f1591529 40
99366d6d
SH
41This meant that the quality of perl's random numbers would vary from platform
42to platform, from the 15 bits of rand() on Windows to 48-bits on POSIX
43platforms such as Linux with drand48().
f1591529 44
99366d6d
SH
45Perl now uses its own internal drand48() implementation on all platforms.
46[perl #115928]
f1591529 47
f2ab313d 48=head2 Better 64-bit support
18ae6bbc
FC
49
50On 64-bit platforms, the internal array functions now use 64-bit offsets,
99366d6d
SH
51allowing Perl arrays to hold more than 2**31 elements, if you have the memory
52available.
18ae6bbc 53
99366d6d 54The regular expression engine now supports strings longer than 2**31
f2ab313d
FC
55characters. [perl #112790, #116907]
56
f53b57fd
FC
57=head2 New slice syntax
58
99366d6d
SH
59The new C<%hash{...}> and C<@array[...]> syntax returns a list of key/value (or
60index/value) pairs.
f53b57fd 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 72=head2 Locale decimal point character no longer leaks outside of
99366d6d 73S<C<use locale>> scope (with the exception of $!)
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
99366d6d 87Now, the only known place where S<C<use locale>> is not respected is in the
e1c60bf3 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 170C<B::CV::GV>, changing the return value from a C<B::SPECIAL> object on a
99366d6d
SH
171C<NULL> C<CvGV> to C<undef>. C<B::CV::GV> again returns a C<B::SPECIAL> object
172in 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
99366d6d 194C<Carp> now takes care not to clobber the status variables $! and $^E.
0a9b5e6e
FC
195
196=item *
197
bf4588d0 198C<Carp> now won't vivify the C<overload::StrVal> glob or subroutine or the
bd098b9a 199C<overload> stash.
6ffbec2c
Z
200
201=item *
202
e1c60bf3 203C<Carp> now avoids some unwanted Unicode warnings on older Perls. This doesn't
99366d6d 204affect behaviour with current Perls.
6ffbec2c
Z
205
206=item *
207
e1c60bf3
SH
208C<Carp::Heavy> detects version mismatch with C<Carp>, to give a good error
209message if a current (stub) C<Carp::Heavy> gets loaded by an old C<Carp> that
210expects C<Carp::Heavy> to provide subroutines.
d5dcec3a 211
6ffbec2c
Z
212=back
213
c963f488
SH
214=item *
215
3a76eb28
SH
216L<charnames> has been upgraded from version 1.38 to 1.39.
217
218This module now works on EBCDIC platforms.
219
220=item *
221
53bb269a
SH
222L<CPAN::Meta> has been upgraded from version 2.132140 to 2.132510.
223
224No changes have been made to the installed code other than the version bump to
225keep in sync with the latest CPAN release.
226
227=item *
228
202c41cb
SH
229L<CPAN::Meta::Requirements> has been upgraded from version 2.122 to 2.123.
230
e1c60bf3
SH
231No changes have been made to the installed code other than the version bump to
232keep in sync with the latest CPAN release.
202c41cb
SH
233
234=item *
235
8c24c1f7
SH
236L<Data::Dumper> has been upgraded from version 2.148 to 2.149.
237
5b903226
SH
238This upgrade is part of a larger change to make the array interface 64-bit safe
239by using SSize_t instead of I32 for array indices.
8c24c1f7 240
2f92fb87
SH
241In addition, an EBCDIC fix has been applied.
242
8c24c1f7
SH
243=item *
244
245L<Devel::Peek> has been upgraded from version 1.13 to 1.14.
246
5b903226
SH
247This upgrade is part of a larger change to preserve referential identity when
248passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
249nonexistent array elements.
8c24c1f7 250
2f92fb87
SH
251In addition, C<Dump> with no args was broken in Perl 5.19.3, but has now been
252fixed.
253
8c24c1f7
SH
254=item *
255
256L<DynaLoader> has been upgraded from version 1.19 to 1.20.
257
5b903226
SH
258The documentation now makes it clear, as has always been the case, that
259C<dl_unload_file> is only called automatically to unload all loaded shared
260objects if the perl interpreter was built with the C macro
b228daaa 261DL_UNLOAD_ALL_AT_EXIT defined. Support for GNU DLD has also been removed.
5b903226
SH
262
263=item *
264
369b9ffe 265L<Encode> has been upgraded from version 2.52 to 2.55.
f2c09143
SH
266
267An erroneous early return in C<decode_utf8> has been removed, and a bug in
369b9ffe
SH
268C<_utf8_on> under COW has been fixed. Encode also now uses L<parent> rather
269than L<base> throughout.
f2c09143
SH
270
271=item *
272
33826e50
SH
273L<Exporter> has been upgraded from version 5.69 to 5.70.
274
275A number of typos have been corrected in the documentation.
276
277=item *
278
a0e78e9f 279L<ExtUtils::CBuilder> has been upgraded from version 0.280205 to 0.280212.
2f92fb87 280
a0e78e9f
SH
281No changes have been made to the installed code other than the version bump to
282keep in sync with the latest CPAN release.
2f92fb87
SH
283
284=item *
285
33826e50
SH
286L<ExtUtils::Command> has been upgraded from version 1.17 to 1.18.
287
288No changes have been made to the installed code other than the version bump to
289keep in sync with the latest CPAN release.
290
291=item *
292
3a76eb28 293L<ExtUtils::MakeMaker> has been upgraded from version 6.72 to 6.76.
5b903226
SH
294
295Numerous updates and bug fixes are incorporated. See the F<Changes> file for
296full details.
8c24c1f7
SH
297
298=item *
299
1d0e852c 300L<ExtUtils::ParseXS> has been upgraded from version 3.21 to 3.23.
f2c09143 301
99366d6d
SH
302Unquoted "here-doc" markers for typemaps can now be optionally followed by a
303semicolon, just like quoted markers. [perl #119761]
f2c09143
SH
304
305=item *
306
77f1e6e4
SH
307L<File::Find> has been upgraded from version 1.24 to 1.25.
308
309Better diagnostics are now provided in the case of a failed C<chdir>.
310
311=item *
312
610ee5e3
TC
313L<File::Glob> has been upgraded from version 1.20 to 1.21.
314
99366d6d
SH
315C<glob> now warns in the context of C<use warnings "syscalls";> if the supplied
316pattern has an internal NUL (C<"\0">) character.
610ee5e3 317
d5dcec3a
Z
318=item *
319
0f07ea36 320L<HTTP::Tiny> has been upgraded from version 0.034 to 0.035.
4403b774
SH
321
322Encoded data from C<post_form> now preserves term order if data is provided as
323an array reference. (They are still sorted for consistency if provided as a
324hash reference.)
325
326=item *
327
3a76eb28
SH
328L<I18N::LangTags> has been upgraded from version 0.39 to 0.40.
329
330Bosnian has now joined Croatian and Serbian in the lists of mutually
99366d6d 331intelligible Slavic languages. [perl #72594]
3a76eb28
SH
332
333=item *
334
77f1e6e4
SH
335L<IO> has been upgraded from version 1.28 to 1.29.
336
337A minor internals-only change has been made to the XS code.
338
339=item *
340
e1c60bf3 341L<IPC::Open3> has been upgraded from version 1.15 to 1.16.
8c24c1f7 342
5b903226
SH
343This upgrade is part of a larger change to preserve referential identity when
344passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
345nonexistent array elements.
8c24c1f7
SH
346
347=item *
348
a0109759
SH
349L<Locale::Codes> has been upgraded from version 3.26 to 3.27.
350
351New codes have been added and the (deprecated) set of FIPS-10 country codes has
352been removed.
353
354=item *
355
a8479f0e
TC
356L<Math::BigInt> has been upgraded from version 1.9992 to 1.9993.
357
e1c60bf3 358Cleaned up the L<Math::BigInt> and L<Math::BigFloat> documentation to be more
99366d6d 359consistent with other Perl documentation. [perl #86686]
a8479f0e 360
99366d6d 361Added a C<bint> method for rounding towards zero. [perl #85296]
a8479f0e
TC
362
363=item *
364
8c24c1f7
SH
365L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31.
366
5b903226
SH
367This upgrade is part of a larger change to make the array interface 64-bit safe
368by using SSize_t instead of I32 for array indices.
8c24c1f7
SH
369
370=item *
371
37287258
SH
372L<Module::CoreList> has been upgraded from version 2.97 to 2.98.
373
374The list of Perl versions covered has been updated.
1fdd5e53 375
68cdd4b5
SH
376=item *
377
6c52f6c9 378L<Module::Load::Conditional> has been upgraded from version 0.54 to 0.58.
0022aab5 379
99366d6d 380C<requires> has been made more robust. [cpan #83728]
0022aab5
SH
381
382=item *
383
979f1f2b 384L<Module::Metadata> has been upgraded from version 1.000014 to 1.000018.
68cdd4b5
SH
385
386The module's DESCRIPTION has been re-worded regarding safety/security to
99366d6d 387satisfy CVE-2013-1437. Also, versions are now detainted if needed. [cpan
bff978fa 388#88576]
68cdd4b5 389
93f72154
SH
390=item *
391
e1c60bf3 392L<mro> has been upgraded from version 1.13 to 1.14.
8c24c1f7 393
5b903226
SH
394This upgrade is part of a larger change to make the array interface 64-bit safe
395by using SSize_t instead of I32 for array indices.
8c24c1f7
SH
396
397=item *
398
e1c60bf3
SH
399L<parent> has been upgraded from version 0.226 to 0.227.
400
401No changes have been made to the installed code other than the version bump to
402keep in sync with the latest CPAN release.
403
404=item *
405
545c8cda
SH
406L<Parse::CPAN::Meta> has been upgraded from version 1.4405 to 1.4407.
407
408No changes have been made to the installed code other than the version bump to
409keep in sync with the latest CPAN release.
410
411=item *
412
ba58de91 413L<Perl::OSType> has been upgraded from version 1.003 to 1.005.
93f72154
SH
414
415The Unix OSType 'bitrig' has been added.
416
8c24c1f7
SH
417=item *
418
dd741cc9
SH
419L<perlfaq> has been upgraded from version 5.0150043 to 5.0150044.
420
421The use of C<gensym> in a number of examples has been removed, the use of C<&>
422in subroutine calls is now clarified and several new questions have been
423answered.
424
425=item *
426
8c24c1f7
SH
427L<re> has been upgraded from version 0.25 to 0.26.
428
94902151
SH
429This upgrade is part of a larger change to support 64-bit string lengths in the
430regular expression engine.
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
99366d6d
SH
443Syntax errors when building on the WinCE platform have been fixed. [cpan
444#87389]
406cccc2
SH
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
99366d6d
SH
499XXX TODO
500
583aa5c2
RS
501=back
502
ba03bc34 503=head2 Removed Modules and Pragmata
a3fb66a4
SH
504
505=over 4
506
507=item *
508
ba03bc34 509XXX
a3fb66a4
SH
510
511=back
512
ba03bc34 513=head1 Documentation
8fecfff0 514
ba03bc34
SH
515XXX Changes to files in F<pod/> go here. Consider grouping entries by
516file and be sure to link to the appropriate page, e.g. L<perlfunc>.
8fecfff0 517
ba03bc34 518=head2 New Documentation
8fecfff0 519
ba03bc34 520XXX Changes which create B<new> files in F<pod/> go here.
195e3ea0 521
ba03bc34 522=head3 L<XXX>
195e3ea0 523
ba03bc34 524XXX Description of the purpose of the new file here
195e3ea0 525
ba03bc34 526=head2 Changes to Existing Documentation
195e3ea0 527
ba03bc34
SH
528XXX Changes which significantly change existing files in F<pod/> go here.
529However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
530section.
195e3ea0 531
ba03bc34 532=head3 L<XXX>
a3fb66a4
SH
533
534=over 4
535
536=item *
537
ba03bc34 538XXX Description of the change here
a3fb66a4
SH
539
540=back
541
c0ca71c9
AP
542=head1 Diagnostics
543
544The following additions or changes have been made to diagnostic output,
545including warnings and fatal error messages. For the complete list of
546diagnostic messages, see L<perldiag>.
547
ba03bc34
SH
548XXX New or changed warnings emitted by the core's C<C> code go here. Also
549include any changes in L<perldiag> that reconcile it to the C<C> code.
550
c0ca71c9
AP
551=head2 New Diagnostics
552
ba03bc34
SH
553XXX Newly added diagnostic messages go under here, separated into New Errors
554and New Warnings
555
12dcbffb 556=head3 New Errors
583aa5c2 557
38663f11 558=over 4
583aa5c2 559
b8a02ff1 560=item *
583aa5c2 561
ba03bc34 562XXX L<message|perldiag/"message">
583aa5c2 563
b8a02ff1 564=back
583aa5c2 565
12dcbffb 566=head3 New Warnings
96d496e4 567
38663f11 568=over 4
b8a02ff1
DG
569
570=item *
571
610ee5e3
TC
572L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s">
573
b8f07b9f 574(W syscalls) Embedded \0 characters in pathnames or other system call arguments
99366d6d 575produce a warning as of 5.20. The parts after the \0 were formerly ignored by
b8f07b9f 576system calls.
487a71ff 577
12dcbffb 578=back
1310e590 579
ba03bc34
SH
580=head2 Changes to Existing Diagnostics
581
582XXX Changes (i.e. rewording) of diagnostic messages go here
e727f86a 583
12dcbffb 584=over 4
e727f86a 585
81ca6d44
FC
586=item *
587
c1d900c3
BF
588Warnings and errors from the regexp engine are now UTF-8 clean
589
590=item *
591
99366d6d
SH
592The "Unknown switch condition" error message has some slight changes. This
593error triggers when there is an unknown condition in a C<(?(foo))> conditional.
594The error message used to read:
c1d900c3
BF
595
596 Unknown switch condition (?(%s in regex;
597
99366d6d
SH
598But what %s could be was mostly up to luck. For C<(?(foobar))>, you might have
599seen "fo" or "f". For Unicode characters, you would generally get a corrupted
600string. The message has been changed to read:
c1d900c3
BF
601
602 Unknown switch condition (?(...)) in regex;
603
99366d6d
SH
604Additionally, the C<'E<lt>-- HERE'> marker in the error will now point to the
605correct spot in the regex.
e38fc308 606
ba03bc34 607=back
a34da6c4 608
ba03bc34 609=head1 Utility Changes
a34da6c4 610
ba03bc34
SH
611XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
612Most of these are built within the directories F<utils> and F<x2p>.
558673e6 613
ba03bc34
SH
614[ List utility changes as a =head3 entry for each utility and =item
615entries for each change
616Use L<XXX> with program names to get proper documentation linking. ]
558673e6 617
b2d74da6 618=head3 L<find2perl>
47a7c93d 619
12dcbffb 620=over 4
b5a80c26 621
7f1d4316
FC
622=item *
623
99366d6d 624L<find2perl> now handles C<?> wildcards correctly. [perl #113054]
7f1d4316 625
ba03bc34 626=back
ef947715 627
ba03bc34 628=head1 Configuration and Compilation
ef947715 629
ba03bc34
SH
630XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
631go here. Any other changes to the Perl build process should be listed here.
632However, any platform-specific changes should be listed in the
633L</Platform Support> section, instead.
02bef66e 634
ba03bc34 635[ List changes as a =item entry ].
d30fb844 636
12dcbffb 637=over 4
21c01741 638
467582e8
FC
639=item *
640
e1c60bf3
SH
641The F<Makefile.PL> for C<SDBM_File> now generates a better F<Makefile>, which
642avoids a race condition during parallel makes, which could cause the build to
643fail. This is the last known parallel make problem (on *nix platforms), and
644therefore we believe that a parallel make should now always be error free.
4d106cc5
NC
645
646=for comment
647
648Strictly only for a build where build files such as F<Makefile.SH> have not
649been updated by C<git> in an already configured and built tree.
467582e8 650
ba03bc34 651=back
64da853d 652
ba03bc34 653=head1 Testing
8847717e 654
ba03bc34
SH
655XXX Any significant changes to the testing of a freshly built perl should be
656listed here. Changes which create B<new> files in F<t/> go here as do any
657large changes to the testing harness (e.g. when parallel testing was added).
658Changes to existing files in F<t/> aren't worth summarizing, although the bugs
659that they represent may be covered elsewhere.
8847717e 660
ba03bc34 661[ List each test improvement as a =item entry ]
f1b856da 662
ba03bc34 663=over 4
f1b856da 664
eaed284b
FC
665=item *
666
5b903226 667The test script F<t/bigmem/regexp.t> has been added to test that regular
28f52e64 668expression matches on very large strings now succeed as expected.
8c24c1f7
SH
669
670=item *
671
5b903226
SH
672Various cases of C<die>, C<last>, C<goto> and C<exit> triggering C<DESTROY> are
673now tested by the new test script F<t/op/rt119311.t>.
8c24c1f7
SH
674
675=item *
676
99366d6d
SH
677The new test script F<t/win32/signal.t> tests that $! and $^E are now preserved
678across signal handlers by the Win32 signal emulation code.
8c24c1f7
SH
679
680=item *
681
5b903226
SH
682The test script F<t/x2p/find2perl.t> has been added to test the F<find2perl>
683program on platforms where it is practical to do so.
eaed284b 684
ba03bc34 685=back
0335212c 686
ba03bc34 687=head1 Platform Support
0335212c 688
ba03bc34 689XXX Any changes to platform support should be listed in the sections below.
c3e455cf 690
ba03bc34
SH
691[ Within the sections, list each platform as a =item entry with specific
692changes as paragraphs below it. ]
c3e455cf 693
ba03bc34 694=head2 New Platforms
019705bc 695
ba03bc34
SH
696XXX List any platforms that this version of perl compiles on, that previous
697versions did not. These will either be enabled by new files in the F<hints/>
698directories, or new subdirectories and F<README> files at the top level of the
699source tree.
019705bc 700
ba03bc34 701=over 4
25921d77 702
44d412d1 703=item Bitrig
25921d77 704
489ee6b6 705Compile support has been added for Bitrig, a fork of OpenBSD.
28ea507e 706
ba03bc34 707=back
28ea507e 708
ba03bc34 709=head2 Discontinued Platforms
28ea507e 710
99366d6d
SH
711Configure hints and conditional code for several very old platforms has been
712removed. We have not received reports for these in many years, typically not
713since Perl 5.6.0.
7b0e9f13 714
ba03bc34 715=over 4
074d6753 716
7b0e9f13 717=item AT&T 3b1
074d6753 718
99366d6d
SH
719Configure support for the 3b1, also known as the AT&T Unix PC (and the similar
720AT&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
99366d6d 735The building of XS modules has largely been restored. Several still cannot
5b903226
SH
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
99366d6d
SH
754The internal representation has changed for the match variables $1, $2 etc.,
755$`, $&, $', ${^PREMATCH}, ${^MATCH} and ${^POSTMATCH}. It uses slightly less
756memory, avoids string comparisons and numeric conversions during lookup, and
757uses 23 fewer lines of C. This change should not affect any external code.
671f9ff7 758
c2ee494e
FC
759=item *
760
761Arrays now use NULL internally to represent unused slots, instead of
99366d6d
SH
762&PL_sv_undef. &PL_sv_undef is no longer treated as a special value, so
763av_store(av, 0, &PL_sv_undef) will cause element 0 of that array to hold a
764read-only undefined scalar. C<$array[0] = anything> will croak and
c2ee494e
FC
765C<\$array[0]> will compare equal to C<\undef>.
766
ba03bc34 767=back
671f9ff7 768
ba03bc34 769=head1 Selected Bug Fixes
912a9a8f 770
ba03bc34
SH
771XXX Important bug fixes in the core language are summarized here. Bug fixes in
772files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
912a9a8f 773
ba03bc34 774[ List each fix as a =item entry ]
0d25b9d4 775
ba03bc34 776=over 4
0d25b9d4 777
a82207ba
FC
778=item *
779
99366d6d 780The value of $^E is now saved across signal handlers on Windows. [perl #85104]
18e2e6cd 781
85037c5c
FC
782=item *
783
99366d6d
SH
784A lexical filehandle (as in C<open my $fh...>) is usually given a name based on
785the current package and the name of the variable, e.g. "main::$fh". Under
786recursion, the filehandle was losing the "$fh" part of the name. This has been
787fixed.
85037c5c 788
0664879b
FC
789=item *
790
99366d6d
SH
791Perl 5.19.3 accidentally extended the previous bug to all closures, even when
792not called recursively, i.e. lexical handles in closure would always be called
793"main::" or "MyPackage::" etc. This has been fixed.
0664879b 794
343e7167
FC
795=item *
796
99366d6d
SH
797Uninitialized values returned by XSUBs are no longer exempt from uninitialized
798warnings. [perl #118693]
343e7167 799
1261f9a2
FC
800=item *
801
99366d6d 802C<elsif ("")> no longer erroneously produces a warning about void context.
1261f9a2
FC
803[perl #118753]
804
c2ee494e
FC
805=item *
806
99366d6d
SH
807Passing C<undef> to a subroutine now causes @_ to contain the same read-only
808undefined scalar that C<undef> returns. Furthermore, C<exists $_[0]> will now
809return true if C<undef> was the first argument. [perl #7508, #109726]
c2ee494e 810
21c314ca
FC
811=item *
812
99366d6d
SH
813Passing a nonexistent array element to a subroutine does not usually autovivify
814it unless the subroutine modifies its argument. This did not work correctly
815with negative indices and with nonexistent elements within the array. The
816element would be vivified immediately. The delayed vivification has been
817extended to work with those. [perl #118691]
21c314ca 818
7a7c28da
FC
819=item *
820
99366d6d
SH
821Assigning references or globs to the scalar returned by $#foo after the @foo
822array has been freed no longer causes assertion failures on debugging builds
823and memory leaks on regular builds.
7a7c28da 824
8bdbe216
FC
825=item *
826
99366d6d
SH
827Perl 5.19.2 threw line numbers off after some cases of line breaks following
828keywords, such as
8bdbe216
FC
829
830 1 unless
831 1;
832
833This has been fixed. [perl #118931]
834
96c0ab99
FC
835=item *
836
99366d6d
SH
837On 64-bit platforms, large ranges like 1..1000000000000 no longer crash, but
838eat up all your memory instead. [perl #119161]
96c0ab99 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
99366d6d
SH
859Elements of @- and @+ now update correctly when they refer to nonexistent
860captures. Previously, a referenced element (C<$ref = \$-[1]>) could refer to
861the wrong match after subsequent matches.
c4403db5 862
e7f2d651
FC
863=item *
864
99366d6d
SH
865When C<die>, C<last>, C<next>, C<redo>, C<goto> and C<exit> unwind the scope,
866it is possible for C<DESTROY> recursively to call a subroutine or format that
867is currently being exited. It that case, sometimes the lexical variables
868inside the sub would start out having values from the outer call, instead of
869being undefined as they should. This has been fixed. [perl #119311]
e7f2d651 870
d66ad208
FC
871=item *
872
99366d6d 873${^MPEN} is no longer treated as a synonym for ${^MATCH}.
d66ad208 874
ab70e266
FC
875=item *
876
877Perl now tries a little harder to return the correct line number in
878C<(caller)[2]>. [perl #115768]
879
ae66f305
FC
880=item *
881
99366d6d
SH
882Line numbers inside multiline quote-like operators are now reported correctly.
883[perl #3643]
ae66f305
FC
884
885=item *
886
99366d6d
SH
887C<#line> directives inside code embedded in quote-like operators are now
888respected.
ae66f305 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
99366d6d
SH
897Starting with Perl 5.12, line numbers were off by one if the B<-d> switch was
898used on the #! line. Now they are correct.
b3c26d51
FC
899
900=item *
901
99366d6d
SH
902Perl 5.19.2 inadvertently stopped some lines of code from being available to
903the debugger if C<=E<gt>> occurred at the beginning of a line and the previous
904line ended with a keyword. This is now fixed.
f8f2d1ac 905
ac29d451
FC
906=item *
907
99366d6d
SH
908Perl 5.19.2 allowed the PERL5DB environment variable to contain multiple lines
909of code, but those lines were not made available to the debugger. Now they are
910all stuffed into line number 0, accessible via C<$dbline[0]> in the debugger.
b3c26d51
FC
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
99366d6d
SH
916loaded then lexical variables declared in separate statements following a
917C<my(...)> list might fail to be cleared on scope exit.
ac29d451 918
f34cd7c8
FC
919=item *
920
99366d6d
SH
921C<&xsub> and C<goto &xsub> calls now allow the called subroutine to autovivify
922elements of @_.
f34cd7c8 923
6f9296e1
FC
924=item *
925
99366d6d
SH
926C<&xsub> and C<goto &xsub> no longer crash if *_ has been undefined and has no
927ARRAY entry (i.e. @_ does not exist).
6f9296e1 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
99366d6d
SH
940The warning "Scalar value @hash{foo} better written as $hash{foo}" now produces
941far fewer false positives. In particular, C<@hash{+function_returning_a_list}>
942and C<@hash{ qw "foo bar baz" }> no longer warn. The same applies to array
943slices. [perl #28380, #114024]
cfbe45f9 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