Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
34dc2ec0 DM |
5 | [ this is a template for a new perldelta file. Any text flagged as |
6 | XXX needs to be processed before release. ] | |
c71a852f | 7 | |
34dc2ec0 | 8 | perldelta - what is new for perl v5.15.0 |
6e925ecb | 9 | |
34dc2ec0 | 10 | =head1 DESCRIPTION |
a27ff1be | 11 | |
34dc2ec0 DM |
12 | This document describes differences between the 5.15.0 release and |
13 | the 5.14.0 release. | |
a27ff1be | 14 | |
34dc2ec0 DM |
15 | If you are upgrading from an earlier release such as 5.YYY.YYY, first read |
16 | L<perl5YYYdelta>, which describes differences between 5.ZZZ.ZZZ and | |
17 | 5.YYY.YYY. | |
a27ff1be | 18 | |
760696b8 FC |
19 | Some of the changes have been included in Perl 5.14.1. These are |
20 | indicated with a "(5.14.1)" marker. | |
21 | ||
34dc2ec0 | 22 | =head1 Notice |
a27ff1be | 23 | |
34dc2ec0 | 24 | XXX Any important notices here |
a27ff1be | 25 | |
34dc2ec0 | 26 | =head1 Core Enhancements |
a27ff1be | 27 | |
34dc2ec0 DM |
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. | |
a27ff1be | 31 | |
34dc2ec0 | 32 | [ List each enhancement as a =head2 entry ] |
a27ff1be | 33 | |
34dc2ec0 | 34 | =head1 Security |
a27ff1be | 35 | |
34dc2ec0 DM |
36 | XXX Any security-related notices go here. In particular, any security |
37 | vulnerabilities closed should be noted here rather than in the | |
38 | L</Selected Bug Fixes> section. | |
a27ff1be | 39 | |
34dc2ec0 | 40 | [ List each security issue as a =head2 entry ] |
a27ff1be | 41 | |
34dc2ec0 | 42 | =head1 Incompatible Changes |
9a5a48b7 | 43 | |
34dc2ec0 | 44 | [ List each incompatible change as a =head2 entry ] |
9a5a48b7 | 45 | |
34dc2ec0 | 46 | =head1 Deprecations |
cdc10f43 | 47 | |
34dc2ec0 DM |
48 | XXX Any deprecated features, syntax, modules etc. should be listed here. |
49 | In particular, deprecated modules should be listed here even if they are | |
50 | listed as an updated module in the L</Modules and Pragmata> section. | |
cdc10f43 | 51 | |
34dc2ec0 | 52 | [ List each deprecation as a =head2 entry ] |
9a5a48b7 | 53 | |
34dc2ec0 | 54 | =head1 Performance Enhancements |
9a5a48b7 | 55 | |
34dc2ec0 DM |
56 | XXX Changes which enhance performance without changing behaviour go here. There |
57 | may well be none in a stable release. | |
9a5a48b7 | 58 | |
34dc2ec0 | 59 | [ List each enhancement as a =item entry ] |
9a5a48b7 | 60 | |
34dc2ec0 | 61 | =over 4 |
c8c13991 | 62 | |
5076a392 FC |
63 | =item * |
64 | ||
34dc2ec0 | 65 | XXX |
e8e35311 FC |
66 | |
67 | =back | |
68 | ||
34dc2ec0 | 69 | =head1 Modules and Pragmata |
c8c13991 | 70 | |
34dc2ec0 DM |
71 | XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> |
72 | go here. If Module::CoreList is updated, generate an initial draft of the | |
73 | following sections using F<Porting/corelist-perldelta.pl>, which prints stub | |
74 | entries to STDOUT. Results can be pasted in place of the '=head2' entries | |
75 | below. A paragraph summary for important changes should then be added by hand. | |
76 | In an ideal world, dual-life modules would have a F<Changes> file that could be | |
77 | cribbed. | |
f00d3350 | 78 | |
34dc2ec0 | 79 | [ Within each section, list entries as a =item entry ] |
e9784f55 | 80 | |
34dc2ec0 | 81 | =head2 New Modules and Pragmata |
d430b8e7 | 82 | |
34dc2ec0 | 83 | =over 4 |
d430b8e7 | 84 | |
31ecc2aa FC |
85 | =item * |
86 | ||
34dc2ec0 | 87 | XXX |
31ecc2aa | 88 | |
e9784f55 | 89 | =back |
c34a735e | 90 | |
34dc2ec0 | 91 | =head2 Updated Modules and Pragmata |
24b164a5 | 92 | |
34dc2ec0 | 93 | =over 4 |
2c389f6c | 94 | |
9780b8fa FC |
95 | =item * |
96 | ||
1c861f7c CBW |
97 | L<Archive::Extract> has been upgraded from version 0.48 to version 0.52 |
98 | ||
99 | Includes a fix for FreeBSD to only use C<unzip> if it is located in | |
100 | C</usr/local/bin>, as FreeBSD 9.0 will ship with a limited C<unzip> in | |
101 | C</usr/bin>. | |
102 | ||
103 | =item * | |
104 | ||
daca484d NC |
105 | L<B> has been upgraded from version 1.29 to version 1.30. |
106 | ||
107 | =item * | |
108 | ||
760696b8 FC |
109 | L<B::Deparse> has been upgraded from version 1.03 to 1.05. |
110 | ||
111 | It addresses two regressions in Perl 5.14.0: | |
112 | ||
113 | =over | |
114 | ||
115 | =item * | |
116 | ||
117 | Deparsing of the C<glob> operator and its diamond (C<< <> >>) form now | |
118 | works again [RT #90898] (5.14.1). | |
119 | ||
120 | =item * | |
121 | ||
122 | The presence of subroutines named C<::::> or C<::::::> no longer causes | |
123 | B::Deparse to hang (5.14.1). | |
124 | ||
125 | =back | |
126 | ||
127 | XXX Other Deparse fixes go here. | |
128 | ||
129 | =item * | |
130 | ||
1c861f7c CBW |
131 | L<CGI> has been upgraded from version 3.52 to version 3.54 |
132 | ||
133 | The DELETE HTTP verb is now supported. | |
134 | ||
135 | =item * | |
136 | ||
137 | L<Compress::Zlib> has been upgraded from version 2.033 to version 2.035 | |
138 | ||
139 | =item * | |
140 | ||
141 | L<Compress::Raw::Bzip2> has been upgraded from version 2.033 to version 2.035 | |
142 | ||
143 | =item * | |
144 | ||
145 | L<Compress::Raw::Zlib> has been upgraded from version 2.033 to version 2.035 | |
146 | ||
147 | =item * | |
148 | ||
149 | L<CPAN::Meta> has been upgraded from version 2.110440 to version 2.110930 | |
150 | ||
151 | commit 0dc56b6ea90acbb1f9e29a03d008475a618262f3 | |
152 | Author: Chris 'BinGOs' Williams <chris@bingosnet.co.uk> | |
153 | Date: Wed May 18 11:12:21 2011 +0100 | |
154 | ||
155 | =item * | |
156 | ||
157 | L<CPANPLUS> has been upgraded from version 0.9103 to version 0.9105 | |
158 | ||
159 | Now understands specifying modules to install in the format 'Module/Type.pm' | |
160 | ||
161 | =item * | |
162 | ||
163 | L<CPANPLUS::Dist::Build> has been upgraded from version 0.54 to version 0.56 | |
164 | ||
165 | =item * | |
166 | ||
167 | L<DB_File> has been upgraded from version 1.821 to version 1.822 | |
168 | ||
169 | Warnings are now in sync with perl's | |
170 | ||
171 | =item * | |
172 | ||
173 | L<Digest::SHA> has been upgraded from version 5.61 to version 5.62 | |
174 | ||
175 | No longer loads L<MIME::Base64> as this was unnecessary. | |
176 | ||
177 | =item * | |
178 | ||
975dff8c FC |
179 | L<Devel::Peek> has been upgraded from version 1.07 to 1.08. |
180 | ||
181 | Its C<fill_mstats> function no longer refuses to write to copy-on-write | |
182 | scalars. | |
183 | ||
184 | =item * | |
185 | ||
1c861f7c CBW |
186 | L<Encode> has been upgraded from version 2.42 to version 2.43 |
187 | ||
188 | Missing aliases added, a deep recursion error fixed and various | |
189 | documentation updates. | |
190 | ||
191 | =item * | |
192 | ||
193 | L<Filter::Util::Call> has been upgraded from version 1.08 to version 1.39 | |
194 | ||
195 | C<decrypt> fixed to work with v5.14.0 | |
196 | ||
197 | =item * | |
198 | ||
199 | L<JSON::PP> has been upgraded from version 2.27105 to version 2.27200 | |
200 | ||
201 | Fixed C<incr_parse> decoding string more correctly. | |
202 | ||
203 | =item * | |
204 | ||
f95396b3 | 205 | L<Math::Complex> has been upgraded from version 1.56 to version 1.57. |
3194a40a Z |
206 | |
207 | Correct copy constructor usage. | |
208 | Fix polarwise formatting with numeric format specifier. | |
209 | More stable C<great_circle_direction> algorithm. | |
210 | ||
211 | =item * | |
212 | ||
1c861f7c CBW |
213 | L<Object::Accessor> has been upgraded from version 0.38 to version 0.42 |
214 | ||
215 | Eliminated use of C<exists> on array elements which has been deprecated. | |
216 | ||
217 | =item * | |
218 | ||
e5904012 NC |
219 | L<PerlIO::encoding> has been upgraded from version 0.14 to 0.15 |
220 | ||
221 | =item * | |
222 | ||
975dff8c FC |
223 | L<PerlIO::scalar> has been upgraded from version 0.11 to 0.12. |
224 | ||
225 | It fixes a problem with C<< open my $fh, ">", \$scalar >> not working if | |
226 | C<$scalar> is a copy-on-write scalar. | |
227 | ||
228 | =item * | |
229 | ||
760696b8 FC |
230 | XXX If any changes are made, the version will need to be bumped again. |
231 | What blead has is currently (as of a9d1f3db, 7th of June) identical to | |
232 | 5.14.1's version. | |
233 | ||
234 | L<Pod::Perldoc> has been upgraded from version 3.15_03 to 3.15_04. | |
235 | ||
236 | It corrects the search paths on VMS [RT #90640]. | |
237 | ||
238 | =item * | |
239 | ||
daca484d NC |
240 | L<Storable> has been upgraded from version 2.27 to version 2.28. |
241 | ||
975dff8c FC |
242 | It no longer turns copy-on-write scalars into read-only scalars when |
243 | freezing and thawing. | |
244 | ||
daca484d NC |
245 | =item * |
246 | ||
1c861f7c CBW |
247 | L<Sys::Syslog> has been upgraded from version 0.27 to version 0.29 |
248 | ||
249 | Large number of Request Tickets resolved. | |
250 | ||
251 | =item * | |
252 | ||
f95396b3 | 253 | L<Time::HiRes> has been upgraded from version 1.9721_01 to version 1.9722. |
91a2e9f6 Z |
254 | |
255 | Portability fix, and avoiding some compiler warnings. | |
256 | ||
257 | =item * | |
258 | ||
0b3bdea4 LB |
259 | L<Module::CoreList> has been upgraded from version 2.49 to 2.50. |
260 | ||
261 | Updated for v5.12.4. | |
262 | ||
263 | =item * | |
264 | ||
1c861f7c CBW |
265 | L<Unicode::Collate> has been upgraded from version 0.73 to version 0.76 |
266 | ||
267 | Updated to CLDR 1.9.1 | |
268 | ||
269 | =item * | |
270 | ||
271 | L<Unicode::Normalize> has been upgraded from version 1.10 to version 1.12 | |
272 | ||
273 | Fixes for the removal of C<unicore/CompositionExclusions.txt> from core. | |
274 | ||
275 | =item * | |
276 | ||
277 | L<XSLoader> has been upgraded from version 0.13 to version 0.15 | |
278 | ||
279 | Integrated changes from bleadperl | |
280 | ||
281 | =item * | |
282 | ||
34dc2ec0 | 283 | XXX |
9780b8fa | 284 | |
e8e35311 FC |
285 | =back |
286 | ||
34dc2ec0 | 287 | =head2 Removed Modules and Pragmata |
bdb0cce8 | 288 | |
34dc2ec0 | 289 | =over 4 |
44691e6f | 290 | |
5076a392 | 291 | =item * |
44691e6f | 292 | |
34dc2ec0 | 293 | XXX |
e8e35311 FC |
294 | |
295 | =back | |
296 | ||
34dc2ec0 | 297 | =head1 Documentation |
44691e6f | 298 | |
34dc2ec0 DM |
299 | XXX Changes to files in F<pod/> go here. Consider grouping entries by |
300 | file and be sure to link to the appropriate page, e.g. L<perlfunc>. | |
6d96b0fe | 301 | |
34dc2ec0 | 302 | =head2 New Documentation |
6d96b0fe | 303 | |
34dc2ec0 | 304 | XXX Changes which create B<new> files in F<pod/> go here. |
6d96b0fe | 305 | |
34dc2ec0 | 306 | =head3 L<XXX> |
e8e35311 | 307 | |
34dc2ec0 | 308 | XXX Description of the purpose of the new file here |
6d96b0fe | 309 | |
34dc2ec0 | 310 | =head2 Changes to Existing Documentation |
b7188eb5 | 311 | |
34dc2ec0 DM |
312 | XXX Changes which significantly change existing files in F<pod/> go here. |
313 | However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics> | |
314 | section. | |
b7188eb5 | 315 | |
760696b8 FC |
316 | =head3 L<perlfunc> |
317 | ||
318 | =over | |
319 | ||
320 | =item * | |
321 | ||
322 | C<given>, C<when> and C<default> are now listed in L<perlfunc> (5.14.1). | |
323 | ||
324 | =back | |
325 | ||
326 | =head3 L<perllol> | |
327 | ||
328 | =over | |
329 | ||
330 | =item * | |
331 | ||
332 | L<perllol> has been expanded with examples using the new C<push $scalar> | |
333 | syntax introduced in Perl 5.14.0 (5.14.1). | |
334 | ||
335 | =back | |
336 | ||
337 | =head3 L<perlop> | |
b7188eb5 | 338 | |
34dc2ec0 | 339 | =over 4 |
e8e35311 | 340 | |
2c389f6c FC |
341 | =item * |
342 | ||
760696b8 FC |
343 | The explanation of bitwise operators has been expanded to explain how they |
344 | work on Unicode strings (5.14.1). | |
345 | ||
346 | =item * | |
347 | ||
348 | The section on the triple-dot or yada-yada operator has been moved up, as | |
349 | it used to separate two closely related sections about the comma operator | |
350 | (5.14.1). | |
351 | ||
352 | =item * | |
353 | ||
354 | More examples for C<m//g> have been added (5.14.1). | |
355 | ||
356 | =item * | |
357 | ||
358 | The C<<< <<\FOO >>> here-doc syntax has been documented (5.14.1). | |
359 | ||
360 | =back | |
361 | ||
362 | =head3 L<perlrun> | |
363 | ||
364 | =over | |
365 | ||
366 | =item * | |
367 | ||
368 | L<perlrun> has undergone a significant clean-up. Most notably, the | |
369 | B<-0x...> form of the B<-0> flag has been clarified, and the final section | |
370 | on environment variables has been corrected and expanded (5.14.1). | |
2c389f6c | 371 | |
e8e35311 FC |
372 | =back |
373 | ||
34dc2ec0 | 374 | =head1 Diagnostics |
b7188eb5 | 375 | |
34dc2ec0 DM |
376 | The following additions or changes have been made to diagnostic output, |
377 | including warnings and fatal error messages. For the complete list of | |
378 | diagnostic messages, see L<perldiag>. | |
44691e6f | 379 | |
34dc2ec0 DM |
380 | XXX New or changed warnings emitted by the core's C<C> code go here. Also |
381 | include any changes in L<perldiag> that reconcile it to the C<C> code. | |
6c9cd4a1 | 382 | |
34dc2ec0 | 383 | [ Within each section, list entries as a =item entry ] |
6c9cd4a1 | 384 | |
34dc2ec0 | 385 | =head2 New Diagnostics |
44691e6f | 386 | |
34dc2ec0 | 387 | XXX Newly added diagnostic messages go here |
44691e6f | 388 | |
34dc2ec0 | 389 | =over 4 |
44691e6f | 390 | |
5076a392 | 391 | =item * |
44691e6f | 392 | |
975dff8c FC |
393 | Assigning to a temporary scalar returned from an XS lvalue subroutine now |
394 | produces a warning: "Useless assignment to a temporary". This should help | |
395 | PDL users [RT #31946]. | |
2c389f6c FC |
396 | |
397 | =back | |
398 | ||
34dc2ec0 | 399 | =head2 Changes to Existing Diagnostics |
b7188eb5 | 400 | |
34dc2ec0 | 401 | XXX Changes (i.e. rewording) of diagnostic messages go here |
b7188eb5 | 402 | |
34dc2ec0 | 403 | =over 4 |
b7188eb5 | 404 | |
5076a392 | 405 | =item * |
b7188eb5 | 406 | |
34dc2ec0 | 407 | XXX |
b7188eb5 | 408 | |
e8e35311 | 409 | =back |
5076a392 | 410 | |
34dc2ec0 | 411 | =head1 Utility Changes |
5076a392 | 412 | |
34dc2ec0 DM |
413 | XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go |
414 | here. Most of these are built within the directories F<utils> and F<x2p>. | |
5076a392 | 415 | |
34dc2ec0 DM |
416 | [ List utility changes as a =head3 entry for each utility and =item |
417 | entries for each change | |
418 | Use L<XXX> with program names to get proper documentation linking. ] | |
5076a392 | 419 | |
34dc2ec0 | 420 | =head3 L<XXX> |
5076a392 | 421 | |
34dc2ec0 | 422 | =over 4 |
5076a392 FC |
423 | |
424 | =item * | |
425 | ||
34dc2ec0 | 426 | XXX |
5076a392 | 427 | |
2c389f6c | 428 | =back |
e8e35311 | 429 | |
34dc2ec0 | 430 | =head1 Configuration and Compilation |
5076a392 | 431 | |
34dc2ec0 DM |
432 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools |
433 | go here. Any other changes to the Perl build process should be listed here. | |
434 | However, any platform-specific changes should be listed in the | |
435 | L</Platform Support> section, instead. | |
2c389f6c | 436 | |
34dc2ec0 | 437 | [ List changes as a =item entry ]. |
2c389f6c | 438 | |
34dc2ec0 | 439 | =over 4 |
5076a392 | 440 | |
e8e35311 | 441 | =item * |
5076a392 | 442 | |
760696b8 FC |
443 | F<regexp.h> has been modified for compatibility with GCC's B<-Werror> |
444 | option, as used by some projects that include perl's header files (5.14.1). | |
5076a392 | 445 | |
34dc2ec0 | 446 | =back |
5076a392 | 447 | |
34dc2ec0 | 448 | =head1 Testing |
5076a392 | 449 | |
34dc2ec0 DM |
450 | XXX Any significant changes to the testing of a freshly built perl should be |
451 | listed here. Changes which create B<new> files in F<t/> go here as do any | |
452 | large changes to the testing harness (e.g. when parallel testing was added). | |
453 | Changes to existing files in F<t/> aren't worth summarising, although the bugs | |
454 | that they represent may be covered elsewhere. | |
5076a392 | 455 | |
34dc2ec0 | 456 | [ List each test improvement as a =item entry ] |
5076a392 | 457 | |
34dc2ec0 | 458 | =over 4 |
5076a392 FC |
459 | |
460 | =item * | |
461 | ||
34dc2ec0 | 462 | XXX |
e8e35311 | 463 | |
34dc2ec0 | 464 | =back |
5076a392 | 465 | |
34dc2ec0 | 466 | =head1 Platform Support |
5076a392 | 467 | |
34dc2ec0 | 468 | XXX Any changes to platform support should be listed in the sections below. |
5076a392 | 469 | |
34dc2ec0 DM |
470 | [ Within the sections, list each platform as a =item entry with specific |
471 | changes as paragraphs below it. ] | |
5076a392 | 472 | |
34dc2ec0 | 473 | =head2 New Platforms |
5076a392 | 474 | |
34dc2ec0 DM |
475 | XXX List any platforms that this version of perl compiles on, that previous |
476 | versions did not. These will either be enabled by new files in the F<hints/> | |
477 | directories, or new subdirectories and F<README> files at the top level of the | |
478 | source tree. | |
cdc10f43 | 479 | |
34dc2ec0 | 480 | =over 4 |
cdc10f43 | 481 | |
34dc2ec0 | 482 | =item XXX-some-platform |
d430b8e7 | 483 | |
34dc2ec0 | 484 | XXX |
d430b8e7 | 485 | |
2c389f6c | 486 | =back |
5076a392 | 487 | |
34dc2ec0 | 488 | =head2 Discontinued Platforms |
5076a392 | 489 | |
34dc2ec0 | 490 | XXX List any platforms that this version of perl no longer compiles on. |
5076a392 | 491 | |
34dc2ec0 | 492 | =over 4 |
e8e35311 | 493 | |
34dc2ec0 | 494 | =item XXX-some-platform |
e8e35311 | 495 | |
34dc2ec0 | 496 | XXX |
1e463951 | 497 | |
c71a852f | 498 | =back |
b7188eb5 | 499 | |
34dc2ec0 | 500 | =head2 Platform-Specific Notes |
42a91c97 | 501 | |
34dc2ec0 DM |
502 | XXX List any changes for specific platforms. This could include configuration |
503 | and compilation changes or changes in portability/compatibility. However, | |
504 | changes within modules for platforms should generally be listed in the | |
505 | L</Modules and Pragmata> section. | |
42a91c97 | 506 | |
34dc2ec0 | 507 | =over 4 |
42a91c97 | 508 | |
34dc2ec0 | 509 | =item XXX-some-platform |
42a91c97 | 510 | |
34dc2ec0 | 511 | XXX |
42a91c97 | 512 | |
34dc2ec0 | 513 | =back |
42a91c97 | 514 | |
34dc2ec0 | 515 | =head1 Internal Changes |
42a91c97 | 516 | |
34dc2ec0 DM |
517 | XXX Changes which affect the interface available to C<XS> code go here. |
518 | Other significant internal changes for future core maintainers should | |
519 | be noted as well. | |
42a91c97 | 520 | |
34dc2ec0 | 521 | =over 4 |
42a91c97 | 522 | |
2c389f6c FC |
523 | =item * |
524 | ||
74e0ddf7 NC |
525 | The compiled representation of formats is now stored via the mg_ptr of |
526 | their PERL_MAGIC_fm. Previously it was stored in the string buffer, | |
527 | beyond SvLEN(), the regular end of the string. SvCOMPILED() and | |
528 | SvCOMPILED_{on,off}() now exist solely for compatibility for XS code. | |
529 | The first is always 0, the other two now no-ops. | |
cdc10f43 | 530 | |
34dc2ec0 | 531 | =back |
cdc10f43 | 532 | |
34dc2ec0 | 533 | =head1 Selected Bug Fixes |
cdc10f43 | 534 | |
34dc2ec0 DM |
535 | XXX Important bug fixes in the core language are summarised here. |
536 | Bug fixes in files in F<ext/> and F<lib/> are best summarised in | |
537 | L</Modules and Pragmata>. | |
cdc10f43 | 538 | |
34dc2ec0 | 539 | [ List each fix as a =item entry ] |
d430b8e7 | 540 | |
34dc2ec0 | 541 | =over 4 |
d430b8e7 FC |
542 | |
543 | =item * | |
544 | ||
f7a45dff KW |
545 | The new (in 5.14.0) regular expression modifier C</a> when repeated like |
546 | C</aa> forbids the characters outside the ASCII range that match | |
547 | characters inside that range from matching under C</i>. This did not | |
548 | work under some circumstances, all involving alternation, such as: | |
549 | ||
550 | "\N{KELVIN SIGN}" =~ /k|foo/iaa; | |
551 | ||
552 | succeeded inaprropriately. This is now fixed. | |
553 | ||
554 | =item * | |
555 | ||
556 | 5.14.0 introduced some memory leaks in regular expression character | |
760696b8 | 557 | classes such as C<[\w\s]>, which have now been fixed (5.14.1). |
f7a45dff KW |
558 | |
559 | =item * | |
560 | ||
561 | An edge case in regular expression matching could potentially loop. | |
562 | This happened only under C</i> in bracketed character classes that have | |
563 | characters with multi-character folds, and the target string to match | |
564 | against includes the first portion of the fold, followed by another | |
565 | character that has a multi-character fold that begins with the remaining | |
566 | portion of the fold, plus some more. | |
567 | ||
568 | "s\N{U+DF}" =~ /[\x{DF}foo]/i | |
569 | ||
760696b8 | 570 | is one such case. C<\xDF> folds to C<"ss"> (5.14.1). |
f7a45dff KW |
571 | |
572 | =item * | |
573 | ||
574 | A few characters in regular expression pattern matches did not | |
575 | match correctly in some circumstances, all involving C</i>. The | |
576 | affected characters are: | |
577 | COMBINING GREEK YPOGEGRAMMENI, | |
578 | GREEK CAPITAL LETTER IOTA, | |
579 | GREEK CAPITAL LETTER UPSILON, | |
580 | GREEK PROSGEGRAMMENI, | |
581 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA, | |
582 | GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS, | |
583 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA, | |
584 | GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS, | |
585 | LATIN SMALL LETTER LONG S, | |
586 | LATIN SMALL LIGATURE LONG S T, | |
587 | and | |
588 | LATIN SMALL LIGATURE ST. | |
d430b8e7 | 589 | |
2fbb14a0 DG |
590 | =item * |
591 | ||
592 | Formats: number of edge cases have been fixed with formats and formline; | |
593 | in particular, where the format itself is potentially variable (such as | |
594 | with ties and overloading), and where the format and data differ in their | |
595 | encoding. In both these cases, it used to possible for the output to be | |
596 | corrupted. | |
597 | ||
760696b8 FC |
598 | =item * |
599 | ||
600 | A bug has been fixed that would cause a "Use of freed value in iteration" | |
601 | error if the next two hash elements that would be iterated over are | |
602 | deleted [RT #85026] (5.14.1). | |
603 | ||
604 | =item * | |
605 | ||
606 | Passing the same constant subroutine to both C<index> and C<formline> no | |
607 | longer causes one or the other to fail [RT #89218] (5.14.1). | |
608 | ||
975dff8c FC |
609 | =item * |
610 | ||
611 | XXX Someone tell me whether this first clause is correct (see commit | |
612 | 765f542d): | |
613 | ||
614 | Copy-on-write scalars were introduced in 5.10.0. These occur when | |
615 | C<__PACKAGE__> or a hash key is a assigned to a scalar. Several parts | |
616 | of Perl were not updated to account for them, but have now been fixed: | |
617 | ||
618 | =over | |
619 | ||
620 | =item * | |
621 | ||
622 | C<utf8::decode> had a nasty bug that would modify copy-on-write scalars' | |
623 | string buffers in place (i.e., skipping the copy). This could result in | |
624 | hashes having two elements with the same key [RT #91834]. | |
625 | ||
626 | =item * | |
627 | ||
628 | Lvalue subroutines were not allowing COW scalars to be returned. This was | |
629 | fixed for lvalue scalar context in Perl 5.12.3 and 5.14.0, but list context | |
630 | was not fixed until this release. | |
631 | ||
632 | =item * | |
633 | ||
634 | Elements of restricted hashes (see the L<fields> pragma) containing | |
635 | copy-on-write values couldn't be deleted, nor could such hashes be cleared | |
636 | (C<%hash = ()>). | |
637 | ||
638 | =item * | |
639 | ||
640 | Localising a tied variable used to make it read-only if it contained a | |
641 | copy-on-write string. | |
642 | ||
643 | =item * | |
644 | ||
645 | L<Storable>, L<Devel::Peek> and L<PerlIO::scalar> had similar problems. | |
646 | See L</Updated Modules and Pragmata>, above. | |
647 | ||
648 | =back | |
649 | ||
650 | =item * | |
651 | ||
652 | There have been various fixes to lvalue subroutines: | |
653 | ||
654 | XXX Should these first three go under New Features? | |
655 | ||
656 | =over | |
657 | ||
658 | =item * | |
659 | ||
660 | Explicit return now returns the actual argument passed to return, instead | |
661 | of copying it [RT #72724]. | |
662 | ||
663 | =item * | |
664 | ||
665 | Lvalue subroutines used to enforce lvalue syntax (i.e., whatever can go on | |
666 | the left-hand side of C<=>) for the last statement and the arguments to | |
667 | return. Since lvalue subroutines are not always called in lvalue context, | |
668 | this restriction has been lifted. | |
669 | ||
670 | =item * | |
671 | ||
672 | Lvalue subroutines are less restrictive as to what values can be returned. | |
673 | It used to croak on values returned by C<shift> and C<delete> and from | |
674 | other subroutines, but no longer does so. | |
675 | ||
676 | =item * | |
677 | ||
678 | Empty lvalue subroutines (C<sub :lvalue {}>) used to return C<@_> in list | |
679 | context. In fact, all subroutines used to, but regular subs were fixed in | |
680 | Perl 5.8.2. Now lvalue subroutines have been likewise fixed. | |
681 | ||
682 | =item * | |
683 | ||
684 | Lvalue subroutines used to copy their return values in rvalue context. Not | |
685 | only was this a waste of CPU cycles, but it also caused bugs. A C<($)> | |
686 | prototype would cause an lvalue sub to copy its return value [RT #62498], | |
687 | and C<while(lvalue_sub() =~ m/.../g) { ... }> would loop endlessly | |
688 | [RT #78680]. | |
689 | ||
690 | =item * | |
691 | ||
692 | Autovivification now works on values returned from lvalue subroutines | |
693 | [RT #7946]. | |
694 | ||
695 | =item * | |
696 | ||
697 | XXX This entry is probably too sarcastic in its use of "inanities". But | |
698 | I'm too tired to think of a better wording. | |
699 | ||
700 | When called in pass-by-reference context (e.g., subroutine arguments or a | |
701 | list passed to C<for>), an lvalue subroutine returning arrays or hashes | |
702 | used to bind the arrays (or hashes) to scalar variables--something that is | |
703 | not supposed to happen. This could result in "Bizzare copy of ARRAY" | |
704 | errors or C<print> ignoring its arguments. It also made inanities like | |
705 | C<@{\$_}> "work". This was fixed in 5.14.0 if an array were the first | |
706 | thing returned from the subroutine (but not for C<$scalar, @array> or | |
707 | hashes being returned). Now a more general fix has been applied | |
708 | [RT #23790]. | |
709 | ||
fad4a2e4 FC |
710 | =item * |
711 | ||
712 | Assignment to C<keys> returned from an lvalue sub used not to work, but now | |
713 | it does. | |
714 | ||
975dff8c FC |
715 | =back |
716 | ||
f5d1ed10 FC |
717 | =item * |
718 | ||
719 | List assignment to lexical variables declared with attributes in the same | |
720 | statement (C<my ($x,@y) : blimp = (72,94)>) stopped working in Perl 5.8.0. | |
721 | It has now been fixed. | |
722 | ||
42a91c97 FC |
723 | =back |
724 | ||
c71a852f | 725 | =head1 Known Problems |
44691e6f | 726 | |
34dc2ec0 DM |
727 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any |
728 | tests that had to be C<TODO>ed for the release would be noted here, unless | |
729 | they were specific to a particular platform (see below). | |
cdc10f43 | 730 | |
34dc2ec0 DM |
731 | This is a list of some significant unfixed bugs, which are regressions |
732 | from either 5.XXX.XXX or 5.XXX.XXX. | |
cdc10f43 | 733 | |
34dc2ec0 | 734 | [ List each fix as a =item entry ] |
ca767864 | 735 | |
34dc2ec0 | 736 | =over 4 |
cf5da40b CB |
737 | |
738 | =item * | |
739 | ||
34dc2ec0 | 740 | XXX |
cf5da40b | 741 | |
c71a852f | 742 | =back |
014fb485 | 743 | |
c71a852f | 744 | =head1 Obituary |
014fb485 | 745 | |
34dc2ec0 DM |
746 | XXX If any significant core contributor has died, we've added a short obituary |
747 | here. | |
44691e6f | 748 | |
44691e6f AB |
749 | =head1 Acknowledgements |
750 | ||
34dc2ec0 | 751 | XXX The list of people to thank goes here. |
29cf780c | 752 | |
44691e6f AB |
753 | =head1 Reporting Bugs |
754 | ||
755 | If you find what you think is a bug, you might check the articles | |
34dc2ec0 | 756 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
44691e6f AB |
757 | bug database at http://rt.perl.org/perlbug/ . There may also be |
758 | information at http://www.perl.org/ , the Perl Home Page. | |
759 | ||
760 | If you believe you have an unreported bug, please run the L<perlbug> | |
761 | program included with your release. Be sure to trim your bug down | |
762 | to a tiny but sufficient test case. Your bug report, along with the | |
763 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
764 | analysed by the Perl porting team. | |
765 | ||
766 | If the bug you are reporting has security implications, which make it | |
767 | inappropriate to send to a publicly archived mailing list, then please send | |
34dc2ec0 | 768 | it to perl5-security-report@perl.org. This points to a closed subscription |
44691e6f AB |
769 | unarchived mailing list, which includes all the core committers, who be able |
770 | to help assess the impact of issues, figure out a resolution, and help | |
771 | co-ordinate the release of patches to mitigate or fix the problem across all | |
34dc2ec0 DM |
772 | platforms on which Perl is supported. Please only use this address for |
773 | security issues in the Perl core, not for modules independently | |
44691e6f AB |
774 | distributed on CPAN. |
775 | ||
776 | =head1 SEE ALSO | |
777 | ||
778 | The F<Changes> file for an explanation of how to view exhaustive details | |
779 | on what changed. | |
780 | ||
781 | The F<INSTALL> file for how to build Perl. | |
782 | ||
783 | The F<README> file for general stuff. | |
784 | ||
785 | The F<Artistic> and F<Copying> files for copyright information. | |
786 | ||
787 | =cut |