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