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