Commit | Line | Data |
---|---|---|
c0ea3294 SH |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | perl5253delta - what is new for perl v5.25.3 | |
6 | ||
7 | =head1 DESCRIPTION | |
8 | ||
9 | This document describes differences between the 5.25.2 release and the 5.25.3 | |
10 | release. | |
11 | ||
12 | If you are upgrading from an earlier release such as 5.25.1, first read | |
13 | L<perl5252delta>, which describes differences between 5.25.1 and 5.25.2. | |
14 | ||
15 | =head1 Core Enhancements | |
16 | ||
17 | =head2 Unicode 9.0 is now supported | |
18 | ||
19 | A list of changes is at L<http://www.unicode.org/versions/Unicode9.0.0/>. | |
20 | Modules that are shipped with core Perl but not maintained by p5p do not | |
21 | necessarily support Unicode 9.0. L<Unicode::Normalize> does work on 9.0. | |
22 | ||
23 | =head2 Use of C<\p{I<script>}> uses the improved Script_Extensions property | |
24 | ||
25 | Unicode 6.0 introduced an improved form of the Script (C<sc>) property, and | |
26 | called it Script_Extensions (C<scx>). As of now, Perl uses this improved | |
27 | version when a property is specified as just C<\p{I<script>}>. The meaning of | |
28 | compound forms, like C<\p{sc=I<script>}> are unchanged. This should make | |
29 | programs be more accurate when determining if a character is used in a given | |
30 | script, but there is a slight chance of breakage for programs that very | |
31 | specifically needed the old behavior. See L<perlunicode/Scripts>. | |
32 | ||
33 | =head2 Declaring a reference to a variable | |
34 | ||
35 | As an experimental feature, Perl now allows the referencing operator to come | |
36 | after L<C<my()>|perlfunc/my>, L<C<state()>|perlfunc/state>, | |
37 | L<C<our()>|perlfunc/our>, or L<C<local()>|perlfunc/local>. This syntax must | |
38 | be enabled with C<use feature 'declared_refs'>. It is experimental, and will | |
39 | warn by default unless C<no warnings 'experimental::refaliasing'> is in effect. | |
40 | It is intended mainly for use in assignments to references. For example: | |
41 | ||
42 | use experimental 'refaliasing', 'declared_refs'; | |
43 | my \$a = \$b; | |
44 | ||
45 | See L<perlref/Assigning to References> for slightly more detail. | |
46 | ||
47 | =head1 Incompatible Changes | |
48 | ||
49 | =head2 C<${^ENCODING}> has been removed | |
50 | ||
51 | Consequently, the L<encoding> pragma's default mode is no longer supported. If | |
52 | you still need to write your source code in encodings other than UTF-8, use a | |
53 | source filter such as L<Filter::Encoding> on CPAN or L<encoding>'s C<Filter> | |
54 | option. | |
55 | ||
56 | =head2 C<scalar(%hash)> return signature changed | |
57 | ||
58 | The value returned for C<scalar(%hash)> will no longer show information about | |
59 | the buckets allocated in the hash. It will simply return the count of used | |
60 | keys. It is thus equivalent to C<0+keys(%hash)>. | |
61 | ||
62 | A form of backwards compatibility is provided via C<Hash::Util::bucket_ratio()> | |
63 | which provides the same behavior as C<scalar(%hash)> provided prior to Perl | |
64 | 5.25. | |
65 | ||
66 | =head1 Modules and Pragmata | |
67 | ||
68 | =head2 Updated Modules and Pragmata | |
69 | ||
70 | =over 4 | |
71 | ||
72 | =item * | |
73 | ||
74 | L<bignum> has been upgraded from version 0.42 to 0.43. | |
75 | ||
76 | =item * | |
77 | ||
78 | L<Data::Dumper> has been upgraded from version 2.160 to 2.161. | |
79 | ||
80 | =item * | |
81 | ||
82 | L<Devel::PPPort> has been upgraded from version 3.32 to 3.35. | |
83 | ||
84 | =item * | |
85 | ||
86 | L<Encode> has been upgraded from version 2.80 to 2.84. | |
87 | ||
88 | =item * | |
89 | ||
90 | L<encoding> has been upgraded from version 2.17 to 2.17_01. | |
91 | ||
92 | This module's default mode is no longer supported as of Perl 5.25.3. It now | |
93 | dies when imported, unless the C<Filter> option is being used. | |
94 | ||
95 | =item * | |
96 | ||
97 | L<encoding::warnings> has been upgraded from version 0.12 to 0.13. | |
98 | ||
99 | This module is no longer supported as of Perl 5.25.3. It emits a warning to | |
100 | that effect and then does nothing. | |
101 | ||
102 | =item * | |
103 | ||
104 | L<ExtUtils::ParseXS> has been upgraded from version 3.32 to 3.33. | |
105 | ||
106 | =item * | |
107 | ||
108 | L<ExtUtils::Typemaps> has been upgraded from version 3.32 to 3.33. | |
109 | ||
110 | =item * | |
111 | ||
112 | L<feature> has been upgraded from version 1.44 to 1.45. | |
113 | ||
114 | =item * | |
115 | ||
116 | L<Hash::Util> has been upgraded from version 0.19 to 0.20. | |
117 | ||
118 | =item * | |
119 | ||
120 | L<Math::BigInt> has been upgraded from version 1.999715 to 1.999726. | |
121 | ||
122 | =item * | |
123 | ||
124 | L<Math::BigInt::FastCalc> has been upgraded from version 0.40 to 0.42. | |
125 | ||
126 | =item * | |
127 | ||
128 | L<Math::BigRat> has been upgraded from version 0.260802 to 0.260804. | |
129 | ||
130 | =item * | |
131 | ||
132 | L<Module::CoreList> has been upgraded from version 5.20160620 to 5.20160720. | |
133 | ||
134 | =item * | |
135 | ||
136 | L<Parse::CPAN::Meta> has been upgraded from version 1.4417 to 1.4422. | |
137 | ||
138 | =item * | |
139 | ||
140 | L<Perl::OSType> has been upgraded from version 1.009 to 1.010. | |
141 | ||
142 | =item * | |
143 | ||
144 | L<Test::Simple> has been upgraded from version 1.302026 to 1.302045. | |
145 | ||
146 | =item * | |
147 | ||
148 | L<Time::HiRes> has been upgraded from version 1.9734 to 1.9739. | |
149 | ||
150 | =item * | |
151 | ||
152 | L<Unicode::UCD> has been upgraded from version 0.65 to 0.66. | |
153 | ||
154 | =item * | |
155 | ||
156 | L<version> has been upgraded from version 0.9916 to 0.9917. | |
157 | ||
158 | =item * | |
159 | ||
160 | L<warnings> has been upgraded from version 1.36 to 1.37. | |
161 | ||
162 | =item * | |
163 | ||
164 | L<XSLoader> has been upgraded from version 0.21 to 0.22, fixing a security hole | |
165 | in which binary files could be loaded from a path outside of | |
166 | L<C<@INC>|perlvar/@INC>. | |
167 | ||
168 | =back | |
169 | ||
170 | =head1 Documentation | |
171 | ||
172 | =head2 Changes to Existing Documentation | |
173 | ||
174 | =head3 L<perldata> and L<perltie> | |
175 | ||
176 | =over 4 | |
177 | ||
178 | =item * | |
179 | ||
180 | Updated documentation of C<scalar(%hash)>. See L</scalar(%hash) return | |
181 | signature changed> above. | |
182 | ||
183 | =back | |
184 | ||
185 | =head3 L<perlexperiment> and L<perlref> | |
186 | ||
187 | =over 4 | |
188 | ||
189 | =item * | |
190 | ||
191 | Documented new feature: See L</Declaring a reference to a variable> above. | |
192 | ||
193 | =back | |
194 | ||
195 | =head3 L<perlfunc> | |
196 | ||
197 | =over 4 | |
198 | ||
199 | =item * | |
200 | ||
201 | Clarified documentation of L<C<seek()>|perlfunc/seek>, | |
202 | L<C<tell()>|perlfunc/tell> and L<C<sysseek()>|perlfunc/sysseek>. | |
203 | L<[perl #128607]|https://rt.perl.org/Public/Bug/Display.html?id=128607> | |
204 | ||
205 | =item * | |
206 | ||
207 | Removed obsolete documentation of L<C<study()>|perlfunc/study>. | |
208 | ||
209 | =back | |
210 | ||
211 | =head3 L<perlunicode> | |
212 | ||
213 | =over 4 | |
214 | ||
215 | =item * | |
216 | ||
217 | Documented change to C<\p{I<script>}> to now use the improved Script_Extensions | |
218 | property. See L</Use of \p{script} uses the improved Script_Extensions | |
219 | property> above. | |
220 | ||
221 | =item * | |
222 | ||
223 | Updated the text to correspond with changes in Unicode UTS#18, concerning | |
224 | regular expressions, and Perl compatibility with what it says. | |
225 | ||
226 | =back | |
227 | ||
228 | =head3 L<perlvar> | |
229 | ||
230 | =over 4 | |
231 | ||
232 | =item * | |
233 | ||
234 | Removed obsolete documentation of C<${^ENCODING}>. See L</${^ENCODING} has | |
235 | been removed> above. | |
236 | ||
237 | =back | |
238 | ||
239 | =head1 Diagnostics | |
240 | ||
241 | The following additions or changes have been made to diagnostic output, | |
242 | including warnings and fatal error messages. For the complete list of | |
243 | diagnostic messages, see L<perldiag>. | |
244 | ||
245 | =head2 New Diagnostics | |
246 | ||
247 | =head3 New Errors | |
248 | ||
249 | =over 4 | |
250 | ||
251 | =item * | |
252 | ||
253 | L<The experimental declared_refs feature is not enabled|perldiag/"The experimental declared_refs feature is not enabled"> | |
254 | ||
255 | (F) To declare references to variables, as in C<my \%x>, you must first enable | |
256 | the feature: | |
257 | ||
258 | no warnings "experimental::declared_refs"; | |
259 | use feature "declared_refs"; | |
260 | ||
261 | =back | |
262 | ||
263 | =head3 New Warnings | |
264 | ||
265 | =over 4 | |
266 | ||
267 | =item * | |
268 | ||
269 | L<Declaring references is experimental|perldiag/"Declaring references is experimental"> | |
270 | ||
271 | (S experimental::declared_refs) This warning is emitted if you use a reference | |
272 | constructor on the right-hand side of C<my()>, C<state()>, C<our()>, or | |
273 | C<local()>. Simply suppress the warning if you want to use the feature, but | |
274 | know that in doing so you are taking the risk of using an experimental feature | |
275 | which may change or be removed in a future Perl version: | |
276 | ||
277 | no warnings "experimental::declared_refs"; | |
278 | use feature "declared_refs"; | |
279 | $fooref = my \$foo; | |
280 | ||
281 | =item * | |
282 | ||
283 | L<C<${^ENCODING}> is no longer supported|perldiag/"${^ENCODING} is no longer supported"> | |
284 | ||
285 | (D deprecated) The special variable C<${^ENCODING}>, formerly used to implement | |
286 | the C<encoding> pragma, is no longer supported as of Perl 5.26.0. | |
287 | ||
288 | =back | |
289 | ||
290 | =head1 Configuration and Compilation | |
291 | ||
292 | =over 4 | |
293 | ||
294 | =item * | |
295 | ||
296 | F<Configure> now aborts if both "-Duselongdouble" and "-Dusequadmath" are | |
297 | requested. | |
298 | L<[perl #126203]|https://rt.perl.org/Public/Bug/Display.html?id=126203> | |
299 | ||
300 | =item * | |
301 | ||
302 | Fixed a bug in which F<Configure> could append "-quadmath" to the archname even | |
303 | if it was already present. | |
304 | L<[perl #128538]|https://rt.perl.org/Public/Bug/Display.html?id=128538> | |
305 | ||
306 | =item * | |
307 | ||
308 | Clang builds with "-DPERL_GLOBAL_STRUCT" or "-DPERL_GLOBAL_STRUCT_PRIVATE" have | |
309 | been fixed (by disabling Thread Safety Analysis for these configurations). | |
310 | ||
311 | =back | |
312 | ||
313 | =head1 Testing | |
314 | ||
315 | =over 4 | |
316 | ||
317 | =item * | |
318 | ||
319 | A new test script, F<t/op/decl-refs.t>, has been added to test the new feature, | |
320 | "Declaring a reference to a variable". | |
321 | ||
322 | =item * | |
323 | ||
324 | A new test script, F<t/re/anyof.t>, has been added to test that the ANYOF nodes | |
325 | generated by bracketed character classes are as expected. | |
326 | ||
327 | =back | |
328 | ||
329 | =head1 Platform Support | |
330 | ||
331 | =head2 Platform-Specific Notes | |
332 | ||
333 | =over 4 | |
334 | ||
335 | =item VAX | |
336 | ||
337 | VAX floating point formats are now supported. | |
338 | ||
339 | =back | |
340 | ||
341 | =head1 Selected Bug Fixes | |
342 | ||
343 | =over 4 | |
344 | ||
345 | =item * | |
346 | ||
347 | An assertion failure with C<%: = 0> has been fixed. | |
348 | L<[perl #128238]|https://rt.perl.org/Public/Bug/Display.html?id=128238> | |
349 | ||
350 | =item * | |
351 | ||
352 | In Perl 5.18, the parsing of C<"$foo::$bar"> was accidentally changed, such | |
353 | that it would be treated as C<$foo."::".$bar>. The previous behavior, which | |
354 | was to parse it as C<$foo:: . $bar>, has been restored. | |
355 | L<[perl #128478]|https://rt.perl.org/Public/Bug/Display.html?id=128478> | |
356 | ||
357 | =item * | |
358 | ||
359 | Since Perl 5.20, line numbers have been off by one when perl is invoked with | |
360 | the B<-x> switch. This has been fixed. | |
361 | L<[perl #128508]|https://rt.perl.org/Public/Bug/Display.html?id=128508> | |
362 | ||
363 | =item * | |
364 | ||
365 | Vivifying a subroutine stub in a deleted stash (e.g., C<delete $My::{"Foo::"}; | |
366 | \&My::Foo::foo>) no longer crashes. It had begun crashing in Perl 5.18. | |
367 | L<[perl #128532]|https://rt.perl.org/Public/Bug/Display.html?id=128532> | |
368 | ||
369 | =item * | |
370 | ||
371 | Some obscure cases of subroutines and file handles being freed at the same time | |
372 | could result in crashes, but have been fixed. The crash was introduced in Perl | |
373 | 5.22. | |
374 | L<[perl #128597]|https://rt.perl.org/Public/Bug/Display.html?id=128597> | |
375 | ||
376 | =item * | |
377 | ||
378 | Code that looks for a variable name associated with an uninitialized value | |
379 | could cause an assertion in cases where magic is involved, such as | |
380 | C<$ISA[0][0]>. This has now been fixed. | |
381 | L<[perl #128253]|https://rt.perl.org/Public/Bug/Display.html?id=128253> | |
382 | ||
383 | =item * | |
384 | ||
385 | A crash caused by code generating the warning "Subroutine STASH::NAME | |
386 | redefined" in cases such as C<sub P::f{} undef *P::; *P::f =sub{};> has been | |
387 | fixed. In these cases, where the STASH is missing, the warning will now appear | |
388 | as "Subroutine NAME redefined". | |
389 | L<[perl #128257]|https://rt.perl.org/Public/Bug/Display.html?id=128257> | |
390 | ||
391 | =item * | |
392 | ||
393 | Fixed an assertion triggered by some code that handles deprecated behavior in | |
394 | formats, e.g. in cases like this: | |
395 | ||
396 | format STDOUT = | |
397 | @ | |
398 | 0"$x" | |
399 | ||
400 | L<[perl #128255]|https://rt.perl.org/Public/Bug/Display.html?id=128255> | |
401 | ||
402 | =item * | |
403 | ||
404 | A possible divide by zero in string transformation code on Windows has been | |
405 | avoided, fixing a crash when collating an empty string. | |
406 | L<[perl #128618]|https://rt.perl.org/Public/Bug/Display.html?id=128618> | |
407 | ||
408 | =item * | |
409 | ||
410 | Some regular expression parsing glitches could lead to assertion failures with | |
411 | regular expressions such as C</(?<=/> and C</(?<!/>. This has now been fixed. | |
412 | L<[perl #128170]|https://rt.perl.org/Public/Bug/Display.html?id=128170> | |
413 | ||
414 | =back | |
415 | ||
416 | =head1 Errata From Previous Releases | |
417 | ||
418 | =over 4 | |
419 | ||
420 | =item * | |
421 | ||
422 | Parsing bad POSIX charclasses no longer leaks memory. This was fixed in Perl | |
423 | 5.25.2 | |
424 | L<[perl #128313]|https://rt.perl.org/Public/Bug/Display.html?id=128313> | |
425 | ||
426 | =item * | |
427 | ||
428 | Fixed issues with recursive regexes. The behavior was fixed in Perl 5.24.0. | |
429 | L<[perl #126182]|https://rt.perl.org/Public/Bug/Display.html?id=126182> | |
430 | ||
431 | =back | |
432 | ||
433 | =head1 Acknowledgements | |
434 | ||
435 | Perl 5.25.3 represents approximately 4 weeks of development since Perl 5.25.2 | |
436 | and contains approximately 67,000 lines of changes across 510 files from 25 | |
437 | authors. | |
438 | ||
439 | Excluding auto-generated files, documentation and release tools, there were | |
440 | approximately 40,000 lines of changes to 290 .pm, .t, .c and .h files. | |
441 | ||
442 | Perl continues to flourish into its third decade thanks to a vibrant community | |
443 | of users and developers. The following people are known to have contributed | |
444 | the improvements that became Perl 5.25.3: | |
445 | ||
446 | Aaron Crane, Ævar Arnfjörð Bjarmason, Alex Vandiver, Aristotle Pagaltzis, | |
447 | Chad Granum, Chris 'BinGOs' Williams, Chris Lamb, Craig A. Berry, Dan Collins, | |
448 | David Mitchell, Father Chrysostomos, H.Merijn Brand, Jarkko Hietaniemi, Karl | |
449 | Williamson, Lukas Mai, Matthew Horsfall, Salvador Fandiño, Sawyer X, | |
450 | Sébastien Aperghis-Tramoni, Steffen Müller, Steve Hay, Todd Rinaldo, Tony | |
451 | Cook, Unicode Consortium, Yves Orton. | |
452 | ||
453 | The list above is almost certainly incomplete as it is automatically generated | |
454 | from version control history. In particular, it does not include the names of | |
455 | the (very much appreciated) contributors who reported issues to the Perl bug | |
456 | tracker. | |
457 | ||
458 | Many of the changes included in this version originated in the CPAN modules | |
459 | included in Perl's core. We're grateful to the entire CPAN community for | |
460 | helping Perl to flourish. | |
461 | ||
462 | For a more complete list of all of Perl's historical contributors, please see | |
463 | the F<AUTHORS> file in the Perl source distribution. | |
464 | ||
465 | =head1 Reporting Bugs | |
466 | ||
467 | If you find what you think is a bug, you might check the perl bug database at | |
468 | L<https://rt.perl.org/> . There may also be information at | |
469 | L<http://www.perl.org/> , the Perl Home Page. | |
470 | ||
471 | If you believe you have an unreported bug, please run the L<perlbug> program | |
472 | included with your release. Be sure to trim your bug down to a tiny but | |
473 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
474 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. | |
475 | ||
476 | If the bug you are reporting has security implications which make it | |
477 | inappropriate to send to a publicly archived mailing list, then see | |
478 | L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> for details of how to | |
479 | report the issue. | |
480 | ||
481 | =head1 SEE ALSO | |
482 | ||
483 | The F<Changes> file for an explanation of how to view exhaustive details on | |
484 | what changed. | |
485 | ||
486 | The F<INSTALL> file for how to build Perl. | |
487 | ||
488 | The F<README> file for general stuff. | |
489 | ||
490 | The F<Artistic> and F<Copying> files for copyright information. | |
491 | ||
492 | =cut |