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