Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
541cb22c | 3 | =for comment |
66008486 | 4 | This has been completed up to a74fb2cdc8f, except for |
61f966e7 | 5 | e032854 khw [perl #32080] is_utf8_string() reads too far |
541cb22c | 6 | |
44691e6f AB |
7 | =head1 NAME |
8 | ||
0aaeb177 SH |
9 | [ this is a template for a new perldelta file. Any text flagged as |
10 | XXX needs to be processed before release. ] | |
760696b8 | 11 | |
0aaeb177 | 12 | perldelta - what is new for perl v5.15.6 |
062678b2 | 13 | |
0aaeb177 | 14 | =head1 DESCRIPTION |
ad32999b | 15 | |
0aaeb177 SH |
16 | This document describes differences between the 5.15.5 release and |
17 | the 5.15.6 release. | |
ad32999b | 18 | |
0aaeb177 SH |
19 | If you are upgrading from an earlier release such as 5.15.4, first read |
20 | L<perl5155delta>, which describes differences between 5.15.4 and | |
21 | 5.15.5. | |
ad32999b | 22 | |
0aaeb177 | 23 | =head1 Notice |
ad32999b | 24 | |
0aaeb177 | 25 | XXX Any important notices here |
ad32999b | 26 | |
0aaeb177 | 27 | =head1 Core Enhancements |
a3f52e2e | 28 | |
0aaeb177 SH |
29 | XXX New core language features go here. Summarise user-visible core language |
30 | enhancements. Particularly prominent performance optimisations could go | |
31 | here, but most should go in the L</Performance Enhancements> section. | |
a3f52e2e | 32 | |
0aaeb177 | 33 | [ List each enhancement as a =head2 entry ] |
6d110ad0 | 34 | |
61f966e7 FC |
35 | =head2 C<__SUB__> |
36 | ||
37 | The new C<__SUB__> token, available under the "current_sub" feature (see | |
38 | L<feature>) or C<use v5.15>, returns a reference to the current subroutine, | |
39 | making it easier to write recursive closures. | |
40 | ||
d1fb015b FC |
41 | =head2 New option for the debugger's B<t> command |
42 | ||
43 | The B<t> command in the debugger, which toggles tracing mode, now accepts a | |
44 | numerical argument that determines how many levels of subroutine calls to | |
45 | trace. | |
46 | ||
e3c71926 | 47 | =head1 Security |
6d110ad0 | 48 | |
0aaeb177 SH |
49 | XXX Any security-related notices go here. In particular, any security |
50 | vulnerabilities closed should be noted here rather than in the | |
51 | L</Selected Bug Fixes> section. | |
6d110ad0 | 52 | |
0aaeb177 | 53 | [ List each security issue as a =head2 entry ] |
6d110ad0 | 54 | |
e3c71926 | 55 | =head1 Incompatible Changes |
6d110ad0 | 56 | |
0aaeb177 | 57 | XXX For a release on a stable branch, this section aspires to be: |
ad32999b | 58 | |
0aaeb177 SH |
59 | There are no changes intentionally incompatible with 5.XXX.XXX |
60 | If any exist, they are bugs and reports are welcome. | |
ad32999b | 61 | |
0aaeb177 | 62 | [ List each incompatible change as a =head2 entry ] |
ad32999b | 63 | |
66008486 FC |
64 | =head2 C<substr> lvalue revamp |
65 | ||
66 | When C<substr> is called in lvalue or potential lvalue context with two or | |
67 | three arguments, a special lvalue scalar is returned that modifies the | |
68 | original string (the first argument) when assigned to. | |
69 | ||
70 | Previously, the offsets (the second and third arguments) passed to | |
71 | C<substr> would be converted immediately to match the string, negative | |
72 | offsets being translated to positive and offsets beyond the end of the | |
73 | string being truncated. | |
74 | ||
75 | Now, the offsets are recorded without modification in the special lvalue | |
76 | scalar that is returned, and the original string is not even looked at by | |
77 | C<substr> itself, but only when the returned lvalue is read or modified. | |
78 | ||
79 | These changes result in several incompatible changes and bug fixes: | |
80 | ||
81 | =over | |
82 | ||
83 | =item * | |
84 | ||
85 | If the original string changes length after the call to C<substr> but | |
86 | before assignment to its return value, negative offsets will remember | |
87 | their position from the end of the string, affecting code like this: | |
88 | ||
89 | my $string = "string"; | |
90 | my $lvalue = \substr $string, -4, 2; | |
91 | print $lvalue, "\n"; # prints "ri" | |
92 | $string = "bailing twine"; | |
93 | print $lvalue, "\n"; # prints "wi"; used to print "il" | |
94 | ||
95 | The same thing happens with an omitted third argument. The returned lvalue | |
96 | will always extend to the end of the string, even if the string becomes | |
97 | longer. | |
98 | ||
99 | =item * | |
100 | ||
101 | Tied (and otherwise magical) variables are no longer exempt from the | |
102 | "Attempt ot use reference as lvalue in substr" warning. | |
103 | ||
104 | =item * | |
105 | ||
106 | That warning now occurs when the returned lvalue is assigned to, not when | |
107 | C<substr> itself is called. This only makes a difference if the return | |
108 | value of C<substr> is referenced and assigned to later. | |
109 | ||
110 | =item * | |
111 | ||
112 | The order in which "uninitialized" warnings occur for arguments to | |
113 | C<substr> has changed. | |
114 | ||
115 | =item * | |
116 | ||
117 | Passing a substring of a read-only value or a typeglob to a function (potential lvalue context) no longer causes an immediate "Can't coerce" or "Modification of a read-only value" error. That error only occurs if and | |
118 | when the value passed is assigned to. | |
119 | ||
120 | The same thing happens with the "substr outside of string" error. | |
121 | ||
122 | =item * | |
123 | ||
124 | C<substr> assignments no longer call FETCH twice if the first argument is a | |
125 | tied variable, but just once. | |
126 | ||
127 | =back | |
128 | ||
129 | It was impossible to fix all the bugs without an incompatible change, and | |
130 | the behaviour of negative offsets was never specified, so the change was | |
131 | deemed acceptable. | |
132 | ||
541cb22c FC |
133 | =head2 XS API tweak |
134 | ||
135 | The C<newCONSTSUB_flags> C-level function, added in 5.15.4, now has a | |
136 | C<len> parameter. | |
137 | ||
e3c71926 | 138 | =head1 Deprecations |
6d110ad0 | 139 | |
0aaeb177 SH |
140 | XXX Any deprecated features, syntax, modules etc. should be listed here. |
141 | In particular, deprecated modules should be listed here even if they are | |
142 | listed as an updated module in the L</Modules and Pragmata> section. | |
ae92a9ae | 143 | |
0aaeb177 | 144 | [ List each deprecation as a =head2 entry ] |
ae92a9ae | 145 | |
e3c71926 | 146 | =head1 Performance Enhancements |
6d110ad0 | 147 | |
0aaeb177 SH |
148 | XXX Changes which enhance performance without changing behaviour go here. There |
149 | may well be none in a stable release. | |
150 | ||
151 | [ List each enhancement as a =item entry ] | |
152 | ||
e3c71926 | 153 | =over 4 |
6d110ad0 FC |
154 | |
155 | =item * | |
156 | ||
679b54e7 FC |
157 | Perl 5.12.0 sped up the destruction of objects whose classes define empty |
158 | C<DESTROY> methods (to prevent autoloading), simply by not calling such | |
159 | empty methods. This release takes this optimisation a step further, by not | |
160 | calling any C<DESTROY> method that begins with an C<return> statement. | |
161 | This can be useful for destructors that are only used for debugging: | |
162 | ||
163 | use constant DEBUG => 1; | |
164 | sub DESTROY { return unless DEBUG; ... } | |
165 | ||
166 | Constant-folding will reduce the first statement to C<return;> if DEBUG is | |
167 | set to 0, triggering this optimisation. | |
6d110ad0 | 168 | |
d1fb015b FC |
169 | =item * |
170 | ||
171 | Assign to a variable that holds a typeglob or copy-on-write scalar is now | |
172 | much faster. Previously the typeglob would be stringified or the | |
173 | copy-on-write scalar would be copied before being clobbered. | |
174 | ||
e3c71926 | 175 | =back |
6d110ad0 | 176 | |
e3c71926 | 177 | =head1 Modules and Pragmata |
6d110ad0 | 178 | |
0aaeb177 SH |
179 | XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> |
180 | go here. If Module::CoreList is updated, generate an initial draft of the | |
181 | following sections using F<Porting/corelist-perldelta.pl>, which prints stub | |
182 | entries to STDOUT. Results can be pasted in place of the '=head2' entries | |
183 | below. A paragraph summary for important changes should then be added by hand. | |
184 | In an ideal world, dual-life modules would have a F<Changes> file that could be | |
185 | cribbed. | |
186 | ||
187 | [ Within each section, list entries as a =item entry ] | |
188 | ||
e3c71926 | 189 | =head2 New Modules and Pragmata |
6d110ad0 | 190 | |
e3c71926 | 191 | =over 4 |
6d110ad0 FC |
192 | |
193 | =item * | |
194 | ||
0aaeb177 | 195 | XXX |
6d110ad0 FC |
196 | |
197 | =back | |
198 | ||
e3c71926 | 199 | =head2 Updated Modules and Pragmata |
6d110ad0 | 200 | |
e3c71926 | 201 | =over 4 |
6d110ad0 FC |
202 | |
203 | =item * | |
204 | ||
f8c9502f CBW |
205 | L<Archive::Tar> has been upgraded from version 1.80 to version 1.82. |
206 | ||
207 | Adjustments to handle files >8gb (>0777777777777 octal) and a feature to | |
208 | return the MD5SUM of files in the archive. | |
a3f52e2e | 209 | |
87b9431e CBW |
210 | =item * |
211 | ||
74c26f06 CBW |
212 | L<AutoLoader> has been upgraded from version 5.71 to version 5.72. |
213 | ||
214 | =item * | |
215 | ||
8cea0f87 CBW |
216 | L<B::Debug> has been upgraded from version 1.16 to version 1.17. |
217 | ||
218 | =item * | |
219 | ||
679b54e7 FC |
220 | L<B::Deparse> has been upgraded from version 1.09 to 1.10. |
221 | ||
222 | C<sort(foo(bar))> is now deparsed correctly. (C<sort foo(bar)>, how it used | |
223 | to deparse, makes foo the sort routine, rather than a regular function | |
224 | call.) | |
225 | ||
226 | =item * | |
227 | ||
9505dd85 | 228 | L<Compress::Raw::Zlib> has been upgraded from version 2.042 to version 2.045. |
87b9431e | 229 | |
7e700369 CBW |
230 | =item * |
231 | ||
6475ddc2 | 232 | L<Compress::Raw::Bzip2> has been upgraded from version 2.042 to version 2.045. |
7e700369 | 233 | |
dc7edc5c CBW |
234 | =item * |
235 | ||
61f966e7 FC |
236 | L<Data::Dumper> has been upgraded from version 2.134 to 2.135. |
237 | ||
238 | The XS implementation has been updated to account for the Unicode symbol | |
239 | changes in Perl 5.15.4. It also knows how to output typeglobs with nulls | |
240 | in their names. | |
241 | ||
242 | =item * | |
243 | ||
ac616993 CBW |
244 | L<ExtUtils::ParseXS> has been upgraded from version 3.05 to version 3.07. |
245 | ||
246 | =item * | |
247 | ||
090349ce | 248 | L<IO::Compress::Base> has been upgraded from version 2.042 to version 2.045. |
08ad9465 CBW |
249 | |
250 | Added zipdetails utility. | |
dc7edc5c | 251 | |
7788a270 CBW |
252 | =item * |
253 | ||
4345d05b CBW |
254 | L<Locale::Codes> has been upgraded from version 3.18 to version 3.20. |
255 | ||
256 | The code2XXX, XXX2code, all_XXX_codes, and all_XXX_names functions now support retired codes. | |
257 | All codesets may be specified by a constant or by their name now. Previously, | |
258 | they were specified only by a constant. | |
259 | The alias_code function exists for backward compatibility. It has been replaced by rename_country_code. | |
260 | The alias_code function will be removed sometime after September, 2013. | |
261 | All work is now done in the central module (Locale::Codes). Previously, some was still done in the | |
262 | wrapper modules (Locale::Codes::*) but that is gone now. | |
263 | Added Language Family codes (langfam) as defined in ISO 639-5. | |
264 | ||
265 | =item * | |
266 | ||
b42ff875 CBW |
267 | L<Module::Loaded> has been uprgaded from version 0.06 to version 0.08. |
268 | ||
269 | =item * | |
270 | ||
a71d67b1 CBW |
271 | L<Pod::LaTeX> has been upgraded from version 0.59 to version 0.60. |
272 | ||
273 | Added another LaTeX escape: --- => -{}-{}- | |
274 | ||
275 | Pod::LaTeX doesn't handle -- in PODs specially, passing it directly to | |
276 | LaTeX, which then proceeds to replace it with a single -. This patch | |
277 | replaces ----- with -{}-{}-{}-{}- | |
278 | ||
279 | =item * | |
280 | ||
65ae8d99 | 281 | L<Unicode::Collate> has been upgraded from version 0.85 to version 0.87. |
7788a270 CBW |
282 | |
283 | Tailored compatibility ideographs as well as unified ideographs for | |
284 | the locales: ja, ko, zh__big5han, zh__gb2312han, zh__pinyin, zh__stroke. | |
285 | ||
65ae8d99 CBW |
286 | Now Locale/*.pl files are searched in @INC. |
287 | ||
0aaeb177 | 288 | =back |
6138a722 | 289 | |
0aaeb177 | 290 | =head2 Removed Modules and Pragmata |
6138a722 | 291 | |
0aaeb177 | 292 | =over 4 |
be539103 | 293 | |
a47fb3fe CBW |
294 | =item * |
295 | ||
0aaeb177 | 296 | XXX |
a3f52e2e | 297 | |
0aaeb177 | 298 | =back |
a3f52e2e | 299 | |
0aaeb177 | 300 | =head1 Documentation |
a3f52e2e | 301 | |
0aaeb177 SH |
302 | XXX Changes to files in F<pod/> go here. Consider grouping entries by |
303 | file and be sure to link to the appropriate page, e.g. L<perlfunc>. | |
a3f52e2e | 304 | |
0aaeb177 | 305 | =head2 New Documentation |
ad32999b | 306 | |
0aaeb177 | 307 | XXX Changes which create B<new> files in F<pod/> go here. |
ad32999b | 308 | |
0aaeb177 | 309 | =head3 L<XXX> |
ad32999b | 310 | |
0aaeb177 | 311 | XXX Description of the purpose of the new file here |
6138a722 | 312 | |
0aaeb177 | 313 | =head2 Changes to Existing Documentation |
6138a722 | 314 | |
0aaeb177 SH |
315 | XXX Changes which significantly change existing files in F<pod/> go here. |
316 | However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics> | |
317 | section. | |
a47fb3fe | 318 | |
0aaeb177 | 319 | =head3 L<XXX> |
a47fb3fe | 320 | |
0aaeb177 | 321 | =over 4 |
7ef25837 | 322 | |
6d110ad0 FC |
323 | =item * |
324 | ||
0aaeb177 | 325 | XXX Description of the change here |
6d110ad0 FC |
326 | |
327 | =back | |
328 | ||
e3c71926 FR |
329 | =head1 Diagnostics |
330 | ||
331 | The following additions or changes have been made to diagnostic output, | |
332 | including warnings and fatal error messages. For the complete list of | |
333 | diagnostic messages, see L<perldiag>. | |
6d110ad0 | 334 | |
0aaeb177 SH |
335 | XXX New or changed warnings emitted by the core's C<C> code go here. Also |
336 | include any changes in L<perldiag> that reconcile it to the C<C> code. | |
6138a722 | 337 | |
0aaeb177 SH |
338 | [ Within each section, list entries as a =item entry that links to perldiag, |
339 | e.g. | |
6138a722 | 340 | |
0aaeb177 | 341 | =item * |
6138a722 | 342 | |
0aaeb177 SH |
343 | L<Invalid version object|perldiag/"Invalid version object"> |
344 | ] | |
6138a722 | 345 | |
0aaeb177 | 346 | =head2 New Diagnostics |
828d6195 | 347 | |
0aaeb177 | 348 | XXX Newly added diagnostic messages go here |
83307084 | 349 | |
0aaeb177 | 350 | =head3 New Errors |
d39de893 | 351 | |
3432e5a1 | 352 | =over 4 |
39afdc5a CBW |
353 | |
354 | =item * | |
355 | ||
0aaeb177 | 356 | XXX L<message|perldiag/"message"> |
6138a722 | 357 | |
e3c71926 | 358 | =back |
7b8e5ef0 | 359 | |
0aaeb177 | 360 | =head3 New Warnings |
91710846 | 361 | |
e3c71926 | 362 | =over 4 |
91710846 DG |
363 | |
364 | =item * | |
365 | ||
0aaeb177 | 366 | XXX L<message|perldiag/"message"> |
f81e39ef | 367 | |
e3c71926 | 368 | =back |
a2fa999d | 369 | |
0aaeb177 SH |
370 | =head2 Changes to Existing Diagnostics |
371 | ||
372 | XXX Changes (i.e. rewording) of diagnostic messages go here | |
bd65daab | 373 | |
e3c71926 | 374 | =over 4 |
bd65daab | 375 | |
3f2cb5bf S |
376 | =item * |
377 | ||
18fbfe8d FC |
378 | Redefinition warnings for constant subroutines used to be mandatory, even |
379 | occurring under C<no warnings>. Now they respect the L<warnings> pragma. | |
b420b12a | 380 | |
61f966e7 FC |
381 | =item * |
382 | ||
383 | The "Attempt to free non-existent shared string" has had the spelling of | |
384 | "non-existent" corrected to "nonexistent". It was already listed with the | |
385 | correct spelling in L<perldiag>. | |
386 | ||
66008486 FC |
387 | =item * |
388 | ||
389 | The 'Use of "foo" without parentheses is ambiguous' warning has been | |
390 | extended to apply also to user-defined subroutines with a (;$) prototype, | |
391 | and not just to built-in functions. | |
392 | ||
3432e5a1 | 393 | =back |
b420b12a | 394 | |
0aaeb177 | 395 | =head1 Utility Changes |
9cfd094e | 396 | |
0aaeb177 SH |
397 | XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go |
398 | here. Most of these are built within the directories F<utils> and F<x2p>. | |
95f7e41f | 399 | |
0aaeb177 SH |
400 | [ List utility changes as a =head3 entry for each utility and =item |
401 | entries for each change | |
402 | Use L<XXX> with program names to get proper documentation linking. ] | |
95f7e41f | 403 | |
08ad9465 | 404 | =head3 L<zipdetails> |
d6cf2367 | 405 | |
e3c71926 | 406 | =over 4 |
b53e16ae FC |
407 | |
408 | =item * | |
409 | ||
08ad9465 CBW |
410 | L<zipdetails> displays information about the internal record structure of the zip file. |
411 | It is not concerned with displaying any details of the compressed data stored in the zip file. | |
b53e16ae | 412 | |
3432e5a1 | 413 | =back |
60092ce4 | 414 | |
0aaeb177 SH |
415 | =head1 Configuration and Compilation |
416 | ||
417 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools | |
418 | go here. Any other changes to the Perl build process should be listed here. | |
419 | However, any platform-specific changes should be listed in the | |
420 | L</Platform Support> section, instead. | |
421 | ||
422 | [ List changes as a =item entry ]. | |
309aab3a | 423 | |
e3c71926 | 424 | =over 4 |
b53e16ae FC |
425 | |
426 | =item * | |
427 | ||
60f0ee9d NC |
428 | F<pod/roffitall> is now build by F<pod/buildtoc>, instead of being shipped |
429 | with the distribution. Its list of manpages is now generated (and therefore | |
430 | current). See also RT #103202 for an unresolved related issue. | |
a3f52e2e | 431 | |
61f966e7 FC |
432 | =item * |
433 | ||
434 | Perl 5.15.5 had a bug in its installation script, which did not install | |
435 | F<unicore/Name.pm>. This has been corrected [perl #104226]. | |
436 | ||
437 | XXX Is that Perl version correct? Is the file path correct? | |
438 | ||
0aaeb177 | 439 | =back |
a3f52e2e | 440 | |
0aaeb177 | 441 | =head1 Testing |
a3f52e2e | 442 | |
0aaeb177 SH |
443 | XXX Any significant changes to the testing of a freshly built perl should be |
444 | listed here. Changes which create B<new> files in F<t/> go here as do any | |
445 | large changes to the testing harness (e.g. when parallel testing was added). | |
446 | Changes to existing files in F<t/> aren't worth summarising, although the bugs | |
447 | that they represent may be covered elsewhere. | |
a3f52e2e | 448 | |
0aaeb177 | 449 | [ List each test improvement as a =item entry ] |
a3f52e2e | 450 | |
0aaeb177 | 451 | =over 4 |
a3f52e2e FC |
452 | |
453 | =item * | |
454 | ||
d1fb015b FC |
455 | The F<substr.t> and F<substr_thr.t> scripts for testing C<substr> have been |
456 | moved under F<t/op/>, where they were originally. They had been moved | |
457 | under F<t/re/> along with the substitution tests when that directory was | |
458 | created. | |
a3f52e2e | 459 | |
0aaeb177 | 460 | =back |
a3f52e2e | 461 | |
0aaeb177 | 462 | =head1 Platform Support |
a3f52e2e | 463 | |
0aaeb177 | 464 | XXX Any changes to platform support should be listed in the sections below. |
a3f52e2e | 465 | |
0aaeb177 SH |
466 | [ Within the sections, list each platform as a =item entry with specific |
467 | changes as paragraphs below it. ] | |
a3f52e2e | 468 | |
0aaeb177 | 469 | =head2 New Platforms |
a3f52e2e | 470 | |
0aaeb177 SH |
471 | XXX List any platforms that this version of perl compiles on, that previous |
472 | versions did not. These will either be enabled by new files in the F<hints/> | |
473 | directories, or new subdirectories and F<README> files at the top level of the | |
474 | source tree. | |
a3f52e2e | 475 | |
0aaeb177 | 476 | =over 4 |
a3f52e2e | 477 | |
0aaeb177 | 478 | =item XXX-some-platform |
a3f52e2e | 479 | |
0aaeb177 | 480 | XXX |
a3f52e2e | 481 | |
0aaeb177 | 482 | =back |
a3f52e2e | 483 | |
0aaeb177 | 484 | =head2 Discontinued Platforms |
ca955add | 485 | |
0aaeb177 | 486 | XXX List any platforms that this version of perl no longer compiles on. |
bbdd8bad | 487 | |
0aaeb177 | 488 | =over 4 |
bbdd8bad | 489 | |
0aaeb177 | 490 | =item XXX-some-platform |
ad32999b | 491 | |
0aaeb177 | 492 | XXX |
ad32999b | 493 | |
0aaeb177 | 494 | =back |
ad32999b | 495 | |
0aaeb177 | 496 | =head2 Platform-Specific Notes |
ad32999b | 497 | |
0aaeb177 SH |
498 | XXX List any changes for specific platforms. This could include configuration |
499 | and compilation changes or changes in portability/compatibility. However, | |
500 | changes within modules for platforms should generally be listed in the | |
501 | L</Modules and Pragmata> section. | |
ad32999b | 502 | |
0aaeb177 | 503 | =over 4 |
ad32999b | 504 | |
0aaeb177 | 505 | =item XXX-some-platform |
ad32999b | 506 | |
0aaeb177 | 507 | XXX |
ad32999b | 508 | |
0aaeb177 | 509 | =back |
ad32999b | 510 | |
0aaeb177 | 511 | =head1 Internal Changes |
ad32999b | 512 | |
0aaeb177 SH |
513 | XXX Changes which affect the interface available to C<XS> code go here. |
514 | Other significant internal changes for future core maintainers should | |
515 | be noted as well. | |
ad32999b | 516 | |
0aaeb177 | 517 | [ List each change as a =item entry ] |
ad32999b | 518 | |
0aaeb177 | 519 | =over 4 |
ad32999b | 520 | |
3973654e FC |
521 | =item * |
522 | ||
0aaeb177 | 523 | XXX |
3973654e | 524 | |
0aaeb177 | 525 | =back |
cca38fda | 526 | |
0aaeb177 | 527 | =head1 Selected Bug Fixes |
9c7c1651 | 528 | |
0aaeb177 SH |
529 | XXX Important bug fixes in the core language are summarised here. |
530 | Bug fixes in files in F<ext/> and F<lib/> are best summarised in | |
531 | L</Modules and Pragmata>. | |
9c7c1651 | 532 | |
0aaeb177 | 533 | [ List each fix as a =item entry ] |
fce59cd4 | 534 | |
0aaeb177 | 535 | =over 4 |
fce59cd4 | 536 | |
b9e83cd1 FC |
537 | =item * |
538 | ||
541cb22c FC |
539 | A constant subroutine assigned to a glob whose name contains a null will no |
540 | longer cause extra globs to pop into existence when the constant is | |
541 | referenced under its new name. | |
b9e83cd1 | 542 | |
679b54e7 FC |
543 | =item * |
544 | ||
545 | C<sort> was not treating C<sub {}> and C<sub {()}> as equivalent when such | |
546 | a sub was provided as the comparison routine. It used to croak on | |
547 | C<sub {()}>. | |
548 | ||
549 | =item * | |
550 | ||
551 | Subroutines from the C<autouse> namespace are once more exempt from | |
552 | redefinition warnings. This used to work in 5.005, but was broken in 5.6 | |
553 | for most subroutines. For subs created via XS that redefine subroutines | |
554 | from the C<autouse> package, this stopped working in 5.10. | |
555 | ||
556 | =item * | |
557 | ||
558 | New XSUBs now produce redefinition warnings if they overwrite existing | |
559 | subs, as they did in 5.8.x. (The C<autouse> logic was reversed in 5.10-14. | |
560 | Only subroutines from the C<autouse> namespace would warn when clobbered.) | |
561 | ||
562 | =item * | |
563 | ||
564 | Redefinition warnings triggered by the creation of XSUBs now respect | |
565 | Unicode glob names, instead of using the internal representation. This was | |
566 | missed in 5.15.4, partly because this warning was so hard to trigger. (See | |
567 | the previous item.) | |
568 | ||
569 | =item * | |
570 | ||
571 | C<newCONSTSUB> used to use compile-time warning hints, instead of run-time | |
572 | hints. The following code should never produce a redefinition warning, but | |
573 | it used to, if C<newCONSTSUB> redefine and existing subroutine: | |
574 | ||
575 | use warnings; | |
576 | BEGIN { | |
577 | no warnings; | |
578 | some_XS_function_that_calls_new_CONSTSUB(); | |
579 | } | |
580 | ||
61f966e7 FC |
581 | =item * |
582 | ||
583 | Redefinition warnings for constant subroutines are on by default (what are | |
584 | known as severe warnings in L<perldiag>). This was only the case when it | |
585 | was a glob assignment or declaration of a Perl subroutine that caused the | |
586 | warning. If the creation of XSUBs triggered the warning, it was not a | |
587 | default warning. This has been corrected. | |
588 | ||
589 | =item * | |
590 | ||
591 | The internal check to see whether a redefinition warning should occur used | |
592 | to emit "uninitialized" warnings in cases like this: | |
593 | ||
594 | use warnings "uninitialized"; | |
595 | use constant {u=>undef,v=>undef}; | |
596 | sub foo(){u} sub foo(){v} | |
597 | ||
598 | =item * | |
599 | ||
600 | A bug fix in Perl 5.14 introduced a new bug, causing "uninitialized" | |
601 | warnings to report the wrong variable if the operator in question has | |
602 | two operands and one is C<%{...}> or C<@{...}>. This has been fixed | |
603 | [perl #103766]. | |
604 | ||
605 | =item * | |
606 | ||
607 | C<< version->new("version") >> and C<printf "%vd", "version"> no longer | |
608 | crash [perl #102586]. | |
609 | ||
d1fb015b FC |
610 | =item * |
611 | ||
612 | C<$tied =~ y/a/b/>, C<chop $tied> and C<chomp $tied> now call FETCH just | |
613 | once when $tied holds a reference. | |
614 | ||
615 | =item * | |
616 | ||
617 | Four-argument C<select> now always calls FETCH on tied arguments. It used | |
618 | to skip the call if the tied argument happened to hold C<undef> or a | |
619 | typeglob. | |
620 | ||
621 | =item * | |
622 | ||
623 | Four-argument C<select> no longer produces its "Non-string passed as | |
624 | bitmask" warning on tied or tainted variables that are strings. | |
625 | ||
626 | =item * | |
627 | ||
628 | C<sysread> now always calls FETCH on the buffer passed to it if it is tied. | |
629 | It used to skip the call if the tied variable happened to hold a typeglob. | |
630 | ||
631 | =item * | |
632 | ||
633 | C<< $tied .= <> >> now calls FETCH once on C<$tied>. It used to call it | |
634 | multiple times if the last value assigned to or returned from the tied | |
635 | variable was anything other than a string or typeglob. | |
636 | ||
66008486 FC |
637 | =item * |
638 | ||
639 | The C<evalbytes> keyword added in 5.15.5 was respecting C<use utf8> | |
640 | declarations from the outer scope, when it should have been ignoring them. | |
641 | ||
0aaeb177 | 642 | =back |
bf19b80e | 643 | |
0aaeb177 | 644 | =head1 Known Problems |
bf19b80e | 645 | |
0aaeb177 SH |
646 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any |
647 | tests that had to be C<TODO>ed for the release would be noted here, unless | |
648 | they were specific to a particular platform (see below). | |
65b66aa9 | 649 | |
0aaeb177 SH |
650 | This is a list of some significant unfixed bugs, which are regressions |
651 | from either 5.XXX.XXX or 5.XXX.XXX. | |
65b66aa9 | 652 | |
0aaeb177 | 653 | [ List each fix as a =item entry ] |
b53e16ae | 654 | |
0aaeb177 | 655 | =over 4 |
b53e16ae | 656 | |
7c864bb3 VP |
657 | =item * |
658 | ||
0aaeb177 | 659 | XXX |
7c864bb3 | 660 | |
63ac71b9 | 661 | =back |
bbc28bfc | 662 | |
0aaeb177 | 663 | =head1 Obituary |
8fe05716 | 664 | |
0aaeb177 SH |
665 | XXX If any significant core contributor has died, we've added a short obituary |
666 | here. | |
8fe05716 | 667 | |
0aaeb177 | 668 | =head1 Acknowledgements |
8fe05716 | 669 | |
0aaeb177 | 670 | XXX Generate this with: |
8fe05716 | 671 | |
0aaeb177 | 672 | perl Porting/acknowledgements.pl v5.15.5..HEAD |
29cf780c | 673 | |
44691e6f AB |
674 | =head1 Reporting Bugs |
675 | ||
676 | If you find what you think is a bug, you might check the articles | |
34dc2ec0 | 677 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
44691e6f AB |
678 | bug database at http://rt.perl.org/perlbug/ . There may also be |
679 | information at http://www.perl.org/ , the Perl Home Page. | |
680 | ||
681 | If you believe you have an unreported bug, please run the L<perlbug> | |
682 | program included with your release. Be sure to trim your bug down | |
683 | to a tiny but sufficient test case. Your bug report, along with the | |
684 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
685 | analysed by the Perl porting team. | |
686 | ||
687 | If the bug you are reporting has security implications, which make it | |
688 | inappropriate to send to a publicly archived mailing list, then please send | |
34dc2ec0 | 689 | it to perl5-security-report@perl.org. This points to a closed subscription |
b4707b2a FC |
690 | unarchived mailing list, which includes |
691 | all the core committers, who will be able | |
44691e6f AB |
692 | to help assess the impact of issues, figure out a resolution, and help |
693 | co-ordinate the release of patches to mitigate or fix the problem across all | |
34dc2ec0 DM |
694 | platforms on which Perl is supported. Please only use this address for |
695 | security issues in the Perl core, not for modules independently | |
44691e6f AB |
696 | distributed on CPAN. |
697 | ||
698 | =head1 SEE ALSO | |
699 | ||
700 | The F<Changes> file for an explanation of how to view exhaustive details | |
701 | on what changed. | |
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 |