Commit | Line | Data |
---|---|---|
a09f502b AC |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | perl5256delta - what is new for perl v5.25.6 | |
6 | ||
7 | =head1 DESCRIPTION | |
8 | ||
9 | This document describes differences between the 5.25.5 release and the 5.25.6 | |
10 | release. | |
11 | ||
12 | If you are upgrading from an earlier release such as 5.25.4, first read | |
13 | L<perl5255delta>, which describes differences between 5.25.4 and 5.25.5. | |
14 | ||
15 | =head1 Performance Enhancements | |
16 | ||
17 | =over 4 | |
18 | ||
19 | =item * | |
20 | ||
21 | Converting a single-digit string to a number is now substantially faster. | |
22 | ||
23 | =item * | |
24 | ||
25 | The internal op implementing the C<split> builtin has been simplified and | |
26 | sped up. Firstly, it no longer requires a subsidiary internal C<pushre> op | |
27 | to do its work. Secondly, code of the form C<my @x = split(...)> is now | |
28 | optimised in the same way as C<@x = split(...)>, and is therefore a few | |
29 | percent faster. | |
30 | ||
31 | =back | |
32 | ||
33 | =head1 Modules and Pragmata | |
34 | ||
35 | =head2 Updated Modules and Pragmata | |
36 | ||
37 | =over 4 | |
38 | ||
39 | =item * | |
40 | ||
41 | L<Archive::Tar> has been upgraded from version 2.10 to 2.14. | |
42 | ||
43 | =item * | |
44 | ||
45 | L<attributes> has been upgraded from version 0.27 to 0.28. | |
46 | ||
47 | =item * | |
48 | ||
49 | L<B> has been upgraded from version 1.63 to 1.64. | |
50 | ||
51 | =item * | |
52 | ||
53 | L<B::Concise> has been upgraded from version 0.998 to 0.999. | |
54 | ||
55 | Its output is now more descriptive for C<op_private> flags. | |
56 | ||
57 | =item * | |
58 | ||
59 | L<B::Deparse> has been upgraded from version 1.38 to 1.39. | |
60 | ||
61 | =item * | |
62 | ||
63 | L<Data::Dumper> has been upgraded from version 2.161 to 2.162. | |
64 | ||
65 | =item * | |
66 | ||
67 | L<Devel::Peek> has been upgraded from version 1.24 to 1.25. | |
68 | ||
69 | =item * | |
70 | ||
71 | L<HTTP::Tiny> has been upgraded from version 0.064 to 0.070. | |
72 | ||
73 | Internal 599-series errors now include the redirect history. | |
74 | ||
75 | =item * | |
76 | ||
77 | L<List::Util> has been upgraded from version 1.45_01 to 1.46. | |
78 | ||
79 | =item * | |
80 | ||
81 | L<Module::CoreList> has been upgraded from version 5.20160920 to 5.20161020. | |
82 | ||
83 | =item * | |
84 | ||
85 | L<mro> has been upgraded from version 1.18 to 1.19. | |
86 | ||
87 | =item * | |
88 | ||
89 | L<Net::Ping> has been upgraded from version 2.44 to 2.51. | |
90 | ||
91 | IPv6 addresses and C<AF_INET6> sockets are now supported, along with several | |
92 | other enhancements. | |
93 | ||
94 | =item * | |
95 | ||
96 | L<Opcode> has been upgraded from version 1.37 to 1.38. | |
97 | ||
98 | =item * | |
99 | ||
100 | L<overload> has been upgraded from version 1.26 to 1.27. | |
101 | ||
102 | Its compilation speed has been improved slightly. | |
103 | ||
104 | =item * | |
105 | ||
106 | L<parent> has been upgraded from version 0.234 to 0.236. | |
107 | ||
108 | =item * | |
109 | ||
110 | L<PerlIO::encoding> has been upgraded from version 0.24 to 0.25. | |
111 | ||
112 | =item * | |
113 | ||
114 | podlators has been upgraded from version 4.07 to 4.08. | |
115 | ||
116 | =item * | |
117 | ||
118 | L<POSIX> has been upgraded from version 1.72 to 1.73. | |
119 | ||
120 | =item * | |
121 | ||
122 | L<Scalar::Util> has been upgraded from version 1.45_01 to 1.46. | |
123 | ||
124 | =item * | |
125 | ||
126 | L<Storable> has been upgraded from version 2.57 to 2.58. | |
127 | ||
128 | =item * | |
129 | ||
130 | L<Test::Simple> has been upgraded from version 1.302056 to 1.302059. | |
131 | ||
132 | =item * | |
133 | ||
134 | L<Time::HiRes> has been upgraded from version 1.9739 to 1.9740_01. | |
135 | ||
136 | It now builds on systems with C++11 compilers (such as G++ 6 and Clang++ | |
137 | 3.9). | |
138 | ||
139 | =item * | |
140 | ||
141 | L<VMS::Stdio> has been upgraded from version 2.41 to 2.42. | |
142 | ||
143 | =back | |
144 | ||
145 | =head1 Diagnostics | |
146 | ||
147 | The following additions or changes have been made to diagnostic output, | |
148 | including warnings and fatal error messages. For the complete list of | |
149 | diagnostic messages, see L<perldiag>. | |
150 | ||
151 | =head2 New Diagnostics | |
152 | ||
153 | =head3 New Errors | |
154 | ||
155 | =over 4 | |
156 | ||
157 | =item * | |
158 | ||
159 | Using the empty pattern (which re-executes the last successfully-matched | |
160 | pattern) inside a code block in another regex, as in C</(?{ s!!new! })/>, has | |
161 | always previously yielded a segfault. It now produces an error: L<Use of the | |
162 | empty pattern inside of a regex code block is forbidden|perldiag/"Use of the | |
163 | empty pattern inside of a regex code block is forbidden">. | |
164 | ||
165 | =back | |
166 | ||
167 | =head2 Changes to Existing Diagnostics | |
168 | ||
169 | =over 4 | |
170 | ||
171 | =item * | |
172 | ||
173 | Details as to the exact problem have been added to the diagnostics that | |
174 | occur when malformed UTF-8 is encountered when trying to convert to a | |
175 | code point. | |
176 | ||
177 | =item * | |
178 | ||
179 | Executing C<undef $x> where C<$x> is tied or magical no longer incorrectly | |
180 | blames the variable for an uninitialized-value warning encountered by the | |
181 | tied/magical code. | |
182 | ||
183 | =back | |
184 | ||
185 | =head1 Configuration and Compilation | |
186 | ||
187 | =over 4 | |
188 | ||
189 | =item * | |
190 | ||
191 | Builds using C<USE_PAD_RESET> now work again; this configuration had | |
192 | bit-rotted. | |
193 | ||
194 | =back | |
195 | ||
196 | =head1 Testing | |
197 | ||
198 | =over 4 | |
199 | ||
200 | =item * | |
201 | ||
202 | Some parts of the test suite that try to exhaustively test edge cases in the | |
203 | regex implementation have been restricted to running for a maximum of five | |
204 | minutes. On slow systems they could otherwise take several hours, without | |
205 | significantly improving our understanding of the correctness of the code | |
206 | under test. | |
207 | ||
208 | In addition, some of those test cases have been split into more files, to | |
209 | allow them to be run in parallel on suitable systems. | |
210 | ||
211 | =item * | |
212 | ||
213 | A new internal facility allows analysing the time taken by the individual | |
214 | tests in Perl's own test suite; see F<Porting/harness-timer-report.pl>. | |
215 | ||
216 | =back | |
217 | ||
218 | =head1 Platform Support | |
219 | ||
220 | =head2 New Platforms | |
221 | ||
222 | =over 4 | |
223 | ||
224 | =item NetBSD/VAX | |
225 | ||
226 | Perl now compiles under NetBSD on VAX machines. However, it's not | |
227 | possible for that platform to implement floating-point infinities and | |
228 | NaNs compatibly with most modern systems, which implement the IEEE-754 | |
229 | floating point standard. The hexadecimal floating point (C<0x...p[+-]n> | |
230 | literals, C<printf %a>) is not implemented, either. | |
231 | The C<make test> passes 98% of tests. | |
232 | ||
233 | =back | |
234 | ||
235 | =head1 Internal Changes | |
236 | ||
237 | =over 4 | |
238 | ||
239 | =item * | |
240 | ||
241 | The C<PADOFFSET> type has changed from being unsigned to signed, and | |
242 | several pad-related variables such as C<PL_padix> have changed from being | |
243 | of type C<I32> to type C<PADOFFSET>. | |
244 | ||
245 | =item * | |
246 | ||
247 | The function C<L<perlapi/utf8n_to_uvchr>> has been changed to not | |
248 | abandon searching for other malformations when the first one is | |
249 | encountered. A call to it thus can generate multiple diagnostics, | |
250 | instead of just one. | |
251 | ||
252 | =item * | |
253 | ||
254 | A new function, C<L<perlapi/utf8n_to_uvchr_error>>, has been added for | |
255 | use by modules that need to know the details of UTF-8 malformations | |
256 | beyond pass/fail. Previously, the only ways to know why a sequence was | |
257 | ill-formed was to capture and parse the generated diagnostics, or to do | |
258 | your own analysis. | |
259 | ||
260 | =item * | |
261 | ||
262 | Several new functions for handling Unicode have been added to the API: | |
263 | C<L<perlapi/is_strict_utf8_string>>, | |
264 | C<L<perlapi/is_c9strict_utf8_string>>, | |
265 | C<L<perlapi/is_utf8_string_flags>>, | |
266 | C<L<perlapi/is_strict_utf8_string_loc>>, | |
267 | C<L<perlapi/is_strict_utf8_string_loclen>>, | |
268 | C<L<perlapi/is_c9strict_utf8_string_loc>>, | |
269 | C<L<perlapi/is_c9strict_utf8_string_loclen>>, | |
270 | C<L<perlapi/is_utf8_string_loc_flags>>, | |
271 | C<L<perlapi/is_utf8_string_loclen_flags>>, | |
272 | C<L<perlapi/is_utf8_fixed_width_buf_flags>>, | |
273 | C<L<perlapi/is_utf8_fixed_width_buf_loc_flags>>, | |
274 | C<L<perlapi/is_utf8_fixed_width_buf_loclen_flags>>. | |
275 | ||
276 | These functions are all extensions of the C<is_utf8_string_*()> functions, | |
277 | that apply various restrictions to the UTF-8 recognized as valid. | |
278 | ||
279 | =item * | |
280 | ||
281 | A new API function C<sv_setvpv_bufsize()> allows simultaneously setting the | |
282 | length and allocated size of the buffer in an C<SV>, growing the buffer if | |
283 | necessary. | |
284 | ||
285 | =item * | |
286 | ||
287 | A new API macro C<SvPVCLEAR()> sets its C<SV> argument to an empty string, | |
288 | like Perl-space C<$x = ''>, but with several optimisations. | |
289 | ||
290 | =item * | |
291 | ||
292 | All parts of the internals now agree that the C<sassign> op is a C<BINOP>; | |
293 | previously it was listed as a C<BASEOP> in F<regen/opcodes>, which meant | |
294 | that several parts of the internals had to be special-cased to accommodate | |
295 | it. This oddity's original motivation was to handle code like C<$x ||= 1>; | |
296 | that is now handled in a simpler way. | |
297 | ||
298 | =item * | |
299 | ||
300 | Several new internal C macros have been added that take a string literal as | |
301 | arguments, alongside existing routines that take the equivalent value as two | |
302 | arguments, a character pointer and a length. The advantage of this is that | |
303 | the length of the string is calculated automatically, rather than having to | |
304 | be done manually. These routines are now used where appropriate across the | |
305 | entire codebase. | |
306 | ||
307 | =item * | |
308 | ||
309 | The code in F<gv.c> that determines whether a variable has a special meaning | |
310 | to Perl has been simplified. | |
311 | ||
312 | =item * | |
313 | ||
314 | The C<DEBUGGING>-mode output for regex compilation and execution has been | |
315 | enhanced. | |
316 | ||
317 | =back | |
318 | ||
319 | =head1 Selected Bug Fixes | |
320 | ||
321 | =over 4 | |
322 | ||
323 | =item * | |
324 | ||
325 | A sub containing a "forward" declaration with the same name (e.g., | |
326 | C<sub c { sub c; }>) could sometimes crash or loop infinitely. [perl | |
327 | #129090] | |
328 | ||
329 | =item * | |
330 | ||
331 | A crash in executing a regex with a floating UTF-8 substring against a | |
332 | target string that also used UTF-8 has been fixed. [perl #129350] | |
333 | ||
334 | =item * | |
335 | ||
336 | Previously, a shebang line like C<#!perl -i u> could be erroneously | |
337 | interpreted as requesting the C<-u> option. This has been fixed. [perl | |
338 | #129336] | |
339 | ||
340 | =item * | |
341 | ||
342 | The regex engine was previously producing incorrect results in some rare | |
343 | situations when backtracking past a trie that matches only one thing; this | |
344 | showed up as capture buffers (C<$1>, C<$2>, etc) erroneously containing data | |
345 | from regex execution paths that weren't actually executed for the final | |
346 | match. [perl #129897] | |
347 | ||
348 | =item * | |
349 | ||
350 | Certain regexes making use of the experimental C<regex_sets> feature could | |
351 | trigger an assertion failure. This has been fixed. [perl #129322] | |
352 | ||
353 | =back | |
354 | ||
355 | =head1 Acknowledgements | |
356 | ||
357 | Perl 5.25.6 represents approximately 4 weeks of development since Perl 5.25.5 | |
358 | and contains approximately 16,000 lines of changes across 300 files from 23 | |
359 | authors. | |
360 | ||
361 | Excluding auto-generated files, documentation and release tools, there were | |
362 | approximately 10,000 lines of changes to 190 .pm, .t, .c and .h files. | |
363 | ||
364 | Perl continues to flourish into its third decade thanks to a vibrant community | |
365 | of users and developers. The following people are known to have contributed the | |
366 | improvements that became Perl 5.25.6: | |
367 | ||
368 | Aaron Crane, Andy Lester, Chris 'BinGOs' Williams, Dagfinn Ilmari Mannsåker, | |
369 | Dan Collins, David Mitchell, François Perrad, Hugo van der Sanden, James E | |
370 | Keenan, James Raspass, Jarkko Hietaniemi, Karl Williamson, Lukas Mai, Nicolas | |
371 | R., Reini Urban, Sawyer X, Sergey Aleynikov, Stevan Little, Steve Hay, Steven | |
372 | Humphrey, Thomas Sibley, Tony Cook, Yves Orton. | |
373 | ||
374 | The list above is almost certainly incomplete as it is automatically generated | |
375 | from version control history. In particular, it does not include the names of | |
376 | the (very much appreciated) contributors who reported issues to the Perl bug | |
377 | tracker. | |
378 | ||
379 | Many of the changes included in this version originated in the CPAN modules | |
380 | included in Perl's core. We're grateful to the entire CPAN community for | |
381 | helping Perl to flourish. | |
382 | ||
383 | For a more complete list of all of Perl's historical contributors, please see | |
384 | the F<AUTHORS> file in the Perl source distribution. | |
385 | ||
386 | =head1 Reporting Bugs | |
387 | ||
388 | If you find what you think is a bug, you might check the perl bug database | |
389 | at L<https://rt.perl.org/> . There may also be information at | |
390 | L<http://www.perl.org/> , the Perl Home Page. | |
391 | ||
392 | If you believe you have an unreported bug, please run the L<perlbug> program | |
393 | included with your release. Be sure to trim your bug down to a tiny but | |
394 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
395 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. | |
396 | ||
397 | If the bug you are reporting has security implications which make it | |
398 | inappropriate to send to a publicly archived mailing list, then see | |
399 | L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> | |
400 | for details of how to report the issue. | |
401 | ||
402 | =head1 SEE ALSO | |
403 | ||
404 | The F<Changes> file for an explanation of how to view exhaustive details on | |
405 | what changed. | |
406 | ||
407 | The F<INSTALL> file for how to build Perl. | |
408 | ||
409 | The F<README> file for general stuff. | |
410 | ||
411 | The F<Artistic> and F<Copying> files for copyright information. | |
412 | ||
413 | =cut |