Commit | Line | Data |
---|---|---|
be293293 CBW |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | perl5254delta - what is new for perl v5.25.4 | |
6 | ||
7 | =head1 DESCRIPTION | |
8 | ||
9 | This document describes differences between the 5.25.3 release and the 5.25.4 | |
10 | release. | |
11 | ||
12 | If you are upgrading from an earlier release such as 5.25.2, first read | |
13 | L<perl5253delta>, which describes differences between 5.25.2 and 5.25.3. | |
14 | ||
15 | =head1 Performance Enhancements | |
16 | ||
17 | =over 4 | |
18 | ||
19 | =item * | |
20 | ||
21 | The rather slow implementation for the experimental subroutine signatures | |
22 | feature has been made much faster; it is now comparable in speed with the | |
23 | old-style C<my ($a, $b, @c) = @_>. | |
24 | ||
25 | =back | |
26 | ||
27 | =head1 Documentation | |
28 | ||
29 | =head2 Changes to Existing Documentation | |
30 | ||
31 | =head3 L<perlcall> | |
32 | ||
33 | =over 4 | |
34 | ||
35 | =item * | |
36 | ||
37 | Removed redundant C<dSP> from an example. | |
38 | ||
39 | =back | |
40 | ||
41 | =head1 Modules and Pragmata | |
42 | ||
43 | =head2 Updated Modules and Pragmata | |
44 | ||
45 | =over 4 | |
46 | ||
47 | =item * | |
48 | ||
49 | L<Archive::Tar> has been upgraded from version 2.08 to 2.10. | |
50 | ||
51 | =item * | |
52 | ||
53 | L<arybase> has been upgraded from version 0.11 to 0.12. | |
54 | ||
55 | =item * | |
56 | ||
57 | L<B> has been upgraded from version 1.62 to 1.63. | |
58 | ||
59 | =item * | |
60 | ||
61 | L<B::Concise> has been upgraded from version 0.996 to 0.998. | |
62 | ||
63 | =item * | |
64 | ||
65 | L<B::Deparse> has been upgraded from version 1.37 to 1.38. | |
66 | ||
67 | =item * | |
68 | ||
69 | L<base> has been upgraded from version 2.23 to 2.24. | |
70 | ||
71 | =item * | |
72 | ||
73 | L<bignum> has been upgraded from version 0.43 to 0.43_01. | |
74 | ||
75 | =item * | |
76 | ||
77 | L<Carp> has been upgraded from version 1.41 to 1.42. | |
78 | ||
79 | =item * | |
80 | ||
81 | L<Config::Perl::V> has been upgraded from version 0.26 to 0.27. | |
82 | ||
83 | =item * | |
84 | ||
85 | L<CPAN> has been upgraded from version 2.14 to 2.14_01. | |
86 | ||
87 | =item * | |
88 | ||
89 | L<CPAN::Meta> has been upgraded from version 2.150005 to 2.150010. | |
90 | ||
91 | =item * | |
92 | ||
93 | L<Digest> has been upgraded from version 1.17 to 1.17_01. | |
94 | ||
95 | =item * | |
96 | ||
97 | L<Digest::SHA> has been upgraded from version 5.95 to 5.96. | |
98 | ||
99 | =item * | |
100 | ||
101 | L<Encode> has been upgraded from version 2.84 to 2.86. | |
102 | ||
103 | =item * | |
104 | ||
105 | L<encoding> has been upgraded from version 2.17_01 to 2.18. | |
106 | ||
107 | =item * | |
108 | ||
109 | L<Errno> has been upgraded from version 1.25 to 1.26. | |
110 | ||
111 | =item * | |
112 | ||
113 | L<ExtUtils::MakeMaker> has been upgraded from version 7.18 to 7.24. | |
114 | ||
115 | =item * | |
116 | ||
117 | L<File::Fetch> has been upgraded from version 0.48 to 0.52. | |
118 | ||
119 | =item * | |
120 | ||
121 | L<File::Spec> has been upgraded from version 3.64 to 3.65. | |
122 | ||
123 | =item * | |
124 | ||
125 | L<Hash::Util> has been upgraded from version 0.20 to 0.21. | |
126 | ||
127 | =item * | |
128 | ||
129 | L<HTTP::Tiny> has been upgraded from version 0.058 to 0.064. | |
130 | ||
131 | =item * | |
132 | ||
133 | L<I18N::LangTags> has been upgraded from version 0.40 to 0.41. | |
134 | ||
135 | =item * | |
136 | ||
137 | L<IO> has been upgraded from version 1.36 to 1.37. | |
138 | ||
139 | =item * | |
140 | ||
141 | L<IO-Compress> has been upgraded from version 2.069 to 2.069_01. | |
142 | ||
143 | =item * | |
144 | ||
145 | L<IO::Socket::IP> has been upgraded from version 0.37 to 0.38. | |
146 | ||
147 | =item * | |
148 | ||
149 | L<IPC::Cmd> has been upgraded from version 0.94 to 0.96. | |
150 | ||
151 | =item * | |
152 | ||
153 | L<JSON::PP> has been upgraded from version 2.27400 to 2.27400_01. | |
154 | ||
155 | =item * | |
156 | ||
157 | L<Locale::Maketext> has been upgraded from version 1.27 to 1.28. | |
158 | ||
159 | =item * | |
160 | ||
161 | L<Locale::Maketext::Simple> has been upgraded from version 0.21 to 0.21_01. | |
162 | ||
163 | =item * | |
164 | ||
165 | L<Memoize> has been upgraded from version 1.03 to 1.03_01. | |
166 | ||
167 | =item * | |
168 | ||
169 | L<Module::CoreList> has been upgraded from version 5.20160720 to 5.20160820. | |
170 | ||
171 | =item * | |
172 | ||
173 | L<Module::Load::Conditional> has been upgraded from version 0.64 to 0.68. | |
174 | ||
175 | =item * | |
176 | ||
177 | L<Module::Metadata> has been upgraded from version 1.000032 to 1.000033. | |
178 | ||
179 | =item * | |
180 | ||
181 | L<Net::Ping> has been upgraded from version 2.43 to 2.44. | |
182 | ||
183 | =item * | |
184 | ||
185 | L<NEXT> has been upgraded from version 0.65 to 0.67. | |
186 | ||
187 | =item * | |
188 | ||
189 | L<Opcode> has been upgraded from version 1.35 to 1.37. | |
190 | ||
191 | =item * | |
192 | ||
193 | L<Pod::Html> has been upgraded from version 1.22 to 1.2201. | |
194 | ||
195 | =item * | |
196 | ||
197 | L<Pod::Perldoc> has been upgraded from version 3.25_02 to 3.27. | |
198 | ||
199 | =item * | |
200 | ||
201 | L<POSIX> has been upgraded from version 1.70 to 1.71. | |
202 | ||
203 | =item * | |
204 | ||
205 | L<Storable> has been upgraded from version 2.56 to 2.57. | |
206 | ||
207 | =item * | |
208 | ||
209 | L<Sys::Syslog> has been upgraded from version 0.34 to 0.34_01. | |
210 | ||
211 | =item * | |
212 | ||
213 | L<Test> has been upgraded from version 1.28 to 1.29. | |
214 | ||
215 | =item * | |
216 | ||
217 | L<Test::Harness> has been upgraded from version 3.36 to 3.36_01. | |
218 | ||
219 | =item * | |
220 | ||
221 | L<Test::Simple> has been upgraded from version 1.302045 to 1.302052. | |
222 | ||
223 | =item * | |
224 | ||
225 | L<Tie::Hash::NamedCapture> has been upgraded from version 0.09 to 0.10. | |
226 | ||
227 | =item * | |
228 | ||
229 | L<Time::Local> has been upgraded from version 1.2300 to 1.24. | |
230 | ||
231 | =back | |
232 | ||
233 | =head1 Configuration and Compilation | |
234 | ||
235 | =over 4 | |
236 | ||
237 | =item * | |
238 | ||
239 | A probe for C<gai_strerror> was added to F<Configure> that checks if the | |
240 | the gai_strerror() routine is available and can be used to | |
241 | translate error codes returned by getaddrinfo() into human | |
242 | readable strings. | |
243 | ||
244 | =back | |
245 | ||
246 | =head1 Platform Support | |
247 | ||
248 | =head2 Platform-Specific Notes | |
249 | ||
250 | =over 4 | |
251 | ||
252 | =item Hurd | |
253 | ||
254 | The hints for Hurd have been improved enabling malloc wrap and reporting the | |
255 | GNU libc used (previously it was an empty string when reported). | |
256 | ||
257 | =back | |
258 | ||
259 | =head1 Internal Changes | |
260 | ||
261 | =over 4 | |
262 | ||
263 | =item * | |
264 | ||
265 | Three new ops, C<OP_ARGELEM>, C<OP_ARGDEFELEM> and C<OP_ARGCHECK> have | |
266 | been added. These are intended principally to implement the individual | |
267 | elements of a subroutine signature, plus any overall checking required. | |
268 | ||
269 | =back | |
270 | ||
271 | =head1 Selected Bug Fixes | |
272 | ||
273 | =over 4 | |
274 | ||
275 | =item * | |
276 | ||
277 | Problems with in-place array sorts: code like C<@a = sort { ... } @a>, | |
278 | where the source and destination of the sort are the same plain array, are | |
279 | optimised to do less copying around. Two side-effects of this optimisation | |
280 | were that the contents of C<@a> as visible to to sort routine were | |
281 | partially sorted, and under some circumstances accessing C<@a> during the | |
282 | sort could crash the interpreter. Both these issues have been fixed, and | |
283 | Sort functions see the original value of C<@a>. | |
284 | ||
285 | =item * | |
286 | ||
287 | Non-ASCII string delimiters are now reported correctly in error messages | |
288 | for unterminated strings. [perl #128701] | |
289 | ||
290 | =item * | |
291 | ||
292 | C<pack("p", ...)> used to emit its warning ("Attempt to pack pointer to | |
293 | temporary value") erroneously in some cases, but has been fixed. | |
294 | ||
295 | =item * | |
296 | ||
297 | C<@DB::args> is now exempt from "used once" warnings. The warnings only | |
298 | occurred under B<-w>, because F<warnings.pm> itself uses C<@DB::args> | |
299 | multiple times. | |
300 | ||
301 | =item * | |
302 | ||
303 | The use of built-in arrays or hash slices in a double-quoted string no | |
304 | longer issues a warning ("Possible unintended interpolation...") if the | |
305 | variable has not been mentioned before. This affected code like | |
306 | C<qq|@DB::args|> and C<qq|@SIG{'CHLD', 'HUP'}|>. (The special variables | |
307 | C<@-> and C<@+> were already exempt from the warning.) | |
308 | ||
309 | =item * | |
310 | ||
311 | C<gethostent> and similar functions now perform a null check internally, to | |
312 | avoid crashing with torsocks. This was a regression from 5.22. [perl | |
313 | #128740] | |
314 | ||
315 | =item * | |
316 | ||
317 | C<defined *{'!'}>, C<defined *{'['}>, and C<defined *{'-'}> no longer leak | |
318 | memory if the typeglob in question has never been accessed before. | |
319 | ||
320 | =item * | |
321 | ||
322 | In 5.25.4 fchown() was changed not to accept negative one as an argument | |
323 | because in some platforms that is an error. However, in some other platforms | |
324 | that is an acceptable argument. This change has been reverted [perl #128967]. | |
325 | ||
326 | =item * | |
327 | ||
328 | Mentioning the same constant twice in a row (which is a syntax error) no | |
329 | longer fails an assertion under debugging builds. This was a regression | |
330 | from 5.20. [perl #126482] | |
331 | ||
332 | =item * | |
333 | ||
334 | Many issues relating to C<printf "%a"> of hexadecimal floating point | |
335 | were fixed. In addition, the "subnormals" (formerly known as "denormals") | |
336 | floating point anumbers are now supported both with the plain IEEE 754 | |
337 | floating point numbers (64-bit or 128-bit) and the x86 80-bit | |
338 | "extended precision". Note that subnormal hexadecimal floating | |
339 | point literals will give a warning about "exponent underflow". | |
340 | [perl #128843, #128889, #128890, #128893, #128909, #128919] | |
341 | ||
342 | =item * | |
343 | ||
344 | A regression in 5.24 with C<tr/\N{U+...}/foo/> when the code point was between | |
345 | 128 and 255 has been fixed. [perl #128734]. | |
346 | ||
347 | =item * | |
348 | ||
349 | A regression from the previous development release, 5.23.3, where | |
350 | compiling a regular expression could crash the interpreter has been | |
351 | fixed. [perl #128686]. | |
352 | ||
353 | =item * | |
354 | ||
355 | Use of a string delimiter whose code point is above 2**31 now works | |
356 | correctly on platforms that allow this. Previously, certain characters, | |
357 | due to truncation, would be confused with other delimiter characters | |
358 | with special meaning (such as C<?> in C<m?...?>), resulting | |
359 | in inconsistent behaviour. Note that this is non-portable, | |
360 | and is based on Perl's extension to UTF-8, and is probably not | |
361 | displayable nor enterable by any editor. [perl #128738] | |
362 | ||
363 | =item * | |
364 | ||
365 | C<@{x> followed by a newline where C<x> represents a control or non-ASCII | |
366 | character no longer produces a garbled syntax error message or a crash. | |
367 | [perl #128951] | |
368 | ||
369 | =back | |
370 | ||
371 | =head1 Acknowledgements | |
372 | ||
373 | Perl 5.25.4 represents approximately 4 weeks of development since Perl 5.25.3 | |
374 | and contains approximately 18,000 lines of changes across 820 files from 23 | |
375 | authors. | |
376 | ||
377 | Excluding auto-generated files, documentation and release tools, there were | |
378 | approximately 9,200 lines of changes to 660 .pm, .t, .c and .h files. | |
379 | ||
380 | Perl continues to flourish into its third decade thanks to a vibrant community | |
381 | of users and developers. The following people are known to have contributed the | |
382 | improvements that became Perl 5.25.4: | |
383 | ||
384 | Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan | |
385 | Collins, Daniel Dragan, David Mitchell, Father Chrysostomos, H.Merijn Brand, | |
386 | James E Keenan, Jarkko Hietaniemi, Karen Etheridge, Karl Williamson, Lukas Mai, | |
387 | Neil Bowers, Nicolas R., Pino Toscano, Rafael Garcia-Suarez, Richard Levitte, | |
388 | Shlomi Fish, Smylers, Steve Hay, Tony Cook, Yves Orton. | |
389 | ||
390 | The list above is almost certainly incomplete as it is automatically generated | |
391 | from version control history. In particular, it does not include the names of | |
392 | the (very much appreciated) contributors who reported issues to the Perl bug | |
393 | tracker. | |
394 | ||
395 | Many of the changes included in this version originated in the CPAN modules | |
396 | included in Perl's core. We're grateful to the entire CPAN community for | |
397 | helping Perl to flourish. | |
398 | ||
399 | For a more complete list of all of Perl's historical contributors, please see | |
400 | the F<AUTHORS> file in the Perl source distribution. | |
401 | ||
402 | =head1 Reporting Bugs | |
403 | ||
404 | If you find what you think is a bug, you might check the perl bug database | |
405 | at L<https://rt.perl.org/> . There may also be information at | |
406 | L<http://www.perl.org/> , the Perl Home Page. | |
407 | ||
408 | If you believe you have an unreported bug, please run the L<perlbug> program | |
409 | included with your release. Be sure to trim your bug down to a tiny but | |
410 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
411 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. | |
412 | ||
413 | If the bug you are reporting has security implications which make it | |
414 | inappropriate to send to a publicly archived mailing list, then see | |
415 | L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> | |
416 | for details of how to report the issue. | |
417 | ||
418 | =head1 SEE ALSO | |
419 | ||
420 | The F<Changes> file for an explanation of how to view exhaustive details on | |
421 | what changed. | |
422 | ||
423 | The F<INSTALL> file for how to build Perl. | |
424 | ||
425 | The F<README> file for general stuff. | |
426 | ||
427 | The F<Artistic> and F<Copying> files for copyright information. | |
428 | ||
429 | =cut |