Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
3670aff5 FC |
3 | =for comment |
4 | Stuff that needs to be done still: | |
1be66aa5 | 5 | 70502ce [perl #119101] Extraneous warnings in Parse::ErrorString::Perl |
2dfcda00 | 6 | aa8c2dc Fix RT #41461 (with a test). |
3670aff5 | 7 | |
44691e6f AB |
8 | =head1 NAME |
9 | ||
12dcbffb AP |
10 | [ this is a template for a new perldelta file. Any text flagged as XXX needs |
11 | to be processed before release. ] | |
12 | ||
13 | perldelta - what is new for perl v5.19.3 | |
e128ab2c | 14 | |
4eabcf70 | 15 | =head1 DESCRIPTION |
6db9054f | 16 | |
12dcbffb | 17 | This document describes differences between the 5.19.2 release and the 5.19.3 |
e08634c5 | 18 | release. |
6db9054f | 19 | |
12dcbffb AP |
20 | If you are upgrading from an earlier release such as 5.19.1, first read |
21 | L<perl5192delta>, which describes differences between 5.19.1 and 5.19.2. | |
42bff0d9 | 22 | |
12dcbffb | 23 | =head1 Notice |
42bff0d9 | 24 | |
12dcbffb | 25 | XXX Any important notices here |
42bff0d9 | 26 | |
12dcbffb | 27 | =head1 Core Enhancements |
c0ca71c9 | 28 | |
12dcbffb AP |
29 | XXX New core language features go here. Summarize user-visible core language |
30 | enhancements. Particularly prominent performance optimisations could go | |
31 | here, but most should go in the L</Performance Enhancements> section. | |
c0ca71c9 | 32 | |
12dcbffb | 33 | [ List each enhancement as a =head2 entry ] |
c0ca71c9 | 34 | |
5bb43e77 TC |
35 | =head2 B<-F> now implies B<-a> and B<-a> implies B<-n> |
36 | ||
37 | Previously B<-F> without B<-a> was a no-op, and B<-a> without B<-n> or | |
38 | B<-p> was a no-op, with this change, if you supply B<-F> then both | |
39 | B<-a> and B<-n> are implied and if you supply B<-a> then B<-n> is implied. | |
40 | ||
41 | You can still use B<-p> for its extra behaviour. [perl #116190] | |
42 | ||
12dcbffb | 43 | =head1 Security |
c0ca71c9 | 44 | |
12dcbffb AP |
45 | XXX Any security-related notices go here. In particular, any security |
46 | vulnerabilities closed should be noted here rather than in the | |
47 | L</Selected Bug Fixes> section. | |
c0ca71c9 | 48 | |
12dcbffb | 49 | [ List each security issue as a =head2 entry ] |
c0ca71c9 | 50 | |
12dcbffb | 51 | =head1 Incompatible Changes |
c0ca71c9 | 52 | |
12dcbffb | 53 | XXX For a release on a stable branch, this section aspires to be: |
c0ca71c9 | 54 | |
12dcbffb AP |
55 | There are no changes intentionally incompatible with 5.XXX.XXX |
56 | If any exist, they are bugs, and we request that you submit a | |
57 | report. See L</Reporting Bugs> below. | |
c0ca71c9 | 58 | |
12dcbffb | 59 | [ List each incompatible change as a =head2 entry ] |
c0ca71c9 | 60 | |
12dcbffb | 61 | =head1 Deprecations |
c0ca71c9 | 62 | |
12dcbffb | 63 | XXX Any deprecated features, syntax, modules etc. should be listed here. |
c0ca71c9 | 64 | |
12dcbffb | 65 | =head2 Module removals |
c0ca71c9 | 66 | |
12dcbffb | 67 | XXX Remove this section if inapplicable. |
c0ca71c9 | 68 | |
12dcbffb AP |
69 | The following modules will be removed from the core distribution in a |
70 | future release, and will at that time need to be installed from CPAN. | |
71 | Distributions on CPAN which require these modules will need to list them as | |
72 | prerequisites. | |
c0ca71c9 | 73 | |
12dcbffb AP |
74 | The core versions of these modules will now issue C<"deprecated">-category |
75 | warnings to alert you to this fact. To silence these deprecation warnings, | |
76 | install the modules in question from CPAN. | |
c0ca71c9 | 77 | |
12dcbffb AP |
78 | Note that these are (with rare exceptions) fine modules that you are encouraged |
79 | to continue to use. Their disinclusion from core primarily hinges on their | |
80 | necessity to bootstrapping a fully functional, CPAN-capable Perl installation, | |
81 | not usually on concerns over their design. | |
c0ca71c9 | 82 | |
12dcbffb | 83 | =over |
c0ca71c9 | 84 | |
12dcbffb AP |
85 | XXX Note that deprecated modules should be listed here even if they are listed |
86 | as an updated module in the L</Modules and Pragmata> section. | |
c0ca71c9 | 87 | |
12dcbffb | 88 | =back |
c0ca71c9 | 89 | |
12dcbffb | 90 | [ List each other deprecation as a =head2 entry ] |
c0ca71c9 | 91 | |
12dcbffb | 92 | =head1 Performance Enhancements |
c0ca71c9 | 93 | |
12dcbffb AP |
94 | XXX Changes which enhance performance without changing behaviour go here. |
95 | There may well be none in a stable release. | |
c0ca71c9 | 96 | |
12dcbffb | 97 | [ List each enhancement as a =item entry ] |
c0ca71c9 | 98 | |
12dcbffb | 99 | =over 4 |
c0ca71c9 AP |
100 | |
101 | =item * | |
102 | ||
12dcbffb | 103 | XXX |
c0ca71c9 | 104 | |
12dcbffb | 105 | =back |
70ba8092 | 106 | |
12dcbffb | 107 | =head1 Modules and Pragmata |
42bff0d9 | 108 | |
12dcbffb AP |
109 | XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> |
110 | go here. If Module::CoreList is updated, generate an initial draft of the | |
111 | following sections using F<Porting/corelist-perldelta.pl>, which prints stub | |
112 | entries to STDOUT. Results can be pasted in place of the '=head2' entries | |
113 | below. A paragraph summary for important changes should then be added by hand. | |
114 | In an ideal world, dual-life modules would have a F<Changes> file that could be | |
115 | cribbed. | |
6e4979f3 | 116 | |
12dcbffb | 117 | [ Within each section, list entries as a =item entry ] |
6e4979f3 | 118 | |
12dcbffb | 119 | =head2 New Modules and Pragmata |
6e4979f3 | 120 | |
12dcbffb | 121 | =over 4 |
42bff0d9 | 122 | |
c0ca71c9 | 123 | =item * |
42bff0d9 | 124 | |
12dcbffb | 125 | XXX |
42bff0d9 | 126 | |
12dcbffb | 127 | =back |
42bff0d9 | 128 | |
12dcbffb | 129 | =head2 Updated Modules and Pragmata |
42bff0d9 | 130 | |
12dcbffb | 131 | =over 4 |
42bff0d9 | 132 | |
c0ca71c9 | 133 | =item * |
42bff0d9 | 134 | |
323602af TC |
135 | L<B> has been upgraded from version 1.44 to 1.45. |
136 | ||
137 | Calling the C<GV> method on C<B::CV> objects created from a lexical | |
138 | sub would return nonsense, possibly crashing perl. C<GV> now returns | |
139 | C<undef> for lexical subs. [perl #118525] | |
140 | ||
141 | Added the C<NAME_HEK> method to return the name of a lexical sub. | |
142 | ||
143 | =item * | |
144 | ||
9a743a6d SH |
145 | L<bignum> has been upgraded from version 0.35 to 0.36. |
146 | ||
147 | L<bigrat> wasn't correctly updating an internal variable when C<use>d | |
148 | with a C<lib> option. | |
149 | ||
1afc4c90 FC |
150 | =item * |
151 | ||
1448059e TC |
152 | L<Carp> has been upgraded from 1.30 to 1.31 |
153 | ||
154 | L<Carp> now handles objects with string overloads. It also allows objects | |
155 | to specify how they appear in the stack dump with a C<CARP_TRACE> method, | |
156 | and also allows the user to specify their own formatter for objects without | |
157 | C<CARP_TRACE> as well as other references. [perl #92446] | |
158 | ||
9a743a6d SH |
159 | =item * |
160 | ||
ef379d05 SH |
161 | L<Compress::Raw::Bzip2> has been upgraded from 2.061 to 2.062. |
162 | ||
163 | =item * | |
164 | ||
165 | L<Compress::Raw::Zlib> has been upgraded from 2.061 to 2.062. | |
166 | ||
167 | =item * | |
168 | ||
89e01640 SH |
169 | L<Config::Perl::V> has been upgraded from version 0.18 to 0.19. |
170 | ||
171 | =item * | |
172 | ||
cffd634c TC |
173 | L<Data::Dumper> has been upgraded from version 2.147 to 2.148. |
174 | ||
175 | The compatbility of the XS implementation with the pure perl version | |
176 | under C<Useqq> has been improved. [perl #118933] | |
42bff0d9 | 177 | |
2cf99697 TC |
178 | =item * |
179 | ||
8b0411a9 TC |
180 | L<Devel::Peek> has been upgraded from version 1.12 to 1.13. |
181 | ||
182 | The C<SvREFCNT_inc()> and C<SvREFCNT_dec()> functions have been | |
183 | removed and C<SvREFCNT()> will now work on non-scalars. [perl #117793] | |
184 | ||
f6e0e5cc FC |
185 | C<Dump> now checks its arguments at compile time. Both arguments are now |
186 | evaluated in scalar context, with exceptions for @arrays and %hashes, | |
187 | allowing aggregates to be dumped directly. The first argument is evaluated | |
188 | in rvalue scalar context, allowing rvalue C<pos> and C<substr> to be | |
189 | dumped. | |
190 | ||
1547e7b4 FC |
191 | C<fill_mstats> no longer crashes if its argument is not already a string. |
192 | [perl #92260] | |
193 | ||
8b0411a9 TC |
194 | =item * |
195 | ||
0a225b3c SH |
196 | L<Encode> has been upgraded from version 2.51 to 2.52. |
197 | ||
198 | Encoding "0" with MIME-Headers no longer gets a blank string. | |
199 | ||
200 | =item * | |
201 | ||
9a743a6d SH |
202 | L<Exporter> has been upgraded from version 5.68 to 5.69. |
203 | ||
204 | L<Exporter> would ignore custom C<$SIG{__WARN__}> handlers in | |
205 | C<Exporter::Heavy>. [perl #39739] | |
206 | ||
207 | =item * | |
208 | ||
ef379d05 SH |
209 | The IO-Compress module collection has been upgraded from 2.061 to 2.062. |
210 | ||
211 | =item * | |
212 | ||
c7e51fe7 SH |
213 | L<IPC::Cmd> has been upgraded from version 0.82 to 0.84. |
214 | ||
215 | C<run_forked> has various fixes/improvements, L<Socket> is only used where | |
216 | needed and a regression introduced in 0.78 has been fixed. | |
217 | ||
218 | =item * | |
219 | ||
ef947715 TC |
220 | L<IPC::Open3> has been upgradded from version 1.14 to 1.15. |
221 | ||
222 | C<open3> would leak a zombie process if the child process I/O | |
223 | redirection or exec() failed. [perl #114722] | |
224 | ||
225 | =item * | |
226 | ||
07513bb4 | 227 | The libnet module collection has been upgraded from version 1.22 to 1.23. |
8723f121 SH |
228 | |
229 | =item * | |
230 | ||
6a9ebaf3 | 231 | L<List::Util> has been upgraded from version 1.27 to 1.30 |
2dc8d725 | 232 | |
6a9ebaf3 SH |
233 | L<List::Util> now includes C<pairgrep>, C<pairmap>, C<pairs>, C<pairkeys>, |
234 | C<pairvalues> and C<pairfirst> functions that operate on even-sized lists of | |
235 | pairs. | |
2dc8d725 CBW |
236 | |
237 | =item * | |
238 | ||
4725e868 SH |
239 | L<parent> has been upgraded from version 0.225 to 0.226. |
240 | ||
241 | =item * | |
242 | ||
669d990b SH |
243 | L<Socket> has been upgraded from version 2.010 to 2.011. |
244 | ||
245 | Handle FreeBSD (or other platforms) returning shorter AF_UNIX sockaddr | |
246 | structures due to embedded sun_len. [cpan #86613] | |
247 | ||
248 | =item * | |
249 | ||
2cf99697 TC |
250 | L<Storable> has been upgraded from version 2.45 to 2.46. |
251 | ||
252 | Avoid creating temporary objects for STORABLE_attach when they aren't | |
253 | required. [perl #118907] | |
254 | ||
21d55435 SH |
255 | =item * |
256 | ||
257 | L<Time::Piece> has been upgraded from version 1.21 to 1.22. | |
258 | ||
c0ca71c9 | 259 | =back |
42bff0d9 | 260 | |
12dcbffb | 261 | =head2 Removed Modules and Pragmata |
dbd04185 | 262 | |
38663f11 | 263 | =over 4 |
583aa5c2 | 264 | |
1fdd5e53 KW |
265 | =item * |
266 | ||
12dcbffb | 267 | XXX |
42bff0d9 | 268 | |
38663f11 | 269 | =back |
42bff0d9 | 270 | |
12dcbffb | 271 | =head1 Documentation |
989e4501 | 272 | |
12dcbffb AP |
273 | XXX Changes to files in F<pod/> go here. Consider grouping entries by |
274 | file and be sure to link to the appropriate page, e.g. L<perlfunc>. | |
989e4501 | 275 | |
12dcbffb | 276 | =head2 New Documentation |
989e4501 | 277 | |
12dcbffb | 278 | XXX Changes which create B<new> files in F<pod/> go here. |
42bff0d9 | 279 | |
12dcbffb | 280 | =head3 L<XXX> |
42bff0d9 | 281 | |
12dcbffb | 282 | XXX Description of the purpose of the new file here |
42bff0d9 | 283 | |
12dcbffb | 284 | =head2 Changes to Existing Documentation |
42bff0d9 | 285 | |
12dcbffb AP |
286 | XXX Changes which significantly change existing files in F<pod/> go here. |
287 | However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics> | |
288 | section. | |
42bff0d9 | 289 | |
3031ec7a | 290 | =head3 L<perlopentut> |
42bff0d9 | 291 | |
38663f11 | 292 | =over 4 |
42bff0d9 DG |
293 | |
294 | =item * | |
295 | ||
3031ec7a RS |
296 | The C<open> tutorial has been completely rewriten by Tom Christiansen, and now |
297 | focuses on covering only the basics, rather than providing a comprehensive | |
298 | reference to all things openable. This rewrite came as the result of a | |
299 | vigorous discussion on perl5-porters kicked off by a set of improvements | |
300 | written by Alexander Hartmaier to the existing C<perlopentut>. A "more than | |
301 | you ever wanted to know about C<open>" document may follow in subsequent | |
302 | versions of perl. | |
1fdd5e53 | 303 | |
583aa5c2 RS |
304 | =back |
305 | ||
c0ca71c9 AP |
306 | =head1 Diagnostics |
307 | ||
308 | The following additions or changes have been made to diagnostic output, | |
309 | including warnings and fatal error messages. For the complete list of | |
310 | diagnostic messages, see L<perldiag>. | |
311 | ||
12dcbffb AP |
312 | XXX New or changed warnings emitted by the core's C<C> code go here. Also |
313 | include any changes in L<perldiag> that reconcile it to the C<C> code. | |
314 | ||
c0ca71c9 AP |
315 | =head2 New Diagnostics |
316 | ||
12dcbffb AP |
317 | XXX Newly added diagnostic messages go under here, separated into New Errors |
318 | and New Warnings | |
319 | ||
320 | =head3 New Errors | |
583aa5c2 | 321 | |
38663f11 | 322 | =over 4 |
583aa5c2 | 323 | |
b8a02ff1 | 324 | =item * |
583aa5c2 | 325 | |
12dcbffb | 326 | XXX L<message|perldiag/"message"> |
583aa5c2 | 327 | |
b8a02ff1 | 328 | =back |
583aa5c2 | 329 | |
12dcbffb | 330 | =head3 New Warnings |
96d496e4 | 331 | |
38663f11 | 332 | =over 4 |
b8a02ff1 DG |
333 | |
334 | =item * | |
335 | ||
3ead5f64 | 336 | L<Argument "%s" treated as 0 in increment (++)|perldiag/"Argument |
2ff08520 | 337 | "%s" treated as 0 in increment (++)"> |
3ead5f64 FC |
338 | |
339 | (W numeric) The indicated string was fed as an argument to the C<++> | |
340 | operator which expects either a number or a string matching | |
341 | C</^[a-zA-Z]*[0-9]*\z/>. See L<perlop/Auto-increment and | |
342 | Auto-decrement> for details. | |
96d496e4 | 343 | |
12dcbffb | 344 | =back |
1310e590 | 345 | |
12dcbffb | 346 | =head2 Changes to Existing Diagnostics |
e727f86a | 347 | |
12dcbffb | 348 | XXX Changes (i.e. rewording) of diagnostic messages go here |
e727f86a | 349 | |
12dcbffb | 350 | =over 4 |
e727f86a | 351 | |
81ca6d44 FC |
352 | =item * |
353 | ||
12dcbffb | 354 | XXX Describe change here |
81ca6d44 | 355 | |
96d496e4 RS |
356 | =back |
357 | ||
12dcbffb | 358 | =head1 Utility Changes |
583aa5c2 | 359 | |
12dcbffb AP |
360 | XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here. |
361 | Most of these are built within the directories F<utils> and F<x2p>. | |
71e6aba6 | 362 | |
12dcbffb AP |
363 | [ List utility changes as a =head3 entry for each utility and =item |
364 | entries for each change | |
365 | Use L<XXX> with program names to get proper documentation linking. ] | |
d5f315e8 | 366 | |
12dcbffb | 367 | =head3 L<XXX> |
e38fc308 NC |
368 | |
369 | =over 4 | |
370 | ||
371 | =item * | |
372 | ||
12dcbffb | 373 | XXX |
e38fc308 NC |
374 | |
375 | =back | |
376 | ||
12dcbffb | 377 | =head1 Configuration and Compilation |
2426c394 | 378 | |
12dcbffb AP |
379 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools |
380 | go here. Any other changes to the Perl build process should be listed here. | |
381 | However, any platform-specific changes should be listed in the | |
382 | L</Platform Support> section, instead. | |
4724da03 | 383 | |
12dcbffb | 384 | [ List changes as a =item entry ]. |
583aa5c2 | 385 | |
38663f11 | 386 | =over 4 |
a34da6c4 | 387 | |
12dcbffb | 388 | =item * |
a34da6c4 | 389 | |
12dcbffb | 390 | XXX |
a34da6c4 | 391 | |
583aa5c2 RS |
392 | =back |
393 | ||
12dcbffb | 394 | =head1 Testing |
583aa5c2 | 395 | |
12dcbffb AP |
396 | XXX Any significant changes to the testing of a freshly built perl should be |
397 | listed here. Changes which create B<new> files in F<t/> go here as do any | |
398 | large changes to the testing harness (e.g. when parallel testing was added). | |
399 | Changes to existing files in F<t/> aren't worth summarizing, although the bugs | |
400 | that they represent may be covered elsewhere. | |
1de7c8e6 | 401 | |
12dcbffb | 402 | [ List each test improvement as a =item entry ] |
9c800862 | 403 | |
12dcbffb | 404 | =over 4 |
aaf54772 | 405 | |
b7bbd8b6 FC |
406 | =item * |
407 | ||
12dcbffb | 408 | XXX |
b7bbd8b6 | 409 | |
583aa5c2 RS |
410 | =back |
411 | ||
12dcbffb | 412 | =head1 Platform Support |
d7bfa554 | 413 | |
12dcbffb | 414 | XXX Any changes to platform support should be listed in the sections below. |
81d3ed5a | 415 | |
12dcbffb AP |
416 | [ Within the sections, list each platform as a =item entry with specific |
417 | changes as paragraphs below it. ] | |
81d3ed5a | 418 | |
12dcbffb | 419 | =head2 New Platforms |
0b023496 | 420 | |
12dcbffb AP |
421 | XXX List any platforms that this version of perl compiles on, that previous |
422 | versions did not. These will either be enabled by new files in the F<hints/> | |
423 | directories, or new subdirectories and F<README> files at the top level of the | |
424 | source tree. | |
0b023496 | 425 | |
12dcbffb | 426 | =over 4 |
e11f653d | 427 | |
12dcbffb | 428 | =item XXX-some-platform |
5e0164b2 | 429 | |
12dcbffb | 430 | XXX |
5e0164b2 | 431 | |
12dcbffb | 432 | =back |
e11f653d | 433 | |
12dcbffb | 434 | =head2 Discontinued Platforms |
8be8cdec | 435 | |
12dcbffb | 436 | XXX List any platforms that this version of perl no longer compiles on. |
8be8cdec | 437 | |
12dcbffb | 438 | =over 4 |
07a522a5 | 439 | |
12dcbffb | 440 | =item XXX-some-platform |
07a522a5 | 441 | |
12dcbffb | 442 | XXX |
71b4007c | 443 | |
12dcbffb | 444 | =back |
71b4007c | 445 | |
12dcbffb | 446 | =head2 Platform-Specific Notes |
f6b1d2f5 | 447 | |
12dcbffb AP |
448 | XXX List any changes for specific platforms. This could include configuration |
449 | and compilation changes or changes in portability/compatibility. However, | |
450 | changes within modules for platforms should generally be listed in the | |
451 | L</Modules and Pragmata> section. | |
f6b1d2f5 | 452 | |
12dcbffb | 453 | =over 4 |
7e4f209b | 454 | |
12dcbffb | 455 | =item XXX-some-platform |
7e4f209b | 456 | |
12dcbffb | 457 | XXX |
558673e6 | 458 | |
12dcbffb | 459 | =back |
558673e6 | 460 | |
12dcbffb | 461 | =head1 Internal Changes |
47a7c93d | 462 | |
12dcbffb AP |
463 | XXX Changes which affect the interface available to C<XS> code go here. Other |
464 | significant internal changes for future core maintainers should be noted as | |
465 | well. | |
47a7c93d | 466 | |
12dcbffb | 467 | [ List each change as a =item entry ] |
b5a80c26 | 468 | |
12dcbffb | 469 | =over 4 |
b5a80c26 | 470 | |
7f1d4316 FC |
471 | =item * |
472 | ||
6e6c0044 FC |
473 | C<sv_pos_b2u_flags> has been added to the API. It is similar to |
474 | C<sv_pos_b2u>, but supports long strings on 64-bit platforms. | |
7f1d4316 | 475 | |
ef947715 TC |
476 | =item * |
477 | ||
478 | C<PL_exit_flags> can now be used by perl embedders or other XS code to | |
479 | have perl warn or abort() on an attempted exit. [perl #52000] | |
480 | ||
12dcbffb | 481 | =back |
02bef66e | 482 | |
12dcbffb | 483 | =head1 Selected Bug Fixes |
d30fb844 | 484 | |
12dcbffb AP |
485 | XXX Important bug fixes in the core language are summarized here. Bug fixes in |
486 | files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>. | |
d30fb844 | 487 | |
12dcbffb | 488 | [ List each fix as a =item entry ] |
21c01741 | 489 | |
12dcbffb | 490 | =over 4 |
21c01741 | 491 | |
467582e8 FC |
492 | =item * |
493 | ||
5c24ac0b FC |
494 | Autovivifying a subroutine stub via C<\&$glob> started causing crashes in |
495 | Perl 5.18.0 if the $glob was merely a copy of a real glob, i.e., a scalar | |
496 | that had had a glob assigned to it. This has been fixed [perl #119051]. | |
467582e8 | 497 | |
64da853d FC |
498 | =item * |
499 | ||
500 | On 64-bit platforms C<pos> can now be set to a value higher than 2**31-1 | |
501 | [perl #72766]. | |
502 | ||
8847717e FC |
503 | =item * |
504 | ||
505 | Perl used to leak an implementation detail when it came to referencing the | |
506 | return values of certain operators. C<for ($a+$b) { warn \$_; warn \$_ }> | |
507 | used to display two different memory addresses, because the C<\> operator | |
508 | was copying the variable. Under threaded builds, it would also happen for | |
509 | constants (C<for(1) { ... }>). This has been fixed [perl #21979, #78194, | |
510 | #89188, #109746, #114838, #115388]. | |
511 | ||
f1b856da FC |
512 | =item * |
513 | ||
514 | The range operator C<..> was returning the same modifiable scalars with | |
515 | each call, unless it was the only thing in a C<foreach> loop header. This | |
516 | meant that changes to values within the list returned would be visible the | |
517 | next time the operator was executed [perl #3105]. | |
518 | ||
eaed284b FC |
519 | =item * |
520 | ||
521 | Constant folding and subroutine inlining no longer cause operations that | |
522 | would normally return new modifiable scalars to return read-only values | |
523 | instead. | |
524 | ||
0335212c FC |
525 | =item * |
526 | ||
527 | Closures of the form C<sub () { $some_variable }> are no longer inlined, | |
528 | causing changes to the variable to be ignored by callers of the subroutine | |
529 | [perl #79908]. | |
530 | ||
c3e455cf FC |
531 | =item * |
532 | ||
533 | Return values of certain operators such as C<ref> would sometimes be shared | |
534 | between recursive calls to the same subroutine, causing the inner call to | |
535 | modify the value returned by C<ref> in the outer call. This has been | |
536 | fixed. | |
537 | ||
019705bc FC |
538 | =item * |
539 | ||
540 | C<__PACKAGE__> and constants returning a package name or hash key are now | |
541 | consistently read-only. In various previous Perl releases, they have | |
542 | become mutable under certain circumstances. | |
543 | ||
25921d77 FC |
544 | =item * |
545 | ||
546 | C</$qr/p> was broken in Perl 5.18.0; the C</p> flag was ignored. This has | |
547 | been fixed [perl #118213]. | |
548 | ||
28ea507e FC |
549 | =item * |
550 | ||
551 | Starting in v5.18.0, a construct like C</[#](?{})/x> would have its C<#> | |
552 | incorrectly interpreted as a comment. The code block would be skipped, | |
553 | unparsed. This has been corrected. | |
554 | ||
555 | =item * | |
556 | ||
557 | Starting in Perl 5.001, a regular expression like C</[#$a]/x> or | |
558 | C</[#]$a/x> would have its C<#> incorrectly interpreted as a comment, so | |
559 | the variable would not interpolate. This has been corrected [perl #45667]. | |
560 | ||
074d6753 FC |
561 | =item * |
562 | ||
563 | On non-threaded builds, setting C<${"_<filename"}> to a reference or | |
ac71653f FC |
564 | typeglob no longer causes C<__FILE__> and some error messages to produce a |
565 | corrupt string, and no longer prevents C<#line> directives in string evals | |
566 | from providing the source lines to the debugger. Threaded builds were | |
ba06688d | 567 | unaffected. |
074d6753 | 568 | |
4e5b563d FC |
569 | =item * |
570 | ||
571 | Enabling "used once" warnings no longer causes crashes on stash | |
572 | circularities created at compile time (C<*Foo::Bar::Foo:: = *Foo::>). | |
573 | ||
ee818f56 FC |
574 | =item * |
575 | ||
576 | Undef constants used in hash keys (C<use constant u => undef; $h{+u}>) no | |
577 | longer produce "uninitialized" warnings at compile time. | |
578 | ||
c054cc81 FC |
579 | =item * |
580 | ||
581 | Modifying a substitution target inside the substitution replacement no | |
582 | longer causes crashes. | |
583 | ||
efcbb8b2 FC |
584 | =item * |
585 | ||
586 | The first statement inside a string eval used to use the wrong pragma setting sometimes during constant folding. C<eval 'uc chr 0xe0'> would randomly choose between Unicode, byte, and locale semantics. This has been | |
587 | fixed. | |
588 | ||
36813eeb FC |
589 | =item * |
590 | ||
591 | The handling of return values of @INC filters (subroutines returned by | |
592 | subroutines in @INC) has been fixed in various ways. Previously tied | |
593 | variables were mishandled, and setting $_ to a reference or typeglob could | |
594 | result in crashes. | |
595 | ||
52937067 FC |
596 | =item * |
597 | ||
598 | The C<SvPVbyte> XS function has been fixed to work with tied scalars | |
599 | returning something other than a string. It used to return utf8 in those | |
600 | cases where C<SvPV> would. | |
601 | ||
6760cac5 FC |
602 | =item * |
603 | ||
604 | Perl 5.18.0 inadvertently made dereferenced regular expressions | |
605 | S<(C<${ qr// }>)> false as booleans. This has been fixed. | |
606 | ||
671f9ff7 FC |
607 | =item * |
608 | ||
609 | Perl 5.18.0 inadvertently made C<--> and C<++> crash on dereferenced | |
610 | regular expressions, and stopped C<++> from flattening vstrings. | |
611 | ||
912a9a8f FC |
612 | =item * |
613 | ||
614 | C<bless> no longer dies with "Can't bless non-reference value" if its first | |
615 | argument is a tied reference. | |
616 | ||
0d25b9d4 FC |
617 | =item * |
618 | ||
619 | C<reset> with an argument no longer skips copy-on-write scalars, regular | |
620 | expressions, typeglob copies, and vstrings. Also, when encountering those | |
621 | or read-only values, it no longer skips any array or hash with the same | |
622 | name. | |
623 | ||
a82207ba FC |
624 | =item * |
625 | ||
18e2e6cd FC |
626 | C<reset> with an argument now skips scalars aliased to typeglobs |
627 | (C<for $z (*foo) { reset "z" }>). Previously it would corrupt memory or | |
628 | crash. | |
629 | ||
630 | =item * | |
631 | ||
a82207ba FC |
632 | C<ucfirst> and C<lcfirst> were not respecting the bytes pragma. This was a |
633 | regression from v5.12 [perl #117355]. | |
634 | ||
31d5dc65 DM |
635 | =item * |
636 | ||
637 | The use of C<\G> in regular expressions, where it's not at the start of | |
638 | the pattern, is now slightly less buggy (although it is still somewhat | |
639 | problematic). | |
640 | ||
641 | =item * | |
642 | ||
643 | Where a regular expression included code blocks (C</(?{...})/>), and where | |
644 | the use of constant overloading triggered a re-compilation of the code block, | |
645 | the second compilation didn't see its outer lexical scope. This was a | |
646 | regression in 5.18.0. | |
647 | ||
38663f11 | 648 | =back |
d7bfa554 | 649 | |
38663f11 | 650 | =head1 Known Problems |
6810f0ad | 651 | |
12dcbffb AP |
652 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any |
653 | tests that had to be C<TODO>ed for the release would be noted here. Unfixed | |
654 | platform specific bugs also go here. | |
655 | ||
656 | [ List each fix as a =item entry ] | |
657 | ||
38663f11 | 658 | =over 4 |
14fd9356 FC |
659 | |
660 | =item * | |
661 | ||
12dcbffb | 662 | XXX |
0e417e4d | 663 | |
38663f11 | 664 | =back |
583aa5c2 | 665 | |
12dcbffb AP |
666 | =head1 Obituary |
667 | ||
668 | XXX If any significant core contributor has died, we've added a short obituary | |
669 | here. | |
670 | ||
583aa5c2 | 671 | =head1 Acknowledgements |
a75569c0 | 672 | |
12dcbffb AP |
673 | XXX Generate this with: |
674 | ||
675 | perl Porting/acknowledgements.pl v5.19.2..HEAD | |
f5b73711 | 676 | |
44691e6f AB |
677 | =head1 Reporting Bugs |
678 | ||
e08634c5 SH |
679 | If you find what you think is a bug, you might check the articles recently |
680 | posted to the comp.lang.perl.misc newsgroup and the perl bug database at | |
681 | http://rt.perl.org/perlbug/ . There may also be information at | |
682 | http://www.perl.org/ , the Perl Home Page. | |
44691e6f | 683 | |
e08634c5 SH |
684 | If you believe you have an unreported bug, please run the L<perlbug> program |
685 | included with your release. Be sure to trim your bug down to a tiny but | |
686 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
687 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. | |
44691e6f AB |
688 | |
689 | If the bug you are reporting has security implications, which make it | |
e08634c5 SH |
690 | inappropriate to send to a publicly archived mailing list, then please send it |
691 | to perl5-security-report@perl.org. This points to a closed subscription | |
692 | unarchived mailing list, which includes all the core committers, who will be | |
693 | able to help assess the impact of issues, figure out a resolution, and help | |
f9001595 | 694 | co-ordinate the release of patches to mitigate or fix the problem across all |
e08634c5 SH |
695 | platforms on which Perl is supported. Please only use this address for |
696 | security issues in the Perl core, not for modules independently distributed on | |
697 | CPAN. | |
44691e6f AB |
698 | |
699 | =head1 SEE ALSO | |
700 | ||
e08634c5 SH |
701 | The F<Changes> file for an explanation of how to view exhaustive details on |
702 | what changed. | |
44691e6f AB |
703 | |
704 | The F<INSTALL> file for how to build Perl. | |
705 | ||
706 | The F<README> file for general stuff. | |
707 | ||
708 | The F<Artistic> and F<Copying> files for copyright information. | |
709 | ||
710 | =cut |