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