Commit | Line | Data |
---|---|---|
8a466a49 S |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | perl5280delta - what is new for perl v5.28.0 | |
6 | ||
7 | =head1 DESCRIPTION | |
8 | ||
9 | This document describes differences between the 5.26.0 release and the 5.28.0 | |
10 | release. | |
11 | ||
12 | If you are upgrading from an earlier release such as 5.24.0, first read | |
13 | L<perl5260delta>, which describes differences between 5.24.0 and 5.26.0. | |
14 | ||
15 | =head1 Core Enhancements | |
16 | ||
17 | =head2 Unicode 10.0 is supported | |
18 | ||
19 | A list of changes is at | |
20 | L<http://www.unicode.org/versions/Unicode10.0.0>. | |
21 | ||
22 | =head2 L<C<delete>|perlfunc/delete EXPR> on key/value hash slices | |
23 | ||
24 | L<C<delete>|perlfunc/delete EXPR> can now be used on | |
25 | L<keyE<sol>value hash slices|perldata/KeyE<sol>Value Hash Slices>, | |
26 | returning the keys along with the deleted values. | |
27 | L<[perl #131328]|https://rt.perl.org/Ticket/Display.html?id=131328> | |
28 | ||
29 | =head2 Experimentally, there are now alphabetic synonyms for some regular expression assertions | |
30 | ||
31 | If you find it difficult to remember how to write certain of the pattern | |
32 | assertions, there are now alphabetic synonyms. | |
33 | ||
34 | CURRENT NEW SYNONYMS | |
35 | ------ ------------ | |
36 | (?=...) (*pla:...) or (*positive_lookahead:...) | |
37 | (?!...) (*nla:...) or (*negative_lookahead:...) | |
38 | (?<=...) (*plb:...) or (*positive_lookbehind:...) | |
39 | (?<!...) (*nlb:...) or (*negative_lookbehind:...) | |
40 | (?>...) (*atomic:...) | |
41 | ||
42 | These are considered experimental, so using any of these will raise | |
43 | (unless turned off) a warning in the C<experimental::alpha_assertions> | |
44 | category. | |
45 | ||
46 | =head2 Mixed Unicode scripts are now detectable | |
47 | ||
48 | A mixture of scripts, such as Cyrillic and Latin, in a string is often | |
49 | the sign of a spoofing attack. A new regular expression construct | |
50 | now allows for easy detection of these. For example, you can say | |
51 | ||
52 | qr/(*script_run: \d+ \b )/x | |
53 | ||
54 | And the digits matched will all be from the same set of 10. You won't | |
55 | get a look-alike digit from a different script that has a different | |
56 | value than what it appears to be. | |
57 | ||
58 | Or: | |
59 | ||
60 | qr/(*sr: \b \w+ \b )/x | |
61 | ||
62 | makes sure that all the characters come from the same script. | |
63 | ||
64 | You can also combine script runs with C<(?E<gt>...)> (or | |
65 | C<*atomic:...)>). | |
66 | ||
67 | Instead of writing: | |
68 | ||
69 | (*sr:(?<...)) | |
70 | ||
71 | you can now run: | |
72 | ||
73 | (*asr:...) | |
74 | # or | |
75 | (*atomic_script_run:...) | |
76 | ||
77 | This is considered experimental, so using it will raise (unless turned | |
78 | off) a warning in the C<experimental::script_run> category. | |
79 | ||
80 | See L<perlre/Script Runs>. | |
81 | ||
82 | =head2 In-place editing with C<perl -i> is now safer | |
83 | ||
84 | Previously in-place editing (C<perl -i>) would delete or rename the | |
85 | input file as soon as you started working on a new file. | |
86 | ||
87 | Without backups this would result in loss of data if there was an | |
88 | error, such as a full disk, when writing to the output file. | |
89 | ||
90 | This has changed so that the input file isn't replaced until the | |
91 | output file has been completely written and successfully closed. | |
92 | ||
93 | This works by creating a work file in the same directory, which is | |
94 | renamed over the input file once the output file is complete. | |
95 | ||
96 | Incompatibilities: | |
97 | ||
98 | =over | |
99 | ||
100 | =item * | |
101 | ||
102 | Since this renaming needs to only happen once, if you create a thread | |
103 | or child process, that renaming will only happen in the original | |
104 | thread or process. | |
105 | ||
106 | =item * | |
107 | ||
108 | If you change directories while processing a file, and your operating | |
109 | system doesn't provide the C<unlinkat()>, C<renameat()> and C<fchmodat()> | |
110 | functions, the final rename step may fail. | |
111 | ||
112 | =back | |
113 | ||
114 | L<[perl #127663]|https://rt.perl.org/Public/Bug/Display.html?id=127663> | |
115 | ||
116 | =head2 Initialisation of aggregate state variables | |
117 | ||
118 | A persistent lexical array or hash variable can now be initialized, | |
119 | by an expression such as C<state @a = qw(x y z)>. Initialization of a | |
120 | list of persistent lexical variables is still not possible. | |
121 | ||
122 | =head2 Full-size inode numbers | |
123 | ||
124 | On platforms where inode numbers are of a type larger than perl's native | |
125 | integer numerical types, L<stat|perlfunc/stat> will preserve the full | |
126 | content of large inode numbers by returning them in the form of strings of | |
127 | decimal digits. Exact comparison of inode numbers can thus be achieved by | |
128 | comparing with C<eq> rather than C<==>. Comparison with C<==>, and other | |
129 | numerical operations (which are usually meaningless on inode numbers), | |
130 | work as well as they did before, which is to say they fall back to | |
131 | floating point, and ultimately operate on a fairly useless rounded inode | |
132 | number if the real inode number is too big for the floating point format. | |
133 | ||
134 | =head2 The C<sprintf> C<%j> format size modifier is now available with pre-C99 compilers | |
135 | ||
136 | The actual size used depends on the platform, so remains unportable. | |
137 | ||
138 | =head2 Close-on-exec flag set atomically | |
139 | ||
140 | When opening a file descriptor, perl now generally opens it with its | |
141 | close-on-exec flag already set, on platforms that support doing so. | |
142 | This improves thread safety, because it means that an C<exec> initiated | |
143 | by one thread can no longer cause a file descriptor in the process | |
144 | of being opened by another thread to be accidentally passed to the | |
145 | executed program. | |
146 | ||
147 | Additionally, perl now sets the close-on-exec flag more reliably, whether | |
148 | it does so atomically or not. Most file descriptors were getting the | |
149 | flag set, but some were being missed. | |
150 | ||
151 | =head2 String- and number-specific bitwise ops are no longer experimental | |
152 | ||
153 | The new string-specific (C<&. |. ^. ~.>) and number-specific (C<& | ^ ~>) | |
154 | bitwise operators introduced in Perl 5.22 that are available within the | |
155 | scope of C<use feature 'bitwise'> are no longer experimental. | |
156 | Because the number-specific ops are spelled the same way as the existing | |
157 | operators that choose their behaviour based on their operands, these | |
158 | operators must still be enabled via the "bitwise" feature, in either of | |
159 | these two ways: | |
160 | ||
161 | use feature "bitwise"; | |
162 | ||
163 | use v5.28; # "bitwise" now included | |
164 | ||
165 | They are also now enabled by the B<-E> command-line switch. | |
166 | ||
167 | The "bitwise" feature no longer emits a warning. Existing code that | |
168 | disables the "experimental::bitwise" warning category that the feature | |
169 | previously used will continue to work. | |
170 | ||
171 | One caveat that module authors ought to be aware of is that the numeric | |
172 | operators now pass a fifth TRUE argument to overload methods. Any methods | |
173 | that check the number of operands may croak if they do not expect so many. | |
174 | XS authors in particular should be aware that this: | |
175 | ||
176 | SV * | |
177 | bitop_handler (lobj, robj, swap) | |
178 | ||
179 | may need to be changed to this: | |
180 | ||
181 | SV * | |
182 | bitop_handler (lobj, robj, swap, ...) | |
183 | ||
184 | =head2 Locales are now thread-safe on systems that support them | |
185 | ||
186 | These systems include Windows starting with Visual Studio 2005, and in | |
187 | POSIX 2008 systems. | |
188 | ||
189 | The implication is that you are now free to use locales and change them | |
190 | in a threaded environment. Your changes affect only your thread. | |
191 | See L<perllocale/Multi-threaded operation> | |
192 | ||
193 | =head2 New read-only predefined variable C<${^SAFE_LOCALES}> | |
194 | ||
195 | This variable is 1 if the Perl interpreter is operating in an | |
196 | environment where it is safe to use and change locales (see | |
197 | L<perllocale>.) This variable is true when the perl is | |
198 | unthreaded, or compiled in a platform that supports thread-safe locale | |
199 | operation (see previous item). | |
200 | ||
201 | =head1 Security | |
202 | ||
203 | =head2 [CVE-2017-12837] Heap buffer overflow in regular expression compiler | |
204 | ||
205 | Compiling certain regular expression patterns with the case-insensitive | |
206 | modifier could cause a heap buffer overflow and crash perl. This has now been | |
207 | fixed. | |
208 | L<[perl #131582]|https://rt.perl.org/Public/Bug/Display.html?id=131582> | |
209 | ||
210 | =head2 [CVE-2017-12883] Buffer over-read in regular expression parser | |
211 | ||
212 | For certain types of syntax error in a regular expression pattern, the error | |
213 | message could either contain the contents of a random, possibly large, chunk of | |
214 | memory, or could crash perl. This has now been fixed. | |
215 | L<[perl #131598]|https://rt.perl.org/Public/Bug/Display.html?id=131598> | |
216 | ||
217 | =head2 [CVE-2017-12814] C<$ENV{$key}> stack buffer overflow on Windows | |
218 | ||
219 | A possible stack buffer overflow in the C<%ENV> code on Windows has been fixed | |
220 | by removing the buffer completely since it was superfluous anyway. | |
221 | L<[perl #131665]|https://rt.perl.org/Public/Bug/Display.html?id=131665> | |
222 | ||
223 | =head2 Default Hash Function Change | |
224 | ||
225 | Perl 5.28.0 retires various older hash functions which are not viewed as | |
226 | sufficiently secure for use in Perl. We now support four general purpose | |
227 | hash functions, Siphash (2-4 and 1-3 variants), and Zaphod32, and StadtX | |
228 | hash. In addition we support SBOX32 (a form of tabular hashing) for hashing | |
229 | short strings, in conjunction with any of the other hash functions provided. | |
230 | ||
231 | By default Perl is configured to support SBOX hashing of strings up to 24 | |
232 | characters, in conjunction with StadtX hashing on 64 bit builds, and | |
233 | Zaphod32 hashing for 32 bit builds. | |
234 | ||
235 | You may control these settings with the following options to Configure: | |
236 | ||
237 | -DPERL_HASH_FUNC_SIPHASH | |
238 | -DPERL_HASH_FUNC_SIPHASH13 | |
239 | -DPERL_HASH_FUNC_STADTX | |
240 | -DPERL_HASH_FUNC_ZAPHOD32 | |
241 | ||
242 | To disable SBOX hashing you can use | |
243 | ||
244 | -DPERL_HASH_USE_SBOX32_ALSO=0 | |
245 | ||
246 | And to set the maximum length to use SBOX32 hashing on with: | |
247 | ||
248 | -DSBOX32_MAX_LEN=16 | |
249 | ||
250 | The maximum length allowed is 256. There probably isn't much point | |
251 | in setting it higher than the default. | |
252 | ||
253 | =head1 Incompatible Changes | |
254 | ||
255 | =head2 Subroutine attribute and signature order | |
256 | ||
257 | The experimental subroutine signatures feature has been changed so that | |
258 | subroutine attributes must now come before the signature rather than | |
259 | after. This is because attributes like C<:lvalue> can affect the | |
260 | compilation of code within the signature, for example: | |
261 | ||
262 | sub f :lvalue ($a = do { $x = "abc"; return substr($x,0,1)}) { ...} | |
263 | ||
264 | Note that this the second time they have been flipped: | |
265 | ||
266 | sub f :lvalue ($a, $b) { ... }; # 5.20; 5.28 onwards | |
267 | sub f ($a, $b) :lvalue { ... }; # 5.22 - 5.26 | |
268 | ||
269 | =head2 Comma-less variable lists in formats are no longer allowed | |
270 | ||
271 | Omitting the commas between variables passed to formats is no longer | |
272 | allowed. This has been deprecated since Perl 5.000. | |
273 | ||
274 | =head2 The C<:locked> and C<:unique> attributes have been removed | |
275 | ||
276 | These have been no-ops and deprecated since Perl 5.12 and 5.10, | |
277 | respectively. | |
278 | ||
279 | =head2 C<\N{}> with nothing between the braces is now illegal | |
280 | ||
281 | This has been deprecated since Perl 5.24. | |
282 | ||
283 | =head2 Opening the same symbol as both a file and directory handle is no longer allowed | |
284 | ||
285 | Using C<open()> and C<opendir()> to associate both a filehandle and a dirhandle | |
286 | to the same symbol (glob or scalar) has been deprecated since Perl 5.10. | |
287 | ||
288 | =head2 Use of bare C<< << >> to mean C<< <<"" >> is no longer allowed | |
289 | ||
290 | Use of a bare terminator has been deprecated since Perl 5.000. | |
291 | ||
292 | =head2 Setting $/ to a reference to a non-positive integer no longer allowed | |
293 | ||
294 | This used to work like setting it to C<undef>, but has been deprecated | |
295 | since Perl 5.20. | |
296 | ||
297 | =head2 Unicode code points with values exceeding C<IV_MAX> are now fatal | |
298 | ||
299 | This was deprecated since Perl 5.24. | |
300 | ||
301 | =head2 The C<B::OP::terse> method has been removed | |
302 | ||
303 | Use C<B::Concise::b_terse> instead. | |
304 | ||
305 | =head2 Use of inherited AUTOLOAD for non-methods is no longer allowed | |
306 | ||
307 | This was deprecated in Perl 5.004. | |
308 | ||
309 | =head2 Use of strings with code points over 0xFF is not allowed for bitwise string operators | |
310 | ||
311 | Code points over C<0xFF> do not make sense for bitwise operators and such | |
312 | an operation will now croak, except for a few remaining cases. See | |
313 | L<perldeprecation>. | |
314 | ||
315 | This was deprecated in Perl 5.24. | |
316 | ||
317 | =head2 Setting C<${^ENCODING}> to a defined value is now illegal | |
318 | ||
319 | This has been deprecated since Perl 5.22 and a no-op since Perl 5.26. | |
320 | ||
321 | =head2 Backslash no longer escapes colon in PATH for the C<-S> switch | |
322 | ||
323 | Previously the C<-S> switch incorrectly treated backslash ("\") as an | |
324 | escape for colon when traversing the C<PATH> environment variable. | |
325 | L<[perl #129183]|https://rt.perl.org/Ticket/Display.html?id=129183> | |
326 | ||
327 | =head2 the -DH (DEBUG_H) misfeature has been removed | |
328 | ||
329 | On a perl built with debugging support, the C<H> flag to the C<-D> | |
330 | debugging option has been removed. This was supposed to dump hash values, | |
331 | but has been broken for many years. | |
332 | ||
333 | =head2 Yada-yada is now strictly a statement | |
334 | ||
335 | By the time of its initial stable release in Perl 5.12, the C<...> | |
336 | (yada-yada) operator was explicitly intended to serve as a statement, | |
337 | not an expression. However, the original implementation was confused | |
338 | on this point, leading to inconsistent parsing. The operator was | |
339 | accidentally accepted in a few situations where it did not serve as a | |
340 | complete statement, such as | |
341 | ||
342 | ... . "foo"; | |
343 | ... if $a < $b; | |
344 | ||
345 | The parsing has now been made consistent, permitting yada-yada only as | |
346 | a statement. Affected code can use C<do{...}> to put a yada-yada into | |
347 | an arbitrary expression context. | |
348 | ||
349 | =head2 Sort algorithm can no longer be specified | |
350 | ||
351 | Since Perl 5.8, the L<sort> pragma has had subpragmata C<_mergesort>, | |
352 | C<_quicksort>, and C<_qsort> that can be used to specify which algorithm | |
353 | perl should use to implement the L<sort|perlfunc/sort> builtin. | |
354 | This was always considered a dubious feature that might not last, | |
355 | hence the underscore spellings, and they were documented as not being | |
356 | portable beyond Perl 5.8. These subpragmata have now been deleted, | |
357 | and any attempt to use them is an error. The L<sort> pragma otherwise | |
358 | remains, and the algorithm-neutral C<stable> subpragma can be used to | |
359 | control sorting behaviour. | |
360 | L<[perl #119635]|https://rt.perl.org/Ticket/Display.html?id=119635> | |
361 | ||
362 | =head2 Over-radix digits in floating point literals | |
363 | ||
364 | Octal and binary floating point literals used to permit any hexadecimal | |
365 | digit to appear after the radix point. The digits are now restricted | |
366 | to those appropriate for the radix, as digits before the radix point | |
367 | always were. | |
368 | ||
369 | =head2 Return type of C<unpackstring()> | |
370 | ||
371 | The return types of the C API functions C<unpackstring()> and | |
372 | C<unpack_str()> have changed from C<I32> to C<SSize_t>, in order to | |
373 | accommodate datasets of more than two billion items. | |
374 | ||
375 | =head1 Deprecations | |
376 | ||
377 | =head2 Use of L<C<vec>|perlfunc/vec EXPR,OFFSET,BITS> on strings with code points above 0xFF is deprecated | |
378 | ||
379 | Such strings are represented internally in UTF-8, and C<vec> is a | |
380 | bit-oriented operation that will likely give unexpected results on those | |
381 | strings. | |
382 | ||
383 | =head2 Some uses of unescaped C<"{"> in regexes are no longer fatal | |
384 | ||
385 | Perl 5.26.0 fatalized some uses of an unescaped left brace, but an | |
386 | exception was made at the last minute, specifically crafted to be a | |
387 | minimal change to allow GNU Autoconf to work. That tool is heavily | |
388 | depended upon, and continues to use the deprecated usage. Its use of an | |
389 | unescaped left brace is one where we have no intention of repurposing | |
390 | C<"{"> to be something other than itself. | |
391 | ||
392 | That exception is now generalized to include various other such cases | |
393 | where the C<"{"> will not be repurposed. | |
394 | ||
395 | Note that these uses continue to raise a deprecation message. | |
396 | ||
397 | =head2 Use of unescaped C<"{"> immediately after a C<"("> in regular expression patterns is deprecated | |
398 | ||
399 | Using unescaped left braces is officially deprecated everywhere, but it | |
400 | is not enforced in contexts where their use does not interfere with | |
401 | expected extensions to the language. A deprecation is added in this | |
402 | release when the brace appears immediately after an opening parenthesis. | |
403 | Before this, even if the brace was part of a legal quantifier, it was | |
404 | not interpreted as such, but as the literal characters, unlike other | |
405 | quantifiers that follow a C<"("> which are considered errors. Now, | |
406 | their use will raise a deprecation message, unless turned off. | |
407 | ||
408 | =head2 Assignment to C<$[> will be fatal in Perl 5.30 | |
409 | ||
410 | Assigning a non-zero value to L<C<$[>|perlvar/$[> has been deprecated | |
411 | since Perl 5.12, but was never given a deadline for removal. This has | |
412 | now been scheduled for Perl 5.30. | |
413 | ||
414 | =head2 hostname() won't accept arguments in Perl 5.32 | |
415 | ||
416 | Passing arguments to C<Sys::Hostname::hostname()> was already deprecated, | |
417 | but didn't have a removal date. This has now been scheduled for Perl | |
418 | 5.32. L<[perl #124349]|https://rt.perl.org/Ticket/Display.html?id=124349> | |
419 | ||
420 | =head2 Module removals | |
421 | ||
422 | The following modules will be removed from the core distribution in a | |
423 | future release, and will at that time need to be installed from CPAN. | |
424 | Distributions on CPAN which require these modules will need to list them as | |
425 | prerequisites. | |
426 | ||
427 | The core versions of these modules will now issue C<"deprecated">-category | |
428 | warnings to alert you to this fact. To silence these deprecation warnings, | |
429 | install the modules in question from CPAN. | |
430 | ||
431 | Note that these are (with rare exceptions) fine modules that you are encouraged | |
432 | to continue to use. Their disinclusion from core primarily hinges on their | |
433 | necessity to bootstrapping a fully functional, CPAN-capable Perl installation, | |
434 | not usually on concerns over their design. | |
435 | ||
436 | =over | |
437 | ||
438 | =item B::Debug | |
439 | ||
440 | =item L<Locale::Codes> and its associated Country, Currency and Language modules | |
441 | ||
442 | =back | |
443 | ||
444 | =head1 Performance Enhancements | |
445 | ||
446 | =over 4 | |
447 | ||
448 | =item * | |
449 | ||
450 | The start up overhead for creating regular expression patterns with | |
451 | Unicode properties (C<\p{...}>) has been greatly reduced in most cases. | |
452 | ||
453 | =item * | |
454 | ||
455 | Many string concatenation expressions are now considerably faster, due | |
456 | to the introduction internally of a C<multiconcat> opcode which combines | |
457 | multiple concatenations, and optionally a C<=> or C<.=>, into a single | |
458 | action. For example, apart from retrieving C<$s>, C<$a> and C<$b>, this | |
459 | whole expression is now handled as a single op: | |
460 | ||
461 | $s .= "a=$a b=$b\n" | |
462 | ||
463 | As a special case, if the LHS of an assignment is a lexical variable or | |
464 | C<my $s>, the op itself handles retrieving the lexical variable, which | |
465 | is faster. | |
466 | ||
467 | In general, the more the expression includes a mix of constant strings and | |
468 | variable expressions, the longer the expression, and the more it mixes | |
469 | together non-utf8 and utf8 strings, the more marked the performance | |
470 | improvement. For example on a C<x86_64> system, this code has been | |
471 | benchmarked running four times faster: | |
472 | ||
473 | my $s; | |
474 | my $a = "ab\x{100}cde"; | |
475 | my $b = "fghij"; | |
476 | my $c = "\x{101}klmn"; | |
477 | ||
478 | for my $i (1..10_000_000) { | |
479 | $s = "\x{100}wxyz"; | |
480 | $s .= "foo=$a bar=$b baz=$c"; | |
481 | } | |
482 | ||
483 | In addition, C<sprintf> expressions which have a constant format | |
484 | containing only C<%s> and C<%%> format elements, and which have a fixed | |
485 | number of arguments, are now also optimised into a C<multiconcat> op. | |
486 | ||
487 | =item * | |
488 | ||
489 | The C<ref()> builtin is now much faster in boolean context, since it no | |
490 | longer bothers to construct a temporary string like C<Foo=ARRAY(0x134af48)>. | |
491 | ||
492 | =item * | |
493 | ||
494 | C<keys()> in void and scalar contexts is now more efficient. | |
495 | ||
496 | =item * | |
497 | ||
498 | The common idiom of comparing the result of index() with -1 is now | |
499 | specifically optimised, e.g. | |
500 | ||
501 | if (index(...) != -1) { ... } | |
502 | ||
503 | =item * | |
504 | ||
505 | C<for()> loops and similar constructs are now more efficient in most cases. | |
506 | ||
507 | =item * | |
508 | ||
509 | L<File::Glob> has been modified to remove unnecessary backtracking and | |
510 | recursion, thanks to Russ Cox. See L<https://research.swtch.com/glob> | |
511 | for more details. | |
512 | ||
513 | =item * | |
514 | ||
515 | The XS-level C<SvTRUE()> API function is now more efficient. | |
516 | ||
517 | =item * | |
518 | ||
519 | Various integer-returning ops are now more efficient in scalar/boolean context. | |
520 | ||
521 | =item * | |
522 | ||
523 | Slightly improved performance when parsing stash names. | |
524 | L<[perl #129990]|https://rt.perl.org/Public/Bug/Display.html?id=129990> | |
525 | ||
526 | =item * | |
527 | ||
528 | Calls to C<require> for an already loaded module are now slightly faster. | |
529 | L<[perl #132171]|https://rt.perl.org/Public/Bug/Display.html?id=132171> | |
530 | ||
531 | =item * | |
532 | ||
533 | The performance of pattern matching C<[[:ascii:]]> and C<[[:^ascii:]]> | |
534 | has been improved significantly except on EBCDIC platforms. | |
535 | ||
536 | =item * | |
537 | ||
538 | Various optimizations have been applied to matching regular expression | |
539 | patterns, so under the right circumstances, significant performance | |
540 | gains may be noticed. But in an application with many varied patterns, | |
541 | little overall improvement likely will be seen. | |
542 | ||
543 | =item * | |
544 | ||
545 | Other optimizations have been applied to UTF-8 handling, but these are | |
546 | not typically a major factor in most applications. | |
547 | ||
548 | =back | |
549 | ||
550 | =head1 Modules and Pragmata | |
551 | ||
552 | Key highlights in this release across several modules: | |
553 | ||
554 | =head2 Removal of use vars | |
555 | ||
556 | The usage of C<use vars> has been discouraged since the introduction of | |
557 | C<our> in Perl 5.6.0. Where possible the usage of this pragma has now been | |
558 | removed from the Perl source code. | |
559 | ||
560 | This had a slight effect (for the better) on the output of WARNING_BITS in | |
561 | L<B::Deparse>. | |
562 | ||
563 | =head2 Use of DynaLoader changed to XSLoader in many modules | |
564 | ||
565 | XSLoader is more modern, and most modules already require perl 5.6 or | |
566 | greater, so no functionality is lost by switching. In some cases, we have | |
567 | also made changes to the local implementation that may not be reflected in | |
568 | the version on CPAN due to a desire to maintain more backwards | |
569 | compatibility. | |
570 | ||
571 | =head2 Updated Modules and Pragmata | |
572 | ||
573 | =over 4 | |
574 | ||
575 | =item * | |
576 | ||
577 | L<Archive::Tar> has been upgraded from version 2.24 to 2.30. | |
578 | ||
579 | This update also handled CVE-2018-12015: directory traversal | |
580 | vulnerability. | |
581 | L<[cpan #125523]|https://rt.cpan.org/Ticket/Display.html?id=125523> | |
582 | ||
583 | =item * | |
584 | ||
585 | L<arybase> has been upgraded from version 0.12 to 0.15. | |
586 | ||
587 | =item * | |
588 | ||
589 | L<Attribute::Handlers> has been upgraded from version 0.99 to 1.01. | |
590 | ||
591 | =item * | |
592 | ||
593 | L<attributes> has been upgraded from version 0.29 to 0.33. | |
594 | ||
595 | =item * | |
596 | ||
597 | L<B> has been upgraded from version 1.68 to 1.74. | |
598 | ||
599 | =item * | |
600 | ||
601 | L<B::Concise> has been upgraded from version 0.999 to 1.003. | |
602 | ||
603 | =item * | |
604 | ||
605 | L<B::Debug> has been upgraded from version 1.24 to 1.26. | |
606 | ||
607 | NOTE: L<B::Debug> is deprecated and may be removed from a future version | |
608 | of Perl. | |
609 | ||
610 | =item * | |
611 | ||
612 | L<B::Deparse> has been upgraded from version 1.40 to 1.48. | |
613 | ||
614 | It includes many bug fixes, and in particular, it now deparses variable | |
615 | attributes correctly: | |
616 | ||
617 | my $x :foo; # used to deparse as | |
618 | # 'attributes'->import('main', \$x, 'foo'), my $x; | |
619 | ||
620 | =item * | |
621 | ||
622 | L<base> has been upgraded from version 2.25 to 2.27. | |
623 | ||
624 | =item * | |
625 | ||
626 | L<bignum> has been upgraded from version 0.47 to 0.49. | |
627 | ||
628 | =item * | |
629 | ||
630 | L<blib> has been upgraded from version 1.06 to 1.07. | |
631 | ||
632 | =item * | |
633 | ||
634 | L<bytes> has been upgraded from version 1.05 to 1.06. | |
635 | ||
636 | =item * | |
637 | ||
638 | L<Carp> has been upgraded from version 1.42 to 1.50. | |
639 | ||
640 | If a package on the call stack contains a constant named C<ISA>, Carp no | |
641 | longer throws a "Not a GLOB reference" error. | |
642 | ||
643 | L<Carp>, when generating stack traces, now attempts to work around | |
644 | longstanding bugs resulting from Perl's non-reference-counted stack. | |
645 | L<[perl #52610]|https://rt.perl.org/Ticket/Display.html?id=52610> | |
646 | ||
647 | Carp has been modified to avoid assuming that objects cannot be | |
648 | overloaded without the L<overload> module loaded (this can happen with | |
649 | objects created by XS modules). Previously, infinite recursion would | |
650 | result if an XS-defined overload method itself called Carp. | |
651 | L<[perl #132828]|https://rt.perl.org/Ticket/Display.html?id=132828> | |
652 | ||
653 | Carp now avoids using C<overload::StrVal>, partly because older versions | |
654 | of L<overload> (included with perl 5.14 and earlier) load L<Scalar::Util> | |
655 | at run time, which will fail if Carp has been invoked after a syntax error. | |
656 | ||
657 | =item * | |
658 | ||
659 | L<charnames> has been upgraded from version 1.44 to 1.45. | |
660 | ||
661 | =item * | |
662 | ||
663 | L<Compress::Raw::Zlib> has been upgraded from version 2.074 to 2.076. | |
664 | ||
665 | This addresses a security vulnerability in older versions of the 'zlib' library | |
666 | (which is bundled with Compress-Raw-Zlib). | |
667 | ||
668 | =item * | |
669 | ||
670 | L<Config::Extensions> has been upgraded from version 0.01 to 0.02. | |
671 | ||
672 | =item * | |
673 | ||
674 | L<Config::Perl::V> has been upgraded from version 0.28 to 0.29. | |
675 | ||
676 | =item * | |
677 | ||
678 | L<CPAN> has been upgraded from version 2.18 to 2.20. | |
679 | ||
680 | =item * | |
681 | ||
682 | L<Data::Dumper> has been upgraded from version 2.167 to 2.170. | |
683 | ||
684 | Quoting of glob names now obeys the Useqq option | |
685 | L<[perl #119831]|https://rt.perl.org/Ticket/Display.html?id=119831>. | |
686 | ||
687 | Attempts to set an option to C<undef> through a combined getter/setter | |
688 | method are no longer mistaken for getter calls | |
689 | L<[perl #113090]|https://rt.perl.org/Ticket/Display.html?id=113090>. | |
690 | ||
691 | =item * | |
692 | ||
693 | L<Devel::Peek> has been upgraded from version 1.26 to 1.27. | |
694 | ||
695 | =item * | |
696 | ||
697 | L<Devel::PPPort> has been upgraded from version 3.35 to 3.40. | |
698 | ||
699 | L<Devel::PPPort> has moved from cpan-first to perl-first maintenance | |
700 | ||
701 | Primary responsibility for the code in Devel::PPPort has moved into core perl. | |
702 | In a practical sense there should be no change except that hopefully it will | |
703 | stay more up to date with changes made to symbols in perl, rather than needing | |
704 | to be updated after the fact. | |
705 | ||
706 | =item * | |
707 | ||
708 | L<Digest::SHA> has been upgraded from version 5.96 to 6.01. | |
709 | ||
710 | =item * | |
711 | ||
712 | L<DirHandle> has been upgraded from version 1.04 to 1.05. | |
713 | ||
714 | =item * | |
715 | ||
716 | L<DynaLoader> has been upgraded from version 1.42 to 1.45. | |
717 | ||
718 | Its documentation now shows the use of C<__PACKAGE__> and direct object | |
719 | syntax | |
720 | L<[perl #132247]|https://rt.perl.org/Ticket/Display.html?id=132247>. | |
721 | ||
722 | =item * | |
723 | ||
724 | L<Encode> has been upgraded from version 2.88 to 2.97. | |
725 | ||
726 | =item * | |
727 | ||
728 | L<encoding> has been upgraded from version 2.19 to 2.22. | |
729 | ||
730 | =item * | |
731 | ||
732 | L<Errno> has been upgraded from version 1.28 to 1.29. | |
733 | ||
734 | =item * | |
735 | ||
736 | L<experimental> has been upgraded from version 0.016 to 0.019. | |
737 | ||
738 | =item * | |
739 | ||
740 | L<Exporter> has been upgraded from version 5.72 to 5.73. | |
741 | ||
742 | =item * | |
743 | ||
744 | L<ExtUtils::CBuilder> has been upgraded from version 0.280225 to 0.280230. | |
745 | ||
746 | =item * | |
747 | ||
748 | L<ExtUtils::Constant> has been upgraded from version 0.23 to 0.25. | |
749 | ||
750 | =item * | |
751 | ||
752 | L<ExtUtils::Embed> has been upgraded from version 1.34 to 1.35. | |
753 | ||
754 | =item * | |
755 | ||
756 | L<ExtUtils::Install> has been upgraded from version 2.04 to 2.14. | |
757 | ||
758 | =item * | |
759 | ||
760 | L<ExtUtils::MakeMaker> has been upgraded from version 7.24 to 7.34. | |
761 | ||
762 | =item * | |
763 | ||
764 | L<ExtUtils::Miniperl> has been upgraded from version 1.06 to 1.08. | |
765 | ||
766 | =item * | |
767 | ||
768 | L<ExtUtils::ParseXS> has been upgraded from version 3.34 to 3.39. | |
769 | ||
770 | =item * | |
771 | ||
772 | L<ExtUtils::Typemaps> has been upgraded from version 3.34 to 3.38. | |
773 | ||
774 | =item * | |
775 | ||
776 | L<ExtUtils::XSSymSet> has been upgraded from version 1.3 to 1.4. | |
777 | ||
778 | =item * | |
779 | ||
780 | L<feature> has been upgraded from version 1.47 to 1.52. | |
781 | ||
782 | =item * | |
783 | ||
784 | L<fields> has been upgraded from version 2.23 to 2.24. | |
785 | ||
786 | =item * | |
787 | ||
788 | L<File::Copy> has been upgraded from version 2.32 to 2.33. | |
789 | ||
790 | It will now use the sub-second precision variant of utime() supplied by | |
791 | L<Time::HiRes> where available. | |
792 | L<[perl #132401]|https://rt.perl.org/Ticket/Display.html?id=132401>. | |
793 | ||
794 | =item * | |
795 | ||
796 | L<File::Fetch> has been upgraded from version 0.52 to 0.56. | |
797 | ||
798 | =item * | |
799 | ||
800 | L<File::Glob> has been upgraded from version 1.28 to 1.31. | |
801 | ||
802 | =item * | |
803 | ||
804 | L<File::Path> has been upgraded from version 2.12_01 to 2.15. | |
805 | ||
806 | =item * | |
807 | ||
808 | L<File::Spec> and L<Cwd> have been upgraded from version 3.67 to 3.74. | |
809 | ||
810 | =item * | |
811 | ||
812 | L<File::stat> has been upgraded from version 1.07 to 1.08. | |
813 | ||
814 | =item * | |
815 | ||
816 | L<FileCache> has been upgraded from version 1.09 to 1.10. | |
817 | ||
818 | =item * | |
819 | ||
820 | L<Filter::Simple> has been upgraded from version 0.93 to 0.95. | |
821 | ||
822 | =item * | |
823 | ||
824 | L<Filter::Util::Call> has been upgraded from version 1.55 to 1.58. | |
825 | ||
826 | =item * | |
827 | ||
828 | L<GDBM_File> has been upgraded from version 1.15 to 1.17. | |
829 | ||
830 | Its documentation now explains that C<each> and C<delete> don't mix in | |
831 | hashes tied to this module | |
832 | L<[perl #117449]|https://rt.perl.org/Ticket/Display.html?id=117449>. | |
833 | ||
834 | It will now retry opening with an acceptable block size if asking gdbm | |
835 | to default the block size failed | |
836 | L<[perl #119623]|https://rt.perl.org/Ticket/Display.html?id=119623>. | |
837 | ||
838 | =item * | |
839 | ||
840 | L<Getopt::Long> has been upgraded from version 2.49 to 2.5. | |
841 | ||
842 | =item * | |
843 | ||
844 | L<Hash::Util::FieldHash> has been upgraded from version 1.19 to 1.20. | |
845 | ||
846 | =item * | |
847 | ||
848 | L<I18N::Langinfo> has been upgraded from version 0.13 to 0.17. | |
849 | ||
850 | This module is now available on all platforms, emulating the system | |
851 | L<nl_langinfo(3)> on systems that lack it. Some caveats apply, as | |
852 | L<detailed in its documentation|I18N::Langinfo>, the most severe being | |
853 | that, except for MS Windows, the C<CODESET> item is not implemented on | |
854 | those systems, always returning C<"">. | |
855 | ||
856 | It now sets the UTF-8 flag in its returned scalar if the string contains | |
857 | legal non-ASCII UTF-8, and the locale is UTF-8 | |
858 | L<[perl #127288]|https://rt.perl.org/Ticket/Display.html?id=127288>. | |
859 | ||
860 | This update also fixes a bug in which the underlying locale was ignored | |
861 | for the C<RADIXCHAR> (always was returned as a dot) and the C<THOUSEP> | |
862 | (always empty). Now the locale-appropriate values are returned. | |
863 | ||
864 | =item * | |
865 | ||
866 | L<I18N::LangTags> has been upgraded from version 0.42 to 0.43. | |
867 | ||
868 | =item * | |
869 | ||
870 | L<if> has been upgraded from version 0.0606 to 0.0608. | |
871 | ||
872 | =item * | |
873 | ||
874 | L<IO> has been upgraded from version 1.38 to 1.39. | |
875 | ||
876 | =item * | |
877 | ||
878 | L<IO::Socket::IP> has been upgraded from version 0.38 to 0.39. | |
879 | ||
880 | =item * | |
881 | ||
882 | L<IPC::Cmd> has been upgraded from version 0.96 to 1.00. | |
883 | ||
884 | =item * | |
885 | ||
886 | L<JSON::PP> has been upgraded from version 2.27400_02 to 2.97001. | |
887 | ||
888 | =item * | |
889 | ||
890 | The C<libnet> distribution has been upgraded from version 3.10 to 3.11. | |
891 | ||
892 | =item * | |
893 | ||
894 | L<List::Util> has been upgraded from version 1.46_02 to 1.49. | |
895 | ||
896 | =item * | |
897 | ||
898 | L<Locale::Codes> has been upgraded from version 3.42 to 3.56. | |
899 | ||
900 | B<NOTE>: L<Locale::Codes> scheduled to be removed from core in Perl 5.30. | |
901 | ||
902 | =item * | |
903 | ||
904 | L<Locale::Maketext> has been upgraded from version 1.28 to 1.29. | |
905 | ||
906 | =item * | |
907 | ||
908 | L<Math::BigInt> has been upgraded from version 1.999806 to 1.999811. | |
909 | ||
910 | =item * | |
911 | ||
912 | L<Math::BigInt::FastCalc> has been upgraded from version 0.5005 to 0.5006. | |
913 | ||
914 | =item * | |
915 | ||
916 | L<Math::BigRat> has been upgraded from version 0.2611 to 0.2613. | |
917 | ||
918 | =item * | |
919 | ||
920 | L<Module::CoreList> has been upgraded from version 5.20170530 to 5.20180622. | |
921 | ||
922 | =item * | |
923 | ||
924 | L<mro> has been upgraded from version 1.20 to 1.22. | |
925 | ||
926 | =item * | |
927 | ||
928 | L<Net::Ping> has been upgraded from version 2.55 to 2.62. | |
929 | ||
930 | =item * | |
931 | ||
932 | L<NEXT> has been upgraded from version 0.67 to 0.67_01. | |
933 | ||
934 | =item * | |
935 | ||
936 | L<ODBM_File> has been upgraded from version 1.14 to 1.15. | |
937 | ||
938 | =item * | |
939 | ||
940 | L<Opcode> has been upgraded from version 1.39 to 1.43. | |
941 | ||
942 | =item * | |
943 | ||
944 | L<overload> has been upgraded from version 1.28 to 1.30. | |
945 | ||
946 | =item * | |
947 | ||
948 | L<PerlIO::encoding> has been upgraded from version 0.25 to 0.26. | |
949 | ||
950 | =item * | |
951 | ||
952 | L<PerlIO::scalar> has been upgraded from version 0.26 to 0.29. | |
953 | ||
954 | =item * | |
955 | ||
956 | L<PerlIO::via> has been upgraded from version 0.16 to 0.17. | |
957 | ||
958 | =item * | |
959 | ||
960 | L<Pod::Functions> has been upgraded from version 1.11 to 1.13. | |
961 | ||
962 | =item * | |
963 | ||
964 | L<Pod::Html> has been upgraded from version 1.2202 to 1.24. | |
965 | ||
966 | A title for the HTML document will now be automatically generated by | |
967 | default from a "NAME" section in the POD document, as it used to be | |
968 | before the module was rewritten to use L<Pod::Simple::XHTML> to do the | |
969 | core of its job | |
970 | L<[perl #110520]|https://rt.perl.org/Ticket/Display.html?id=110520>. | |
971 | ||
972 | =item * | |
973 | ||
974 | L<Pod::Perldoc> has been upgraded from version 3.28 to 3.2801. | |
975 | ||
976 | =item * | |
977 | ||
978 | The C<podlators> distribution has been upgraded from version 4.09 to 4.10. | |
979 | ||
980 | Man page references and function names now follow the Linux man page | |
981 | formatting standards, instead of the Solaris standard. | |
982 | ||
983 | =item * | |
984 | ||
985 | L<POSIX> has been upgraded from version 1.76 to 1.84. | |
986 | ||
987 | Some more cautions were added about using locale-specific functions in | |
988 | threaded applications. | |
989 | ||
990 | =item * | |
991 | ||
992 | L<re> has been upgraded from version 0.34 to 0.36. | |
993 | ||
994 | =item * | |
995 | ||
996 | L<Scalar::Util> has been upgraded from version 1.46_02 to 1.50. | |
997 | ||
998 | =item * | |
999 | ||
1000 | L<SelfLoader> has been upgraded from version 1.23 to 1.25. | |
1001 | ||
1002 | =item * | |
1003 | ||
1004 | L<Socket> has been upgraded from version 2.020_03 to 2.027. | |
1005 | ||
1006 | =item * | |
1007 | ||
1008 | L<sort> has been upgraded from version 2.02 to 2.04. | |
1009 | ||
1010 | =item * | |
1011 | ||
1012 | L<Storable> has been upgraded from version 2.62 to 3.08. | |
1013 | ||
1014 | =item * | |
1015 | ||
1016 | L<Sub::Util> has been upgraded from version 1.48 to 1.49. | |
1017 | ||
1018 | =item * | |
1019 | ||
1020 | L<subs> has been upgraded from version 1.02 to 1.03. | |
1021 | ||
1022 | =item * | |
1023 | ||
1024 | L<Sys::Hostname> has been upgraded from version 1.20 to 1.22. | |
1025 | ||
1026 | =item * | |
1027 | ||
1028 | L<Term::ReadLine> has been upgraded from version 1.16 to 1.17. | |
1029 | ||
1030 | =item * | |
1031 | ||
1032 | L<Test> has been upgraded from version 1.30 to 1.31. | |
1033 | ||
1034 | =item * | |
1035 | ||
1036 | L<Test::Harness> has been upgraded from version 3.38 to 3.42. | |
1037 | ||
1038 | =item * | |
1039 | ||
1040 | L<Test::Simple> has been upgraded from version 1.302073 to 1.302133. | |
1041 | ||
1042 | =item * | |
1043 | ||
1044 | L<threads> has been upgraded from version 2.15 to 2.22. | |
1045 | ||
1046 | The documentation now better describes the problems that arise when | |
1047 | returning values from threads, and no longer warns about creating threads | |
1048 | in C<BEGIN> blocks. | |
1049 | L<[perl #96538]|https://rt.perl.org/Ticket/Display.html?id=96538> | |
1050 | ||
1051 | =item * | |
1052 | ||
1053 | L<threads::shared> has been upgraded from version 1.56 to 1.58. | |
1054 | ||
1055 | =item * | |
1056 | ||
1057 | L<Tie::Array> has been upgraded from version 1.06 to 1.07. | |
1058 | ||
1059 | =item * | |
1060 | ||
1061 | L<Tie::StdHandle> has been upgraded from version 4.4 to 4.5. | |
1062 | ||
1063 | =item * | |
1064 | ||
1065 | L<Time::gmtime> has been upgraded from version 1.03 to 1.04. | |
1066 | ||
1067 | =item * | |
1068 | ||
1069 | L<Time::HiRes> has been upgraded from version 1.9741 to 1.9759. | |
1070 | ||
1071 | =item * | |
1072 | ||
1073 | L<Time::localtime> has been upgraded from version 1.02 to 1.03. | |
1074 | ||
1075 | =item * | |
1076 | ||
1077 | L<Time::Piece> has been upgraded from version 1.31 to 1.3204. | |
1078 | ||
1079 | =item * | |
1080 | ||
1081 | L<Unicode::Collate> has been upgraded from version 1.19 to 1.25. | |
1082 | ||
1083 | =item * | |
1084 | ||
1085 | L<Unicode::Normalize> has been upgraded from version 1.25 to 1.26. | |
1086 | ||
1087 | =item * | |
1088 | ||
1089 | L<Unicode::UCD> has been upgraded from version 0.68 to 0.70. | |
1090 | ||
1091 | The function C<num> now accepts an optional parameter to help in | |
1092 | diagnosing error returns. | |
1093 | ||
1094 | =item * | |
1095 | ||
1096 | L<User::grent> has been upgraded from version 1.01 to 1.02. | |
1097 | ||
1098 | =item * | |
1099 | ||
1100 | L<User::pwent> has been upgraded from version 1.00 to 1.01. | |
1101 | ||
1102 | =item * | |
1103 | ||
1104 | L<utf8> has been upgraded from version 1.19 to 1.21. | |
1105 | ||
1106 | =item * | |
1107 | ||
1108 | L<vars> has been upgraded from version 1.03 to 1.04. | |
1109 | ||
1110 | =item * | |
1111 | ||
1112 | L<version> has been upgraded from version 0.9917 to 0.9923. | |
1113 | ||
1114 | =item * | |
1115 | ||
1116 | L<VMS::DCLsym> has been upgraded from version 1.08 to 1.09. | |
1117 | ||
1118 | =item * | |
1119 | ||
1120 | L<VMS::Stdio> has been upgraded from version 2.41 to 2.44. | |
1121 | ||
1122 | =item * | |
1123 | ||
1124 | L<warnings> has been upgraded from version 1.37 to 1.42. | |
1125 | ||
1126 | It now includes new functions with names ending in C<_at_level>, allowing | |
1127 | callers to specify the exact call frame. | |
1128 | L<[perl #132468]|https://rt.perl.org/Ticket/Display.html?id=132468> | |
1129 | ||
1130 | =item * | |
1131 | ||
1132 | L<XS::Typemap> has been upgraded from version 0.15 to 0.16. | |
1133 | ||
1134 | =item * | |
1135 | ||
1136 | L<XSLoader> has been upgraded from version 0.27 to 0.30. | |
1137 | ||
1138 | Its documentation now shows the use of C<__PACKAGE__>, and direct object | |
1139 | syntax for example C<DynaLoader> usage | |
1140 | L<[perl #132247]|https://rt.perl.org/Ticket/Display.html?id=132247>. | |
1141 | ||
1142 | Platforms that use C<mod2fname> to edit the names of loadable | |
1143 | libraries now look for bootstrap (.bs) files under the correct, | |
1144 | non-edited name. | |
1145 | ||
1146 | =back | |
1147 | ||
1148 | =head2 Removed Modules and Pragmata | |
1149 | ||
1150 | =over 4 | |
1151 | ||
1152 | =item * | |
1153 | ||
1154 | The C<VMS::stdio> compatibility shim has been removed. | |
1155 | ||
1156 | =back | |
1157 | ||
1158 | =head1 Documentation | |
1159 | ||
1160 | =head2 Changes to Existing Documentation | |
1161 | ||
1162 | We have attempted to update the documentation to reflect the changes | |
1163 | listed in this document. If you find any we have missed, send email | |
1164 | to L<perlbug@perl.org|mailto:perlbug@perl.org>. | |
1165 | ||
1166 | Additionally, the following selected changes have been made: | |
1167 | ||
1168 | =head3 L<perlapi> | |
1169 | ||
1170 | =over 4 | |
1171 | ||
1172 | =item * | |
1173 | ||
1174 | The API functions C<perl_parse()>, C<perl_run()>, and C<perl_destruct()> | |
1175 | are now documented comprehensively, where previously the only | |
1176 | documentation was a reference to the L<perlembed> tutorial. | |
1177 | ||
1178 | =item * | |
1179 | ||
1180 | The documentation of C<newGIVENOP()> has been belatedly updated to | |
1181 | account for the removal of lexical C<$_>. | |
1182 | ||
1183 | =item * | |
1184 | ||
1185 | The API functions C<newCONSTSUB()> and C<newCONSTSUB_flags()> are | |
1186 | documented much more comprehensively than before. | |
1187 | ||
1188 | =back | |
1189 | ||
1190 | =head3 L<perldata> | |
1191 | ||
1192 | =over 4 | |
1193 | ||
1194 | =item * | |
1195 | ||
1196 | The section "Truth and Falsehood" in L<perlsyn> has been moved into | |
1197 | L<perldata>. | |
1198 | ||
1199 | =back | |
1200 | ||
1201 | =head3 L<perldebguts> | |
1202 | ||
1203 | =over 4 | |
1204 | ||
1205 | =item * | |
1206 | ||
1207 | The description of the conditions under which C<DB::sub()> will be called | |
1208 | has been clarified. | |
1209 | L<[perl #131672]|https://rt.perl.org/Ticket/Display.html?id=131672> | |
1210 | ||
1211 | =back | |
1212 | ||
1213 | =head3 L<perldiag> | |
1214 | ||
1215 | =over 4 | |
1216 | ||
1217 | =item * L<perldiag/Variable length lookbehind not implemented in regex mE<sol>%sE<sol>> | |
1218 | ||
1219 | This now gives more ideas as to workarounds to the issue that was | |
1220 | introduced in Perl 5.18 (but not documented explicitly in its perldelta) | |
1221 | for the fact that some Unicode C</i> rules cause a few sequences such as | |
1222 | ||
1223 | (?<!st) | |
1224 | ||
1225 | to be considered variable length, and hence disallowed. | |
1226 | ||
1227 | =item * "Use of state $_ is experimental" in L<perldiag> | |
1228 | ||
1229 | This entry has been removed, as the experimental support of this construct was | |
1230 | removed in perl 5.24.0. | |
1231 | ||
1232 | =item * | |
1233 | ||
1234 | The diagnostic C<Initialization of state variables in list context | |
1235 | currently forbidden> has changed to C<Initialization of state variables | |
1236 | in list currently forbidden>, because list-context initialization of | |
1237 | single aggregate state variables is now permitted. | |
1238 | ||
1239 | =back | |
1240 | ||
1241 | =head3 L<perlembed> | |
1242 | ||
1243 | =over 4 | |
1244 | ||
1245 | =item * | |
1246 | ||
1247 | The examples in L<perlembed> have been made more portable in the way | |
1248 | they exit, and the example that gets an exit code from the embedded Perl | |
1249 | interpreter now gets it from the right place. The examples that pass | |
1250 | a constructed argv to Perl now show the mandatory null C<argv[argc]>. | |
1251 | ||
1252 | =item * | |
1253 | ||
1254 | An example in L<perlembed> used the string value of C<ERRSV> as a | |
1255 | format string when calling croak(). If that string contains format | |
1256 | codes such as C<%s> this could crash the program. | |
1257 | ||
1258 | This has been changed to a call to croak_sv(). | |
1259 | ||
1260 | An alternative could have been to supply a trivial format string: | |
1261 | ||
1262 | croak("%s", SvPV_nolen(ERRSV)); | |
1263 | ||
1264 | or as a special case for C<ERRSV> simply: | |
1265 | ||
1266 | croak(NULL); | |
1267 | ||
1268 | =back | |
1269 | ||
1270 | =head3 L<perlfunc> | |
1271 | ||
1272 | =over 4 | |
1273 | ||
1274 | =item * | |
1275 | ||
1276 | There is now a note that warnings generated by built-in functions are | |
1277 | documented in L<perldiag> and L<warnings>. | |
1278 | L<[perl #116080]|https://rt.perl.org/Ticket/Display.html?id=116080> | |
1279 | ||
1280 | =item * | |
1281 | ||
1282 | The documentation for the C<exists> operator no longer says that | |
1283 | autovivification behaviour "may be fixed in a future release". | |
1284 | We've determined that we're not going to change the default behaviour. | |
1285 | L<[perl #127712]|https://rt.perl.org/Ticket/Display.html?id=127712> | |
1286 | ||
1287 | =item * | |
1288 | ||
1289 | A couple of small details in the documentation for the C<bless> operator | |
1290 | have been clarified. | |
1291 | L<[perl #124428]|https://rt.perl.org/Ticket/Display.html?id=124428> | |
1292 | ||
1293 | =item * | |
1294 | ||
1295 | The description of C<@INC> hooks in the documentation for C<require> | |
1296 | has been corrected to say that filter subroutines receive a useless | |
1297 | first argument. | |
1298 | L<[perl #115754]|https://rt.perl.org/Ticket/Display.html?id=115754> | |
1299 | ||
1300 | =item * | |
1301 | ||
1302 | The documentation of C<ref> has been rewritten for clarity. | |
1303 | ||
1304 | =item * | |
1305 | ||
1306 | The documentation of C<use> now explains what syntactically qualifies | |
1307 | as a version number for its module version checking feature. | |
1308 | ||
1309 | =item * | |
1310 | ||
1311 | The documentation of C<warn> has been updated to reflect that since Perl | |
1312 | 5.14 it has treated complex exception objects in a manner equivalent | |
1313 | to C<die>. | |
1314 | L<[perl #121372]|https://rt.perl.org/Ticket/Display.html?id=121372> | |
1315 | ||
1316 | =item * | |
1317 | ||
1318 | The documentation of C<die> and C<warn> has been revised for clarity. | |
1319 | ||
1320 | =item * | |
1321 | ||
1322 | The documentation of C<each> has been improved, with a slightly more | |
1323 | explicit description of the sharing of iterator state, and with | |
1324 | caveats regarding the fragility of while-each loops. | |
1325 | L<[perl #132644]|https://rt.perl.org/Ticket/Display.html?id=132644> | |
1326 | ||
1327 | =item * | |
1328 | ||
1329 | Clarification to C<require> was added to explain the differences between | |
1330 | ||
1331 | require Foo::Bar; | |
1332 | require "Foo/Bar.pm"; | |
1333 | ||
1334 | =back | |
1335 | ||
1336 | =head3 L<perlgit> | |
1337 | ||
1338 | =over 4 | |
1339 | ||
1340 | =item * | |
1341 | ||
1342 | The precise rules for identifying C<smoke-me> branches are now stated. | |
1343 | ||
1344 | =back | |
1345 | ||
1346 | =head3 L<perlguts> | |
1347 | ||
1348 | =over 4 | |
1349 | ||
1350 | =item * | |
1351 | ||
1352 | The section on reference counting in L<perlguts> has been heavily revised, | |
1353 | to describe references in the way a programmer needs to think about them | |
1354 | rather than in terms of the physical data structures. | |
1355 | ||
1356 | =item * | |
1357 | ||
1358 | Improve documentation related to UTF-8 multibytes. | |
1359 | ||
1360 | =back | |
1361 | ||
1362 | =head3 L<perlintern> | |
1363 | ||
1364 | =over 4 | |
1365 | ||
1366 | =item * | |
1367 | ||
1368 | The internal functions C<newXS_len_flags()> and C<newATTRSUB_x()> are | |
1369 | now documented. | |
1370 | ||
1371 | =back | |
1372 | ||
1373 | =head3 L<perlobj> | |
1374 | ||
1375 | =over 4 | |
1376 | ||
1377 | =item * | |
1378 | ||
1379 | The documentation about C<DESTROY> methods has been corrected, updated, | |
1380 | and revised, especially in regard to how they interact with exceptions. | |
1381 | L<[perl #122753]|https://rt.perl.org/Ticket/Display.html?id=122753> | |
1382 | ||
1383 | =back | |
1384 | ||
1385 | =head3 L<perlop> | |
1386 | ||
1387 | =over 4 | |
1388 | ||
1389 | =item * | |
1390 | ||
1391 | The description of the C<x> operator in L<perlop> has been clarified. | |
1392 | L<[perl #132460]|https://rt.perl.org/Ticket/Display.html?id=132460> | |
1393 | ||
1394 | =item * | |
1395 | ||
1396 | L<perlop> has been updated to note that C<qw>'s whitespace rules differ | |
1397 | from that of C<split>'s in that only ASCII whitespace is used. | |
1398 | ||
1399 | =item * | |
1400 | ||
1401 | The general explanation of operator precedence and associativity has | |
1402 | been corrected and clarified. | |
1403 | L<[perl #127391]|https://rt.perl.org/Ticket/Display.html?id=127391> | |
1404 | ||
1405 | =item * | |
1406 | ||
1407 | The documentation for the C<\> referencing operator now explains the | |
1408 | unusual context that it supplies to its operand. | |
1409 | L<[perl #131061]|https://rt.perl.org/Ticket/Display.html?id=131061> | |
1410 | ||
1411 | =back | |
1412 | ||
1413 | =head3 L<perlrequick> | |
1414 | ||
1415 | =over 4 | |
1416 | ||
1417 | =item * | |
1418 | ||
1419 | Clarifications on metacharacters and character classes | |
1420 | ||
1421 | =back | |
1422 | ||
1423 | =head3 L<perlretut> | |
1424 | ||
1425 | =over 4 | |
1426 | ||
1427 | =item * | |
1428 | ||
1429 | Clarify metacharacters. | |
1430 | ||
1431 | =back | |
1432 | ||
1433 | =head3 L<perlrun> | |
1434 | ||
1435 | =over 4 | |
1436 | ||
1437 | =item * | |
1438 | ||
1439 | Clarify the differences between B<< -M >> and B<< -m >>. | |
1440 | L<[perl #131518]|https://rt.perl.org/Ticket/Display.html?id=131518> | |
1441 | ||
1442 | =back | |
1443 | ||
1444 | =head3 L<perlsec> | |
1445 | ||
1446 | =over 4 | |
1447 | ||
1448 | =item * | |
1449 | ||
1450 | The documentation about set-id scripts has been updated and revised. | |
1451 | L<[perl #74142]|https://rt.perl.org/Ticket/Display.html?id=74142> | |
1452 | ||
1453 | =item * | |
1454 | ||
1455 | A section about using C<sudo> to run Perl scripts has been added. | |
1456 | ||
1457 | =back | |
1458 | ||
1459 | =head3 L<perlsyn> | |
1460 | ||
1461 | =over 4 | |
1462 | ||
1463 | =item * | |
1464 | ||
1465 | The section "Truth and Falsehood" in L<perlsyn> has been removed from | |
1466 | that document, where it didn't belong, and merged into the existing | |
1467 | paragraph on the same topic in L<perldata>. | |
1468 | ||
1469 | =item * | |
1470 | ||
1471 | The means to disambiguate between code blocks and hash constructors, | |
1472 | already documented in L<perlref>, are now documented in L<perlsyn> too. | |
1473 | L<[perl #130958]|https://rt.perl.org/Ticket/Display.html?id=130958> | |
1474 | ||
1475 | =back | |
1476 | ||
1477 | =head3 L<perluniprops> | |
1478 | ||
1479 | =over 4 | |
1480 | ||
1481 | =item * | |
1482 | ||
1483 | L<perluniprops> has been updated to note that C<\p{Word}> now includes | |
1484 | code points matching the C<\p{Join_Control}> property. The change to | |
1485 | the property was made in Perl 5.18, but not documented until now. There | |
1486 | are currently only two code points that match this property U+200C (ZERO | |
1487 | WIDTH NON-JOINER) and U+200D (ZERO WIDTH JOINER). | |
1488 | ||
1489 | =item * | |
1490 | ||
1491 | For each binary table or property, the documentation now includes which | |
1492 | characters in the range C<\x00-\xFF> it matches, as well as a list of | |
1493 | the first few ranges of code points matched above that. | |
1494 | ||
1495 | =back | |
1496 | ||
1497 | =head3 L<perlvar> | |
1498 | ||
1499 | =over 4 | |
1500 | ||
1501 | =item * | |
1502 | ||
1503 | The entry for C<$+> in perlvar has been expanded upon to describe handling of | |
1504 | multiply-named capturing groups. | |
1505 | ||
1506 | =back | |
1507 | ||
1508 | =head3 L<perlfunc>, L<perlop>, L<perlsyn> | |
1509 | ||
1510 | =over 4 | |
1511 | ||
1512 | =item * | |
1513 | ||
1514 | In various places, improve the documentation of the special cases | |
1515 | in the condition expression of a while loop, such as implicit C<defined> | |
1516 | and assignment to C<$_>. | |
1517 | L<[perl #132644]|https://rt.perl.org/Ticket/Display.html?id=132644> | |
1518 | ||
1519 | =back | |
1520 | ||
1521 | =head1 Diagnostics | |
1522 | ||
1523 | The following additions or changes have been made to diagnostic output, | |
1524 | including warnings and fatal error messages. For the complete list of | |
1525 | diagnostic messages, see L<perldiag>. | |
1526 | ||
1527 | =head2 New Diagnostics | |
1528 | ||
1529 | =head3 New Errors | |
1530 | ||
1531 | =over 4 | |
1532 | ||
1533 | =item * | |
1534 | ||
1535 | L<Can't "goto" into a "given" block|perldiag/"Can't E<quot>gotoE<quot> into a E<quot>givenE<quot> block"> | |
1536 | ||
1537 | (F) A "goto" statement was executed to jump into the middle of a C<given> | |
1538 | block. You can't get there from here. See L<perlfunc/goto>. | |
1539 | ||
1540 | =item * | |
1541 | ||
1542 | L<Can't "goto" into a binary or list expression|perldiag/"Can't E<quot>gotoE<quot> into a binary or list expression"> | |
1543 | ||
1544 | Use of C<goto> to jump into the parameter of a binary or list operator has | |
1545 | been prohibited, to prevent crashes and stack corruption. | |
1546 | L<[perl #130936]|https://rt.perl.org/Ticket/Display.html?id=130936> | |
1547 | ||
1548 | You may only enter the I<first> argument of an operator that takes a fixed | |
1549 | number of arguments, since this is a case that will not cause stack | |
1550 | corruption. | |
1551 | L<[perl #132854]|https://rt.perl.org/Ticket/Display.html?id=132854> | |
1552 | ||
1553 | =back | |
1554 | ||
1555 | =head3 New Warnings | |
1556 | ||
1557 | =over 4 | |
1558 | ||
1559 | =item * | |
1560 | ||
1561 | L<Old package separator used in string|perldiag/"Old package separator used in string"> | |
1562 | ||
1563 | (W syntax) You used the old package separator, "'", in a variable | |
1564 | named inside a double-quoted string; e.g., C<"In $name's house">. This | |
1565 | is equivalent to C<"In $name::s house">. If you meant the former, put | |
1566 | a backslash before the apostrophe (C<"In $name\'s house">). | |
1567 | ||
1568 | =item * | |
1569 | ||
1570 | L<perldiag/Locale '%s' contains (at least) the following characters which | |
1571 | have unexpected meanings: %s The Perl program will use the expected | |
1572 | meanings> | |
1573 | ||
1574 | =back | |
1575 | ||
1576 | =head2 Changes to Existing Diagnostics | |
1577 | ||
1578 | =over 4 | |
1579 | ||
1580 | =item * | |
1581 | ||
1582 | A false-positive warning that was issued when using a | |
1583 | numerically-quantified sub-pattern in a recursive regex has been | |
1584 | silenced. L<[perl #131868]|https://rt.perl.org/Public/Bug/Display.html?id=131868> | |
1585 | ||
1586 | =item * | |
1587 | ||
1588 | The warning about useless use of a concatenation operator in void context | |
1589 | is now generated for expressions with multiple concatenations, such as | |
1590 | C<$a.$b.$c>, which used to mistakenly not warn. | |
1591 | L<[perl #6997]|https://rt.perl.org/Ticket/Display.html?id=6997> | |
1592 | ||
1593 | =item * | |
1594 | ||
1595 | Warnings that a variable or subroutine "masks earlier declaration in same | |
1596 | ...", or that an C<our> variable has been redeclared, have been moved to a | |
1597 | new warnings category "shadow". Previously they were in category "misc". | |
1598 | ||
1599 | =item * | |
1600 | ||
1601 | The deprecation warning from C<Sys::Hostname::hostname()> saying that | |
1602 | it doesn't accept arguments now states the Perl version in which the | |
1603 | warning will be upgraded to an error. | |
1604 | L<[perl #124349]|https://rt.perl.org/Ticket/Display.html?id=124349> | |
1605 | ||
1606 | =item * | |
1607 | ||
1608 | The L<perldiag> entry for the error regarding a set-id script has been | |
1609 | expanded to make clear that the error is reporting a specific security | |
1610 | vulnerability, and to advise how to fix it. | |
1611 | ||
1612 | =item * | |
1613 | ||
1614 | The C<< Unable to flush stdout >> error message was missing a trailing | |
1615 | newline. [debian #875361] | |
1616 | ||
1617 | =back | |
1618 | ||
1619 | =head1 Utility Changes | |
1620 | ||
1621 | =head2 L<perlbug> | |
1622 | ||
1623 | =over 4 | |
1624 | ||
1625 | =item * | |
1626 | ||
1627 | C<--help> and C<--version> options have been added. | |
1628 | ||
1629 | =back | |
1630 | ||
1631 | =head1 Configuration and Compilation | |
1632 | ||
1633 | =over 4 | |
1634 | ||
1635 | =item * C89 requirement | |
1636 | ||
1637 | Perl has been documented as requiring a C89 compiler to build since October | |
1638 | 1998. A variety of simplifications have now been made to Perl's internals to | |
1639 | rely on the features specified by the C89 standard. We believe that this | |
1640 | internal change hasn't altered the set of platforms that Perl builds on, but | |
1641 | please report a bug if Perl now has new problems building on your platform. | |
1642 | ||
1643 | =item * | |
1644 | ||
1645 | On GCC, C<-Werror=pointer-arith> is now enabled by default, | |
1646 | disallowing arithmetic on void and function pointers. | |
1647 | ||
1648 | =item * | |
1649 | ||
1650 | Where an HTML version of the documentation is installed, the HTML | |
1651 | documents now use relative links to refer to each other. Links from | |
1652 | the index page of L<perlipc> to the individual section documents are | |
1653 | now correct. | |
1654 | L<[perl #110056]|https://rt.perl.org/Ticket/Display.html?id=110056> | |
1655 | ||
1656 | =item * | |
1657 | ||
1658 | F<lib/unicore/mktables> now correctly canonicalizes the names of the | |
1659 | dependencies stored in the files it generates. | |
1660 | ||
1661 | F<regen/mk_invlists.pl>, unlike the other F<regen/*.pl> scripts, used | |
1662 | C<$0> to name itself in the dependencies stored in the files it | |
1663 | generates. It now uses a literal so that the path stored in the | |
1664 | generated files doesn't depend on how F<regen/mk_invlists.pl> is | |
1665 | invoked. | |
1666 | ||
1667 | This lack of canonical names could cause test failures in F<t/porting/regen.t>. | |
1668 | L<[perl #132925]|https://rt.perl.org/Ticket/Display.html?id=132925> | |
1669 | ||
1670 | =item * New probes | |
1671 | ||
1672 | =over 2 | |
1673 | ||
1674 | =item HAS_BUILTIN_ADD_OVERFLOW | |
1675 | ||
1676 | =item HAS_BUILTIN_MUL_OVERFLOW | |
1677 | ||
1678 | =item HAS_BUILTIN_SUB_OVERFLOW | |
1679 | ||
1680 | =item HAS_THREAD_SAFE_NL_LANGINFO_L | |
1681 | ||
1682 | =item HAS_LOCALECONV_L | |
1683 | ||
1684 | =item HAS_MBRLEN | |
1685 | ||
1686 | =item HAS_MBRTOWC | |
1687 | ||
1688 | =item HAS_MEMRCHR | |
1689 | ||
1690 | =item HAS_NANOSLEEP | |
1691 | ||
1692 | =item HAS_STRNLEN | |
1693 | ||
1694 | =item HAS_STRTOLD_L | |
1695 | ||
1696 | =item I_WCHAR | |
1697 | ||
1698 | =back | |
1699 | ||
1700 | =back | |
1701 | ||
1702 | =head1 Testing | |
1703 | ||
1704 | =over 4 | |
1705 | ||
1706 | =item * | |
1707 | ||
1708 | Testing of the XS-APItest directory is now done in parallel, where | |
1709 | applicable. | |
1710 | ||
1711 | =item * | |
1712 | ||
1713 | Perl now includes a default F<.travis.yml> file for Travis CI testing | |
1714 | on github mirrors. | |
1715 | L<[perl #123981]|https://rt.perl.org/Ticket/Display.html?id=123981> | |
1716 | ||
1717 | =item * | |
1718 | ||
1719 | The watchdog timer count in F<re/pat_psycho.t> can now be overridden. | |
1720 | ||
1721 | This test can take a long time to run, so there is a timer to keep | |
1722 | this in check (currently, 5 minutes). This commit adds checking | |
1723 | the environment variable C<< PERL_TEST_TIME_OUT_FACTOR >>; if set, | |
1724 | the time out setting is multiplied by its value. | |
1725 | ||
1726 | =item * | |
1727 | ||
1728 | F<harness> no longer waits for 30 seconds when running F<t/io/openpid.t>. | |
1729 | L<[perl #121028]|https://rt.perl.org/Ticket/Display.html?id=121028> | |
1730 | L<[perl #132867]|https://rt.perl.org/Ticket/Display.html?id=132867> | |
1731 | ||
1732 | =back | |
1733 | ||
1734 | =head1 Packaging | |
1735 | ||
1736 | For the past few years we have released perl using three different archive | |
1737 | formats: bzip (C<.bz2>), LZMA2 (C<.xz>) and gzip (C<.gz>). Since xz compresses | |
1738 | better and decompresses faster, and gzip is more compatible and uses less | |
1739 | memory, we have dropped the C<.bz2> archive format with this release. | |
1740 | (If this poses a problem, do let us know; see L</Reporting Bugs>, below.) | |
1741 | ||
1742 | =head1 Platform Support | |
1743 | ||
1744 | =head2 Discontinued Platforms | |
1745 | ||
1746 | =over 4 | |
1747 | ||
1748 | =item PowerUX / Power MAX OS | |
1749 | ||
1750 | Compiler hints and other support for these apparently long-defunct | |
1751 | platforms has been removed. | |
1752 | ||
1753 | =back | |
1754 | ||
1755 | =head2 Platform-Specific Notes | |
1756 | ||
1757 | =over 4 | |
1758 | ||
1759 | =item CentOS | |
1760 | ||
1761 | Compilation on CentOS 5 is now fixed. | |
1762 | ||
1763 | =item Cygwin | |
1764 | ||
1765 | A build with the quadmath library can now be done on Cygwin. | |
1766 | ||
1767 | =item Darwin | |
1768 | ||
1769 | Perl now correctly uses reentrant functions, like C<asctime_r>, on | |
1770 | versions of Darwin that have support for them. | |
1771 | ||
1772 | =item FreeBSD | |
1773 | ||
1774 | FreeBSD's F<< /usr/share/mk/sys.mk >> specifies C<< -O2 >> for | |
1775 | architectures other than ARM and MIPS. By default, perl is now compiled | |
1776 | with the same optimization levels. | |
1777 | ||
1778 | =item VMS | |
1779 | ||
1780 | Several fix-ups for F<configure.com>, marking function VMS has | |
1781 | (or doesn't have). | |
1782 | ||
1783 | CRTL features can now be set by embedders before invoking Perl by using | |
1784 | the C<decc$feature_set> and C<decc$feature_set_value> functions. | |
1785 | Previously any attempt to set features after image initialization were | |
1786 | ignored. | |
1787 | ||
1788 | =item Windows | |
1789 | ||
1790 | =over 4 | |
1791 | ||
1792 | =item * | |
1793 | ||
1794 | Support for compiling perl on Windows using Microsoft Visual Studio 2017 | |
1795 | (containing Visual C++ 14.1) has been added. | |
1796 | ||
1797 | =item * | |
1798 | ||
1799 | Visual C++ compiler version detection has been improved to work on non-English | |
1800 | language systems. | |
1801 | ||
1802 | =item * | |
1803 | ||
1804 | We now set C<$Config{libpth}> correctly for 64-bit builds using Visual C++ | |
1805 | versions earlier than 14.1. | |
1806 | ||
1807 | =back | |
1808 | ||
1809 | =back | |
1810 | ||
1811 | =head1 Internal Changes | |
1812 | ||
1813 | =over 4 | |
1814 | ||
1815 | =item * | |
1816 | ||
1817 | A new optimisation phase has been added to the compiler, | |
1818 | C<optimize_optree()>, which does a top-down scan of a complete optree | |
1819 | just before the peephole optimiser is run. This phase is not currently | |
1820 | hookable. | |
1821 | ||
1822 | =item * | |
1823 | ||
1824 | An C<OP_MULTICONCAT> op has been added. At C<optimize_optree()> time, a | |
1825 | chain of C<OP_CONCAT> and C<OP_CONST> ops, together optionally with an | |
1826 | C<OP_STRINGIFY> and/or C<OP_SASSIGN>, are combined into a single | |
1827 | C<OP_MULTICONCAT> op. The op is of type C<UNOP_AUX>, and the aux array | |
1828 | contains the argument count, plus a pointer to a constant string and a set | |
1829 | of segment lengths. For example with | |
1830 | ||
1831 | my $x = "foo=$foo, bar=$bar\n"; | |
1832 | ||
1833 | the constant string would be C<"foo=, bar=\n"> and the segment lengths | |
1834 | would be (4,6,1). If the string contains characters such as C<\x80>, whose | |
1835 | representation changes under utf8, two sets of strings plus lengths are | |
1836 | precomputed and stored. | |
1837 | ||
1838 | =item * | |
1839 | ||
1840 | Direct access to L<C<PL_keyword_plugin>|perlapi/PL_keyword_plugin> is not | |
1841 | safe in the presence of multithreading. A new | |
1842 | L<C<wrap_keyword_plugin>|perlapi/wrap_keyword_plugin> function has been | |
1843 | added to allow XS modules to safely define custom keywords even when | |
1844 | loaded from a thread, analogous to L<C<PL_check>|perlapi/PL_check> / | |
1845 | L<C<wrap_op_checker>|perlapi/wrap_op_checker>. | |
1846 | ||
1847 | =item * | |
1848 | ||
1849 | The C<PL_statbuf> interpreter variable has been removed. | |
1850 | ||
1851 | =item * | |
1852 | ||
1853 | The deprecated function C<to_utf8_case()>, accessible from XS code, has | |
1854 | been removed. | |
1855 | ||
1856 | =item * | |
1857 | ||
1858 | A new function | |
1859 | L<C<is_utf8_invariant_string_loc()>|perlapi/is_utf8_invariant_string_loc> | |
1860 | has been added that is like | |
1861 | L<C<is_utf8_invariant_string()>|perlapi/is_utf8_invariant_string> | |
1862 | but takes an extra pointer parameter into which is stored the location | |
1863 | of the first variant character, if any are found. | |
1864 | ||
1865 | =item * | |
1866 | ||
1867 | A new function, L<C<Perl_langinfo()>|perlapi/Perl_langinfo> has been | |
1868 | added. It is an (almost) drop-in replacement for the system | |
1869 | C<nl_langinfo(3)>, but works on platforms that lack that; as well as | |
1870 | being more thread-safe, and hiding some gotchas with locale handling | |
1871 | from the caller. Code that uses this, needn't use L<C<localeconv(3)>> | |
1872 | (and be affected by the gotchas) to find the decimal point, thousands | |
1873 | separator, or currency symbol. See L<perlapi/Perl_langinfo>. | |
1874 | ||
1875 | =item * | |
1876 | ||
1877 | A new API function L<C<sv_rvunweaken()>|perlapi/sv_rvunweaken> has | |
1878 | been added to complement L<C<sv_rvweaken()>|perlapi/sv_rvweaken>. | |
1879 | The implementation was taken from L<Scalar::Util/unweaken>. | |
1880 | ||
1881 | =item * | |
1882 | ||
1883 | A new flag, C<SORTf_UNSTABLE>, has been added. This will allow a | |
1884 | future commit to make mergesort unstable when the user specifies ‘no | |
1885 | sort stable’, since it has been decided that mergesort should remain | |
1886 | stable by default. | |
1887 | ||
1888 | =item * | |
1889 | ||
1890 | XS modules can now automatically get reentrant versions of system | |
1891 | functions on threaded perls. | |
1892 | ||
1893 | By adding | |
1894 | ||
1895 | #define PERL_REENTRANT | |
1896 | ||
1897 | near the beginning of an C<XS> file, it will be compiled so that | |
1898 | whatever reentrant functions perl knows about on that system will | |
1899 | automatically and invisibly be used instead of the plain, non-reentrant | |
1900 | versions. For example, if you write C<getpwnam()> in your code, on a | |
1901 | system that has C<getpwnam_r()> all calls to the former will be translated | |
1902 | invisibly into the latter. This does not happen except on threaded | |
1903 | perls, as they aren't needed otherwise. Be aware that which functions | |
1904 | have reentrant versions varies from system to system. | |
1905 | ||
1906 | =item * | |
1907 | ||
1908 | The C<PERL_NO_OP_PARENT> build define is no longer supported, which means | |
1909 | that perl is now always built with C<PERL_OP_PARENT> enabled. | |
1910 | ||
1911 | =item * | |
1912 | ||
1913 | The format and content of the non-utf8 transliteration table attached to | |
1914 | the C<op_pv> field of C<OP_TRANS>/C<OP_TRANSR> ops has changed. It's now a | |
1915 | C<struct OPtrans_map>. | |
1916 | ||
1917 | =item * | |
1918 | ||
1919 | A new compiler C<#define>, C<dTHX_DEBUGGING>. has been added. This is | |
1920 | useful for XS or C code that only need the thread context because their | |
1921 | debugging statements that get compiled only under C<-DDEBUGGING> need | |
1922 | one. | |
1923 | ||
1924 | =item * | |
1925 | ||
1926 | A new API function L<perlapi/Perl_setlocale> has been added. | |
1927 | ||
1928 | =item * | |
1929 | ||
1930 | L<perlapi/sync_locale> has been revised to return a boolean as to | |
1931 | whether the system was using the global locale or not. | |
1932 | ||
1933 | =item * | |
1934 | ||
1935 | A new kind of magic scalar, called a "nonelem" scalar, has been introduced. | |
1936 | It is stored in an array to denote a non-existent element, whenever such an | |
1937 | element is accessed in a potential lvalue context. It replaces the | |
1938 | existing "defelem" (deferred element) magic wherever this is possible, | |
1939 | being significantly more efficient. This means that | |
1940 | C<some_sub($sparse_array[$nonelem])> no longer has to create a new magic | |
1941 | defelem scalar each time, as long as the element is within the array. | |
1942 | ||
1943 | It partially fixes the rare bug of deferred elements getting out of synch | |
1944 | with their arrays when the array is shifted or unshifted. | |
1945 | L<[perl #132729]|https://rt.perl.org/Ticket/Display.html?id=132729> | |
1946 | ||
1947 | =back | |
1948 | ||
1949 | =head1 Selected Bug Fixes | |
1950 | ||
1951 | =over 4 | |
1952 | ||
1953 | =item * | |
1954 | ||
1955 | List assignment (C<aassign>) could in some rare cases allocate an | |
1956 | entry on the mortals stack and leave the entry uninitialized, leading to | |
1957 | possible crashes. | |
1958 | L<[perl #131570]|https://rt.perl.org/Ticket/Display.html?id=131570> | |
1959 | ||
1960 | =item * | |
1961 | ||
1962 | Attempting to apply an attribute to an C<our> variable where a | |
1963 | function of that name already exists could result in a NULL pointer | |
1964 | being supplied where an SV was expected, crashing perl. | |
1965 | L<[perl #131597]|https://rt.perl.org/Ticket/Display.html?id=131597> | |
1966 | ||
1967 | =item * | |
1968 | ||
1969 | C<split ' '> now correctly handles the argument being split when in the | |
1970 | scope of the L<< C<unicode_strings>|feature/"The 'unicode_strings' feature" | |
1971 | >> feature. Previously, when a string using the single-byte internal | |
1972 | representation contained characters that are whitespace by Unicode rules but | |
1973 | not by ASCII rules, it treated those characters as part of fields rather | |
1974 | than as field separators. | |
1975 | L<[perl #130907]|https://rt.perl.org/Ticket/Display.html?id=130907> | |
1976 | ||
1977 | =item * | |
1978 | ||
1979 | Several built-in functions previously had bugs that could cause them to | |
1980 | write to the internal stack without allocating room for the item being | |
1981 | written. In rare situations, this could have led to a crash. These bugs have | |
1982 | now been fixed, and if any similar bugs are introduced in future, they will | |
1983 | be detected automatically in debugging builds. | |
1984 | ||
1985 | These internal stack usage checks introduced are also done | |
1986 | by the C<entersub> operator when calling XSUBs. This means we can | |
1987 | report which XSUB failed to allocate enough stack space. | |
1988 | L<[perl #131975]|https://rt.perl.org/Public/Bug/Display.html?id=131975> | |
1989 | ||
1990 | =item * | |
1991 | ||
1992 | Using a symbolic ref with postderef syntax as the key in a hash lookup was | |
1993 | yielding an assertion failure on debugging builds. | |
1994 | L<[perl #131627]|https://rt.perl.org/Ticket/Display.html?id=131627> | |
1995 | ||
1996 | =item * | |
1997 | ||
1998 | Array and hash variables whose names begin with a caret now admit indexing | |
1999 | inside their curlies when interpolated into strings, as in C<< | |
2000 | "${^CAPTURE[0]}" >> to index C<@{^CAPTURE}>. | |
2001 | L<[perl #131664]|https://rt.perl.org/Ticket/Display.html?id=131664> | |
2002 | ||
2003 | =item * | |
2004 | ||
2005 | Fetching the name of a glob that was previously UTF-8 but wasn't any | |
2006 | longer would return that name flagged as UTF-8. | |
2007 | L<[perl #131263]|https://rt.perl.org/Ticket/Display.html?id=131263> | |
2008 | ||
2009 | =item * | |
2010 | ||
2011 | The perl C<sprintf()> function (via the underlying C function | |
2012 | C<Perl_sv_vcatpvfn_flags()>) has been heavily reworked to fix many minor | |
2013 | bugs, including the integer wrapping of large width and precision | |
2014 | specifiers and potential buffer overruns. It has also been made faster in | |
2015 | many cases. | |
2016 | ||
2017 | =item * | |
2018 | ||
2019 | Exiting from an C<eval>, whether normally or via an exception, now always | |
2020 | frees temporary values (possibly calling destructors) I<before> setting | |
2021 | C<$@>. For example: | |
2022 | ||
2023 | sub DESTROY { eval { die "died in DESTROY"; } } | |
2024 | eval { bless []; }; | |
2025 | # $@ used to be equal to "died in DESTROY" here; it's now "". | |
2026 | ||
2027 | =item * | |
2028 | ||
2029 | Fixed a duplicate symbol failure with C<-flto -mieee-fp> builds. | |
2030 | F<pp.c> defined C<_LIB_VERSION> which C<-lieee> already defines. | |
2031 | L<[perl #131786]|https://rt.perl.org/Ticket/Display.html?id=131786> | |
2032 | ||
2033 | =item * | |
2034 | ||
2035 | The tokenizer no longer consumes the exponent part of a floating | |
2036 | point number if it's incomplete. | |
2037 | L<[perl #131725]|https://rt.perl.org/Ticket/Display.html?id=131725> | |
2038 | ||
2039 | =item * | |
2040 | ||
2041 | On non-threaded builds, for C<m/$null/> where C<$null> is an empty | |
2042 | string is no longer treated as if the C</o> flag was present when the | |
2043 | previous matching match operator included the C</o> flag. The | |
2044 | rewriting used to implement this behavior could confuse the | |
2045 | interpreter. This matches the behaviour of threaded builds. | |
2046 | L<[perl #124368]|https://rt.perl.org/Ticket/Display.html?id=124368> | |
2047 | ||
2048 | =item * | |
2049 | ||
2050 | Parsing a C<sub> definition could cause a use after free if the C<sub> | |
2051 | keyword was followed by whitespace including newlines (and comments.) | |
2052 | L<[perl #131836]|https://rt.perl.org/Public/Bug/Display.html?id=131836> | |
2053 | ||
2054 | =item * | |
2055 | ||
2056 | The tokenizer now correctly adjusts a parse pointer when skipping | |
2057 | whitespace in a C<< ${identifier} >> construct. | |
2058 | L<[perl #131949]|https://rt.perl.org/Public/Bug/Display.html?id=131949> | |
2059 | ||
2060 | =item * | |
2061 | ||
2062 | Accesses to C<${^LAST_FH}> no longer assert after using any of a | |
2063 | variety of I/O operations on a non-glob. | |
2064 | L<[perl #128263]|https://rt.perl.org/Public/Bug/Display.html?id=128263> | |
2065 | ||
2066 | =item * | |
2067 | ||
2068 | The XS-level C<Copy()>, C<Move()>, C<Zero()> macros and their variants now | |
2069 | assert if the pointers supplied are C<NULL>. ISO C considers | |
2070 | supplying NULL pointers to the functions these macros are built upon | |
2071 | as undefined behaviour even when their count parameters are zero. | |
2072 | Based on these assertions and the original bug report three macro | |
2073 | calls were made conditional. | |
2074 | L<[perl #131746]|https://rt.perl.org/Public/Bug/Display.html?id=131746> | |
2075 | L<[perl #131892]|https://rt.perl.org/Public/Bug/Display.html?id=131892> | |
2076 | ||
2077 | =item * | |
2078 | ||
2079 | Only the C<=> operator is permitted for defining defaults for | |
2080 | parameters in subroutine signatures. Previously other assignment | |
2081 | operators, e.g. C<+=>, were also accidentally permitted. | |
2082 | L<[perl #131777]|https://rt.perl.org/Public/Bug/Display.html?id=131777> | |
2083 | ||
2084 | =item * | |
2085 | ||
2086 | Package names are now always included in C<:prototype> warnings | |
2087 | L<[perl #131833]|https://rt.perl.org/Public/Bug/Display.html?id=131833> | |
2088 | ||
2089 | =item * | |
2090 | ||
2091 | The C<je_old_stack_hwm> field, previously only found in the C<jmpenv> | |
2092 | structure on debugging builds, has been added to non-debug builds as | |
2093 | well. This fixes an issue with some CPAN modules caused by the size of | |
2094 | this structure varying between debugging and non-debugging builds. | |
2095 | L<[perl #131942]|https://rt.perl.org/Public/Bug/Display.html?id=131942> | |
2096 | ||
2097 | =item * | |
2098 | ||
2099 | The arguments to the C<ninstr()> macro are now correctly parenthesized. | |
2100 | ||
2101 | =item * | |
2102 | ||
2103 | A NULL pointer dereference in the C<S_regmatch()> function has been | |
2104 | fixed. | |
2105 | L<[perl #132017]|https://rt.perl.org/Public/Bug/Display.html?id=132017> | |
2106 | ||
2107 | =item * | |
2108 | ||
2109 | Calling L<exec PROGRAM LIST|perlfunc/exec PROGRAM LIST> with an empty C<LIST> | |
2110 | has been fixed. This should call C<execvp()> with an empty C<argv> array | |
2111 | (containing only the terminating C<NULL> pointer), but was instead just | |
2112 | returning false (and not setting L<C<$!>|perlvar/$!>). | |
2113 | L<[perl #131730]|https://rt.perl.org/Public/Bug/Display.html?id=131730> | |
2114 | ||
2115 | =item * | |
2116 | ||
2117 | The C<gv_fetchmeth_sv> C function stopped working properly in Perl 5.22 when | |
2118 | fetching a constant with a UTF-8 name if that constant subroutine was stored in | |
2119 | the stash as a simple scalar reference, rather than a full typeglob. This has | |
2120 | been corrected. | |
2121 | ||
2122 | =item * | |
2123 | ||
2124 | Single-letter debugger commands followed by an argument which starts with | |
2125 | punctuation (e.g. C<p$^V> and C<x@ARGV>) now work again. They had been | |
2126 | wrongly requiring a space between the command and the argument. | |
2127 | L<[perl #120174]|https://rt.perl.org/Public/Bug/Display.html?id=120174> | |
2128 | ||
2129 | =item * | |
2130 | ||
2131 | L<splice|perlfunc/splice ARRAY,OFFSET,LENGTH,LIST> now throws an exception | |
2132 | ("Modification of a read-only value attempted") when modifying a read-only | |
2133 | array. Until now it had been silently modifying the array. The new behaviour | |
2134 | is consistent with the behaviour of L<push|perlfunc/push ARRAY,LIST> and | |
2135 | L<unshift|perlfunc/unshift ARRAY,LIST>. | |
2136 | L<[perl #131000]|https://rt.perl.org/Public/Bug/Display.html?id=131000> | |
2137 | ||
2138 | =item * | |
2139 | ||
2140 | C<stat()>, C<lstat()>, and file test operators now fail if given a | |
2141 | filename containing a nul character, in the same way that C<open()> | |
2142 | already fails. | |
2143 | ||
2144 | =item * | |
2145 | ||
2146 | C<stat()>, C<lstat()>, and file test operators now reliably set C<$!> when | |
2147 | failing due to being applied to a closed or otherwise invalid file handle. | |
2148 | ||
2149 | =item * | |
2150 | ||
2151 | File test operators for Unix permission bits that don't exist on a | |
2152 | particular platform, such as C<-k> (sticky bit) on Windows, now check that | |
2153 | the file being tested exists before returning the blanket false result, | |
2154 | and yield the appropriate errors if the argument doesn't refer to a file. | |
2155 | ||
2156 | =item * | |
2157 | ||
2158 | Fixed a 'read before buffer' overrun when parsing a range starting with | |
2159 | C<\N{}> at the beginning of the character set for the transliteration | |
2160 | operator. | |
2161 | L<[perl #132245]|https://rt.perl.org/Ticket/Display.html?id=132245> | |
2162 | ||
2163 | =item * | |
2164 | ||
2165 | Fixed a leaked scalar when parsing an empty C<\N{}> at compile-time. | |
2166 | L<[perl #132245]|https://rt.perl.org/Ticket/Display.html?id=132245> | |
2167 | ||
2168 | =item * | |
2169 | ||
2170 | Calling C<do $path> on a directory or block device now yields a meaningful | |
2171 | error code in C<$!>. | |
2172 | L<[perl #125774]|https://rt.perl.org/Ticket/Display.html?id=125774> | |
2173 | ||
2174 | =item * | |
2175 | ||
2176 | Regexp substitution using an overloaded replacement value that provides | |
2177 | a tainted stringification now correctly taints the resulting string. | |
2178 | L<[perl #115266]|https://rt.perl.org/Ticket/Display.html?id=115266> | |
2179 | ||
2180 | =item * | |
2181 | ||
2182 | Lexical sub declarations in C<do> blocks such as C<do { my sub lex; 123 }> | |
2183 | could corrupt the stack, erasing items already on the stack in the | |
2184 | enclosing statement. This has been fixed. | |
2185 | L<[perl #132442]|https://rt.perl.org/Ticket/Display.html?id=132442> | |
2186 | ||
2187 | =item * | |
2188 | ||
2189 | C<pack> and C<unpack> can now handle repeat counts and lengths that | |
2190 | exceed two billion. | |
2191 | L<[perl #119367]|https://rt.perl.org/Ticket/Display.html?id=119367> | |
2192 | ||
2193 | =item * | |
2194 | ||
2195 | Digits past the radix point in octal and binary floating point literals | |
2196 | now have the correct weight on platforms where a floating point | |
2197 | significand doesn't fit into an integer type. | |
2198 | ||
2199 | =item * | |
2200 | ||
2201 | The canonical truth value no longer has a spurious special meaning as a | |
2202 | callable subroutine. It used to be a magic placeholder for a missing | |
2203 | C<import> or C<unimport> method, but is now treated like any other string | |
2204 | C<1>. | |
2205 | L<[perl #126042]|https://rt.perl.org/Ticket/Display.html?id=126042> | |
2206 | ||
2207 | =item * | |
2208 | ||
2209 | C<system> now reduces its arguments to strings in the parent process, so | |
2210 | any effects of stringifying them (such as overload methods being called | |
2211 | or warnings being emitted) are visible in the way the program expects. | |
2212 | L<[perl #121105]|https://rt.perl.org/Ticket/Display.html?id=121105> | |
2213 | ||
2214 | =item * | |
2215 | ||
2216 | The C<readpipe()> built-in function now checks at compile time that | |
2217 | it has only one parameter expression, and puts it in scalar context, | |
2218 | thus ensuring that it doesn't corrupt the stack at runtime. | |
2219 | L<[perl #4574]|https://rt.perl.org/Ticket/Display.html?id=4574> | |
2220 | ||
2221 | =item * | |
2222 | ||
2223 | C<sort> now performs correct reference counting when aliasing C<$a> and | |
2224 | C<$b>, thus avoiding premature destruction and leakage of scalars if they | |
2225 | are re-aliased during execution of the sort comparator. | |
2226 | L<[perl #92264]|https://rt.perl.org/Ticket/Display.html?id=92264> | |
2227 | ||
2228 | =item * | |
2229 | ||
2230 | C<reverse> with no operand, reversing C<$_> by default, is no longer in | |
2231 | danger of corrupting the stack. | |
2232 | L<[perl #132544]|https://rt.perl.org/Ticket/Display.html?id=132544> | |
2233 | ||
2234 | =item * | |
2235 | ||
2236 | C<exec>, C<system>, et al are no longer liable to have their argument | |
2237 | lists corrupted by reentrant calls and by magic such as tied scalars. | |
2238 | L<[perl #129888]|https://rt.perl.org/Ticket/Display.html?id=129888> | |
2239 | ||
2240 | =item * | |
2241 | ||
2242 | Perl's own C<malloc> no longer gets confused by attempts to allocate | |
2243 | more than a gigabyte on a 64-bit platform. | |
2244 | L<[perl #119829]|https://rt.perl.org/Ticket/Display.html?id=119829> | |
2245 | ||
2246 | =item * | |
2247 | ||
2248 | Stacked file test operators in a sort comparator expression no longer | |
2249 | cause a crash. | |
2250 | L<[perl #129347]|https://rt.perl.org/Ticket/Display.html?id=129347> | |
2251 | ||
2252 | =item * | |
2253 | ||
2254 | An identity C<tr///> transformation on a reference is no longer mistaken | |
2255 | for that reference for the purposes of deciding whether it can be | |
2256 | assigned to. | |
2257 | L<[perl #130578]|https://rt.perl.org/Ticket/Display.html?id=130578> | |
2258 | ||
2259 | =item * | |
2260 | ||
2261 | Lengthy hexadecimal, octal, or binary floating point literals no | |
2262 | longer cause undefined behaviour when parsing digits that are of such | |
2263 | low significance that they can't affect the floating point value. | |
2264 | L<[perl #131894]|https://rt.perl.org/Ticket/Display.html?id=131894> | |
2265 | ||
2266 | =item * | |
2267 | ||
2268 | C<open $$scalarref...> and similar invocations no longer leak the file | |
2269 | handle. | |
2270 | L<[perl #115814]|https://rt.perl.org/Ticket/Display.html?id=115814> | |
2271 | ||
2272 | =item * | |
2273 | ||
2274 | Some convoluted kinds of regexp no longer cause an arithmetic overflow | |
2275 | when compiled. | |
2276 | L<[perl #131893]|https://rt.perl.org/Ticket/Display.html?id=131893> | |
2277 | ||
2278 | =item * | |
2279 | ||
2280 | The default typemap, by avoiding C<newGVgen>, now no longer leaks when | |
2281 | XSUBs return file handles (C<PerlIO *> or C<FILE *>). | |
2282 | L<[perl #115814]|https://rt.perl.org/Ticket/Display.html?id=115814> | |
2283 | ||
2284 | =item * | |
2285 | ||
2286 | Creating a C<BEGIN> block as an XS subroutine with a prototype no longer | |
2287 | crashes because of the early freeing of the subroutine. | |
2288 | ||
2289 | =item * | |
2290 | ||
2291 | The C<printf> format specifier C<%.0f> no longer rounds incorrectly | |
2292 | L<[perl #47602]|https://rt.perl.org/Ticket/Display.html?id=47602>, | |
2293 | and now shows the correct sign for a negative zero. | |
2294 | ||
2295 | =item * | |
2296 | ||
2297 | Fixed an issue where the error C<< Scalar value @arrayname[0] better | |
2298 | written as $arrayname >> would give an error C<< Cannot printf Inf with 'c' >> | |
2299 | when arrayname starts with C<< Inf >>. | |
2300 | L<[perl #132645]|https://rt.perl.org/Ticket/Display.html?id=132645> | |
2301 | ||
2302 | =item * | |
2303 | ||
2304 | The Perl implementation of C<< getcwd() >> in C<< Cwd >> in the PathTools | |
2305 | distribution now behaves the same as XS implementation on errors: it | |
2306 | returns an error, and sets C<< $! >>. | |
2307 | L<[perl #132648]|https://rt.perl.org/Ticket/Display.html?id=132648> | |
2308 | ||
2309 | =item * | |
2310 | ||
2311 | Vivify array elements when putting them on the stack. | |
2312 | Fixes L<[perl #8910]|https://rt.perl.org/Ticket/Display.html?id=8910> | |
2313 | (reported in April 2002). | |
2314 | ||
2315 | =item * | |
2316 | ||
2317 | Fixed parsing of braced subscript after parens. Fixes | |
2318 | L<[perl #8045]|https://rt.perl.org/Ticket/Display.html?id=8045> | |
2319 | (reported in December 2001). | |
2320 | ||
2321 | =item * | |
2322 | ||
2323 | C<tr/non_utf8/long_non_utf8/c> could give the wrong results when the | |
2324 | length of the replacement character list was greater than 0x7fff. | |
2325 | ||
2326 | =item * | |
2327 | ||
2328 | C<tr/non_utf8/non_utf8/cd> failed to add the implied | |
2329 | C<\x{100}-\x{7fffffff}> to the search character list. | |
2330 | ||
2331 | =item * | |
2332 | ||
2333 | Compilation failures within "perl-within-perl" constructs, such as with | |
2334 | string interpolation and the right part of C<s///e>, now cause | |
2335 | compilation to abort earlier. | |
2336 | ||
2337 | Previously compilation could continue in order to report other errors, | |
2338 | but the failed sub-parse could leave partly parsed constructs on the | |
2339 | parser shift-reduce stack, confusing the parser, leading to perl | |
2340 | crashes. | |
2341 | L<[perl #125351]|https://rt.perl.org/Ticket/Display.html?id=125351> | |
2342 | ||
2343 | =item * | |
2344 | ||
2345 | On threaded perls where the decimal point (radix) character is not a | |
2346 | dot, it has been possible for a race to occur between threads when one | |
2347 | needs to use the real radix character (such as with C<sprintf>). This has | |
2348 | now been fixed by use of a mutex on systems without thread-safe locales, | |
2349 | and the problem just doesn't come up on those with thread-safe locales. | |
2350 | ||
2351 | =item * | |
2352 | ||
2353 | Errors while compiling a regex character class could sometime trigger an | |
2354 | assertion failure. | |
2355 | L<[perl #132163]|https://rt.perl.org/Ticket/Display.html?id=132163> | |
2356 | ||
2357 | =back | |
2358 | ||
2359 | =head1 Acknowledgements | |
2360 | ||
2361 | Perl 5.28.0 represents approximately 13 months of development since Perl | |
2362 | 5.26.0 and contains approximately 730,000 lines of changes across 2,200 | |
2363 | files from 77 authors. | |
2364 | ||
2365 | Excluding auto-generated files, documentation and release tools, there were | |
2366 | approximately 580,000 lines of changes to 1,300 .pm, .t, .c and .h files. | |
2367 | ||
2368 | Perl continues to flourish into its fourth decade thanks to a vibrant | |
2369 | community of users and developers. The following people are known to have | |
2370 | contributed the improvements that became Perl 5.28.0: | |
2371 | ||
2372 | Aaron Crane, Abigail, Ævar Arnfjörð Bjarmason, Alberto Simões, Alexandr | |
2373 | Savca, Andrew Fresh, Andy Dougherty, Andy Lester, Aristotle Pagaltzis, Ask | |
2374 | Bjørn Hansen, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari | |
2375 | Mannsåker, Dan Collins, Daniel Dragan, David Cantrell, David Mitchell, | |
2376 | Dmitry Ulanov, Dominic Hargreaves, E. Choroba, Eric Herman, Eugen Konkov, | |
2377 | Father Chrysostomos, Gene Sullivan, George Hartzell, Graham Knop, Harald | |
2378 | Jörg, H.Merijn Brand, Hugo van der Sanden, Jacques Germishuys, James E | |
2379 | Keenan, Jarkko Hietaniemi, Jerry D. Hedden, J. Nick Koston, John Lightsey, | |
2380 | John Peacock, John P. Linderman, John SJ Anderson, Karen Etheridge, Karl | |
2381 | Williamson, Ken Brown, Ken Cotterill, Leon Timmermans, Lukas Mai, Marco | |
2382 | Fontani, Marc-Philip Werner, Matthew Horsfall, Neil Bowers, Nicholas Clark, | |
2383 | Nicolas R., Niko Tyni, Pali, Paul Marquess, Peter John Acklam, Reini Urban, | |
2384 | Renee Baecker, Ricardo Signes, Robin Barker, Sawyer X, Scott Lanning, Sergey | |
2385 | Aleynikov, Shirakata Kentaro, Shoichi Kaji, Slaven Rezic, Smylers, Steffen | |
2386 | Müller, Steve Hay, Sullivan Beck, Thomas Sibley, Todd Rinaldo, Tomasz | |
2387 | Konojacki, Tom Hukins, Tom Wyant, Tony Cook, Vitali Peil, Yves Orton, | |
2388 | Zefram. | |
2389 | ||
2390 | The list above is almost certainly incomplete as it is automatically | |
2391 | generated from version control history. In particular, it does not include | |
2392 | the names of the (very much appreciated) contributors who reported issues to | |
2393 | the Perl bug tracker. | |
2394 | ||
2395 | Many of the changes included in this version originated in the CPAN modules | |
2396 | included in Perl's core. We're grateful to the entire CPAN community for | |
2397 | helping Perl to flourish. | |
2398 | ||
2399 | For a more complete list of all of Perl's historical contributors, please | |
2400 | see the F<AUTHORS> file in the Perl source distribution. | |
2401 | ||
2402 | =head1 Reporting Bugs | |
2403 | ||
2404 | If you find what you think is a bug, you might check the perl bug database | |
2405 | at L<https://rt.perl.org/> . There may also be information at | |
2406 | L<http://www.perl.org/> , the Perl Home Page. | |
2407 | ||
2408 | If you believe you have an unreported bug, please run the L<perlbug> program | |
2409 | included with your release. Be sure to trim your bug down to a tiny but | |
2410 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
2411 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. | |
2412 | ||
2413 | If the bug you are reporting has security implications which make it | |
2414 | inappropriate to send to a publicly archived mailing list, then see | |
2415 | L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> | |
2416 | for details of how to report the issue. | |
2417 | ||
2418 | =head1 Give Thanks | |
2419 | ||
2420 | If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, | |
2421 | you can do so by running the C<perlthanks> program: | |
2422 | ||
2423 | perlthanks | |
2424 | ||
2425 | This will send an email to the Perl 5 Porters list with your show of thanks. | |
2426 | ||
2427 | =head1 SEE ALSO | |
2428 | ||
2429 | The F<Changes> file for an explanation of how to view exhaustive details on | |
2430 | what changed. | |
2431 | ||
2432 | The F<INSTALL> file for how to build Perl. | |
2433 | ||
2434 | The F<README> file for general stuff. | |
2435 | ||
2436 | The F<Artistic> and F<Copying> files for copyright information. | |
2437 | ||
2438 | =cut |