Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
a3f52e2e | 3 | =for comment |
ad32999b | 4 | This has been completed up to 7c5c3d9b except for: |
a3f52e2e | 5 | a1da11a30dfa4f3543dcab00834ff535202f5085 (GNU/Hurd hints) |
ad32999b FC |
6 | f0d0a205cc02c769ca48d6df00f3eea304ff91d8 (similar) |
7 | a058c51605ec2d38bf37f2e2c4f81926e3a90ea9 (Leon Timmermans; setresgid) | |
8 | 928b2f01177c40be013139c657d79c631790a916 (Reini Urban; Errno) | |
a3f52e2e | 9 | |
44691e6f AB |
10 | =head1 NAME |
11 | ||
e3c71926 FR |
12 | [ this is a template for a new perldelta file. Any text flagged as |
13 | XXX needs to be processed before release. ] | |
14 | ||
15 | perldelta - what is new for perl v5.15.5 | |
760696b8 | 16 | |
5438d4b8 | 17 | =head1 DESCRIPTION |
5cd408a2 | 18 | |
e3c71926 FR |
19 | This document describes differences between the 5.15.4 release and |
20 | the 5.15.5 release. | |
5cd408a2 | 21 | |
3432e5a1 | 22 | If you are upgrading from an earlier release such as 5.15.3, first read |
e3c71926 | 23 | L<perl5154delta>, which describes differences between 5.15.3 and |
3432e5a1 | 24 | 5.15.4. |
062678b2 | 25 | |
e3c71926 | 26 | =head1 Notice |
d2006265 | 27 | |
e3c71926 | 28 | XXX Any important notices here |
3f728e2e | 29 | |
e3c71926 | 30 | =head1 Core Enhancements |
6d110ad0 | 31 | |
e3c71926 FR |
32 | XXX New core language features go here. Summarise user-visible core language |
33 | enhancements. Particularly prominent performance optimisations could go | |
34 | here, but most should go in the L</Performance Enhancements> section. | |
6d110ad0 | 35 | |
ad32999b FC |
36 | =head2 More consistent C<eval> |
37 | ||
38 | The C<eval> operator sometimes treats a string argument as a sequence of | |
39 | characters and sometimes as a sequence of bytes, depending on the internal | |
40 | encoding. The internal encoding is not supposed to make any difference, | |
41 | but there is code that relies on this inconsistency. | |
42 | ||
43 | Under C<use v5.15> and higher, the C<unicode_eval> and C<evalbytes> | |
44 | features resolve this. The C<unicode_eval> feature causes C<eval $string> | |
45 | to treat the string always as Unicode. The C<evalbytes> features provides | |
46 | a function, itself called C<evalbytes>, which evaluates its argument always | |
47 | as a string of bytes. | |
48 | ||
49 | These features also fix oddities with source filters leaking to outer | |
50 | dynamic scopes. | |
51 | ||
52 | See L<feature> for more detail. | |
53 | ||
a3f52e2e FC |
54 | =head2 C<$[> is back |
55 | ||
56 | The C<$[> variable is back again, but is now implemented as a module, so | |
57 | programs that do not mention it (i.e., most of them), will not incur any | |
ad32999b FC |
58 | run-time penalty. In a later release in the 5.15 branch it might be |
59 | disabled in the scope of C<use v5.16>. | |
a3f52e2e FC |
60 | |
61 | The new implementation has some bug fixes. See L<arybase>. | |
6d110ad0 | 62 | |
e3c71926 | 63 | =head1 Security |
6d110ad0 | 64 | |
e3c71926 FR |
65 | XXX Any security-related notices go here. In particular, any security |
66 | vulnerabilities closed should be noted here rather than in the | |
67 | L</Selected Bug Fixes> section. | |
6d110ad0 | 68 | |
e3c71926 | 69 | [ List each security issue as a =head2 entry ] |
6d110ad0 | 70 | |
e3c71926 | 71 | =head1 Incompatible Changes |
6d110ad0 | 72 | |
e3c71926 | 73 | XXX For a release on a stable branch, this section aspires to be: |
6d110ad0 | 74 | |
e3c71926 FR |
75 | There are no changes intentionally incompatible with 5.XXX.XXX |
76 | If any exist, they are bugs and reports are welcome. | |
6d110ad0 | 77 | |
b132e3dc KW |
78 | =head2 Certain deprecated Unicode properties are no longer supported by default |
79 | ||
80 | Perl should never have exposed certain Unicode properties that are used | |
81 | by Unicode internally and not meant to be publicly available. Use of | |
82 | these has generated deprecated warning messages since Perl 5.12. The | |
83 | removed properties are Other_Alphabetic, | |
84 | Other_Default_Ignorable_Code_Point, Other_Grapheme_Extend, | |
85 | Other_ID_Continue, Other_ID_Start, Other_Lowercase, Other_Math, and | |
86 | Other_Uppercase. | |
87 | ||
88 | Perl may be recompiled to include any or all of them; instructions are | |
89 | given in | |
90 | L<perluniprops/Unicode character properties that are NOT accepted by Perl>. | |
91 | ||
6d110ad0 | 92 | |
ad32999b FC |
93 | =head2 Dereferencing IO thingies as typeglobs |
94 | ||
95 | The C<*{...}> operator, when passed a reference to an IO thingy (as in | |
96 | C<*{*STDIN{IO}}>), creates a new typeglob containing just that IO object. | |
97 | ||
98 | Previously, it would stringify as an empty string, but some operators would | |
99 | treat it as undefined, producing an "uninitialized" warning. | |
100 | ||
101 | Having a typeglob appear as an empty string is a side effect of the | |
102 | implementation that has caused various bugs over the years. | |
103 | ||
104 | The solution was to make it stringify like a normal anonymous typeglob, | |
105 | like those produced by C<open($foo->{bar}, ...)> [perl #96326]. | |
106 | ||
e3c71926 | 107 | =head1 Deprecations |
6d110ad0 | 108 | |
e3c71926 FR |
109 | XXX Any deprecated features, syntax, modules etc. should be listed here. |
110 | In particular, deprecated modules should be listed here even if they are | |
111 | listed as an updated module in the L</Modules and Pragmata> section. | |
6d110ad0 | 112 | |
e3c71926 | 113 | [ List each deprecation as a =head2 entry ] |
6d110ad0 | 114 | |
ae92a9ae KW |
115 | =head2 Don't read the Unicode data base files in F<lib/unicore> |
116 | ||
117 | It is now deprecated to directly read the Unicode data base files. | |
118 | These are stored in the F<lib/unicore> directory. Instead, you should | |
119 | use the new functions in L<Unicode::UCD>. These provide a stable API, | |
b132e3dc KW |
120 | and give complete information. (This API is, however, subject to change |
121 | somewhat during the 5.15 development cycle, as we gain experience and | |
122 | get feedback from using it.) | |
123 | ||
124 | Perl may at some point in the future change or remove the files. The | |
125 | file most likely for applications to have used is F<lib/unicore/ToDigit.pl>. | |
126 | L<Unicode::UCD/prop_invmap()> can be used to get at its data instead. | |
ae92a9ae | 127 | |
e3c71926 | 128 | =head1 Performance Enhancements |
6d110ad0 | 129 | |
e3c71926 FR |
130 | XXX Changes which enhance performance without changing behaviour go here. There |
131 | may well be none in a stable release. | |
6d110ad0 | 132 | |
e3c71926 | 133 | [ List each enhancement as a =item entry ] |
6d110ad0 | 134 | |
e3c71926 | 135 | =over 4 |
6d110ad0 FC |
136 | |
137 | =item * | |
138 | ||
a3f52e2e FC |
139 | Due to changes in L<File::Glob>, Perl's C<glob> function and its |
140 | C<< <...> >> equivalent are now much faster. The splitting of the pattern | |
141 | into words has been rewritten in C, resulting in speed-ups of 20% in some | |
142 | cases. | |
143 | ||
144 | This does not affect VMS, as it does not use File::Glob. | |
6d110ad0 | 145 | |
e3c71926 | 146 | =back |
6d110ad0 | 147 | |
e3c71926 | 148 | =head1 Modules and Pragmata |
6d110ad0 | 149 | |
e3c71926 FR |
150 | XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> |
151 | go here. If Module::CoreList is updated, generate an initial draft of the | |
152 | following sections using F<Porting/corelist-perldelta.pl>, which prints stub | |
153 | entries to STDOUT. Results can be pasted in place of the '=head2' entries | |
154 | below. A paragraph summary for important changes should then be added by hand. | |
155 | In an ideal world, dual-life modules would have a F<Changes> file that could be | |
156 | cribbed. | |
6d110ad0 | 157 | |
e3c71926 | 158 | [ Within each section, list entries as a =item entry ] |
6d110ad0 | 159 | |
e3c71926 | 160 | =head2 New Modules and Pragmata |
6d110ad0 | 161 | |
e3c71926 | 162 | =over 4 |
6d110ad0 FC |
163 | |
164 | =item * | |
165 | ||
a3f52e2e | 166 | L<arybase> -- this new module implements the C<$[> variable. |
6d110ad0 FC |
167 | |
168 | =back | |
169 | ||
e3c71926 | 170 | =head2 Updated Modules and Pragmata |
6d110ad0 | 171 | |
e3c71926 | 172 | =over 4 |
6d110ad0 FC |
173 | |
174 | =item * | |
175 | ||
ac73ea1e CBW |
176 | L<Archive::Extract> has been upgraded from version 0.56 to version 0.58. |
177 | ||
178 | =item * | |
179 | ||
a3f52e2e FC |
180 | L<B::Deparse> has been upgraded from version 1.08 to 1.08. |
181 | ||
ad32999b FC |
182 | It now correctly deparses C<CORE::do>, C<CORE::glob> and slices of empty |
183 | lists. | |
a3f52e2e FC |
184 | |
185 | =item * | |
186 | ||
cc947deb | 187 | L<CGI> has been upgraded from version 3.55 to version 3.58. |
3e3c678a CBW |
188 | |
189 | Use public and documented FCGI.pm API in CGI::Fast | |
190 | CGI::Fast was using an FCGI API that was deprecated and removed from | |
191 | documentation more than ten years ago. Usage of this deprecated API with | |
192 | FCGI >= 0.70 or FCGI <= 0.73 introduces a security issue. | |
193 | L<https://rt.cpan.org/Public/Bug/Display.html?id=68380> | |
194 | L<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-2766> | |
195 | ||
196 | =item * | |
197 | ||
a32349f5 | 198 | L<Compress::Raw::Bzip2> has been upgraded from version 2.037 to version 2.042. |
00d0325c CBW |
199 | |
200 | =item * | |
201 | ||
54172f84 | 202 | L<Compress::Raw::Zlib> has been upgraded from version 2.037 to version 2.042. |
949ade47 CBW |
203 | |
204 | =item * | |
205 | ||
aad9a0d9 | 206 | L<Compress::Zlib> has been upgraded from version 2.037 to version 2.042. |
ad4795e7 CBW |
207 | |
208 | =item * | |
209 | ||
e6bd4dde CBW |
210 | L<CPANPLUS> has been upgraded from version 0.9111 to version 0.9112. |
211 | ||
212 | =item * | |
213 | ||
aba0546e CBW |
214 | L<CPANPLUS::Dist::Build> has been upgraded from version 0.58 to version 0.60. |
215 | ||
216 | =item * | |
217 | ||
a0780036 CBW |
218 | L<Digest::SHA> has been upgraded from version 5.62 to version 5.63. |
219 | ||
220 | Added code to allow very large data inputs all at once, which had previously been | |
221 | limited to several hundred megabytes at a time | |
222 | ||
223 | =item * | |
224 | ||
f3640611 | 225 | L<ExtUtils::MakeMaker> has been upgraded from version 6.61_01 to version 6.63_02. |
00441cfa CBW |
226 | |
227 | =item * | |
228 | ||
ad32999b | 229 | L<File::Glob> has been upgraded from version 1.13 to 1.14. |
a3f52e2e FC |
230 | |
231 | It has a new C<:bsd_glob> export tag, intended to replace C<:glob>. Like | |
232 | C<:glob> it overrides C<glob> with a function that does not split the glob | |
233 | pattern into words, but, unlike C<:glob>, it iterates properly in scalar | |
234 | context, instead of returning the last file. | |
235 | ||
236 | There are other changes affecting Perl's own C<glob> operator (which uses | |
237 | File::Glob internally, except on VMS). See L</Performance Enhancements> | |
238 | and L</Selected Bug Fixes>. | |
239 | ||
240 | =item * | |
241 | ||
6ce52845 | 242 | L<HTTP::Tiny> has been upgraded from version 0.013 to version 0.016. |
35265876 CBW |
243 | |
244 | Adds additional shorthand methods for all common HTTP verbs, | |
245 | a C<post_form()> method for POST-ing x-www-form-urlencoded data and | |
246 | a C<www_form_urlencode()> utility method. | |
6d110ad0 | 247 | |
be539103 CBW |
248 | =item * |
249 | ||
250 | L<perlfaq> has been upgraded from version 5.0150035 to version 5.0150036. | |
251 | ||
a47fb3fe CBW |
252 | =item * |
253 | ||
a3f52e2e FC |
254 | L<Socket> as been upgraded from version 1.94_01 to 1.94_02. |
255 | ||
256 | It has new functions and constants for handling IPv6 sockets: | |
257 | ||
258 | pack_ipv6_mreq | |
259 | unpack_ipv6_mreq | |
260 | IPV6_ADD_MEMBERSHIP | |
261 | IPV6_DROP_MEMBERSHIP | |
262 | IPV6_MTU | |
263 | IPV6_MTU_DISCOVER | |
264 | IPV6_MULTICAST_HOPS | |
265 | IPV6_MULTICAST_IF | |
266 | IPV6_MULTICAST_LOOP | |
267 | IPV6_UNICAST_HOPS | |
268 | IPV6_V6ONLY | |
269 | ||
270 | =item * | |
271 | ||
ad32999b FC |
272 | L<Storable> has been upgraded from version 2.32 to 2.33. |
273 | ||
274 | The ability to add a fake entry to %INC to prevent Log::Agent from loading | |
275 | has been restored. In version 2.27 (included with perl 5.14.0), Storable | |
276 | starting producing an error instead. | |
277 | ||
278 | =item * | |
279 | ||
46267efc | 280 | L<Unicode::Collate> has been upgraded from version 0.80 to version 0.85. |
a47fb3fe | 281 | |
46267efc CBW |
282 | Locales updated to CLDR 2.0: mk, mt, nb, nn, ro, ru, sk, sr, sv, uk, |
283 | zh__pinyin, zh__stroke | |
284 | Newly supported locales: bn, fa, ml, mr, or, pa, sa, si, si__dictionary, | |
d88bd77a | 285 | sr_Latn, sv__reformed, ta, te, th, ur, wae. |
a47fb3fe | 286 | |
7ef25837 KW |
287 | =item * |
288 | ||
289 | L<Unicode::UCD> has been upgraded from version 0.36 to version 0.37. | |
62b3b855 | 290 | This adds four new functions: C<prop_aliases()>, and |
7ef25837 | 291 | C<prop_value_aliases()> which are used to find all the Unicode-approved |
681d705c | 292 | synonyms for property names, or to convert from one name to another; |
62b3b855 KW |
293 | C<prop_invlist> which returns all the code points matching a given |
294 | Unicode binary property; and C<prop_invmap> which returns the complete | |
295 | specification of a given Unicode property. | |
7ef25837 | 296 | |
e3c71926 | 297 | =back |
6d110ad0 | 298 | |
e3c71926 | 299 | =head2 Removed Modules and Pragmata |
6d110ad0 | 300 | |
e3c71926 | 301 | =over 4 |
6d110ad0 FC |
302 | |
303 | =item * | |
304 | ||
e3c71926 | 305 | XXX |
6d110ad0 | 306 | |
e3c71926 | 307 | =back |
6d110ad0 | 308 | |
e3c71926 | 309 | =head1 Documentation |
6d110ad0 | 310 | |
e3c71926 FR |
311 | XXX Changes to files in F<pod/> go here. Consider grouping entries by |
312 | file and be sure to link to the appropriate page, e.g. L<perlfunc>. | |
6d110ad0 | 313 | |
e3c71926 | 314 | =head2 New Documentation |
6d110ad0 | 315 | |
e3c71926 | 316 | XXX Changes which create B<new> files in F<pod/> go here. |
6d110ad0 | 317 | |
e3c71926 | 318 | =head3 L<XXX> |
6d110ad0 | 319 | |
e3c71926 | 320 | XXX Description of the purpose of the new file here |
6d110ad0 | 321 | |
e3c71926 | 322 | =head2 Changes to Existing Documentation |
6d110ad0 | 323 | |
e3c71926 FR |
324 | XXX Changes which significantly change existing files in F<pod/> go here. |
325 | However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics> | |
326 | section. | |
6d110ad0 | 327 | |
e3c71926 FR |
328 | =head3 L<XXX> |
329 | ||
330 | =over 4 | |
6d110ad0 FC |
331 | |
332 | =item * | |
333 | ||
e3c71926 | 334 | XXX Description of the change here |
6d110ad0 FC |
335 | |
336 | =back | |
337 | ||
e3c71926 FR |
338 | =head1 Diagnostics |
339 | ||
340 | The following additions or changes have been made to diagnostic output, | |
341 | including warnings and fatal error messages. For the complete list of | |
342 | diagnostic messages, see L<perldiag>. | |
6d110ad0 | 343 | |
e3c71926 FR |
344 | XXX New or changed warnings emitted by the core's C<C> code go here. Also |
345 | include any changes in L<perldiag> that reconcile it to the C<C> code. | |
b53e16ae | 346 | |
e3c71926 FR |
347 | [ Within each section, list entries as a =item entry that links to perldiag, |
348 | e.g. | |
b53e16ae | 349 | |
e3c71926 | 350 | =item * |
b53e16ae | 351 | |
e3c71926 FR |
352 | L<Invalid version object|perldiag/"Invalid version object"> |
353 | ] | |
46dd4080 | 354 | |
e3c71926 | 355 | =head2 New Diagnostics |
46dd4080 | 356 | |
e3c71926 | 357 | XXX Newly added diagnostic messages go here |
46dd4080 | 358 | |
e3c71926 | 359 | =head3 New Errors |
d6cf2367 | 360 | |
63ac71b9 | 361 | =over 4 |
e46d9735 CBW |
362 | |
363 | =item * | |
364 | ||
e3c71926 | 365 | XXX L<message|perldiag/"message"> |
828d6195 | 366 | |
3432e5a1 | 367 | =back |
83307084 | 368 | |
e3c71926 | 369 | =head3 New Warnings |
d39de893 | 370 | |
3432e5a1 | 371 | =over 4 |
39afdc5a CBW |
372 | |
373 | =item * | |
374 | ||
dd14f06c FC |
375 | L<length() used on %s|perldiag/length() used on %s> |
376 | ||
377 | This new warning occurs when C<length> is used on an array or hash, instead | |
378 | of C<scalar(@array)> or C<scalar(keys %hash)>. | |
379 | ||
380 | =item * | |
381 | ||
ad32999b FC |
382 | L<$[ used in %s (did you mean $] ?)|perldiag/"$[ used in %s (did you mean $] ?)"> |
383 | ||
384 | This new warning exists to catch the mistaken use of C<$[> in version | |
385 | checks. C<$]>, not C<$[>, contains the version number. C<$[> in a numeric | |
386 | comparison is almost always wrong. | |
666c7ca6 | 387 | |
e3c71926 | 388 | =back |
7b8e5ef0 | 389 | |
e3c71926 | 390 | =head2 Changes to Existing Diagnostics |
91710846 | 391 | |
e3c71926 | 392 | XXX Changes (i.e. rewording) of diagnostic messages go here |
91710846 | 393 | |
e3c71926 | 394 | =over 4 |
91710846 DG |
395 | |
396 | =item * | |
397 | ||
e859651c FC |
398 | The uninitialized warning for C<y///r> when C<$_> is implicit and undefined |
399 | now mentions the variable name, just like the non-/r variation of the | |
400 | operator. | |
a2fa999d | 401 | |
f81e39ef FC |
402 | =item * |
403 | ||
404 | The "Applying pattern match..." or similar warning produced when an array | |
405 | or hash is on the left-hand side of the C<=~> operator now mentions the | |
406 | name of the variable. | |
407 | ||
e3c71926 | 408 | =back |
a2fa999d | 409 | |
e3c71926 | 410 | =head1 Utility Changes |
19e72bbf | 411 | |
e3c71926 FR |
412 | XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go |
413 | here. Most of these are built within the directories F<utils> and F<x2p>. | |
19e72bbf | 414 | |
e3c71926 FR |
415 | [ List utility changes as a =head3 entry for each utility and =item |
416 | entries for each change | |
417 | Use L<XXX> with program names to get proper documentation linking. ] | |
19e72bbf | 418 | |
e3c71926 | 419 | =head3 L<XXX> |
bd65daab | 420 | |
e3c71926 | 421 | =over 4 |
bd65daab | 422 | |
3f2cb5bf S |
423 | =item * |
424 | ||
531ba486 NC |
425 | F<pod/buildtoc>, used by the build process to build L<perltoc>, has been |
426 | refactored and simplified. It now only contains code to build L<perltoc>; | |
427 | the code to regenerate Makefiles has been moved to F<Porting/pod_rules.pl>. | |
428 | It's a bug if this change has any material affect on the build process. | |
f0381222 | 429 | |
e3c71926 | 430 | =back |
f0381222 | 431 | |
e3c71926 | 432 | =head1 Configuration and Compilation |
02e7ec6d | 433 | |
e3c71926 FR |
434 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools |
435 | go here. Any other changes to the Perl build process should be listed here. | |
436 | However, any platform-specific changes should be listed in the | |
437 | L</Platform Support> section, instead. | |
02e7ec6d | 438 | |
e3c71926 | 439 | [ List changes as a =item entry ]. |
02e7ec6d | 440 | |
e3c71926 | 441 | =over 4 |
1e915955 CBW |
442 | |
443 | =item * | |
444 | ||
e3c71926 | 445 | XXX |
3f2cb5bf | 446 | |
3432e5a1 | 447 | =back |
666c7ca6 | 448 | |
e3c71926 | 449 | =head1 Testing |
8fe353ef | 450 | |
e3c71926 FR |
451 | XXX Any significant changes to the testing of a freshly built perl should be |
452 | listed here. Changes which create B<new> files in F<t/> go here as do any | |
453 | large changes to the testing harness (e.g. when parallel testing was added). | |
454 | Changes to existing files in F<t/> aren't worth summarising, although the bugs | |
455 | that they represent may be covered elsewhere. | |
7ac26854 | 456 | |
e3c71926 | 457 | [ List each test improvement as a =item entry ] |
daef35db | 458 | |
3432e5a1 | 459 | =over 4 |
83307084 SL |
460 | |
461 | =item * | |
462 | ||
e3c71926 | 463 | XXX |
b420b12a | 464 | |
3432e5a1 | 465 | =back |
b420b12a | 466 | |
e3c71926 | 467 | =head1 Platform Support |
b53e16ae | 468 | |
e3c71926 | 469 | XXX Any changes to platform support should be listed in the sections below. |
9eb1e3e2 | 470 | |
e3c71926 FR |
471 | [ Within the sections, list each platform as a =item entry with specific |
472 | changes as paragraphs below it. ] | |
9eb1e3e2 | 473 | |
e3c71926 | 474 | =head2 New Platforms |
b53e16ae | 475 | |
e3c71926 FR |
476 | XXX List any platforms that this version of perl compiles on, that previous |
477 | versions did not. These will either be enabled by new files in the F<hints/> | |
478 | directories, or new subdirectories and F<README> files at the top level of the | |
479 | source tree. | |
b53e16ae FC |
480 | |
481 | =over 4 | |
482 | ||
e3c71926 | 483 | =item XXX-some-platform |
b53e16ae | 484 | |
e3c71926 | 485 | XXX |
b53e16ae FC |
486 | |
487 | =back | |
488 | ||
e3c71926 | 489 | =head2 Discontinued Platforms |
83307084 | 490 | |
e3c71926 | 491 | XXX List any platforms that this version of perl no longer compiles on. |
3432e5a1 | 492 | |
d6cf2367 FC |
493 | =over 4 |
494 | ||
e3c71926 | 495 | =item XXX-some-platform |
d6cf2367 | 496 | |
e3c71926 | 497 | XXX |
c634fdd3 | 498 | |
3432e5a1 | 499 | =back |
9cfd094e | 500 | |
e3c71926 FR |
501 | =head2 Platform-Specific Notes |
502 | ||
503 | XXX List any changes for specific platforms. This could include configuration | |
504 | and compilation changes or changes in portability/compatibility. However, | |
505 | changes within modules for platforms should generally be listed in the | |
506 | L</Modules and Pragmata> section. | |
9cfd094e | 507 | |
3432e5a1 | 508 | =over 4 |
95f7e41f | 509 | |
e3c71926 | 510 | =item XXX-some-platform |
95f7e41f | 511 | |
e3c71926 | 512 | XXX |
df5b44bd | 513 | |
63ac71b9 | 514 | =back |
310913d4 | 515 | |
3432e5a1 | 516 | =head1 Internal Changes |
d6cf2367 | 517 | |
e3c71926 FR |
518 | XXX Changes which affect the interface available to C<XS> code go here. |
519 | Other significant internal changes for future core maintainers should | |
520 | be noted as well. | |
5d4ff231 | 521 | |
e3c71926 | 522 | [ List each change as a =item entry ] |
6d110ad0 | 523 | |
e3c71926 | 524 | =over 4 |
b53e16ae FC |
525 | |
526 | =item * | |
527 | ||
a3f52e2e | 528 | C<PL_curstash> is now reference-counted. |
b53e16ae | 529 | |
3432e5a1 | 530 | =back |
60092ce4 | 531 | |
3432e5a1 | 532 | =head1 Selected Bug Fixes |
309aab3a | 533 | |
e3c71926 FR |
534 | XXX Important bug fixes in the core language are summarised here. |
535 | Bug fixes in files in F<ext/> and F<lib/> are best summarised in | |
536 | L</Modules and Pragmata>. | |
19e72bbf | 537 | |
e3c71926 | 538 | [ List each fix as a =item entry ] |
19e72bbf | 539 | |
e3c71926 | 540 | =over 4 |
b53e16ae FC |
541 | |
542 | =item * | |
543 | ||
a3f52e2e FC |
544 | Perl now holds an extra reference count on the package that code is |
545 | currently compiling in. This means that the following code no longer crashes [perl #101486]: | |
546 | ||
547 | package Foo; | |
548 | BEGIN {*Foo:: = *Bar::} | |
549 | sub foo; | |
550 | ||
551 | =item * | |
552 | ||
553 | F<dumpvar.pl>, and consequently the C<x> command in the debugger, have been | |
554 | fixed to handle objects blessed into classes whose names contain "=". The | |
555 | contents of such objects used not to be dumped [perl #101814]. | |
556 | ||
557 | =item * | |
558 | ||
559 | The C<x> repetition operator no longer crashes on 64-bit builds with large | |
560 | repeate counts [perl #94560]. | |
561 | ||
562 | =item * | |
563 | ||
564 | A fix to C<glob> under miniperl (used to configure modules when perl itself | |
565 | is built) in Perl 5.15.3 stopped C<< <~> >> from returning the home | |
566 | directory, because it cleared %ENV before calling csh. Now C<$ENV{HOME}> | |
567 | is preserved. This fix probably does not affect anything. If | |
568 | L<File::Glob> fails to load for some reason, Perl reverts to using csh. | |
569 | So it would apply in that case. | |
570 | ||
571 | =item * | |
572 | ||
573 | On OSes other than VMS, Perl's C<glob> operator (and the C<< <...> >> form) | |
574 | use L<File::Glob> underneath. L<File::Glob> splits the pattern into words, | |
575 | before feeding each word to its C<bsd_glob> function. | |
576 | ||
577 | There were several inconsistencies in the way the split was done. Now | |
578 | quotation marks (' and ") are always treated as shell-style word delimiters | |
579 | (that allow whitespace as part of a word) and backslashes are always | |
580 | preserved, unless they exist to escape quotation marks. Before, those | |
581 | would only sometimes be the case, depending on whether the pattern | |
582 | contained whitespace. Also, escaped whitespace at the end of the pattern | |
ad32999b | 583 | is no longer stripped [perl #40470]. |
a3f52e2e FC |
584 | |
585 | =item * | |
586 | ||
587 | C<CORE::glob> now works as a way to call the default globbing function. It | |
588 | used to respect overrides, despite the C<CORE::> prefix. | |
589 | ||
590 | =item * | |
591 | ||
592 | In 5.14, C</[[:lower:]]/i> and C</[[:upper:]]/i> no longer matched the | |
593 | opposite case. This has been fixed [perl #101970]. | |
594 | ||
595 | =item * | |
596 | ||
597 | A regular expression match with an overloaded object on the right-hand side | |
598 | would in some cases stringify the object too many times. | |
599 | ||
600 | =item * | |
601 | ||
602 | The C-level C<pregcomp> function could become confused as to whether the | |
603 | pattern was in UTF8 if the pattern was an overloaded, tied, or otherwise | |
604 | magical scalar [perl #101940]. | |
ca955add | 605 | |
bbdd8bad KW |
606 | =item * |
607 | ||
608 | A regression has been fixed that was introduced in 5.14, in C</i> | |
609 | regular expression matching, in which a match improperly fails if the | |
610 | pattern is in UTF-8, the target string is not, and a Latin-1 character | |
611 | precedes a character in the string that should match the pattern. [perl | |
612 | #101710] | |
613 | ||
ad32999b FC |
614 | =item * |
615 | ||
616 | C<@{"..."} = reverse ...> started crashing in 5.15.3. This has been fixed. | |
617 | ||
618 | =item * | |
619 | ||
620 | C<ref> in a tainted expression started producing an "sv_upgrade" error in | |
621 | 5.15.4. This has been fixed. | |
622 | ||
623 | =item * | |
624 | ||
625 | Weak references to lexical hashes going out of scope were not going stale | |
626 | (becoming undefined), but continued to point to the hash. | |
627 | ||
628 | =item * | |
629 | ||
630 | Weak references to lexical variables going out of scope are now broken | |
631 | before any magical methods (e.g., DESTROY on a tie object) are called. | |
632 | This prevents such methods from modifying the variable that will be seen | |
633 | the next time the scope is entered. | |
634 | ||
635 | =item * | |
636 | ||
637 | A C<keys> optimisation in Perl 5.12.0 to make it faster on empty hashes | |
638 | caused C<each> not to reset the iterator if called after the last element | |
639 | was deleted. This has been fixed. | |
640 | ||
641 | =item * | |
642 | ||
643 | The C<#line 42 foo> directive used not to update the arrays of lines used | |
644 | by the debugger if it occurred in a string eval. This was partially fixed | |
645 | in 5.14, but it only worked for a single C<#line 42 foo> in each eval. Now | |
646 | it works for multiple. | |
647 | ||
648 | =item * | |
649 | ||
650 | String eval used not to localise C<%^H> when compiling its argument if it | |
651 | was empty at the time the C<eval> call itself was compiled. This could | |
652 | lead to scary side effects, like C<use re "/m"> enabling other flags that | |
653 | the surrounding code was trying to enable for its caller [perl #68750]. | |
654 | ||
3973654e FC |
655 | =item * |
656 | ||
657 | Creating a BEGIN block from XS code (via C<newXS> or C<newATTRSUB>) would, | |
658 | on completion, make the hints of the current compiling code the current | |
659 | hints. This could cause warnings to occur in a non-warning scope. | |
660 | ||
cca38fda FC |
661 | =item * |
662 | ||
663 | C<eval $string> and C<require> no longer localise hints (C<$^H> and C<%^H>) | |
664 | at run time, but only during compilation of the $string or required file. | |
665 | This makes C<BEGIN { $^H{foo}=7 }> equivalent to | |
666 | C<BEGIN { eval '$^H{foo}=7' }> [perl #70151]. | |
667 | ||
9c7c1651 FC |
668 | =item * |
669 | ||
670 | When subroutine calls are intercepted by the debugger, the name of the | |
671 | subroutine or a reference to it is stored in C<$DB::sub>, for the debugger | |
672 | to access. In some cases (such as C<$foo = *bar; undef *bar; &$foo>) | |
673 | C<$DB::sub> would be set to a name that could not be used to find the | |
674 | subroutine, and so the debugger's attempt to call it would fail. Now the | |
675 | check to see whether a reference is needed is more robust, so those | |
676 | problems should not happen anymore [rt.cpan.org #69862]. | |
677 | ||
fce59cd4 FC |
678 | =item * |
679 | ||
680 | Localising a tied scalar that returns a typeglob no longer stops it from | |
681 | being tied till the end of the scope. | |
682 | ||
b9e83cd1 FC |
683 | =item * |
684 | ||
685 | When C<open> is called with three arguments, the third being a file handle | |
686 | (as in C<< open $fh, ">&", $fh2 >>), if the third argument is tied or a | |
687 | reference to a tied variable, FETCH is now called exactly once, instead of | |
688 | 0, 2, or 3 times (all of which could occur in various circumstances). | |
689 | ||
e3c71926 | 690 | =back |
ca955add | 691 | |
e3c71926 | 692 | =head1 Known Problems |
b53e16ae | 693 | |
e3c71926 FR |
694 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any |
695 | tests that had to be C<TODO>ed for the release would be noted here, unless | |
696 | they were specific to a particular platform (see below). | |
b53e16ae | 697 | |
e3c71926 FR |
698 | This is a list of some significant unfixed bugs, which are regressions |
699 | from either 5.XXX.XXX or 5.XXX.XXX. | |
b53e16ae | 700 | |
e3c71926 | 701 | [ List each fix as a =item entry ] |
b53e16ae | 702 | |
e3c71926 | 703 | =over 4 |
b53e16ae FC |
704 | |
705 | =item * | |
706 | ||
e3c71926 | 707 | XXX |
b53e16ae | 708 | |
63ac71b9 | 709 | =back |
bbc28bfc | 710 | |
e3c71926 | 711 | =head1 Obituary |
a777c865 | 712 | |
e3c71926 FR |
713 | XXX If any significant core contributor has died, we've added a short obituary |
714 | here. | |
a777c865 | 715 | |
e3c71926 | 716 | =head1 Acknowledgements |
a777c865 | 717 | |
e3c71926 | 718 | XXX Generate this with: |
a777c865 | 719 | |
e3c71926 | 720 | perl Porting/acknowledgements.pl v5.15.4..HEAD |
29cf780c | 721 | |
44691e6f AB |
722 | =head1 Reporting Bugs |
723 | ||
724 | If you find what you think is a bug, you might check the articles | |
34dc2ec0 | 725 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
44691e6f AB |
726 | bug database at http://rt.perl.org/perlbug/ . There may also be |
727 | information at http://www.perl.org/ , the Perl Home Page. | |
728 | ||
729 | If you believe you have an unreported bug, please run the L<perlbug> | |
730 | program included with your release. Be sure to trim your bug down | |
731 | to a tiny but sufficient test case. Your bug report, along with the | |
732 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
733 | analysed by the Perl porting team. | |
734 | ||
735 | If the bug you are reporting has security implications, which make it | |
736 | inappropriate to send to a publicly archived mailing list, then please send | |
34dc2ec0 | 737 | it to perl5-security-report@perl.org. This points to a closed subscription |
b4707b2a FC |
738 | unarchived mailing list, which includes |
739 | all the core committers, who will be able | |
44691e6f AB |
740 | to help assess the impact of issues, figure out a resolution, and help |
741 | co-ordinate the release of patches to mitigate or fix the problem across all | |
34dc2ec0 DM |
742 | platforms on which Perl is supported. Please only use this address for |
743 | security issues in the Perl core, not for modules independently | |
44691e6f AB |
744 | distributed on CPAN. |
745 | ||
746 | =head1 SEE ALSO | |
747 | ||
748 | The F<Changes> file for an explanation of how to view exhaustive details | |
749 | on what changed. | |
750 | ||
751 | The F<INSTALL> file for how to build Perl. | |
752 | ||
753 | The F<README> file for general stuff. | |
754 | ||
755 | The F<Artistic> and F<Copying> files for copyright information. | |
756 | ||
757 | =cut |