Commit | Line | Data |
---|---|---|
3a5c9134 CBW |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
d17f3dbc JV |
5 | [ this is a template for a new perldelta file. Any text flagged as |
6 | XXX needs to be processed before release. ] | |
15e6cdd9 | 7 | |
d17f3dbc | 8 | perldelta - what is new for perl v5.13.10 |
0d157ee2 | 9 | |
d17f3dbc | 10 | =head1 DESCRIPTION |
b16cfc56 | 11 | |
d17f3dbc JV |
12 | This document describes differences between the 5.XXX.XXX release and |
13 | the 5.XXX.XXX release. | |
3a5c9134 | 14 | |
d17f3dbc JV |
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. | |
d4560299 | 18 | |
d17f3dbc | 19 | =head1 Notice |
d4560299 | 20 | |
d17f3dbc | 21 | XXX Any important notices here |
d4560299 | 22 | |
d17f3dbc | 23 | =head1 Core Enhancements |
d4560299 | 24 | |
d17f3dbc JV |
25 | XXX New core language features go here. Summarise user-visible core language |
26 | enhancements. Particularly prominent performance optimisations could go | |
27 | here, but most should go in the L</Performance Enhancements> section. | |
2638c0ff | 28 | |
d17f3dbc | 29 | [ List each enhancement as a =head2 entry ] |
2638c0ff | 30 | |
9e9ca9d7 KW |
31 | =head2 Add C<\p{Titlecase}> as a synonym for C<\p{Title}> |
32 | ||
b6538e4f | 33 | This synonym is added for symmetry with the Unicode property names |
9e9ca9d7 KW |
34 | C<\p{Uppercase}> and C<\p{Lowercase}>. |
35 | ||
2f7f8cb1 KW |
36 | =head2 New regular expression modifier option C</aa> |
37 | ||
38 | Doubling the C</a> regular expression modifier increases its effect, | |
39 | so that in case-insensitive matching, no ASCII character will match a | |
40 | non-ASCII character. For example, normally, | |
41 | ||
42 | 'k' =~ /\N{KELVIN SIGN}/ | |
43 | ||
44 | will match; it won't under C</aa>. Note that like C</a>, C</aa> | |
45 | in 5.14 will not actually be able to be used as a suffix at the end of a | |
46 | regular expression. | |
9e9ca9d7 | 47 | |
8457b38f KW |
48 | =head2 New warnings categories for problematic (non-)Unicode code points. |
49 | ||
1fdcc914 | 50 | Three new warnings subcategories of <utf8> have been added. These |
8457b38f KW |
51 | allow you to turn off warnings for their covered events, while allowing |
52 | the other UTF-8 warnings to remain on. The three categories are: | |
53 | C<surrogate> when UTF-16 surrogates are encountered; | |
54 | C<nonchar> when Unicode non-character code points are encountered; | |
55 | and C<non_unicode> when code points that are above the legal Unicode | |
56 | maximum of 0x10FFFF are encountered. | |
57 | ||
d17f3dbc | 58 | =head1 Security |
17096837 | 59 | |
d17f3dbc JV |
60 | XXX Any security-related notices go here. In particular, any security |
61 | vulnerabilities closed should be noted here rather than in the | |
62 | L</Selected Bug Fixes> section. | |
e1165778 | 63 | |
d17f3dbc | 64 | [ List each security issue as a =head2 entry ] |
17096837 | 65 | |
d17f3dbc | 66 | =head1 Incompatible Changes |
935c8d19 | 67 | |
d17f3dbc | 68 | XXX For a release on a stable branch, this section aspires to be: |
a3ab329f | 69 | |
d17f3dbc JV |
70 | There are no changes intentionally incompatible with 5.XXX.XXX. If any |
71 | exist, they are bugs and reports are welcome. | |
a3ab329f | 72 | |
d17f3dbc | 73 | [ List each incompatible change as a =head2 entry ] |
6def3600 | 74 | |
56ca34ca KW |
75 | =head2 Most C<\p{}> properties are now immune from case-insensitive matching |
76 | ||
77 | For most Unicode properties, it doesn't make sense to have them match | |
78 | differently under C</i> case-insensitive matching than not. And doing | |
79 | so leads to unexpected results and potential security holes. For | |
80 | example | |
81 | ||
82 | m/\p{ASCII_Hex_Digit}+/i | |
83 | ||
84 | could previously match non-ASCII characters because of the Unicode | |
85 | matching rules. There were a number of bugs in this feature until an | |
86 | earlier release in the 5.13 series. Now this release reverts, and | |
87 | removes the feature completely except for the few properties where | |
88 | people have come to expect it, namely the ones where casing is an | |
89 | integral part of their functionality, such as C<m/\p{Uppercase}/i> and | |
90 | C<m/\p{Lowercase}/i>, both of which match the exact same code points, | |
91 | namely those matched by C<m/\p{Cased}/i>. Details are in | |
92 | L<perlrecharclass/Unicode Properties>. | |
93 | ||
94 | User-defined property handlers that need to match differently under | |
95 | C</i> must change to read the new boolean parameter passed it which is | |
96 | non-zero if case-insensitive matching is in effect; 0 if not. See | |
97 | L<perluniprops/User-Defined Character Properties>. | |
98 | ||
5e6b2389 AB |
99 | =head2 [perl #82996] Use the user's from address as return-path in perlbug |
100 | ||
101 | Many systems these days don't have a valid Internet domain name and | |
102 | perlbug@perl.org does not accept email with a return-path that does | |
103 | not resolve. Therefore pass the user's address to sendmail so it's | |
104 | less likely to get stuck in a mail queue somewhere. (019cfd2) | |
105 | ||
106 | =head2 regex: \p{} in pattern implies Unicode semantics | |
107 | ||
108 | Now, a Unicode property match specified in the pattern will indicate | |
109 | that the pattern is meant for matching according to Unicode rules | |
110 | (e40e74f) | |
111 | ||
112 | =head2 add GvCV_set() and GvGP_set() macros and change GvGP() | |
113 | ||
114 | This allows a future commit to eliminate some backref magic between GV | |
115 | and CVs, which will require complete control over assignment to the | |
116 | gp_cv slot. | |
117 | ||
118 | If you've been using GvGP() in lvalue context this change will break | |
119 | your code, you should use GvGP_set() instead. (c43ae56) | |
120 | ||
121 | =head2 _swash_inversion_hash is no longer exported as part of the API | |
122 | ||
938f3c77 | 123 | This function shouldn't be called from XS code. (4c2e113) |
5e6b2389 | 124 | |
279627b4 FC |
125 | =head2 Unreferenced objects in global destruction |
126 | ||
127 | The fix for [perl #36347], which made sure that destructors were called on | |
128 | unreferenced objects, broke the tests for three CPAN modules, which | |
129 | apparently rely on the bug. | |
130 | ||
131 | To provide more time for fixing them (as this is such a minor bug), we | |
132 | have reverted the fix until after perl 5.14.0. | |
133 | ||
134 | This resolves [perl #82542] and other related tickets. | |
135 | ||
136 | =head2 C<close> on shared pipes | |
137 | ||
138 | The C<close> function no longer waits for the child process to exit if the | |
139 | underlying file descriptor is still in use by another thread, to avoid | |
140 | deadlocks. It returns true in such cases. | |
141 | ||
d17f3dbc | 142 | =head1 Deprecations |
6def3600 | 143 | |
33d7e9f6 NC |
144 | =over |
145 | ||
146 | =item Deprecated Modules | |
147 | ||
148 | The following modules will be removed from the core distribution in a | |
149 | future release, and should be installed from CPAN instead. Distributions | |
150 | on CPAN which require these should add them to their prerequisites. The | |
151 | core versions of these modules warnings will issue a deprecation warning. | |
152 | ||
153 | If you ship a packaged version of Perl, either alone or as part of a | |
154 | larger system, then you should carefully consider the repercussions of | |
155 | core module deprecations. You may want to consider shipping your default | |
156 | build of Perl with packages for some or all deprecated modules which | |
157 | install into C<vendor> or C<site> perl library directories. This will | |
158 | inhibit the deprecation warnings. | |
159 | ||
160 | Alternatively, you may want to consider patching F<lib/deprecate.pm> | |
161 | to provide deprecation warnings specific to your packaging system | |
162 | or distribution of Perl, consistent with how your packaging system | |
163 | or distribution manages a staged transition from a release where the | |
164 | installation of a single package provides the given functionality, to | |
165 | a later release where the system administrator needs to know to install | |
166 | multiple packages to get that same functionality. | |
167 | ||
168 | You can silence these deprecation warnings by installing the modules | |
169 | in question from CPAN. To install the latest version of all of them, | |
170 | just install C<Task::Deprecations::5_12>. | |
171 | ||
172 | =over | |
173 | ||
174 | =item L<Devel::DProf> | |
175 | ||
176 | We strongly recommend that you install and used L<Devel::NYTProf> in | |
177 | preference, as it offers significantly improved profiling and reporting. | |
178 | ||
179 | =back | |
180 | ||
181 | =back | |
e8b333e6 | 182 | |
3a3263a0 KW |
183 | =head2 User-defined case-mapping |
184 | ||
185 | This feature is being deprecated due to its many issues, as documented in | |
186 | L<perlunicode/User-Defined Case Mappings (for serious hackers only)>. | |
187 | It is planned to remove this feature in Perl 5.16. A CPAN module | |
188 | providing improved functionality is being prepared for release by the | |
189 | time 5.14 is. | |
190 | ||
d17f3dbc | 191 | [ List each deprecation as a =head2 entry ] |
e8b333e6 | 192 | |
d17f3dbc | 193 | =head1 Performance Enhancements |
935c8d19 | 194 | |
d17f3dbc JV |
195 | XXX Changes which enhance performance without changing behaviour go here. There |
196 | may well be none in a stable release. | |
e1165778 | 197 | |
d17f3dbc | 198 | [ List each enhancement as a =item entry ] |
f295f417 | 199 | |
9f7a72d0 | 200 | =over 4 |
17096837 | 201 | |
f295f417 FC |
202 | =item * |
203 | ||
d17f3dbc | 204 | XXX |
9c88a88b | 205 | |
d17f3dbc | 206 | =back |
9c88a88b | 207 | |
d17f3dbc | 208 | =head1 Modules and Pragmata |
b16cfc56 | 209 | |
d17f3dbc JV |
210 | XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> |
211 | go here. If Module::CoreList is updated, generate an initial draft of the | |
212 | following sections using F<Porting/corelist-perldelta.pl>, which prints stub | |
213 | entries to STDOUT. Results can be pasted in place of the '=head2' entries | |
214 | below. A paragraph summary for important changes should then be added by hand. | |
215 | In an ideal world, dual-life modules would have a F<Changes> file that could be | |
216 | cribbed. | |
b16cfc56 | 217 | |
d17f3dbc | 218 | [ Within each section, list entries as a =item entry ] |
8e1e0801 | 219 | |
d17f3dbc | 220 | =head2 New Modules and Pragmata |
8e1e0801 | 221 | |
d17f3dbc | 222 | =over 4 |
4df1dffa FC |
223 | |
224 | =item * | |
225 | ||
c05760c6 DG |
226 | C<CPAN::Meta> version 2.110440 has been added as a dual-life module. It |
227 | provides a standard library to read, interpret and write CPAN distribution | |
228 | metadata files (e.g. META.json and META.yml) which describes a | |
229 | distribution, its contents, and the requirements for building it and | |
230 | installing it. The latest CPAN distribution metadata specification is | |
231 | included as C<CPAN::Meta::Spec> and notes on changes in the specification | |
232 | over time are given in C<CPAN::Meta::History>. | |
233 | ||
234 | =item * | |
235 | ||
39ac3336 DG |
236 | C<Version::Requirements> version 0.101020 has been added as a dual-life |
237 | module. It provides a standard library to model and manipulates module | |
238 | prerequisites and version constraints as defined in the L<CPAN::Meta::Spec>. | |
4df1dffa | 239 | |
d17f3dbc | 240 | =back |
f5d41534 | 241 | |
d17f3dbc | 242 | =head2 Updated Modules and Pragmata |
f5d41534 | 243 | |
d17f3dbc | 244 | =over 4 |
f5d41534 CBW |
245 | |
246 | =item * | |
247 | ||
962bcf28 FC |
248 | C<B> has been upgraded from version 1.27 to 1.28. |
249 | ||
250 | =item * | |
251 | ||
279627b4 FC |
252 | C<Carp> has been upgraded from version 1.19 to 1.20. |
253 | ||
254 | [perl #82854] It now avoids using regular expressions that cause perl to | |
255 | load its Unicode tables, in order to avoid the 'BEGIN not safe after | |
256 | errors' error that will ensue if there has been a syntax error. | |
257 | ||
258 | =item * | |
259 | ||
f4c5852c CBW |
260 | C<CGI> has been upgraded from version 3.51 to 3.52 |
261 | ||
262 | =item * | |
263 | ||
12ad1f85 DG |
264 | C<CPAN> has been upgraded from version 1.94_64 to 1.94_65 |
265 | ||
266 | Includes support for META.json and MYMETA.json. | |
267 | ||
268 | =item * | |
269 | ||
bada4ede | 270 | C<CPANPLUS> has been upgraded from version 0.9011 to 0.9101 |
28aafdbe CBW |
271 | |
272 | Includes support for META.json and MYMETA.json and a change to | |
273 | using Digest::SHA for CPAN checksums. | |
274 | ||
275 | =item * | |
276 | ||
4ffaa343 NC |
277 | C<deprecate> has been upgraded from version 0.01 to 0.02. |
278 | ||
279 | =item * | |
280 | ||
279627b4 FC |
281 | C<diagnostics> has been upgraded from version 1.21 to 1.22. |
282 | ||
283 | It now renders pod links slightly better, and has been taught to find | |
284 | descriptions for messages that share their descriptions with other | |
285 | messages. | |
286 | ||
287 | =item * | |
288 | ||
26dd0570 FR |
289 | C<Devel::DProf> has been upgraded from version 20080331.00 to 20110217.00. |
290 | ||
291 | Merely loading C<Devel::DProf> now no longer triggers profiling to start. | |
4b178c09 | 292 | C<use Devel::DProf> and C<perl -d:DProf ...> still behave as before and start |
26dd0570 FR |
293 | the profiler. |
294 | ||
33d7e9f6 | 295 | NOTE: C<Devel::DProf> is deprecated and will be removed from a future |
7f83cf4f FR |
296 | version of Perl. We strongly recommend that you install and use |
297 | L<Devel::NYTProf> instead, as it offers significantly improved | |
33d7e9f6 NC |
298 | profiling and reporting. |
299 | ||
26dd0570 FR |
300 | =item * |
301 | ||
6b0747ad FC |
302 | C<DynaLoader> has been upgraded from version 1.12 to 1.13. |
303 | ||
304 | [perl #84358] It no longer inherits from AutoLoader; hence it no longer | |
305 | produces weird error messages for unsuccessful method calls on classes that | |
306 | inherit from DynaLoader. | |
307 | ||
308 | =item * | |
309 | ||
279627b4 FC |
310 | C<IO::Select> has been upgraded from version 1.17 to 1.18. |
311 | ||
312 | It now allows IO::Handle objects (and objects in derived classes) to be | |
313 | removed from an IO::Select set even if the underlying file descriptor is | |
314 | closed or invalid. | |
315 | ||
316 | =item * | |
317 | ||
f7f926be CBW |
318 | C<IPC::Cmd> has been upgraded from version 0.68 to 0.70 |
319 | ||
320 | =item * | |
321 | ||
44de791a DG |
322 | C<HTTP::Tiny> has been upgraded from version 0.009 to 0.010 |
323 | ||
324 | =item * | |
325 | ||
cf64c7fa | 326 | C<Math::BigInt> has been upgraded from version 1.99_04 to 1.992. |
279627b4 FC |
327 | |
328 | =item * | |
329 | ||
a7c7ab1e | 330 | C<Module::Build> has been upgraded from version 0.3607 to 0.37_04. |
7cf8bfc0 DG |
331 | |
332 | A notable change is the deprecation of several modules. | |
333 | Module::Build::Version has been deprecated and Module::Build now relies | |
334 | directly upon L<version>. Module::Build::ModuleInfo has been deprecated in | |
335 | favor of a standalone copy of it called L<Module::Metadata>. | |
336 | Module::Build::YAML has been deprecated in favor of L<CPAN::Meta::YAML>. | |
337 | ||
a7c7ab1e DG |
338 | Module::Build now also generates META.json and MYMETA.json files |
339 | in accordance with version 2 of the CPAN distribution metadata specification, | |
340 | L<CPAN::Meta::Spec>. The older format META.yml and MYMETA.yml files are | |
341 | still generated, as well. | |
342 | ||
7cf8bfc0 DG |
343 | =item * |
344 | ||
f541799a | 345 | C<Module::Load::Conditional> has been upgraded from version 0.40 to 0.44 |
a4031803 CBW |
346 | |
347 | =item * | |
348 | ||
2a856793 DG |
349 | C<Module::Metadata> has been upgraded from version 1.000003 to 1.000004. |
350 | ||
351 | =item * | |
352 | ||
279627b4 FC |
353 | C<overload> has been upgraded from version 1.12 to 1.13. |
354 | ||
355 | The documentation has greatly improved. See L</Documentation> below. | |
356 | ||
357 | =item * | |
358 | ||
34d5bd5d DG |
359 | C<Parse::CPAN::Meta> has been upgraded from version 1.40 to 1.4401. |
360 | ||
361 | The latest Parse::CPAN::Meta can now read YAML or JSON files using | |
362 | L<CPAN::Meta::YAML> and L<JSON::PP>, which are now part of the Perl core. | |
363 | ||
364 | =item * | |
365 | ||
279627b4 FC |
366 | C<re> has been upgraded from version 0.16 to 0.17. |
367 | ||
368 | It now supports the double-a flag: C<use re '/aa';> | |
369 | ||
411c5572 FC |
370 | The C<regmust> function used to crash when called on a regular expression |
371 | belonging to a pluggable engine. Now it has been disabled for those. | |
372 | ||
373 | C<regmust> no longer leaks memory. | |
374 | ||
279627b4 FC |
375 | =item * |
376 | ||
f31eab29 CBW |
377 | C<Term::UI> has been upgraded from version 0.24 to 0.26 |
378 | ||
379 | =item * | |
380 | ||
f58b9ef1 CBW |
381 | C<Unicode::Collate> has been upgraded from version 0.68 to 0.72 |
382 | ||
383 | This also sees the switch from using the pure-perl version of this | |
384 | module to the XS version.` | |
385 | ||
386 | =item * | |
387 | ||
279627b4 FC |
388 | C<VMS::DCLsym> has been upgraded from version 1.04 to 1.05. |
389 | ||
390 | Two bugs have been fixed [perl #84086]: | |
391 | ||
392 | The symbol table name was lost when tying a hash, due to a thinko in | |
393 | C<TIEHASH>. The result was that all tied hashes interacted with the | |
394 | local symbol table. | |
395 | ||
396 | Unless a symbol table name had been explicitly specified in the call | |
397 | to the constructor, querying the special key ':LOCAL' failed to | |
398 | identify objects connected to the local symbol table. | |
399 | ||
400 | =item * | |
401 | ||
d9672076 | 402 | Added new function C<Unicode::UCD::num()>. This function will return the |
7319f91d KW |
403 | numeric value of the string passed it; C<undef> if the string in its |
404 | entirety has no safe numeric value. | |
405 | ||
406 | To be safe, a string must be a single character which has a numeric | |
407 | value, or consist entirely of characters that match \d, coming from the | |
408 | same Unicode block of digits. Thus, a mix of Bengali and Western | |
409 | digits would be considered unsafe, as well as a mix of half- and | |
410 | full-width digits, but strings consisting entirely of Devanagari digits | |
411 | or of "Mathematical Bold" digits would would be safe. | |
412 | ||
413 | =item * | |
414 | ||
5e6b2389 AB |
415 | C<CPAN> has been upgraded from version1.94_63 to 1.94_64. |
416 | ||
417 | =item * | |
418 | ||
d17f3dbc | 419 | XXX |
17096837 | 420 | |
d17f3dbc | 421 | =back |
788ba0f4 | 422 | |
d17f3dbc | 423 | =head2 Removed Modules and Pragmata |
98d645a7 | 424 | |
d17f3dbc | 425 | =over 4 |
98d645a7 | 426 | |
7abec982 FC |
427 | =item * |
428 | ||
d17f3dbc | 429 | XXX |
7abec982 | 430 | |
9f7a72d0 | 431 | =back |
e1165778 | 432 | |
9f7a72d0 | 433 | =head1 Documentation |
17096837 | 434 | |
d17f3dbc JV |
435 | XXX Changes to files in F<pod/> go here. Consider grouping entries by |
436 | file and be sure to link to the appropriate page, e.g. L<perlfunc>. | |
b16cfc56 | 437 | |
d17f3dbc | 438 | =head2 New Documentation |
b16cfc56 | 439 | |
d17f3dbc | 440 | XXX Changes which create B<new> files in F<pod/> go here. |
b16cfc56 | 441 | |
d17f3dbc | 442 | =head3 L<XXX> |
b16cfc56 | 443 | |
d17f3dbc | 444 | XXX Description of the purpose of the new file here |
b16cfc56 | 445 | |
d17f3dbc | 446 | =head2 Changes to Existing Documentation |
b16cfc56 | 447 | |
d17f3dbc JV |
448 | XXX Changes which significantly change existing files in F<pod/> go here. |
449 | However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics> | |
450 | section. | |
b16cfc56 | 451 | |
279627b4 FC |
452 | =head3 L<overload> |
453 | ||
454 | =over 4 | |
455 | ||
456 | =item * | |
457 | ||
458 | L<overload>'s documentation has practically undergone a rewrite. It | |
459 | is now much more straightforward and clear. | |
460 | ||
461 | =back | |
462 | ||
04c692a8 | 463 | =head3 L<perlhack> and perlrepository |
d4238815 | 464 | |
9f7a72d0 | 465 | =over 4 |
17096837 | 466 | |
d4238815 FC |
467 | =item * |
468 | ||
04c692a8 DR |
469 | The L<perlhack> and perlrepository documents have been heavily edited and |
470 | split up into several new documents. | |
471 | ||
472 | The L<perlhack> document is now much shorter, and focuses on the Perl 5 | |
473 | development process and submitting patches to Perl. The technical content has | |
474 | been moved to several new documents, L<perlsource>, L<perlinterp>, | |
475 | L<perlhacktut>, and L<perlhacktips>. This technical content has only been | |
476 | lightly edited. | |
477 | ||
478 | The perlrepository document has been renamed to L<perlgit>. This new document | |
479 | is just a how-to on using git with the Perl source code. Any other content | |
480 | that used to be in perlrepository has been moved to perlhack. | |
e1165778 | 481 | |
9f7a72d0 | 482 | =back |
17096837 | 483 | |
5e6b2389 AB |
484 | =head3 L<perlfunc> |
485 | ||
486 | =over 4 | |
487 | ||
488 | =item * | |
489 | ||
490 | The documentation for the C<map> function now contains more examples, | |
491 | see B<perldoc -f map> (f947627) | |
492 | ||
493 | =back | |
494 | ||
495 | =head3 L<perlfaq4> | |
496 | ||
497 | =over 4 | |
498 | ||
499 | =item * | |
500 | ||
501 | Examples in L<perlfaq4> have been updated to show the use of | |
502 | L<Time::Piece>. (9243591) | |
503 | ||
504 | =back | |
505 | ||
506 | =head3 Miscellaneous | |
507 | ||
508 | =over 4 | |
509 | ||
510 | =item * | |
511 | ||
512 | Many POD related RT bugs and other issues which are too numerous to | |
513 | enumerate have been solved by Michael Stevens. | |
514 | ||
515 | =back | |
516 | ||
9f7a72d0 | 517 | =head1 Diagnostics |
17096837 | 518 | |
9f7a72d0 Z |
519 | The following additions or changes have been made to diagnostic output, |
520 | including warnings and fatal error messages. For the complete list of | |
521 | diagnostic messages, see L<perldiag>. | |
e1165778 | 522 | |
d17f3dbc JV |
523 | XXX New or changed warnings emitted by the core's C<C> code go here. Also |
524 | include any changes in L<perldiag> that reconcile it to the C<C> code. | |
525 | ||
526 | [ Within each section, list entries as a =item entry ] | |
527 | ||
9f7a72d0 | 528 | =head2 New Diagnostics |
3a5c9134 | 529 | |
d17f3dbc JV |
530 | XXX Newly added diagnostic messages go here |
531 | ||
9f7a72d0 | 532 | =over 4 |
17096837 | 533 | |
5024bc2d KW |
534 | =item "\b{" is deprecated; use "\b\{" instead |
535 | ||
536 | =item "\B{" is deprecated; use "\B\{" instead | |
537 | ||
538 | Use of an unescaped "{" immediately following a C<\b> or C<\B> is now | |
539 | deprecated so as to reserve its use for Perl itself in a future release. | |
c2e0289e | 540 | |
5e6b2389 AB |
541 | =item regcomp: Add warning if \p is used under locale. (fb2e24c) |
542 | ||
543 | C<\p> implies Unicode matching rules, which are likely going to be | |
544 | different than the locale's. | |
17096837 | 545 | |
279627b4 FC |
546 | =item panic: gp_free failed to free glob pointer - something is repeatedly re-creating entries |
547 | ||
548 | This new error is triggered if a destructor called on an object in a | |
549 | typeglob that is being freed creates a new typeglob entry containing an | |
550 | object with a destructor that creates a new entry containing an object.... | |
551 | ||
962bcf28 FC |
552 | =item refcnt: fd %d%s |
553 | ||
554 | This new error only occurs if a internal consistency check fails when a | |
555 | pipe is about to be closed. | |
556 | ||
9f7a72d0 | 557 | =back |
e6f1cc4d | 558 | |
9f7a72d0 | 559 | =head2 Changes to Existing Diagnostics |
e1165778 | 560 | |
d17f3dbc JV |
561 | XXX Changes (i.e. rewording) of diagnostic messages go here |
562 | ||
9f7a72d0 | 563 | =over 4 |
17096837 | 564 | |
e1165778 Z |
565 | =item * |
566 | ||
5e6b2389 AB |
567 | The warning message about regex unrecognized escapes passed through is |
568 | changed to include any literal '{' following the 2-char escape. e.g., | |
569 | "\q{" will include the { in the message as part of the escape | |
570 | (216bfc0). | |
571 | ||
572 | =item * C<binmode $fh, ':scalar'> no longer warns (8250589) | |
573 | ||
574 | Perl will now no longer produce this warning: | |
575 | ||
576 | $ perl -we 'open my $f, ">", \my $x; binmode $f, "scalar"' | |
577 | Use of uninitialized value in binmode at -e line 1. | |
578 | ||
579 | =item * | |
580 | ||
d17f3dbc | 581 | XXX |
17096837 | 582 | |
3a5c9134 CBW |
583 | =back |
584 | ||
9f7a72d0 | 585 | =head1 Utility Changes |
e1165778 | 586 | |
d17f3dbc JV |
587 | XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go |
588 | here. Most of these are built within the directories F<utils> and F<x2p>. | |
e1165778 | 589 | |
d17f3dbc JV |
590 | [ List utility changes as a =head3 entry for each utility and =item |
591 | entries for each change | |
592 | Use L<XXX> with program names to get proper documentation linking. ] | |
e1165778 | 593 | |
d17f3dbc | 594 | =head3 L<XXX> |
b16cfc56 JV |
595 | |
596 | =over 4 | |
597 | ||
598 | =item * | |
599 | ||
d17f3dbc | 600 | XXX |
b16cfc56 JV |
601 | |
602 | =back | |
603 | ||
d17f3dbc | 604 | =head1 Configuration and Compilation |
3a5c9134 | 605 | |
d17f3dbc JV |
606 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools |
607 | go here. Any other changes to the Perl build process should be listed here. | |
608 | However, any platform-specific changes should be listed in the | |
609 | L</Platform Support> section, instead. | |
b16cfc56 | 610 | |
d17f3dbc | 611 | [ List changes as a =item entry ]. |
b16cfc56 | 612 | |
d17f3dbc | 613 | =over 4 |
3a5c9134 | 614 | |
5e6b2389 AB |
615 | =item * make reg_eval_scope.t TODOs consistently fail (daaf7ac) |
616 | ||
617 | Some of the TODO tests in reg_eval_scope.t spuriously passed under | |
618 | non-threaded builds. Make the tests harder so they always fail. | |
619 | ||
620 | Since one of the key bugs in (?{..}) is the trashing of the parent pad, | |
621 | add some extra lexical vars to the parent scope and check they're still | |
622 | there at the end. | |
623 | ||
624 | =item * | |
625 | ||
626 | Stop EU::CBuilder's tests from failing in parallel (cbf59d5) | |
627 | ||
628 | It used to use the same paths for temporary files in all tests. This | |
629 | blew up randomly when the tests were run in parallel. | |
630 | ||
b16cfc56 JV |
631 | =item * |
632 | ||
d17f3dbc | 633 | XXX |
b16cfc56 | 634 | |
d17f3dbc | 635 | =back |
b16cfc56 | 636 | |
d17f3dbc | 637 | =head1 Testing |
b16cfc56 | 638 | |
d17f3dbc JV |
639 | XXX Any significant changes to the testing of a freshly built perl should be |
640 | listed here. Changes which create B<new> files in F<t/> go here as do any | |
641 | large changes to the testing harness (e.g. when parallel testing was added). | |
642 | Changes to existing files in F<t/> aren't worth summarising, although the bugs | |
643 | that they represent may be covered elsewhere. | |
b16cfc56 | 644 | |
d17f3dbc | 645 | [ List each test improvement as a =item entry ] |
b16cfc56 | 646 | |
d17f3dbc | 647 | =over 4 |
b16cfc56 JV |
648 | |
649 | =item * | |
650 | ||
110c4fb7 TC |
651 | F<porting/FindExt.t> now skips all tests on a static (-Uusedl) build |
652 | of perl. | |
653 | ||
654 | =item * | |
655 | ||
656 | F<porting/FindExt.t> now passes on non-Win32 platforms when some | |
657 | extensions are built statically. | |
b16cfc56 | 658 | |
3a5c9134 CBW |
659 | =back |
660 | ||
9f7a72d0 | 661 | =head1 Platform Support |
3a5c9134 | 662 | |
d17f3dbc | 663 | XXX Any changes to platform support should be listed in the sections below. |
b16cfc56 | 664 | |
d17f3dbc JV |
665 | [ Within the sections, list each platform as a =item entry with specific |
666 | changes as paragraphs below it. ] | |
b16cfc56 | 667 | |
d17f3dbc | 668 | =head2 New Platforms |
3a5c9134 | 669 | |
d17f3dbc JV |
670 | XXX List any platforms that this version of perl compiles on, that previous |
671 | versions did not. These will either be enabled by new files in the F<hints/> | |
672 | directories, or new subdirectories and F<README> files at the top level of the | |
673 | source tree. | |
3a5c9134 | 674 | |
9f7a72d0 | 675 | =over 4 |
3a5c9134 | 676 | |
d17f3dbc | 677 | =item XXX-some-platform |
b16cfc56 | 678 | |
d17f3dbc | 679 | XXX |
b16cfc56 | 680 | |
d17f3dbc | 681 | =back |
b16cfc56 | 682 | |
d17f3dbc | 683 | =head2 Discontinued Platforms |
b16cfc56 | 684 | |
d17f3dbc | 685 | XXX List any platforms that this version of perl no longer compiles on. |
b16cfc56 | 686 | |
d17f3dbc | 687 | =over 4 |
b16cfc56 | 688 | |
d17f3dbc | 689 | =item XXX-some-platform |
b16cfc56 | 690 | |
d17f3dbc | 691 | XXX |
b16cfc56 JV |
692 | |
693 | =back | |
694 | ||
d17f3dbc | 695 | =head2 Platform-Specific Notes |
b16cfc56 | 696 | |
d17f3dbc JV |
697 | XXX List any changes for specific platforms. This could include configuration |
698 | and compilation changes or changes in portability/compatibility. However, | |
699 | changes within modules for platforms should generally be listed in the | |
700 | L</Modules and Pragmata> section. | |
3a5c9134 | 701 | |
9f7a72d0 | 702 | =over 4 |
3a5c9134 | 703 | |
347ee86f | 704 | =item Windows |
c61b6d0f | 705 | |
347ee86f TC |
706 | =over 4 |
707 | ||
708 | =item * | |
709 | ||
710 | The C<test-prep> build target now depends on F<pod/perltoc.pod> to allow the | |
711 | F<t/porting/buildtoc.t> test to run successfully. | |
712 | ||
713 | =back | |
6d4f9cf2 | 714 | |
5e6b2389 AB |
715 | =item MirBSD |
716 | ||
717 | =over 4 | |
718 | ||
719 | =item * | |
720 | ||
721 | [perl #82988] Skip hanging taint.t test on MirBSD 10 (1fb83d0) | |
722 | ||
723 | Skip a hanging test under MirBSD that was already being skipped under | |
724 | OpenBSD. | |
725 | ||
726 | =item * | |
727 | ||
728 | Previously if you build perl with a shared libperl.so on MirBSD (the | |
729 | default config), it will work up to the installation; however, once | |
730 | installed, it will be unable to find libperl. Treat path handling | |
731 | like in the other BSD dialects. | |
732 | ||
733 | =back | |
734 | ||
d17f3dbc | 735 | =back |
a62b1201 | 736 | |
d17f3dbc | 737 | =head1 Internal Changes |
a62b1201 | 738 | |
d17f3dbc JV |
739 | XXX Changes which affect the interface available to C<XS> code go here. |
740 | Other significant internal changes for future core maintainers should | |
741 | be noted as well. | |
b030240b | 742 | |
d17f3dbc | 743 | [ List each test improvement as a =item entry ] |
b030240b | 744 | |
d17f3dbc | 745 | =over 4 |
b16cfc56 | 746 | |
5e6b2389 AB |
747 | =item * Fix harmless invalid read in Perl_re_compile() (f6d9469) |
748 | ||
749 | [perl #2460] described a case where electric fence reported an invalid | |
750 | read. This could be reproduced under valgrind with blead and -e'/x/', | |
751 | but only on a non-debugging build. | |
752 | ||
753 | This was because it was checking for certain pairs of nodes (e.g. BOL + END) | |
754 | and wasn't allowing for EXACT nodes, which have the string at the next | |
755 | node position when using a naive NEXTOPER(first). In the non-debugging | |
756 | build, the nodes aren't initialised to zero, and a 1-char EXACT node isn't | |
757 | long enough to spill into the type field of the "next node". | |
758 | ||
759 | Fix this by only using NEXTOPER(first) when we know the first node is | |
760 | kosher. | |
761 | ||
762 | =item * Break out the generated function Perl_keywords() into F<keywords.c>, a new file. (26ea9e1) | |
763 | ||
764 | As it and Perl_yylex() both need FEATURE_IS_ENABLED, feature_is_enabled() is | |
765 | no longer static, and the two macro definitions move from toke.c to perl.h | |
766 | ||
767 | Previously, one had to cut and paste the output of perl_keywords.pl into the | |
768 | middle of toke.c, and it was not clear that it was generated code. | |
769 | ||
770 | =item * | |
771 | ||
772 | A lot of tests have been ported from Test to Test::More, e.g. in | |
773 | 3842ad6. | |
774 | ||
7bb5ac4d CB |
775 | =item * Increase default PerlIO buffer size. (b83080d) |
776 | ||
777 | The previous default size of a PerlIO buffer (4096 bytes) has been increased | |
778 | to the larger of 8192 bytes and your local BUFSIZ. Benchmarks show that doubling | |
779 | this decade-old default increases read and write performance in the neighborhood | |
780 | of 25% to 50% when using the default layers of perlio on top of unix. To choose | |
781 | a non-default size, such as to get back the old value or to obtain and even | |
782 | larger value, configure with: | |
783 | ||
784 | ./Configure -Accflags=-DPERLIOBUF_DEFAULT_BUFSIZ=N | |
785 | ||
786 | where N is the desired size in bytes; it should probably be a multiple of | |
787 | your page size. | |
788 | ||
789 | ||
4dc93f40 JV |
790 | =item * |
791 | ||
d17f3dbc | 792 | XXX |
b16cfc56 | 793 | |
3a5c9134 CBW |
794 | =back |
795 | ||
796 | =head1 Selected Bug Fixes | |
797 | ||
d17f3dbc JV |
798 | XXX Important bug fixes in the core language are summarised here. |
799 | Bug fixes in files in F<ext/> and F<lib/> are best summarised in | |
800 | L</Modules and Pragmata>. | |
0c7420e7 | 801 | |
d17f3dbc | 802 | [ List each fix as a =item entry ] |
0c7420e7 | 803 | |
d17f3dbc | 804 | =over 4 |
f3fe4ed7 | 805 | |
712ef7ca FC |
806 | =item * |
807 | ||
5e6b2389 | 808 | A Unicode C<\p{}> property match in a regular expression pattern will |
e40e74fe | 809 | now force Unicode rules for the rest of the regular expression |
712ef7ca | 810 | |
5e6b2389 AB |
811 | =item * |
812 | ||
813 | [perl #38456] binmode FH, ":crlf" only modifies top crlf layer (7826b36) | |
814 | ||
815 | When pushed on top of the stack, crlf will no longer enable crlf layers | |
816 | lower in the stack. This will prevent unexpected results. | |
817 | ||
818 | =item * | |
819 | ||
820 | Fix 'raw' layer for RT #80764 (ecfd064) | |
821 | ||
822 | Made a ':raw' open do what it advertises to do (first open the file, | |
823 | then binmode it), instead of leaving off the top layer. | |
824 | ||
825 | =item * | |
826 | ||
827 | Use PerlIOBase_open for pop, utf8 and bytes layers (c0888ac) | |
828 | ||
829 | Three of Perl's builtin PerlIO layers (C<:pop>, C<:utf8> and | |
830 | C<:bytes>) didn't allow stacking when opening a file. For example | |
831 | this: | |
832 | ||
833 | open FH, '>:pop:perlio', 'some.file' or die $!; | |
834 | ||
835 | Would throw an error: "Invalid argument". This has been fixed in this | |
836 | release. | |
837 | ||
838 | =item * | |
839 | ||
840 | An issue present since 5.13.1, where s/A/B/ with A utf8 and B | |
841 | non-utf8, could cause corruption or segfaults has been | |
842 | fixed. (c95ca9b) | |
843 | ||
844 | =item * | |
845 | ||
846 | String evals will no longer fail after 2 billion scopes have been | |
847 | compiled (d1bfb64, 2df5bdd, 0d311cd and 6012dc8) | |
848 | ||
279627b4 FC |
849 | =item * |
850 | ||
b5a55c7b FC |
851 | [perl #81750] When strict 'refs' mode is off, |
852 | C<%{...}> in rvalue context returns C<undef> if | |
279627b4 FC |
853 | its argument is undefined. An optimisation introduced in perl 5.12.0 to |
854 | make C<keys %{...}> faster when used as a boolean did not take this into | |
855 | account, causing C<keys %{+undef}> (and C<keys %$foo> when C<$foo> is | |
856 | undefined) to be an error, which it should only be in strict mode. | |
857 | ||
858 | =item * | |
859 | ||
860 | [perl #83194] Combining the vector (%v) flag and dynamic precision would | |
861 | cause sprintf to confuse the order of its arguments, making it treat the | |
862 | string as the precision and vice versa. | |
863 | ||
864 | =item * | |
865 | ||
866 | [perl #77692] Sometimes the UTF8 length cache would not be reset on a value | |
867 | returned by substr, causing C<length(substr($uni_string,...))> to give | |
868 | wrong answers. With C<${^UTF8CACHE}> set to -1, it would produce a 'panic' | |
869 | error message, too. | |
870 | ||
871 | =item * | |
872 | ||
873 | During the restoration of a localised typeglob on scope exit, any | |
874 | destructors called as a result would be able to see the typeglob in an | |
875 | inconsistent state, containing freed entries, which could result in a | |
876 | crash. This would affect code like this: | |
877 | ||
878 | local *@; | |
879 | eval { die bless [] }; # puts an object in $@ | |
880 | sub DESTROY { | |
881 | local $@; # boom | |
882 | } | |
883 | ||
884 | Now the glob entries are cleared before any destructors are called. This | |
885 | also means that destructors can vivify entries in the glob. So perl tries | |
886 | again and, if the entries are re-created too many times, dies with a | |
887 | 'panic: gp_free...' error message. | |
888 | ||
889 | =item * | |
890 | ||
891 | [perl #78494] When pipes are shared between threads, the C<close> function | |
892 | (and any implicit close, such as on thread exit) no longer blocks. | |
893 | ||
c11ff943 KW |
894 | =item * |
895 | ||
896 | Several contexts no longer allow a Unicode character to begin a word | |
897 | that should never begin words, for an example an accent that must follow | |
898 | another character previously could precede all other characters. | |
899 | ||
d17f3dbc | 900 | =back |
ecede56a | 901 | |
d17f3dbc | 902 | =head1 Known Problems |
ecede56a | 903 | |
d17f3dbc JV |
904 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any |
905 | tests that had to be C<TODO>ed for the release would be noted here, unless | |
906 | they were specific to a particular platform (see below). | |
ecede56a | 907 | |
d17f3dbc JV |
908 | This is a list of some significant unfixed bugs, which are regressions |
909 | from either 5.XXX.XXX or 5.XXX.XXX. | |
d4560299 | 910 | |
d17f3dbc | 911 | [ List each fix as a =item entry ] |
d4560299 | 912 | |
d17f3dbc | 913 | =over 4 |
d4560299 | 914 | |
7db1267d KW |
915 | =item * |
916 | ||
d17f3dbc | 917 | XXX |
7db1267d | 918 | |
9f7a72d0 | 919 | =back |
460c4bfb | 920 | |
d17f3dbc | 921 | =head1 Obituary |
836d5805 | 922 | |
d17f3dbc JV |
923 | XXX If any significant core contributor has died, we've added a short obituary |
924 | here. | |
3a5c9134 | 925 | |
9f7a72d0 | 926 | =head1 Acknowledgements |
b0c3724f | 927 | |
d17f3dbc | 928 | XXX The list of people to thank goes here. |
3a5c9134 CBW |
929 | |
930 | =head1 Reporting Bugs | |
931 | ||
932 | If you find what you think is a bug, you might check the articles | |
933 | recently posted to the comp.lang.perl.misc newsgroup and the perl | |
934 | bug database at http://rt.perl.org/perlbug/ . There may also be | |
935 | information at http://www.perl.org/ , the Perl Home Page. | |
936 | ||
937 | If you believe you have an unreported bug, please run the L<perlbug> | |
938 | program included with your release. Be sure to trim your bug down | |
939 | to a tiny but sufficient test case. Your bug report, along with the | |
940 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
941 | analysed by the Perl porting team. | |
942 | ||
943 | If the bug you are reporting has security implications, which make it | |
944 | inappropriate to send to a publicly archived mailing list, then please send | |
945 | it to perl5-security-report@perl.org. This points to a closed subscription | |
946 | unarchived mailing list, which includes all the core committers, who be able | |
947 | to help assess the impact of issues, figure out a resolution, and help | |
948 | co-ordinate the release of patches to mitigate or fix the problem across all | |
949 | platforms on which Perl is supported. Please only use this address for | |
950 | security issues in the Perl core, not for modules independently | |
951 | distributed on CPAN. | |
952 | ||
953 | =head1 SEE ALSO | |
954 | ||
955 | The F<Changes> file for an explanation of how to view exhaustive details | |
956 | on what changed. | |
957 | ||
958 | The F<INSTALL> file for how to build Perl. | |
959 | ||
960 | The F<README> file for general stuff. | |
961 | ||
962 | The F<Artistic> and F<Copying> files for copyright information. | |
963 | ||
964 | =cut |