Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
90bf1576 | 3 | =for comment |
d25a863e FC |
4 | This has been completed up to e0538447777, except for: |
5 | 8629c11317 smueller Escape double-quotes in generated #line directives | |
90bf1576 | 6 | |
44691e6f AB |
7 | =head1 NAME |
8 | ||
52deee2e DR |
9 | [ this is a template for a new perldelta file. Any text flagged as |
10 | XXX needs to be processed before release. ] | |
062678b2 | 11 | |
52deee2e | 12 | perldelta - what is new for perl v5.15.7 |
ad32999b | 13 | |
52deee2e | 14 | =head1 DESCRIPTION |
ad32999b | 15 | |
52deee2e DR |
16 | This document describes differences between the 5.15.6 release and |
17 | the 5.15.7 release. | |
ad32999b | 18 | |
52deee2e DR |
19 | If you are upgrading from an earlier release such as 5.15.5, first read |
20 | L<perl5156delta>, which describes differences between 5.15.5 and | |
21 | 5.15.6. | |
a3f52e2e | 22 | |
52deee2e | 23 | =head1 Notice |
61f966e7 | 24 | |
52deee2e | 25 | XXX Any important notices here |
61f966e7 | 26 | |
52deee2e | 27 | =head1 Core Enhancements |
d1fb015b | 28 | |
52deee2e DR |
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. | |
7e7629fa | 32 | |
52deee2e | 33 | [ List each enhancement as a =head2 entry ] |
7e7629fa | 34 | |
fbb93542 KW |
35 | =head2 C<use charnames> no longer needed for C<\N{I<name>}> |
36 | ||
37 | The C<charnames> module is now automatically loaded when needed as if | |
38 | the C<:full> and C<:short> options had been specified. See | |
39 | L<charnames>. | |
40 | ||
e3c71926 | 41 | =head1 Security |
6d110ad0 | 42 | |
52deee2e DR |
43 | XXX Any security-related notices go here. In particular, any security |
44 | vulnerabilities closed should be noted here rather than in the | |
45 | L</Selected Bug Fixes> section. | |
7f28d7ed | 46 | |
52deee2e | 47 | [ List each security issue as a =head2 entry ] |
7f28d7ed | 48 | |
52deee2e | 49 | =head1 Incompatible Changes |
7f28d7ed | 50 | |
52deee2e | 51 | XXX For a release on a stable branch, this section aspires to be: |
7f28d7ed | 52 | |
52deee2e DR |
53 | There are no changes intentionally incompatible with 5.XXX.XXX |
54 | If any exist, they are bugs, and we request that you submit a | |
55 | report. See L</Reporting Bugs> below. | |
7f28d7ed | 56 | |
52deee2e | 57 | [ List each incompatible change as a =head2 entry ] |
7f28d7ed | 58 | |
52deee2e | 59 | =head1 Deprecations |
7f28d7ed | 60 | |
52deee2e DR |
61 | XXX Any deprecated features, syntax, modules etc. should be listed here. |
62 | In particular, deprecated modules should be listed here even if they are | |
63 | listed as an updated module in the L</Modules and Pragmata> section. | |
66008486 | 64 | |
52deee2e | 65 | [ List each deprecation as a =head2 entry ] |
66008486 | 66 | |
ef337e16 CBW |
67 | =head2 Deprecated Modules |
68 | ||
69 | =over | |
70 | ||
71 | =item L<Version::Requirements> | |
72 | ||
73 | Version::Requirements is now DEPRECATED, use CPAN::Meta::Requirements, | |
74 | which is a drop-in replacement. It will be deleted from perl.git blead | |
75 | in v5.17.0. | |
76 | ||
77 | =back | |
78 | ||
52deee2e | 79 | =head1 Performance Enhancements |
66008486 | 80 | |
52deee2e DR |
81 | XXX Changes which enhance performance without changing behaviour go here. There |
82 | may well be none in a stable release. | |
66008486 | 83 | |
52deee2e | 84 | [ List each enhancement as a =item entry ] |
66008486 | 85 | |
52deee2e | 86 | =over 4 |
66008486 FC |
87 | |
88 | =item * | |
89 | ||
39de7394 FC |
90 | Version declarations with the C<use> keyword (e.g., C<use 5.012>) are now |
91 | faster, as they enable features without loading F<feature.pm>. | |
66008486 FC |
92 | |
93 | =back | |
94 | ||
52deee2e | 95 | =head1 Modules and Pragmata |
84b2a83e | 96 | |
52deee2e DR |
97 | XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> |
98 | go here. If Module::CoreList is updated, generate an initial draft of the | |
99 | following sections using F<Porting/corelist-perldelta.pl>, which prints stub | |
100 | entries to STDOUT. Results can be pasted in place of the '=head2' entries | |
101 | below. A paragraph summary for important changes should then be added by hand. | |
102 | In an ideal world, dual-life modules would have a F<Changes> file that could be | |
103 | cribbed. | |
541cb22c | 104 | |
52deee2e | 105 | [ Within each section, list entries as a =item entry ] |
541cb22c | 106 | |
52deee2e | 107 | =head2 New Modules and Pragmata |
6d110ad0 | 108 | |
e3c71926 | 109 | =over 4 |
6d110ad0 FC |
110 | |
111 | =item * | |
112 | ||
52deee2e | 113 | XXX |
7e7629fa | 114 | |
e3c71926 | 115 | =back |
6d110ad0 | 116 | |
e3c71926 | 117 | =head2 Updated Modules and Pragmata |
6d110ad0 | 118 | |
e3c71926 | 119 | =over 4 |
6d110ad0 FC |
120 | |
121 | =item * | |
122 | ||
6f103008 FC |
123 | L<B::Deparse> has been upgraded from version 1.10 to version 1.11. |
124 | ||
6ee63c28 | 125 | It now deparses C<open('random string')> correctly. It used to omit the |
6f103008 FC |
126 | quotation marks, which did not work if the string were not a valid |
127 | identifier [perl #91416]. | |
128 | ||
6ee63c28 FC |
129 | A similar bug also affected hash and array elements such as |
130 | C<< 'random string'->[0] >>, which would deparse as C<$random string[0]>. | |
131 | This has been fixed. | |
132 | ||
cb1728ed FC |
133 | Those same syntaxes used to drop the package name from variables beginning |
134 | with a punctuation mark, as in C<< "foo::]"->{$key} >>. This, too, has | |
135 | been fixed. | |
136 | ||
36a6a135 FC |
137 | B::Deparse no longer hangs when deparsing a program with stash |
138 | circularities, such as C<BEGIN { *Acme::Acme:: = *Acme:: }> [perl #91384]. | |
139 | ||
140 | C</$s[1]/> used to be deparsed as C<$s[1]> if @s were a lexical variable | |
2e120742 FC |
141 | [perl #81424]. Similarly, C</$#s/> would be deparsed as C<$#s> for both |
142 | lexical and package variables. These has been fixed. | |
36a6a135 FC |
143 | |
144 | The C</applaud> regular expression flags are no longer omitted. | |
145 | ||
e3ed6ae8 FC |
146 | Feature hints are now deparsed with C<use feature> rather than C<%^H> |
147 | assignments. | |
148 | ||
025130bf FC |
149 | A regression in 1.10 that caused C<ambient_pragmas> to disabled strict mode |
150 | in obscure cases has been fixed. | |
151 | ||
c7235129 FC |
152 | Strict mode is now fully deparsed, including subs and vars [perl #24027]. |
153 | ||
a7106152 FC |
154 | The global variables C<$(>, C<$|> and C<$)> are now deparsed with braces |
155 | (i.e., C<${(}>) in regular expressions [perl #86060]. | |
156 | ||
6f103008 FC |
157 | =item * |
158 | ||
7f92e913 CBW |
159 | L<CGI> has been upgraded from version 3.58 to version 3.59. |
160 | ||
161 | We no longer read from STDIN when the Content-Length is not set, preventing | |
162 | requests with no Content-Length from freezing in some cases. This is consistent | |
163 | with the CGI RFC 3875, and is also consistent with CGI::Simple. However, the old | |
164 | behavior may have been expected by some command-line uses of CGI.pm. | |
165 | ||
166 | =item * | |
167 | ||
2b283575 CBW |
168 | L<CPAN::Meta> has been upgraded from version 2.112621 to version 2.113640. |
169 | ||
170 | Version::Requirements has now been merged as CPAN::Meta::Requirements. | |
171 | ||
172 | =item * | |
173 | ||
8f5755bc | 174 | L<CPANPLUS> has been upgraded from version 0.9113 to version 0.9115. |
7f41f337 | 175 | |
88c5c971 CBW |
176 | =item * |
177 | ||
b341afcb NC |
178 | L<POSIX> has been upgraded from version 1.28 to version 1.29. |
179 | C<POSIX::sleep> is now a direct call into the underlying OS C<sleep> | |
180 | function, instead of being a Perl wrapper on C<CORE::sleep>. C<POSIX::dup2> | |
181 | now returns the correct value on Win32 (I<i.e.> the file descriptor). | |
182 | C<POSIX::SigSet> C<sigsuspend> and C<sigpending> and C<POSIX::pause> now | |
183 | dispatch safe signals immediately before returning to their caller. | |
184 | ||
185 | =item * | |
186 | ||
8f12b018 FC |
187 | L<Data::Dumper> has been upgraded from version 2.135_01 to version |
188 | 2.135_03. | |
189 | ||
190 | It can now dump vstrings [perl #101162]. | |
191 | ||
26afcec5 FC |
192 | The nameless typeglob (C<*{""}>) is now dumped properly. |
193 | ||
8f12b018 FC |
194 | =item * |
195 | ||
d7fbd56d FC |
196 | L<diagnostics> has been upgraded from version 1.26 to version 1.27. |
197 | ||
198 | See the entry for splain in the L</Utility Changes> section, for the | |
199 | changes. The diagnostics module and the splain utility are actually one | |
200 | and the same. | |
201 | ||
202 | =item * | |
203 | ||
88c5c971 CBW |
204 | L<Term::UI> has been upgraded from version 0.26 to version 0.30. |
205 | ||
c0504019 TR |
206 | =item * |
207 | ||
208 | L<Tie::File> has been upgraded from version 0.96 to version 0.98. | |
209 | ||
937a45d0 KW |
210 | =item * |
211 | ||
212 | L<Unicode::UCD> has been upgraded from version 0.37 to version 0.38. | |
213 | This changes the output of C<prop_invmap()> for the Name_Alias property | |
214 | to reflect the changes that are planned for Unicode 6.1, so that there | |
215 | won't be a format change when upgrading to 6.1. Briefly, a second | |
216 | component of each alias is added that gives the type of alias it is. | |
217 | Examples are at L<Unicode::UCD/prop_invmap()>. | |
218 | ||
ef337e16 CBW |
219 | =item * |
220 | ||
221 | L<Version::Requirements> has been upgraded from version 0.101020 to version 0.101021. | |
222 | ||
223 | Version::Requirements is now DEPRECATED, use CPAN::Meta::Requirements, | |
224 | which is a drop-in replacement. | |
225 | ||
7f28d7ed | 226 | =back |
679b54e7 | 227 | |
52deee2e | 228 | =head2 Removed Modules and Pragmata |
08ad9465 | 229 | |
52deee2e | 230 | =over 4 |
dc7edc5c | 231 | |
7788a270 CBW |
232 | =item * |
233 | ||
52deee2e | 234 | XXX |
be9a5e16 | 235 | |
52deee2e | 236 | =back |
3c7c5233 | 237 | |
52deee2e | 238 | =head1 Documentation |
3c7c5233 | 239 | |
52deee2e DR |
240 | XXX Changes to files in F<pod/> go here. Consider grouping entries by |
241 | file and be sure to link to the appropriate page, e.g. L<perlfunc>. | |
b42ff875 | 242 | |
52deee2e | 243 | =head2 New Documentation |
b42ff875 | 244 | |
52deee2e | 245 | XXX Changes which create B<new> files in F<pod/> go here. |
a71d67b1 | 246 | |
52deee2e | 247 | =head3 L<XXX> |
a71d67b1 | 248 | |
52deee2e | 249 | XXX Description of the purpose of the new file here |
a71d67b1 | 250 | |
52deee2e | 251 | =head2 Changes to Existing Documentation |
a71d67b1 | 252 | |
52deee2e DR |
253 | XXX Changes which significantly change existing files in F<pod/> go here. |
254 | However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics> | |
255 | section. | |
7e7629fa | 256 | |
52deee2e | 257 | =head3 L<XXX> |
7e7629fa | 258 | |
52deee2e | 259 | =over 4 |
7e7629fa FC |
260 | |
261 | =item * | |
262 | ||
52deee2e | 263 | XXX Description of the change here |
c2654555 | 264 | |
52deee2e | 265 | =back |
85ca3be7 | 266 | |
52deee2e | 267 | =head1 Diagnostics |
85ca3be7 | 268 | |
52deee2e DR |
269 | The following additions or changes have been made to diagnostic output, |
270 | including warnings and fatal error messages. For the complete list of | |
271 | diagnostic messages, see L<perldiag>. | |
7788a270 | 272 | |
52deee2e DR |
273 | XXX New or changed warnings emitted by the core's C<C> code go here. Also |
274 | include any changes in L<perldiag> that reconcile it to the C<C> code. | |
7788a270 | 275 | |
52deee2e DR |
276 | [ Within each section, list entries as a =item entry that links to perldiag, |
277 | e.g. | |
65ae8d99 | 278 | |
52deee2e | 279 | =item * |
a3e88ad7 | 280 | |
52deee2e DR |
281 | L<Invalid version object|perldiag/"Invalid version object"> |
282 | ] | |
a3e88ad7 | 283 | |
52deee2e | 284 | =head2 New Diagnostics |
a3e88ad7 | 285 | |
52deee2e | 286 | XXX Newly added diagnostic messages go here |
6138a722 | 287 | |
52deee2e | 288 | =head3 New Errors |
6138a722 | 289 | |
0aaeb177 | 290 | =over 4 |
be539103 | 291 | |
a47fb3fe CBW |
292 | =item * |
293 | ||
4888c563 FC |
294 | L<Cannot set tied @DB::args|perldiag/"Cannot set tied @DB::args"> |
295 | ||
296 | This error occurs when C<caller> tries to set C<@DB::args> but finds it | |
297 | tied. Before this error was added, it used to crash instead. | |
a3f52e2e | 298 | |
52272450 FC |
299 | =item * |
300 | ||
301 | L<Cannot tie unreifiable array|perldiag/"Cannot tie unreifiable array"> | |
302 | ||
303 | This error is part of a safety check that the C<tie> operator does before | |
304 | tying a special array like C<@_>. You should never see this message. | |
305 | ||
0aaeb177 | 306 | =back |
a3f52e2e | 307 | |
52deee2e | 308 | =head3 New Warnings |
a47fb3fe | 309 | |
0aaeb177 | 310 | =over 4 |
7ef25837 | 311 | |
6d110ad0 FC |
312 | =item * |
313 | ||
52deee2e | 314 | XXX L<message|perldiag/"message"> |
6d110ad0 FC |
315 | |
316 | =back | |
317 | ||
0aaeb177 SH |
318 | =head2 Changes to Existing Diagnostics |
319 | ||
52deee2e | 320 | XXX Changes (i.e. rewording) of diagnostic messages go here |
61f966e7 | 321 | |
52deee2e | 322 | =over 4 |
66008486 | 323 | |
5dd80d85 FC |
324 | =item * |
325 | ||
52deee2e | 326 | XXX Describe change here |
5dd80d85 | 327 | |
3432e5a1 | 328 | =back |
b420b12a | 329 | |
0aaeb177 | 330 | =head1 Utility Changes |
9cfd094e | 331 | |
52deee2e DR |
332 | XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go |
333 | here. Most of these are built within the directories F<utils> and F<x2p>. | |
d6cf2367 | 334 | |
52deee2e DR |
335 | [ List utility changes as a =head3 entry for each utility and =item |
336 | entries for each change | |
337 | Use L<XXX> with program names to get proper documentation linking. ] | |
b53e16ae | 338 | |
d7fbd56d | 339 | =head3 L<splain> |
0aaeb177 | 340 | |
e3c71926 | 341 | =over 4 |
b53e16ae FC |
342 | |
343 | =item * | |
344 | ||
d7fbd56d FC |
345 | splain no longer emits backtraces with the first line number repeated. |
346 | This: | |
347 | ||
348 | Uncaught exception from user code: | |
349 | Cannot fwiddle the fwuddle at -e line 1. | |
350 | at -e line 1 | |
351 | main::baz() called at -e line 1 | |
352 | main::bar() called at -e line 1 | |
353 | main::foo() called at -e line 1 | |
354 | ||
355 | has become this: | |
356 | ||
357 | Uncaught exception from user code: | |
358 | Cannot fwiddle the fwuddle at -e line 1. | |
359 | main::baz() called at -e line 1 | |
360 | main::bar() called at -e line 1 | |
361 | main::foo() called at -e line 1 | |
ba91b4f3 | 362 | |
b18aa002 FC |
363 | =item * |
364 | ||
365 | Some error message consist of multiple lines that are listed as separate | |
366 | entries in L<perldiag>. splain has been taught to find the separate | |
367 | entries in these cases, instead of simply failing to find the message. | |
368 | ||
52deee2e | 369 | =back |
ba91b4f3 | 370 | |
52deee2e | 371 | =head1 Configuration and Compilation |
f4912a50 | 372 | |
52deee2e DR |
373 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools |
374 | go here. Any other changes to the Perl build process should be listed here. | |
375 | However, any platform-specific changes should be listed in the | |
376 | L</Platform Support> section, instead. | |
a3f52e2e | 377 | |
52deee2e | 378 | [ List changes as a =item entry ]. |
a3f52e2e | 379 | |
0aaeb177 | 380 | =over 4 |
a3f52e2e FC |
381 | |
382 | =item * | |
383 | ||
3e975088 NC |
384 | The Pod files for the perl FAQ, L<perlxs>, L<perlxstut> and L<perldoc> |
385 | are once again correctly installed in the same directory as the other core | |
386 | Pods. | |
387 | ||
388 | =for 5.16.0 This isn't a regression from 5.14.x, so don't mention this. | |
a3f52e2e | 389 | |
0aaeb177 | 390 | =back |
a3f52e2e | 391 | |
52deee2e | 392 | =head1 Testing |
a3f52e2e | 393 | |
52deee2e DR |
394 | XXX Any significant changes to the testing of a freshly built perl should be |
395 | listed here. Changes which create B<new> files in F<t/> go here as do any | |
396 | large changes to the testing harness (e.g. when parallel testing was added). | |
397 | Changes to existing files in F<t/> aren't worth summarising, although the bugs | |
398 | that they represent may be covered elsewhere. | |
ad32999b | 399 | |
52deee2e | 400 | [ List each test improvement as a =item entry ] |
f4912a50 | 401 | |
0aaeb177 | 402 | =over 4 |
ad32999b | 403 | |
f4912a50 | 404 | =item * |
ad32999b | 405 | |
48eabb99 NC |
406 | F<t/porting/utils.t> now tests that various utility scripts compile cleanly. |
407 | During development, this avoids the embarrassment of inadvertently pushing a | |
408 | commit which breaks code which isn't otherwise tested by the regression test | |
409 | suite. For example, F<installperl> and F<installman>, needed by | |
410 | C<make install>, are tested here. | |
c15f899f | 411 | |
7f28d7ed | 412 | =back |
ad32999b | 413 | |
52deee2e | 414 | =head1 Platform Support |
d1fb015b | 415 | |
52deee2e | 416 | XXX Any changes to platform support should be listed in the sections below. |
d1fb015b | 417 | |
52deee2e DR |
418 | [ Within the sections, list each platform as a =item entry with specific |
419 | changes as paragraphs below it. ] | |
d1fb015b | 420 | |
52deee2e | 421 | =head2 New Platforms |
66008486 | 422 | |
52deee2e DR |
423 | XXX List any platforms that this version of perl compiles on, that previous |
424 | versions did not. These will either be enabled by new files in the F<hints/> | |
425 | directories, or new subdirectories and F<README> files at the top level of the | |
426 | source tree. | |
66008486 | 427 | |
52deee2e | 428 | =over 4 |
7e7629fa | 429 | |
52deee2e | 430 | =item XXX-some-platform |
7e7629fa | 431 | |
52deee2e | 432 | XXX |
73512201 | 433 | |
52deee2e | 434 | =back |
73512201 | 435 | |
52deee2e | 436 | =head2 Discontinued Platforms |
a1f0e6ed | 437 | |
52deee2e | 438 | XXX List any platforms that this version of perl no longer compiles on. |
a1f0e6ed | 439 | |
52deee2e | 440 | =over 4 |
a1f0e6ed | 441 | |
52deee2e | 442 | =item XXX-some-platform |
a1f0e6ed | 443 | |
52deee2e | 444 | XXX |
ad790500 | 445 | |
52deee2e | 446 | =back |
ad790500 | 447 | |
52deee2e | 448 | =head2 Platform-Specific Notes |
6d91e957 | 449 | |
52deee2e DR |
450 | XXX List any changes for specific platforms. This could include configuration |
451 | and compilation changes or changes in portability/compatibility. However, | |
452 | changes within modules for platforms should generally be listed in the | |
453 | L</Modules and Pragmata> section. | |
6d91e957 | 454 | |
52deee2e | 455 | =over 4 |
d6b99bf4 | 456 | |
52deee2e | 457 | =item XXX-some-platform |
d6b99bf4 | 458 | |
52deee2e | 459 | XXX |
d6b99bf4 | 460 | |
52deee2e | 461 | =back |
d6b99bf4 | 462 | |
52deee2e | 463 | =head1 Internal Changes |
d6b99bf4 | 464 | |
52deee2e DR |
465 | XXX Changes which affect the interface available to C<XS> code go here. |
466 | Other significant internal changes for future core maintainers should | |
467 | be noted as well. | |
d6b99bf4 | 468 | |
52deee2e | 469 | [ List each change as a =item entry ] |
8aade7da | 470 | |
52deee2e | 471 | =over 4 |
8aade7da | 472 | |
c7b728ca SF |
473 | =item * |
474 | ||
39de7394 FC |
475 | There are now feature bundle hints in C<PL_hints> (C<$^H>) that version |
476 | declarations use, to avoid having to load F<feature.pm>. One setting of | |
477 | the hint bits indicates a "custom" feature bundle, which means that the | |
478 | entries in C<%^H> still apply. F<feature.pm> uses that. | |
479 | ||
480 | The C<HINT_FEATURE_MASK> macro is defined in F<perl.h> along with other | |
481 | hints. Other macros for setting and testing features and bundles are in | |
482 | the new F<feature.h>. C<FEATURE_IS_ENABLED> (which has moved to | |
483 | F<feature.h>) is no longer used throughout the codebase, but more specific | |
484 | macros, e.g., C<FEATURE_SAY_IS_ENABLED>, that are defined in F<feature.h>. | |
485 | ||
486 | =item * | |
487 | ||
488 | F<lib/feature.pm> is now a generated file, created by the new | |
489 | F<regen/feature.pl> script, which also generates F<feature.h>. | |
5dd80d85 | 490 | |
52272450 FC |
491 | =item * |
492 | ||
493 | Tied arrays are now always C<AvREAL>. If C<@_> or C<DB::args> is tied, it | |
494 | is reified first, to make sure this is always the case. | |
495 | ||
52deee2e | 496 | =back |
5dd80d85 | 497 | |
52deee2e | 498 | =head1 Selected Bug Fixes |
c7b728ca | 499 | |
52deee2e DR |
500 | XXX Important bug fixes in the core language are summarised here. |
501 | Bug fixes in files in F<ext/> and F<lib/> are best summarised in | |
502 | L</Modules and Pragmata>. | |
c7b728ca | 503 | |
52deee2e | 504 | [ List each fix as a =item entry ] |
c7b728ca | 505 | |
52deee2e | 506 | =over 4 |
84b2a83e | 507 | |
5343a617 | 508 | =item * "b . COND" in the debugger has been fixed |
84b2a83e | 509 | |
5343a617 SF |
510 | Breaking on the current line with C<b . COND> was broken by previous work and |
511 | has now been fixed. | |
84b2a83e | 512 | |
07f0992c FC |
513 | =item * Tying C<%^H> |
514 | ||
90bf1576 FC |
515 | Tying C<%^H> no longer causes perl to crash or ignore |
516 | the contents of C<%^H> when entering a compilation | |
07f0992c FC |
517 | scope [perl #106282]. |
518 | ||
36a6a135 FC |
519 | =item * C<~> on vstrings |
520 | ||
521 | The bitwise complement operator (and possibly other operators, too) when | |
522 | passed a vstring would leave vstring magic attached to the return value, | |
523 | even though the string had changed. This meant that | |
524 | C<< version->new(~v1.2.3) >> would create a version looking like "v1.2.3" | |
525 | even though the string passed to C<< version->new >> was actually | |
526 | "\376\375\374". This also caused L<B::Deparse> to deparse C<~v1.2.3> | |
527 | incorrectly, without the C<~> [perl #29070]. | |
528 | ||
529 | =item * Vstrings blowing away magic | |
530 | ||
531 | Assigning a vstring to a magic (e.g., tied, C<$!>) variable and then | |
532 | assigning something else used to blow away all the magic. This meant that | |
533 | tied variables would come undone, C<$!> would stop getting updated on | |
534 | failed system calls, C<$|> would stop setting autoflush, and other | |
535 | mischief would take place. This has been fixed. | |
536 | ||
a32fcfdc FC |
537 | =item * C<newHVhv> and tied hashes |
538 | ||
539 | The C<newHVhv> XS function now works on tied hashes, instead of crashing or | |
540 | returning an empty hash. | |
541 | ||
063b2a72 FC |
542 | =item * Hashes will null elements |
543 | ||
544 | It is possible from XS code to create hashes with elements that have no | |
545 | values. Perl itself sometimes creates such hashes, but they are rarely | |
546 | visible to Perl code. The hash element and slice operators used to crash | |
547 | when handling these in lvalue context. These have been fixed. They now | |
548 | produce a "Modification of non-creatable hash value attempted" error | |
549 | message. | |
550 | ||
8c7dd470 FC |
551 | =item * No warning for C<open(foo::bar)> |
552 | ||
553 | When one writes C<open foo || die>, which used to work in Perl 4, a | |
554 | "Precedence problem" warning is produced. This warning used erroneously to | |
555 | apply to fully-qualified bareword handle names as well. This has been | |
556 | corrected. | |
557 | ||
f7606f70 FC |
558 | =item * C<select> and package aliasing |
559 | ||
560 | After package aliasing (C<*foo:: = *bar::>), C<select> with 0 or 1 argument | |
561 | would sometimes return a name that could not be used to refer to the | |
562 | filehandle, or sometimes it would return C<undef> even when a filehandle | |
563 | was selected. Now it returns a typeglob reference in such cases. | |
564 | ||
c0a5c448 FC |
565 | =item * C<PerlIO::get_layers> and tied variables |
566 | ||
567 | C<PerlIO::get_layers> no longer ignores FETCH on tied variables as it used | |
12d5b6c4 FC |
568 | to most of the time [perl #97956]. |
569 | ||
570 | =item * C<PerlIO::get_layers> and numbers | |
571 | ||
572 | C<PerlIO::get_layers> no longer ignores some arguments that it thinks are | |
573 | numeric, while treating others as filehandle names. It is now consistent | |
574 | for flat scalars (i.e., not references). | |
c0a5c448 | 575 | |
3ba4cf6c FC |
576 | =item * Lvalue subs and strict mode |
577 | ||
578 | Lvalue sub calls that are not determined to be such at compile time | |
579 | (C<&$name> or &{"name"}) are no longer exempt from strict refs if they | |
580 | occur in the last statement of an lvalue subroutine [perl #102486]. | |
581 | ||
582 | =item * Non-lvalue sub calls in potentially lvalue context | |
583 | ||
584 | Sub calls whose subs are not visible at compile time, if | |
585 | they occurred in the last statement of an lvalue subroutine, | |
586 | would reject non-lvalue subroutines and die with "Can't modify non-lvalue | |
587 | subroutine call" [perl #102486]. | |
588 | ||
589 | Non-lvalue sub calls whose subs I<are> visible at compile time exhibited | |
590 | the opposite bug. If the call occurred in the last statement of an lvalue | |
591 | subroutine, there would be no error when the lvalue sub was called in | |
592 | lvalue context. Perl would blindly assign to the temporary value returned | |
593 | by the non-lvalue subroutine. | |
594 | ||
595 | =item * AUTOLOADing lvalue subs | |
596 | ||
597 | C<AUTOLOAD> routines used to take precedence over the actual sub being | |
598 | called (i.e., when autoloading wasn't needed), for sub calls in lvalue or | |
599 | potential lvalue context, if the subroutine was not visible at compile | |
600 | time. | |
601 | ||
4888c563 FC |
602 | =item * C<caller> and tied C<@DB::args> |
603 | ||
604 | C<caller> sets C<@DB::args> to the subroutine arguments when called from | |
605 | the DB package. It used to crash when doing so if C<@DB::args> happened to | |
606 | be tied. Now it croaks instead. | |
607 | ||
52272450 FC |
608 | =item * Tying C<@_> |
609 | ||
610 | Under debugging builds, this code: | |
611 | ||
612 | sub TIEARRAY{bless[]} | |
613 | sub { | |
614 | tie @_, ""; | |
615 | \@_; | |
616 | }->(1); | |
617 | ||
618 | use to produce an "av_reify called on tied array" warning. It doesn't any | |
619 | more. | |
620 | ||
52deee2e | 621 | =back |
84b2a83e | 622 | |
52deee2e | 623 | =head1 Known Problems |
84b2a83e | 624 | |
52deee2e DR |
625 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any |
626 | tests that had to be C<TODO>ed for the release would be noted here, unless | |
627 | they were specific to a particular platform (see below). | |
84b2a83e | 628 | |
52deee2e DR |
629 | This is a list of some significant unfixed bugs, which are regressions |
630 | from either 5.XXX.XXX or 5.XXX.XXX. | |
84b2a83e | 631 | |
52deee2e | 632 | [ List each fix as a =item entry ] |
84b2a83e | 633 | |
52deee2e | 634 | =over 4 |
b53e16ae | 635 | |
7c864bb3 VP |
636 | =item * |
637 | ||
52deee2e | 638 | XXX |
7c864bb3 | 639 | |
63ac71b9 | 640 | =back |
bbc28bfc | 641 | |
52deee2e | 642 | =head1 Obituary |
8fe05716 | 643 | |
52deee2e DR |
644 | XXX If any significant core contributor has died, we've added a short obituary |
645 | here. | |
8fe05716 | 646 | |
52deee2e | 647 | =head1 Acknowledgements |
8fe05716 | 648 | |
52deee2e | 649 | XXX Generate this with: |
8fe05716 | 650 | |
52deee2e | 651 | perl Porting/acknowledgements.pl v5.15.6..HEAD |
29cf780c | 652 | |
44691e6f AB |
653 | =head1 Reporting Bugs |
654 | ||
655 | If you find what you think is a bug, you might check the articles | |
52deee2e DR |
656 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
657 | bug database at http://rt.perl.org/perlbug/ . There may also be | |
44691e6f AB |
658 | information at http://www.perl.org/ , the Perl Home Page. |
659 | ||
660 | If you believe you have an unreported bug, please run the L<perlbug> | |
52deee2e DR |
661 | program included with your release. Be sure to trim your bug down |
662 | to a tiny but sufficient test case. Your bug report, along with the | |
663 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
664 | analysed by the Perl porting team. | |
44691e6f AB |
665 | |
666 | If the bug you are reporting has security implications, which make it | |
52deee2e DR |
667 | inappropriate to send to a publicly archived mailing list, then please send |
668 | it to perl5-security-report@perl.org. This points to a closed subscription | |
669 | unarchived mailing list, which includes | |
670 | all the core committers, who will be able | |
671 | to help assess the impact of issues, figure out a resolution, and help | |
672 | co-ordinate the release of patches to mitigate or fix the problem across all | |
673 | platforms on which Perl is supported. Please only use this address for | |
674 | security issues in the Perl core, not for modules independently | |
675 | distributed on CPAN. | |
44691e6f AB |
676 | |
677 | =head1 SEE ALSO | |
678 | ||
52deee2e DR |
679 | The F<Changes> file for an explanation of how to view exhaustive details |
680 | on what changed. | |
44691e6f AB |
681 | |
682 | The F<INSTALL> file for how to build Perl. | |
683 | ||
684 | The F<README> file for general stuff. | |
685 | ||
686 | The F<Artistic> and F<Copying> files for copyright information. | |
687 | ||
688 | =cut |