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