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