Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
19e72bbf | 3 | =for comment |
b53e16ae | 4 | This has been completed up to c19fd8b40, except for: |
19e72bbf FC |
5 | d9018cbe5b480ba29cc6151aba8f5102a7e009c4 (Eric Brine) |
6 | -- while I (use git blame to find out who) see how this change within | |
7 | lex_read_unichar is correct, I cannot tell at a glance what visible | |
8 | effects this bug has at the Perl level or through the lexer API. | |
9 | a04eb69c733e84250299f12df200f10b76b0a45c (David Golden) | |
10 | 7a799f6bb3cac2e1bf9bede83579324cffa59c16 (David Golden) | |
11 | be48bbe8d671b6841c3ec7cb734b98071afe3cd9 (Chip) | |
b53e16ae FC |
12 | b64f48ffd8bf2c857b777e167188f0434333cc7b (Steffen Müller) |
13 | 1d2615b4c7e80af2a76441add35092ec4d81724f (Steffen Müller) | |
19e72bbf | 14 | |
44691e6f AB |
15 | =head1 NAME |
16 | ||
3432e5a1 SL |
17 | [ this is a template for a new perldelta file. Any text flagged as |
18 | XXX needs to be processed before release. ] | |
19 | ||
20 | perldelta - what is new for perl v5.15.4 | |
760696b8 | 21 | |
5438d4b8 | 22 | =head1 DESCRIPTION |
5cd408a2 | 23 | |
3432e5a1 SL |
24 | This document describes differences between the 5.15.3 release and |
25 | the 5.15.4 release. | |
5cd408a2 | 26 | |
3432e5a1 SL |
27 | If you are upgrading from an earlier release such as 5.15.3, first read |
28 | L<perl5153delta>, which describes differences between 5.15.3 and | |
29 | 5.15.4. | |
062678b2 | 30 | |
63ac71b9 | 31 | =head1 Notice |
4185c919 | 32 | |
3432e5a1 | 33 | XXX Any important notices here |
0afed34d | 34 | |
63ac71b9 | 35 | =head1 Core Enhancements |
0afed34d | 36 | |
3f728e2e | 37 | =head2 $^X converted to an absolute path on FreeBSD, OS X and Solaris |
d2006265 | 38 | |
3f728e2e NC |
39 | C<$^X> is now converted to an absolute path on OS X, FreeBSD (without |
40 | needing F</proc> mounted) and Solaris 10 and 11. This augments the | |
41 | previous approach of using F</proc> on Linux, FreeBSD and NetBSD | |
42 | (in all cases, where mounted). | |
43 | ||
44 | This makes relocatable perl installations more useful on these platforms. | |
45 | (See "Relocatable @INC" in F<INSTALL>) | |
d6cf2367 | 46 | |
6d110ad0 FC |
47 | =head2 Unicode Symbol Names |
48 | ||
49 | Perl now has proper support for Unicode in symbol names. It used to be | |
50 | that C<*{$foo}> would ignore the internal UTF8 flag and use the bytes of | |
51 | the underlying representation to look up the symbol. That meant that | |
52 | C<*{"\x{100}"}> and C<*{"\xc4\x80"}> would return the same thing. All | |
53 | these parts of Perl have been fixed to account for Unicode: | |
54 | ||
55 | =over | |
56 | ||
57 | =item * | |
58 | ||
59 | Method names (including those passed to C<use overload>) | |
60 | ||
61 | =item * | |
62 | ||
63 | Typeglob names (including names of variables, subroutines and filehandles) | |
64 | ||
65 | =item * | |
66 | ||
67 | Package names | |
68 | ||
69 | =item * | |
70 | ||
b2ef4871 | 71 | Constant subroutine names (not null-clean yet) |
6d110ad0 FC |
72 | |
73 | =item * | |
74 | ||
75 | C<goto> | |
76 | ||
77 | =item * | |
78 | ||
79 | Symbolic dereferencing | |
80 | ||
81 | =item * | |
82 | ||
83 | Second argument to C<bless()> and C<tie()> | |
84 | ||
85 | =item * | |
86 | ||
87 | Return value of C<ref()> | |
88 | ||
89 | =item * | |
90 | ||
91 | Package names returned by C<caller()> | |
92 | ||
93 | =item * | |
94 | ||
95 | Subroutine prototypes | |
96 | ||
97 | =item * | |
98 | ||
99 | Attributes | |
100 | ||
101 | =item * | |
102 | ||
103 | Various warnings and error messages that mention variable names or values, | |
104 | methods, etc. | |
105 | ||
106 | =back | |
107 | ||
108 | In addition, a parsing bug has been fixed that prevented C<*{é}> from | |
109 | implicitly quoting the name, but instead interpreted it as C<*{+é}>, which | |
110 | would cause a strict violation. | |
111 | ||
112 | C<*{"*a::b"}> automatically strips off the * if it is followed by an ASCII | |
113 | letter. That has been extended to all Unicode identifier characters. | |
114 | ||
115 | C<$é> is now subject to "Used only once" warnings. It used to be exempt, | |
116 | as it was treated as a punctuation variable. | |
117 | ||
b53e16ae FC |
118 | Also, single-character Unicode punctuation variables (like $‰) are now |
119 | supported [perl #69032]. They are also supported with C<our> and C<my>, | |
120 | but that is a mistake that will be fixed before 5.16. | |
121 | ||
b2ef4871 | 122 | =head2 Support for Embedded Nulls |
6d110ad0 | 123 | |
b2ef4871 | 124 | Some parts of Perl did not work correctly with nulls (C<chr 0>) embedded in |
6d110ad0 FC |
125 | strings. That meant that, for instance, C<< $m = "a\0b"; foo->$m >> would |
126 | call the "a" method, instead of the actual method name contained in $m. | |
b2ef4871 | 127 | These parts of perl have been fixed to support nulls: |
6d110ad0 FC |
128 | |
129 | =over | |
130 | ||
131 | =item * | |
132 | ||
133 | Method names | |
134 | ||
135 | =item * | |
136 | ||
137 | Typeglob names (including filehandle names) | |
138 | ||
139 | =item * | |
140 | ||
141 | Package names | |
142 | ||
143 | =item * | |
144 | ||
145 | Autoloading | |
146 | ||
147 | =item * | |
148 | ||
149 | Return value of C<ref()> | |
150 | ||
151 | =item * | |
152 | ||
153 | Package names returned by C<caller()> | |
154 | ||
155 | =item * | |
156 | ||
157 | Filehandle warnings | |
158 | ||
159 | =item * | |
160 | ||
161 | Typeglob elements (C<*foo{"THING\0stuff"}>) | |
162 | ||
163 | =item * | |
164 | ||
165 | Signal names | |
166 | ||
167 | =item * | |
168 | ||
169 | Various warnings and error messages that mention variable names or values, | |
170 | methods, etc. | |
171 | ||
172 | =back | |
173 | ||
174 | One side effect of these changes is that blessing into "\0" no longer | |
175 | causes C<ref()> to return false. | |
176 | ||
b53e16ae FC |
177 | =head2 Autoloaded sort subroutines |
178 | ||
179 | Custom sort subroutines can now be autoloaded [perl #30661]: | |
180 | ||
181 | sub AUTOLOAD { ... } | |
182 | @sorted = sort foo @list; # uses AUTOLOAD | |
183 | ||
63ac71b9 | 184 | =head1 Security |
0afed34d | 185 | |
3432e5a1 SL |
186 | XXX Any security-related notices go here. In particular, any security |
187 | vulnerabilities closed should be noted here rather than in the | |
188 | L</Selected Bug Fixes> section. | |
46661105 | 189 | |
3432e5a1 | 190 | [ List each security issue as a =head2 entry ] |
46661105 | 191 | |
5438d4b8 | 192 | =head1 Incompatible Changes |
7818c927 | 193 | |
3432e5a1 | 194 | XXX For a release on a stable branch, this section aspires to be: |
e1dccc0d | 195 | |
3432e5a1 SL |
196 | There are no changes intentionally incompatible with 5.XXX.XXX |
197 | If any exist, they are bugs and reports are welcome. | |
7b2b001e | 198 | |
3432e5a1 | 199 | [ List each incompatible change as a =head2 entry ] |
bdb9ba77 | 200 | |
3432e5a1 | 201 | =head1 Deprecations |
7ec04da5 | 202 | |
3432e5a1 SL |
203 | XXX Any deprecated features, syntax, modules etc. should be listed here. |
204 | In particular, deprecated modules should be listed here even if they are | |
205 | listed as an updated module in the L</Modules and Pragmata> section. | |
7ec04da5 | 206 | |
3432e5a1 | 207 | [ List each deprecation as a =head2 entry ] |
d6cf2367 | 208 | |
3432e5a1 | 209 | =head1 Performance Enhancements |
d6cf2367 | 210 | |
3432e5a1 SL |
211 | XXX Changes which enhance performance without changing behaviour go here. There |
212 | may well be none in a stable release. | |
5d4ff231 | 213 | |
3432e5a1 | 214 | [ List each enhancement as a =item entry ] |
e46d9735 | 215 | |
63ac71b9 | 216 | =over 4 |
e46d9735 CBW |
217 | |
218 | =item * | |
219 | ||
b53e16ae FC |
220 | C<substr> no longer calculates a value to return when called in void |
221 | context. | |
828d6195 | 222 | |
3432e5a1 | 223 | =back |
83307084 | 224 | |
3432e5a1 | 225 | =head1 Modules and Pragmata |
83307084 | 226 | |
3432e5a1 SL |
227 | XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> |
228 | go here. If Module::CoreList is updated, generate an initial draft of the | |
229 | following sections using F<Porting/corelist-perldelta.pl>, which prints stub | |
230 | entries to STDOUT. Results can be pasted in place of the '=head2' entries | |
231 | below. A paragraph summary for important changes should then be added by hand. | |
232 | In an ideal world, dual-life modules would have a F<Changes> file that could be | |
233 | cribbed. | |
83307084 | 234 | |
3432e5a1 | 235 | [ Within each section, list entries as a =item entry ] |
83307084 | 236 | |
3432e5a1 | 237 | =head2 New Modules and Pragmata |
d93f0209 | 238 | |
3432e5a1 | 239 | =over 4 |
d93f0209 | 240 | |
60527824 FR |
241 | =item * |
242 | ||
3432e5a1 | 243 | XXX |
d6cf2367 | 244 | |
3432e5a1 | 245 | =back |
d39de893 | 246 | |
3432e5a1 | 247 | =head2 Updated Modules and Pragmata |
d39de893 | 248 | |
3432e5a1 | 249 | =over 4 |
39afdc5a CBW |
250 | |
251 | =item * | |
252 | ||
1e915955 | 253 | L<Archive::Tar> has been upgraded from version 1.78 to version 1.80. |
666c7ca6 | 254 | |
7b8e5ef0 GG |
255 | =item * |
256 | ||
91710846 DG |
257 | L<base> has been upgraded from version 2.17 to version 2.18. |
258 | ||
259 | C<base> no longer sets a module's C<$VERSION> to "-1" when a module it loads | |
260 | does not define a C<$VERSION>. This change has been made because "-1" is not | |
261 | a valid version number under the new "lax" criteria used internally by | |
262 | C<UNIVERSAL::VERSION>. (See L<versioN> for more on "lax" version criteria.) | |
263 | ||
264 | C<base> no longer internally skips loading modules it has already loaded and | |
265 | instead relies on C<require> to inspect C<%INC>. This fixes a bug when C<base> | |
266 | is used with code that clear C<%INC> to force a module to be reloaded. | |
267 | ||
268 | =item * | |
269 | ||
a2fa999d CBW |
270 | L<Digest> has been upgraded from version 1.16 to version 1.17. |
271 | ||
272 | =item * | |
273 | ||
19e72bbf FC |
274 | L<DynaLoader> has been upgraded from version 1.13 to 1.14. |
275 | ||
276 | It stopped exporting its symbols with the ExtUtils::ParseXS changes in | |
1e915955 | 277 | 5.15.2. Now it exports them once more. |
19e72bbf FC |
278 | |
279 | =item * | |
280 | ||
7b8e5ef0 GG |
281 | L<ExtUtils::MakeMaker> has been upgraded from version 6.59 to version 6.61_01. |
282 | ||
bd65daab CBW |
283 | =item * |
284 | ||
02e7ec6d | 285 | L<ExtUtils::ParseXS> has been upgraded from version 3.04_04 to version 3.05. |
bd65daab | 286 | |
3f2cb5bf S |
287 | =item * |
288 | ||
02e7ec6d CBW |
289 | L<Module::Load> has been upgraded from version 0.20 to version 0.22. |
290 | ||
291 | Resolve possible security problem [http://goo.gl/YzHRU] where a '::' prefixed | |
292 | module can 'jump' out of @INC | |
293 | ||
294 | =item * | |
295 | ||
1e915955 CBW |
296 | L<perlfaq> has been upgraded from version 5.0150034 to version 5.0150035. |
297 | ||
298 | =item * | |
299 | ||
b2ef759e CBW |
300 | L<Unicode::Collate> has been upgraded from version 0.78 to version 0.80. |
301 | ||
302 | Locales updated to CLDR 2.0: ar, be, bg, ha, hr, kk, lt. | |
303 | Newly supported locales: as, fi__phonebook, gu, hi, kn, kok and ln. | |
3f2cb5bf | 304 | |
3432e5a1 | 305 | =back |
666c7ca6 | 306 | |
3432e5a1 | 307 | =head2 Removed Modules and Pragmata |
d6cf2367 | 308 | |
3432e5a1 | 309 | =over 4 |
d6cf2367 FC |
310 | |
311 | =item * | |
312 | ||
3432e5a1 | 313 | XXX |
a9feb6cb | 314 | |
3432e5a1 | 315 | =back |
a9feb6cb | 316 | |
3432e5a1 | 317 | =head1 Documentation |
8fe353ef | 318 | |
3432e5a1 SL |
319 | XXX Changes to files in F<pod/> go here. Consider grouping entries by |
320 | file and be sure to link to the appropriate page, e.g. L<perlfunc>. | |
8fe353ef | 321 | |
3432e5a1 | 322 | =head2 New Documentation |
8fe353ef | 323 | |
3432e5a1 | 324 | XXX Changes which create B<new> files in F<pod/> go here. |
60527824 | 325 | |
3432e5a1 | 326 | =head3 L<XXX> |
7ac26854 | 327 | |
3432e5a1 | 328 | XXX Description of the purpose of the new file here |
7ac26854 | 329 | |
3432e5a1 | 330 | =head2 Changes to Existing Documentation |
7ac26854 | 331 | |
3432e5a1 SL |
332 | XXX Changes which significantly change existing files in F<pod/> go here. |
333 | However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics> | |
334 | section. | |
518487b2 | 335 | |
19e72bbf | 336 | =head3 L<perlfunc>, L<open> |
daef35db | 337 | |
3432e5a1 | 338 | =over 4 |
83307084 SL |
339 | |
340 | =item * | |
341 | ||
19e72bbf FC |
342 | As an accident of history, C<open $fh, "<:", ...> applies the default |
343 | layers for the platform (C<:raw> on Unix, C<:crlf> on Windows), ignoring | |
344 | whatever is declared by L<open.pm|open>. This seems such a useful feature | |
345 | it has been documented in L<perlfunc|perlfunc/open> and L<open>. | |
b420b12a | 346 | |
3432e5a1 | 347 | =back |
b420b12a | 348 | |
b53e16ae FC |
349 | =head3 L<perlapi> |
350 | ||
351 | =over 4 | |
352 | ||
353 | =item * | |
354 | ||
355 | The HV API has long accepted negative lengths to indicate that the key is | |
356 | in UTF8. Now this is documented. | |
357 | ||
358 | =back | |
359 | ||
360 | =head3 L<perlguts> | |
361 | ||
362 | =over 4 | |
363 | ||
364 | =item * | |
365 | ||
366 | A new section, L<Autoloading with XSUBs|perlguts/Autoloading with XSUBs>, | |
367 | has been added, which explains the two APIs for accessing the name of the | |
368 | autoloaded sub. | |
369 | ||
370 | =back | |
371 | ||
3432e5a1 | 372 | =head1 Diagnostics |
83307084 | 373 | |
3432e5a1 SL |
374 | The following additions or changes have been made to diagnostic output, |
375 | including warnings and fatal error messages. For the complete list of | |
376 | diagnostic messages, see L<perldiag>. | |
83307084 | 377 | |
3432e5a1 SL |
378 | XXX New or changed warnings emitted by the core's C<C> code go here. Also |
379 | include any changes in L<perldiag> that reconcile it to the C<C> code. | |
83307084 | 380 | |
3432e5a1 SL |
381 | [ Within each section, list entries as a =item entry that links to perldiag, |
382 | e.g. | |
83307084 | 383 | |
3432e5a1 | 384 | =item * |
d6cf2367 | 385 | |
3432e5a1 SL |
386 | L<Invalid version object|perldiag/"Invalid version object"> |
387 | ] | |
d6cf2367 | 388 | |
3432e5a1 | 389 | =head2 New Diagnostics |
d6cf2367 | 390 | |
3432e5a1 | 391 | XXX Newly added diagnostic messages go here |
daef35db | 392 | |
3432e5a1 | 393 | =head3 New Errors |
259925f6 | 394 | |
3432e5a1 | 395 | =over 4 |
9840cdee CBW |
396 | |
397 | =item * | |
398 | ||
3432e5a1 | 399 | XXX L<message|perldiag/"message"> |
54e02335 | 400 | |
63ac71b9 | 401 | =back |
310913d4 | 402 | |
3432e5a1 | 403 | =head3 New Warnings |
dc80b0c6 | 404 | |
63ac71b9 | 405 | =over 4 |
83b32788 CBW |
406 | |
407 | =item * | |
408 | ||
3432e5a1 | 409 | XXX L<message|perldiag/"message"> |
4eb81ef2 | 410 | |
63ac71b9 | 411 | =back |
4eb81ef2 | 412 | |
3432e5a1 SL |
413 | =head2 Changes to Existing Diagnostics |
414 | ||
415 | XXX Changes (i.e. rewording) of diagnostic messages go here | |
d6cf2367 FC |
416 | |
417 | =over 4 | |
418 | ||
419 | =item * | |
420 | ||
c634fdd3 KW |
421 | The message, |
422 | "Code point 0x%X is not Unicode, no properties match it; all inverse | |
423 | prop erties do" has been changed to "Code point 0x%X is not Unicode, all | |
424 | \p{} matches fail; all \P{} matches succeed" | |
425 | ||
d6cf2367 FC |
426 | |
427 | =back | |
428 | ||
3432e5a1 | 429 | =head1 Utility Changes |
d6cf2367 | 430 | |
3432e5a1 SL |
431 | XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go |
432 | here. Most of these are built within the directories F<utils> and F<x2p>. | |
b89e9b0d | 433 | |
3432e5a1 SL |
434 | [ List utility changes as a =head3 entry for each utility and =item |
435 | entries for each change | |
436 | Use L<XXX> with program names to get proper documentation linking. ] | |
0cb4637e | 437 | |
3432e5a1 | 438 | =head3 L<XXX> |
4abaf918 | 439 | |
5438d4b8 | 440 | =over 4 |
4abaf918 Z |
441 | |
442 | =item * | |
443 | ||
3432e5a1 | 444 | XXX |
8b00e523 | 445 | |
e8e35311 FC |
446 | =back |
447 | ||
63ac71b9 | 448 | =head1 Configuration and Compilation |
b908e258 | 449 | |
3432e5a1 SL |
450 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools |
451 | go here. Any other changes to the Perl build process should be listed here. | |
452 | However, any platform-specific changes should be listed in the | |
453 | L</Platform Support> section, instead. | |
b908e258 | 454 | |
3432e5a1 | 455 | [ List changes as a =item entry ]. |
bbc28bfc | 456 | |
34dc2ec0 | 457 | =over 4 |
42a91c97 | 458 | |
6693394d | 459 | =item * |
42a91c97 | 460 | |
3432e5a1 | 461 | XXX |
d2006265 | 462 | |
3432e5a1 | 463 | =back |
9cfd094e | 464 | |
3432e5a1 | 465 | =head1 Testing |
9cfd094e | 466 | |
3432e5a1 SL |
467 | XXX Any significant changes to the testing of a freshly built perl should be |
468 | listed here. Changes which create B<new> files in F<t/> go here as do any | |
469 | large changes to the testing harness (e.g. when parallel testing was added). | |
470 | Changes to existing files in F<t/> aren't worth summarising, although the bugs | |
471 | that they represent may be covered elsewhere. | |
9cfd094e | 472 | |
3432e5a1 | 473 | [ List each test improvement as a =item entry ] |
7c4c6e7c | 474 | |
3432e5a1 | 475 | =over 4 |
95f7e41f | 476 | |
83307084 | 477 | =item * |
95f7e41f | 478 | |
6692294e NC |
479 | F<t/porting/checkcfgvar.t> now tests that all config.sh-style files are |
480 | complete. These are used by the various non-*nix to generate their | |
481 | F<config.h>, and an incomplete input file will generate invalid output. | |
df5b44bd | 482 | |
63ac71b9 | 483 | =back |
310913d4 | 484 | |
83307084 | 485 | =head1 Platform Support |
df5b44bd | 486 | |
3432e5a1 | 487 | XXX Any changes to platform support should be listed in the sections below. |
7818c927 | 488 | |
3432e5a1 SL |
489 | [ Within the sections, list each platform as a =item entry with specific |
490 | changes as paragraphs below it. ] | |
83307084 | 491 | |
3432e5a1 | 492 | =head2 New Platforms |
7818c927 | 493 | |
3432e5a1 SL |
494 | XXX List any platforms that this version of perl compiles on, that previous |
495 | versions did not. These will either be enabled by new files in the F<hints/> | |
496 | directories, or new subdirectories and F<README> files at the top level of the | |
497 | source tree. | |
3fdd840f | 498 | |
63ac71b9 | 499 | =over 4 |
7ffa7e75 | 500 | |
3432e5a1 | 501 | =item XXX-some-platform |
862b2c43 | 502 | |
3432e5a1 | 503 | XXX |
d6cf2367 | 504 | |
63ac71b9 | 505 | =back |
c973bd4f | 506 | |
3432e5a1 | 507 | =head2 Discontinued Platforms |
fdd313f4 | 508 | |
3432e5a1 | 509 | XXX List any platforms that this version of perl no longer compiles on. |
c39e29ea | 510 | |
3432e5a1 | 511 | =over 4 |
c39e29ea | 512 | |
3432e5a1 | 513 | =item XXX-some-platform |
c39e29ea | 514 | |
3432e5a1 | 515 | XXX |
d6cf2367 | 516 | |
3432e5a1 | 517 | =back |
d6cf2367 | 518 | |
3432e5a1 | 519 | =head2 Platform-Specific Notes |
d6cf2367 | 520 | |
3432e5a1 SL |
521 | XXX List any changes for specific platforms. This could include configuration |
522 | and compilation changes or changes in portability/compatibility. However, | |
523 | changes within modules for platforms should generally be listed in the | |
524 | L</Modules and Pragmata> section. | |
d6cf2367 | 525 | |
3432e5a1 | 526 | =over 4 |
d6cf2367 | 527 | |
3432e5a1 | 528 | =item XXX-some-platform |
d6cf2367 | 529 | |
3432e5a1 | 530 | XXX |
d6cf2367 | 531 | |
3432e5a1 | 532 | =back |
d6cf2367 | 533 | |
3432e5a1 | 534 | =head1 Internal Changes |
d6cf2367 | 535 | |
3432e5a1 SL |
536 | XXX Changes which affect the interface available to C<XS> code go here. |
537 | Other significant internal changes for future core maintainers should | |
538 | be noted as well. | |
d6cf2367 | 539 | |
3432e5a1 | 540 | [ List each change as a =item entry ] |
5d4ff231 | 541 | |
3432e5a1 | 542 | =over 4 |
5d4ff231 | 543 | |
a3342be3 FC |
544 | =item * |
545 | ||
6d110ad0 FC |
546 | These new functions have been added as part of the work on Unicode symbols: |
547 | ||
548 | HvNAMELEN | |
549 | HvNAMEUTF8 | |
550 | HvENAMELEN | |
551 | HvENAMEUTF8 | |
552 | gv_init_pv | |
553 | gv_init_pvn | |
554 | gv_init_pvsv | |
555 | gv_fetchmeth_pv | |
556 | gv_fetchmeth_pvn | |
557 | gv_fetchmeth_sv | |
558 | gv_fetchmeth_pv_autoload | |
559 | gv_fetchmeth_pvn_autoload | |
560 | gv_fetchmeth_sv_autoload | |
561 | gv_fetchmethod_pv_flags | |
562 | gv_fetchmethod_pvn_flags | |
563 | gv_fetchmethod_sv_flags | |
564 | gv_autoload_pv | |
565 | gv_autoload_pvn | |
566 | gv_autoload_sv | |
567 | newGVgen_flags | |
568 | sv_derived_from_pv | |
569 | sv_derived_from_pvn | |
570 | sv_derived_from_sv | |
571 | sv_does_pv | |
572 | sv_does_pvn | |
573 | sv_does_sv | |
574 | whichsig_pv | |
575 | whichsig_pvn | |
576 | whichsig_sv | |
577 | ||
578 | The gv_fetchmethod_*_flags functions, like gv_fetchmethod_flags, are | |
579 | experimental and may change in a future release. | |
580 | ||
581 | =item * | |
582 | ||
583 | The following functions were added. These are I<not> part of the API: | |
584 | ||
585 | GvNAMEUTF8 | |
586 | GvENAMELEN | |
587 | GvENAME_HEK | |
588 | CopSTASH_flags | |
589 | CopSTASH_flags_set | |
590 | PmopSTASH_flags | |
591 | PmopSTASH_flags_set | |
592 | sv_sethek | |
b53e16ae FC |
593 | HEKfARG |
594 | ||
595 | There is also a C<HEKf> macro corresponding to C<SVf>, for | |
596 | interpolating HEKs in formatted strings. | |
6d110ad0 FC |
597 | |
598 | =item * | |
599 | ||
600 | C<sv_catpvn_flags> takes a couple of new internal-only flags, | |
601 | C<SV_CATBYTES> and C<SV_CATUTF8>, which tell it whether the char array to | |
602 | be concatenated is UTF8. This allows for more efficient concatenation than | |
603 | creating temporary SVs to pass to C<sv_catsv>. | |
60092ce4 | 604 | |
b53e16ae FC |
605 | =item * |
606 | ||
607 | For XS AUTOLOAD subs, $AUTOLOAD is set once more, as it was in 5.6.0. This | |
608 | is in addition to setting C<SvPVX(cv)>, for compatibility with 5.8 to 5.14. | |
609 | See L<perlguts/Autoloading with XSUBs>. | |
610 | ||
611 | =item * | |
612 | ||
613 | Perl now checks whether the array (the linearised isa) returned by a MRO | |
614 | plugin begins with the name of the class itself, for which the array was | |
615 | created, instead of assuming that it does. This prevents the first element | |
616 | from being skipped during method lookup. It also means that | |
617 | C<mro::get_linear_isa> may return an array with one more element than the | |
618 | MRO plugin provided [perl #94306]. | |
619 | ||
3432e5a1 | 620 | =back |
60092ce4 | 621 | |
3432e5a1 | 622 | =head1 Selected Bug Fixes |
309aab3a | 623 | |
3432e5a1 SL |
624 | XXX Important bug fixes in the core language are summarised here. |
625 | Bug fixes in files in F<ext/> and F<lib/> are best summarised in | |
626 | L</Modules and Pragmata>. | |
309aab3a | 627 | |
3432e5a1 | 628 | [ List each fix as a =item entry ] |
1f26655e | 629 | |
3432e5a1 | 630 | =over 4 |
1f26655e | 631 | |
433644ee FC |
632 | =item * |
633 | ||
19e72bbf FC |
634 | In Perl 5.14.0, C<$tainted ~~ @array> stopped working properly. Sometimes |
635 | it would erroneously fail (when C<$tainted> contained a string that occurs | |
636 | in the array I<after> the first element) or erroneously succeed (when | |
637 | C<undef> occurred after the first element) [perl #93590]. | |
638 | ||
639 | =item * | |
640 | ||
641 | Perl 5.15.0 introduced a minor regression, in that an object referenced by | |
642 | a deleted hash element would be able to access the freed element from its | |
643 | DESTROY method, causing panic errors [perl #99660]. | |
644 | ||
645 | =item * | |
646 | ||
647 | Functions in the CORE package can now be called as methods. That used to | |
648 | work only when they had been called or referenced already. So | |
649 | C<< "foo"->CORE::ucfirst >> returns Foo. | |
650 | ||
651 | =item * | |
652 | ||
653 | C<use> and C<require> are no longer affected by the I/O layers active in | |
654 | the caller's scope (enabled by L<open.pm|open>) [perl #96008]. | |
655 | ||
656 | =item * | |
657 | ||
658 | Errors that occur when methods cannot be found during overloading now | |
659 | mention the correct package name, as they did in 5.8.x, instead of | |
660 | erroneously mentioning the "overload" package, as they have since 5.10.0. | |
661 | ||
662 | =item * | |
663 | ||
664 | Undefining C<%overload::> no longer causes a crash. | |
433644ee | 665 | |
6d110ad0 FC |
666 | =item * |
667 | ||
668 | C<our $::é; $é> (which is invalid) no longer produces the "Compilation | |
669 | error at lib/utf8_heavy.pl..." error message, which it started emitting in | |
670 | 5.10.0 [perl #99984]. | |
671 | ||
b377a702 KW |
672 | =item * |
673 | ||
674 | A minor regression, introduced Perl 5.15.0, has been fixed in which some | |
675 | regular expression Unicode property matches (C<\p{...}>) matched | |
676 | non-Unicode code points. | |
677 | ||
7c1b9f38 KW |
678 | =item * |
679 | ||
680 | In case-insensitive regular expression pattern matching, no longer on | |
681 | UTF-8 encoded strings does the scan for the start of match only look at | |
682 | the first possible position. This caused matches such as | |
683 | C<"f\x{FB00}" =~ /ff/i> to fail. | |
684 | ||
b53e16ae FC |
685 | =item * |
686 | ||
687 | On 64-bit systems, C<read()> now understands large string offsets beyond | |
688 | the 32-bit range. | |
689 | ||
690 | =item * | |
691 | ||
692 | Errors that occur when processing subroutine attributes no longer cause the | |
693 | subroutine's op tree to leak. | |
694 | ||
695 | =item * | |
696 | ||
697 | C<sort> now works once more with custom sort routines that are XSUBs. It | |
698 | stopped working in 5.10.0. | |
699 | ||
700 | =item * | |
701 | ||
ca955add FC |
702 | C<sort> with a constant for a custom sort routine, although it produces |
703 | unsorted results, no longer crashes. It started crashing in 5.10.0. | |
704 | ||
705 | =item * | |
706 | ||
b53e16ae FC |
707 | Warnings produced when a custom sort routine returns a non-numeric value |
708 | now contain "in sort"; e.g., "Use of uninitialized value in sort". | |
709 | ||
710 | =item * | |
711 | ||
712 | C<< sort { $a <=> $b } >>, which is optimised internally, now produces | |
713 | "uninitialized" warnings for NaNs (not-a-number values), since C<< <=> >> | |
714 | returns C<undef> for those. This brings it in line with | |
715 | S<C<< sort { 1; $a <=> $b } >>> and other more complex cases, which are not | |
716 | optimised [perl #94390]. | |
717 | ||
718 | =item * | |
719 | ||
720 | C<..> and C<...> in list context now call FETCH only once on tied | |
721 | arguments, instead of three or four times [perl #53554]. | |
722 | ||
723 | =item * | |
724 | ||
725 | C<..> and C<...> in list context now mention the name of the variable in | |
726 | "uninitialized" warnings for string (as opposed to numeric) ranges. | |
727 | ||
63ac71b9 | 728 | =back |
bbc28bfc | 729 | |
7d3f03b7 SL |
730 | =head1 Known Problems |
731 | ||
3432e5a1 SL |
732 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any |
733 | tests that had to be C<TODO>ed for the release would be noted here, unless | |
734 | they were specific to a particular platform (see below). | |
7d3f03b7 | 735 | |
3432e5a1 SL |
736 | This is a list of some significant unfixed bugs, which are regressions |
737 | from either 5.XXX.XXX or 5.XXX.XXX. | |
738 | ||
739 | [ List each fix as a =item entry ] | |
7d3f03b7 | 740 | |
3432e5a1 | 741 | =over 4 |
7d3f03b7 SL |
742 | |
743 | =item * | |
744 | ||
19e72bbf FC |
745 | XXX A couple of modules were broken by stdbool.h changes, or was that in |
746 | 5.15.3? | |
7d3f03b7 | 747 | |
3432e5a1 | 748 | =back |
7d3f03b7 | 749 | |
3432e5a1 | 750 | =head1 Obituary |
7d3f03b7 | 751 | |
3432e5a1 SL |
752 | XXX If any significant core contributor has died, we've added a short obituary |
753 | here. | |
7d3f03b7 | 754 | |
44691e6f AB |
755 | =head1 Acknowledgements |
756 | ||
3432e5a1 SL |
757 | XXX Generate this with: |
758 | ||
759 | perl Porting/acknowledgements.pl v5.15.3..HEAD | |
29cf780c | 760 | |
44691e6f AB |
761 | =head1 Reporting Bugs |
762 | ||
763 | If you find what you think is a bug, you might check the articles | |
34dc2ec0 | 764 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
44691e6f AB |
765 | bug database at http://rt.perl.org/perlbug/ . There may also be |
766 | information at http://www.perl.org/ , the Perl Home Page. | |
767 | ||
768 | If you believe you have an unreported bug, please run the L<perlbug> | |
769 | program included with your release. Be sure to trim your bug down | |
770 | to a tiny but sufficient test case. Your bug report, along with the | |
771 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
772 | analysed by the Perl porting team. | |
773 | ||
774 | If the bug you are reporting has security implications, which make it | |
775 | inappropriate to send to a publicly archived mailing list, then please send | |
34dc2ec0 | 776 | it to perl5-security-report@perl.org. This points to a closed subscription |
b4707b2a FC |
777 | unarchived mailing list, which includes |
778 | all the core committers, who will be able | |
44691e6f AB |
779 | to help assess the impact of issues, figure out a resolution, and help |
780 | co-ordinate the release of patches to mitigate or fix the problem across all | |
34dc2ec0 DM |
781 | platforms on which Perl is supported. Please only use this address for |
782 | security issues in the Perl core, not for modules independently | |
44691e6f AB |
783 | distributed on CPAN. |
784 | ||
785 | =head1 SEE ALSO | |
786 | ||
787 | The F<Changes> file for an explanation of how to view exhaustive details | |
788 | on what changed. | |
789 | ||
790 | The F<INSTALL> file for how to build Perl. | |
791 | ||
792 | The F<README> file for general stuff. | |
793 | ||
794 | The F<Artistic> and F<Copying> files for copyright information. | |
795 | ||
796 | =cut |