Commit | Line | Data |
---|---|---|
0382c61d S |
1 | =pod |
2 | ||
3 | =encoding utf8 | |
4 | ||
5 | =head1 NAME | |
6 | ||
7 | perl5320delta - what is new for perl v5.32.0 | |
8 | ||
9 | =head1 DESCRIPTION | |
10 | ||
11 | This document describes differences between the 5.30.0 release and the 5.32.0 | |
12 | release. | |
13 | ||
14 | If you are upgrading from an earlier release such as 5.28.0, first read | |
15 | L<perl5300delta>, which describes differences between 5.28.0 and 5.30.0. | |
16 | ||
17 | =head1 Core Enhancements | |
18 | ||
19 | =head2 The isa Operator | |
20 | ||
21 | A new experimental infix operator called C<isa> tests whether a given object | |
22 | is an instance of a given class or a class derived from it: | |
23 | ||
24 | if( $obj isa Package::Name ) { ... } | |
25 | ||
26 | For more detail see L<perlop/Class Instance Operator>. | |
27 | ||
28 | =head2 Unicode 13.0 is supported | |
29 | ||
30 | See L<https://www.unicode.org/versions/Unicode13.0.0/> for details. | |
31 | ||
32 | =head2 Chained comparisons capability | |
33 | ||
34 | Some comparison operators, as their associativity, I<chain> with some | |
35 | operators of the same precedence (but never with operators of different | |
36 | precedence). | |
37 | ||
38 | if ( $x < $y <= $z ) {...} | |
39 | ||
40 | behaves exactly like: | |
41 | ||
42 | if ( $x < $y && $y <= $z ) {...} | |
43 | ||
44 | (assuming that C<"$y"> is as simple a scalar as it looks.) | |
45 | ||
46 | You can read more about this in L<perlop> under | |
47 | L<perlop/Operator Precedence and Associativity>. | |
48 | ||
49 | =head2 New Unicode properties C<Identifier_Status> and C<Identifier_Type> supported | |
50 | ||
e02f7c06 | 51 | Unicode has revised its regular expression requirements: |
52 | L<https://www.unicode.org/reports/tr18/tr18-21.html>. | |
0382c61d S |
53 | As part of that they are wanting more properties to be exposed, ones |
54 | that aren't part of the strict UCD (Unicode character database). These | |
55 | two are used for examining inputs for security purposes. Details on | |
e02f7c06 | 56 | their usage is at L<https://www.unicode.org/reports/tr39/>. |
0382c61d S |
57 | |
58 | =head2 It is now possible to write C<qr/\p{Name=...}/>, or | |
59 | C<qr!\p{na=/(SMILING|GRINNING) FACE/}!> | |
60 | ||
61 | The Unicode Name property is now accessible in regular expression | |
62 | patterns, as an alternative to C<\N{...}>. | |
63 | A comparison of the two methods is given in | |
64 | L<perlunicode/Comparison of \N{...} and \p{name=...}>. | |
65 | ||
66 | The second example above shows that wildcard subpatterns are also usable | |
67 | in this property. See L<perlunicode/Wildcards in Property Values>. | |
68 | ||
69 | =head2 Improvement of C<POSIX::mblen()>, C<mbtowc>, and C<wctomb> | |
70 | ||
71 | The C<POSIX::mblen()>, C<mbtowc>, and C<wctomb> functions now | |
72 | work on shift state locales and are thread-safe on C99 and above | |
73 | compilers when executed on a platform that has locale thread-safety; the | |
74 | length parameters are now optional. | |
75 | ||
76 | These functions are always executed under the current C language locale. | |
77 | (See L<perllocale>.) Most locales are stateless, but a few, notably the | |
78 | very rarely encountered ISO 2022, maintain a state between calls to | |
79 | these functions. Previously the state was cleared on every call, but | |
80 | now the state is not reset unless the appropriate parameter is C<undef>. | |
81 | ||
82 | On threaded perls, the C99 functions L<mbrlen(3)>, L<mbrtowc(3)>, and | |
83 | L<wcrtomb(3)>, when available, are substituted for the plain functions. | |
84 | This makes these functions thread-safe when executing on a locale | |
85 | thread-safe platform. | |
86 | ||
87 | The string length parameters in C<mblen> and C<mbtowc> are now optional; | |
88 | useful only if you wish to restrict the length parsed in the source | |
89 | string to less than the actual length. | |
90 | ||
91 | =head2 Alpha assertions are no longer experimental | |
92 | ||
93 | See L<perlre/(*pla:pattern)>, L<perlre/(*plb:pattern)>, | |
94 | L<perlre/(*nla:pattern)>>, and L<perlre/(*nlb:pattern)>. | |
95 | Use of these no longer generates a warning; existing code that disables | |
96 | the warning category C<experimental::alpha_assertions> will continue to work | |
97 | without any changes needed. Enabling the category has no effect. | |
98 | ||
99 | =head2 Script runs are no longer experimental | |
100 | ||
101 | See L<perlre/Script Runs>. Use of these no longer generates a warning; | |
102 | existing code that disables the warning category | |
103 | C<experimental::script_run> will continue to work without any | |
104 | changes needed. Enabling the category has no effect. | |
105 | ||
106 | =head2 Feature checks are now faster | |
107 | ||
108 | Previously feature checks in the parser required a hash lookup when | |
109 | features were set outside of a feature bundle, this has been optimized | |
110 | to a bit mask check. [L<GH #17229|https://github.com/Perl/perl5/issues/17229>] | |
111 | ||
112 | =head2 Perl is now developed on GitHub | |
113 | ||
114 | Perl is now developed on GitHub. You can find us at | |
115 | L<https://github.com/Perl/perl5>. | |
116 | ||
117 | Non-security bugs should now be reported via GitHub. Security issues should | |
118 | continue to be reported as documented in L<perlsec>. | |
119 | ||
120 | =head2 Compiled patterns can now be dumped before optimization | |
121 | ||
122 | This is primarily useful for tracking down bugs in the regular | |
123 | expression compiler. This dump happens on C<-DDEBUGGING> perls, if you | |
124 | specify C<-Drv> on the command line; or on any perl if the pattern is | |
125 | compiled within the scope of S<C<use re qw(Debug DUMP_PRE_OPTIMIZE)>> or | |
126 | S<C<use re qw(Debug COMPILE EXTRA)>>. (All but the second case display | |
127 | other information as well.) | |
128 | ||
129 | =head1 Security | |
130 | ||
131 | =head2 [CVE-2020-10543] Buffer overflow caused by a crafted regular expression | |
132 | ||
133 | A signed C<size_t> integer overflow in the storage space calculations for | |
134 | nested regular expression quantifiers could cause a heap buffer overflow in | |
135 | Perl's regular expression compiler that overwrites memory allocated after the | |
136 | regular expression storage space with attacker supplied data. | |
137 | ||
138 | The target system needs a sufficient amount of memory to allocate partial | |
139 | expansions of the nested quantifiers prior to the overflow occurring. This | |
140 | requirement is unlikely to be met on 64-bit systems. | |
141 | ||
142 | Discovered by: ManhND of The Tarantula Team, VinCSS (a member of Vingroup). | |
143 | ||
144 | =head2 [CVE-2020-10878] Integer overflow via malformed bytecode produced by a crafted regular expression | |
145 | ||
146 | Integer overflows in the calculation of offsets between instructions for the | |
147 | regular expression engine could cause corruption of the intermediate language | |
148 | state of a compiled regular expression. An attacker could abuse this behaviour | |
149 | to insert instructions into the compiled form of a Perl regular expression. | |
150 | ||
151 | Discovered by: Hugo van der Sanden and Slaven Rezic. | |
152 | ||
153 | =head2 [CVE-2020-12723] Buffer overflow caused by a crafted regular expression | |
154 | ||
155 | Recursive calls to C<S_study_chunk()> by Perl's regular expression compiler to | |
156 | optimize the intermediate language representation of a regular expression could | |
157 | cause corruption of the intermediate language state of a compiled regular | |
158 | expression. | |
159 | ||
160 | Discovered by: Sergey Aleynikov. | |
161 | ||
162 | =head2 Additional Note | |
163 | ||
164 | An application written in Perl would only be vulnerable to any of the above | |
165 | flaws if it evaluates regular expressions supplied by the attacker. Evaluating | |
166 | regular expressions in this fashion is known to be dangerous since the regular | |
167 | expression engine does not protect against denial of service attacks in this | |
168 | usage scenario. | |
169 | ||
170 | =head1 Incompatible Changes | |
171 | ||
172 | =head2 Certain pattern matching features are now prohibited in compiling | |
173 | Unicode property value wildcard subpatterns | |
174 | ||
175 | These few features are either inappropriate or interfere with the | |
176 | algorithm used to accomplish this task. The complete list is in | |
177 | L<perlunicode/Wildcards in Property Values>. | |
178 | ||
179 | =head2 Unused functions C<POSIX::mbstowcs> and C<POSIX::wcstombs> are removed | |
180 | ||
181 | These functions could never have worked due to a defective interface | |
182 | specification. There is clearly no demand for them, given that no one | |
183 | has ever complained in the many years the functions were claimed to be | |
184 | available, hence so-called "support" for them is now dropped. | |
185 | ||
186 | =head2 A bug fix for C<(?[...])> may have caused some patterns to no | |
187 | longer compile | |
188 | ||
189 | See L</Selected Bug Fixes>. The heuristics previously used may have let | |
190 | some constructs compile (perhaps not with the programmer's intended | |
191 | effect) that should have been errors. None are known, but it is | |
192 | possible that some erroneous constructs no longer compile. | |
193 | ||
194 | =head2 C<\p{I<user-defined>}> properties now always override official | |
195 | Unicode ones | |
196 | ||
197 | Previously, if and only if a user-defined property was declared prior to | |
198 | the compilation of the regular expression pattern that contains it, its | |
199 | definition was used instead of any official Unicode property with the | |
200 | same name. Now, it always overrides the official property. This | |
201 | change could break existing code that relied (likely unwittingly) on the | |
202 | previous behavior. Without this fix, if Unicode released a new version | |
203 | with a new property that happens to have the same name as the one you | |
204 | had long been using, your program would break when you upgraded to a | |
205 | perl that used that new Unicode version. See L<perlunicode/User-Defined | |
206 | Character Properties>. [L<GH #17205|https://github.com/Perl/perl5/issues/17205>] | |
207 | ||
208 | =head2 Modifiable variables are no longer permitted in constants | |
209 | ||
210 | Code like: | |
211 | ||
212 | my $var; | |
213 | $sub = sub () { $var }; | |
214 | ||
215 | where C<$var> is referenced elsewhere in some sort of modifiable context now | |
216 | produces an exception when the sub is defined. | |
217 | ||
218 | This error can be avoided by adding a return to the sub definition: | |
219 | ||
220 | $sub = sub () { return $var }; | |
221 | ||
222 | This has been deprecated since Perl 5.22. | |
29c6c804 | 223 | L<[GH #17020]|https://github.com/Perl/perl5/issues/17020> |
0382c61d S |
224 | |
225 | =head2 Use of L<C<vec>|perlfunc/vec EXPR,OFFSET,BITS> on strings with code points above 0xFF is forbidden | |
226 | ||
227 | Such strings are represented internally in UTF-8, and C<vec> is a | |
228 | bit-oriented operation that will likely give unexpected results on those | |
229 | strings. This was deprecated in perl 5.28.0. | |
230 | ||
231 | =head2 Use of code points over 0xFF in string bitwise operators | |
232 | ||
233 | Some uses of these were already illegal after a previous deprecation | |
234 | cycle. The remaining uses are now prohibited, having been deprecated in perl | |
235 | 5.28.0. See L<perldeprecation>. | |
236 | ||
237 | =head2 C<Sys::Hostname::hostname()> does not accept arguments | |
238 | ||
239 | This usage was deprecated in perl 5.28.0 and is now fatal. | |
240 | ||
241 | =head2 Plain "0" string now treated as a number for range operator | |
242 | ||
243 | Previously a range C<"0" .. "-1"> would produce a range of numeric | |
244 | strings from "0" through "99"; this now produces an empty list, just | |
245 | as C<0 .. -1> does. This also means that C<"0" .. "9"> now produces a | |
246 | list of integers, where previously it would produce a list of strings. | |
247 | ||
248 | This was due to a special case that treated strings starting with "0" | |
249 | as strings so ranges like C<"00" .. "03"> produced C<"00", "01", "02", "03">, | |
250 | but didn't specially handle the string C<"0">. | |
29c6c804 | 251 | L<[GH #16770]|https://github.com/Perl/perl5/issues/16770> |
0382c61d S |
252 | |
253 | =head2 C<\K> now disallowed in look-ahead and look-behind assertions | |
254 | ||
255 | This was disallowed because it causes unexpected behaviour, and no-one | |
256 | could define what the desired behaviour should be. | |
29c6c804 | 257 | L<[GH #14638]|https://github.com/Perl/perl5/issues/14638> |
0382c61d S |
258 | |
259 | =head1 Performance Enhancements | |
260 | ||
261 | =over 4 | |
262 | ||
263 | =item * | |
264 | ||
265 | C<my_strnlen> has been sped up for systems that don't have their own | |
266 | C<strnlen> implementation. | |
267 | ||
268 | =item * | |
269 | ||
270 | C<grok_bin_oct_hex> (and so, C<grok_bin>, C<grok_oct>, and C<grok_hex>) | |
271 | have been sped up. | |
272 | ||
273 | =item * | |
274 | ||
275 | C<grok_number_flags> has been sped up. | |
276 | ||
277 | =item * | |
278 | ||
279 | C<sort> is now noticeably faster in cases such as C<< sort {$a <=> $b} >> or | |
280 | C<< sort {$b <=> $a} >>. [L<GH #17608|https://github.com/Perl/perl5/pull/17608>] | |
281 | ||
282 | =back | |
283 | ||
284 | =head1 Modules and Pragmata | |
285 | ||
286 | =head2 Updated Modules and Pragmata | |
287 | ||
288 | =over 4 | |
289 | ||
290 | =item * | |
291 | ||
292 | L<Archive::Tar> has been upgraded from version 2.32 to 2.36. | |
293 | ||
294 | =item * | |
295 | ||
296 | L<autodie> has been upgraded from version 2.29 to 2.32. | |
297 | ||
298 | =item * | |
299 | ||
300 | L<B> has been upgraded from version 1.76 to 1.80. | |
301 | ||
302 | =item * | |
303 | ||
304 | L<B::Deparse> has been upgraded from version 1.49 to 1.54. | |
305 | ||
306 | =item * | |
307 | ||
308 | L<Benchmark> has been upgraded from version 1.22 to 1.23. | |
309 | ||
310 | =item * | |
311 | ||
312 | L<charnames> has been upgraded from version 1.45 to 1.48. | |
313 | ||
314 | =item * | |
315 | ||
316 | L<Class::Struct> has been upgraded from version 0.65 to 0.66. | |
317 | ||
318 | =item * | |
319 | ||
320 | L<Compress::Raw::Bzip2> has been upgraded from version 2.084 to 2.093. | |
321 | ||
322 | =item * | |
323 | ||
324 | L<Compress::Raw::Zlib> has been upgraded from version 2.084 to 2.093. | |
325 | ||
326 | =item * | |
327 | ||
328 | L<CPAN> has been upgraded from version 2.22 to 2.27. | |
329 | ||
330 | =item * | |
331 | ||
332 | L<DB_File> has been upgraded from version 1.843 to 1.853. | |
333 | ||
334 | =item * | |
335 | ||
336 | L<Devel::PPPort> has been upgraded from version 3.52 to 3.57. | |
337 | ||
338 | The test files generated on Win32 are now identical to when they are | |
339 | generated on POSIX-like systems. | |
340 | ||
341 | =item * | |
342 | ||
343 | L<diagnostics> has been upgraded from version 1.36 to 1.37. | |
344 | ||
345 | =item * | |
346 | ||
347 | L<Digest::MD5> has been upgraded from version 2.55 to 2.55_01. | |
348 | ||
349 | =item * | |
350 | ||
351 | L<Dumpvalue> has been upgraded from version 1.18 to 1.21. | |
352 | ||
353 | Previously, when dumping elements of an array and encountering an undefined | |
354 | value, the string printed would have been C<empty array>. This has been | |
355 | changed to what was apparently originally intended: C<empty slot>. | |
356 | ||
357 | =item * | |
358 | ||
359 | L<DynaLoader> has been upgraded from version 1.45 to 1.47. | |
360 | ||
361 | =item * | |
362 | ||
363 | L<Encode> has been upgraded from version 3.01 to 3.06. | |
364 | ||
365 | =item * | |
366 | ||
367 | L<encoding> has been upgraded from version 2.22 to 3.00. | |
368 | ||
369 | =item * | |
370 | ||
371 | L<English> has been upgraded from version 1.10 to 1.11. | |
372 | ||
373 | =item * | |
374 | ||
375 | L<Exporter> has been upgraded from version 5.73 to 5.74. | |
376 | ||
377 | =item * | |
378 | ||
379 | L<ExtUtils::CBuilder> has been upgraded from version 0.280231 to 0.280234. | |
380 | ||
381 | =item * | |
382 | ||
383 | L<ExtUtils::MakeMaker> has been upgraded from version 7.34 to 7.44. | |
384 | ||
385 | =item * | |
386 | ||
387 | L<feature> has been upgraded from version 1.54 to 1.58. | |
388 | ||
389 | A new C<indirect> feature has been added, which is enabled by default | |
390 | but allows turning off L<indirect object syntax|perlobj/Indirect | |
391 | Object Syntax>. | |
392 | ||
393 | =item * | |
394 | ||
395 | L<File::Find> has been upgraded from version 1.36 to 1.37. | |
396 | ||
397 | On Win32, the tests no longer require either a file in the drive root | |
398 | directory, or a writable root directory. | |
399 | ||
400 | =item * | |
401 | ||
402 | L<File::Glob> has been upgraded from version 1.32 to 1.33. | |
403 | ||
404 | =item * | |
405 | ||
406 | L<File::stat> has been upgraded from version 1.08 to 1.09. | |
407 | ||
408 | =item * | |
409 | ||
410 | L<Filter::Simple> has been upgraded from version 0.95 to 0.96. | |
411 | ||
412 | =item * | |
413 | ||
414 | L<Getopt::Long> has been upgraded from version 2.5 to 2.51. | |
415 | ||
416 | =item * | |
417 | ||
418 | L<Hash::Util> has been upgraded from version 0.22 to 0.23. | |
419 | ||
420 | The Synopsis has been updated as the example code stopped working with | |
421 | newer perls. | |
422 | [L<GH #17399|https://github.com/Perl/perl5/issues/17399>] | |
423 | ||
424 | =item * | |
425 | ||
426 | L<I18N::Langinfo> has been upgraded from version 0.18 to 0.19. | |
427 | ||
428 | =item * | |
429 | ||
430 | L<I18N::LangTags> has been upgraded from version 0.43 to 0.44. | |
431 | ||
432 | Document the C<IGNORE_WIN32_LOCALE> environment variable. | |
433 | ||
434 | =item * | |
435 | ||
436 | L<IO> has been upgraded from version 1.40 to 1.43. | |
437 | ||
438 | L<IO::Socket> no longer caches a zero protocol value, since this | |
439 | indicates that the implementation will select a protocol. This means | |
440 | that on platforms that don't implement C<SO_PROTOCOL> for a given | |
441 | socket type the protocol method may return C<undef>. | |
442 | ||
443 | The supplied I<TO> is now always honoured on calls to the C<send()> | |
29c6c804 | 444 | method. L<[GH #16891]|https://github.com/Perl/perl5/issues/16891> |
0382c61d S |
445 | |
446 | =item * | |
447 | ||
448 | IO-Compress has been upgraded from version 2.084 to 2.093. | |
449 | ||
450 | =item * | |
451 | ||
452 | L<IPC::Cmd> has been upgraded from version 1.02 to 1.04. | |
453 | ||
454 | =item * | |
455 | ||
456 | L<IPC::Open3> has been upgraded from version 1.20 to 1.21. | |
457 | ||
458 | =item * | |
459 | ||
460 | L<JSON::PP> has been upgraded from version 4.02 to 4.04. | |
461 | ||
462 | =item * | |
463 | ||
464 | L<Math::BigInt> has been upgraded from version 1.999816 to 1.999818. | |
465 | ||
466 | =item * | |
467 | ||
468 | L<Math::BigInt::FastCalc> has been upgraded from version 0.5008 to 0.5009. | |
469 | ||
470 | =item * | |
471 | ||
472 | L<Module::CoreList> has been upgraded from version 5.20190522 to 5.20200620. | |
473 | ||
474 | =item * | |
475 | ||
476 | L<Module::Load::Conditional> has been upgraded from version 0.68 to 0.70. | |
477 | ||
478 | =item * | |
479 | ||
480 | L<Module::Metadata> has been upgraded from version 1.000036 to 1.000037. | |
481 | ||
482 | =item * | |
483 | ||
484 | L<mro> has been upgraded from version 1.22 to 1.23. | |
485 | ||
486 | =item * | |
487 | ||
488 | L<Net::Ping> has been upgraded from version 2.71 to 2.72. | |
489 | ||
490 | =item * | |
491 | ||
492 | L<Opcode> has been upgraded from version 1.43 to 1.47. | |
493 | ||
494 | =item * | |
495 | ||
496 | L<open> has been upgraded from version 1.11 to 1.12. | |
497 | ||
498 | =item * | |
499 | ||
500 | L<overload> has been upgraded from version 1.30 to 1.31. | |
501 | ||
502 | =item * | |
503 | ||
504 | L<parent> has been upgraded from version 0.237 to 0.238. | |
505 | ||
506 | =item * | |
507 | ||
508 | L<perlfaq> has been upgraded from version 5.20190126 to 5.20200523. | |
509 | ||
510 | =item * | |
511 | ||
512 | L<PerlIO> has been upgraded from version 1.10 to 1.11. | |
513 | ||
514 | =item * | |
515 | ||
516 | L<PerlIO::encoding> has been upgraded from version 0.27 to 0.28. | |
517 | ||
518 | =item * | |
519 | ||
520 | L<PerlIO::via> has been upgraded from version 0.17 to 0.18. | |
521 | ||
522 | =item * | |
523 | ||
524 | L<Pod::Html> has been upgraded from version 1.24 to 1.25. | |
525 | ||
526 | =item * | |
527 | ||
528 | L<Pod::Simple> has been upgraded from version 3.35 to 3.40. | |
529 | ||
530 | =item * | |
531 | ||
532 | L<podlators> has been upgraded from version 4.11 to 4.14. | |
533 | ||
534 | =item * | |
535 | ||
536 | L<POSIX> has been upgraded from version 1.88 to 1.94. | |
537 | ||
538 | =item * | |
539 | ||
540 | L<re> has been upgraded from version 0.37 to 0.40. | |
541 | ||
542 | =item * | |
543 | ||
544 | L<Safe> has been upgraded from version 2.40 to 2.41. | |
545 | ||
546 | =item * | |
547 | ||
548 | L<Scalar::Util> has been upgraded from version 1.50 to 1.55. | |
549 | ||
550 | =item * | |
551 | ||
552 | L<SelfLoader> has been upgraded from version 1.25 to 1.26. | |
553 | ||
554 | =item * | |
555 | ||
556 | L<Socket> has been upgraded from version 2.027 to 2.029. | |
557 | ||
558 | =item * | |
559 | ||
560 | L<Storable> has been upgraded from version 3.15 to 3.21. | |
561 | ||
562 | Use of C<note()> from L<Test::More> is now optional in tests. This works | |
563 | around a circular dependency with L<Test::More> when installing on very | |
564 | old perls from CPAN. | |
565 | ||
566 | Vstring magic strings over 2GB are now disallowed. | |
567 | ||
568 | Regular expressions objects weren't properly counted for object id | |
569 | purposes on retrieve. This would corrupt the resulting structure, or | |
29c6c804 | 570 | cause a runtime error in some cases. L<[GH #17037]|https://github.com/Perl/perl5/issues/17037> |
0382c61d S |
571 | |
572 | =item * | |
573 | ||
574 | L<Sys::Hostname> has been upgraded from version 1.22 to 1.23. | |
575 | ||
576 | =item * | |
577 | ||
578 | L<Sys::Syslog> has been upgraded from version 0.35 to 0.36. | |
579 | ||
580 | =item * | |
581 | ||
582 | L<Term::ANSIColor> has been upgraded from version 4.06 to 5.01. | |
583 | ||
584 | =item * | |
585 | ||
586 | L<Test::Simple> has been upgraded from version 1.302162 to 1.302175. | |
587 | ||
588 | =item * | |
589 | ||
590 | L<Thread> has been upgraded from version 3.04 to 3.05. | |
591 | ||
592 | =item * | |
593 | ||
594 | L<Thread::Queue> has been upgraded from version 3.13 to 3.14. | |
595 | ||
596 | =item * | |
597 | ||
598 | L<threads> has been upgraded from version 2.22 to 2.25. | |
599 | ||
600 | =item * | |
601 | ||
602 | L<threads::shared> has been upgraded from version 1.60 to 1.61. | |
603 | ||
604 | =item * | |
605 | ||
606 | L<Tie::File> has been upgraded from version 1.02 to 1.06. | |
607 | ||
608 | =item * | |
609 | ||
610 | L<Tie::Hash::NamedCapture> has been upgraded from version 0.10 to 0.13. | |
611 | ||
612 | =item * | |
613 | ||
614 | L<Tie::Scalar> has been upgraded from version 1.04 to 1.05. | |
615 | ||
616 | =item * | |
617 | ||
618 | L<Tie::StdHandle> has been upgraded from version 4.5 to 4.6. | |
619 | ||
620 | =item * | |
621 | ||
622 | L<Time::HiRes> has been upgraded from version 1.9760 to 1.9764. | |
623 | ||
624 | Removed obsolete code such as support for pre-5.6 perl and classic | |
29c6c804 | 625 | MacOS. L<[GH #17096]|https://github.com/Perl/perl5/issues/17096> |
0382c61d S |
626 | |
627 | =item * | |
628 | ||
629 | L<Time::Piece> has been upgraded from version 1.33 to 1.3401. | |
630 | ||
631 | =item * | |
632 | ||
633 | L<Unicode::Normalize> has been upgraded from version 1.26 to 1.27. | |
634 | ||
635 | =item * | |
636 | ||
637 | L<Unicode::UCD> has been upgraded from version 0.72 to 0.75. | |
638 | ||
639 | =item * | |
640 | ||
641 | L<VMS::Stdio> has been upgraded from version 2.44 to 2.45. | |
642 | ||
643 | =item * | |
644 | ||
645 | L<warnings> has been upgraded from version 1.44 to 1.47. | |
646 | ||
647 | =item * | |
648 | ||
649 | L<Win32> has been upgraded from version 0.52 to 0.53. | |
650 | ||
651 | =item * | |
652 | ||
653 | L<Win32API::File> has been upgraded from version 0.1203 to 0.1203_01. | |
654 | ||
655 | =item * | |
656 | ||
657 | L<XS::APItest> has been upgraded from version 1.00 to 1.09. | |
658 | ||
659 | =back | |
660 | ||
661 | =head2 Removed Modules and Pragmata | |
662 | ||
663 | =over 4 | |
664 | ||
665 | =item * | |
666 | ||
667 | Pod::Parser has been removed from the core distribution. | |
29c6c804 | 668 | It still is available for download from CPAN. This resolves |
669 | [L<#13194|https://github.com/Perl/perl5/issues/13194>]. | |
0382c61d S |
670 | |
671 | =back | |
672 | ||
673 | =head1 Documentation | |
674 | ||
675 | =head2 Changes to Existing Documentation | |
676 | ||
677 | We have attempted to update the documentation to reflect the changes | |
678 | listed in this document. If you find any we have missed, open an issue | |
679 | at L<https://github.com/Perl/perl5/issues>. | |
680 | ||
681 | Additionally, the following selected changes have been made: | |
682 | ||
683 | =head3 L<perldebguts> | |
684 | ||
685 | =over 4 | |
686 | ||
687 | =item * | |
688 | ||
689 | Simplify a few regnode definitions | |
690 | ||
691 | Update C<BOUND> and C<NBOUND> definitions. | |
692 | ||
693 | =item * | |
694 | ||
695 | Add ANYOFHs regnode | |
696 | ||
697 | This node is like C<ANYOFHb>, but is used when more than one leading byte | |
698 | is the same in all the matched code points. | |
699 | ||
700 | C<ANYOFHb> is used to avoid having to convert from UTF-8 to code point for | |
701 | something that won't match. It checks that the first byte in the UTF-8 | |
702 | encoded target is the desired one, thus ruling out most of the possible | |
703 | code points. | |
704 | ||
705 | =back | |
706 | ||
707 | =head3 L<perlapi> | |
708 | ||
709 | =over 4 | |
710 | ||
711 | =item * | |
712 | ||
713 | C<sv_2pvbyte> updated to mention it will croak if the SV cannot be | |
714 | downgraded. | |
715 | ||
716 | =item * | |
717 | ||
718 | C<sv_setpvn> updated to mention that the UTF-8 flag will not be changed by | |
719 | this function, and a terminating NUL byte is guaranteed. | |
720 | ||
721 | =item * | |
722 | ||
723 | Documentation for C<PL_phase> has been added. | |
724 | ||
725 | =item * | |
726 | ||
727 | The documentation for C<grok_bin>, C<grok_oct>, and C<grok_hex> has been | |
728 | updated and clarified. | |
729 | ||
730 | =back | |
731 | ||
732 | =head3 L<perldiag> | |
733 | ||
734 | =over 4 | |
735 | ||
736 | =item * | |
737 | ||
738 | Add documentation for experimental 'isa' operator | |
739 | ||
740 | (S experimental::isa) This warning is emitted if you use the (C<isa>) | |
741 | operator. This operator is currently experimental and its behaviour may | |
742 | change in future releases of Perl. | |
743 | ||
744 | =back | |
745 | ||
746 | =head3 L<perlfunc> | |
747 | ||
748 | =over 4 | |
749 | ||
750 | =item C<caller> | |
751 | ||
752 | Like L<C<__FILE__>|/__FILE__> and L<C<__LINE__>|/__LINE__>, the filename and | |
753 | line number returned here may be altered by the mechanism described at | |
754 | L<perlsyn/"Plain Old Comments (Not!)">. | |
755 | ||
756 | =item C<__FILE__> | |
757 | ||
758 | It can be altered by the mechanism described at | |
759 | L<perlsyn/"Plain Old Comments (Not!)">. | |
760 | ||
761 | =item C<__LINE__> | |
762 | ||
763 | It can be altered by the mechanism described at | |
764 | L<perlsyn/"Plain Old Comments (Not!)">. | |
765 | ||
766 | =item C<return> | |
767 | ||
768 | Now mentions that you cannot return from C<do BLOCK>. | |
769 | ||
770 | =item C<open> | |
771 | ||
772 | The C<open()> section had been renovated significantly. | |
773 | ||
774 | =back | |
775 | ||
776 | =head3 L<perlguts> | |
777 | ||
778 | =over 4 | |
779 | ||
780 | =item * | |
781 | ||
782 | No longer suggesting using perl's C<malloc>. Modern system C<malloc> is | |
783 | assumed to be much better than perl's implementation now. | |
784 | ||
785 | =item * | |
786 | ||
787 | Documentation about F<embed.fnc> flags has been removed. F<embed.fnc> now has | |
788 | sufficient comments within it. Anyone changing that file will see those | |
789 | comments first, so entries here are now redundant. | |
790 | ||
791 | =item * | |
792 | ||
793 | Updated documentation for C<UTF8f> | |
794 | ||
795 | =item * | |
796 | ||
797 | Added missing C<=for apidoc> lines | |
798 | ||
799 | =back | |
800 | ||
801 | =head3 L<perlhacktips> | |
802 | ||
803 | =over 4 | |
804 | ||
805 | =item * | |
806 | ||
807 | The differences between Perl strings and C strings are now detailed. | |
808 | ||
809 | =back | |
810 | ||
811 | =head3 L<perlintro> | |
812 | ||
813 | =over 4 | |
814 | ||
815 | =item * | |
816 | ||
817 | The documentation for the repetition operator C<x> have been clarified. | |
818 | [L<GH #17335|https://github.com/Perl/perl5/issues/17335>] | |
819 | ||
820 | =back | |
821 | ||
822 | =head3 L<perlipc> | |
823 | ||
824 | =over 4 | |
825 | ||
826 | =item * | |
827 | ||
828 | The documentation surrounding C<open> and handle usage has been modernized | |
829 | to prefer 3-arg open and lexical variables instead of barewords. | |
830 | ||
831 | =item * | |
832 | ||
833 | Various updates and fixes including making all examples strict-safe and | |
834 | replacing C<-w> with C<use warnings>. | |
835 | ||
836 | =back | |
837 | ||
838 | =head3 L<perlop> | |
839 | ||
840 | =over 4 | |
841 | ||
842 | =item * | |
843 | ||
844 | 'isa' operator is experimental | |
845 | ||
846 | This is an experimental feature and is available when enabled | |
847 | by C<use feature 'isa'>. It emits a warning in the C<experimental::isa> | |
848 | category. | |
849 | ||
850 | =back | |
851 | ||
852 | =head3 L<perlpod> | |
853 | ||
854 | =over 4 | |
855 | ||
856 | =item * | |
857 | ||
858 | Details of the various stacks within the perl interpreter are now explained | |
859 | here. | |
860 | ||
861 | =item * | |
862 | ||
863 | Advice has been added regarding the usage of C<< ZE<lt>E<gt> >>. | |
864 | ||
865 | =back | |
866 | ||
867 | =head3 L<perlport> | |
868 | ||
869 | =over 4 | |
870 | ||
871 | =item * | |
872 | ||
873 | Update C<timegm> example to use the correct year format I<1970> instead of I<70>. | |
874 | [L<GH #16431|https://github.com/Perl/perl5/issues/16431>] | |
875 | ||
876 | =back | |
877 | ||
878 | =head3 L<perlreref> | |
879 | ||
880 | =over 4 | |
881 | ||
882 | =item * | |
883 | ||
884 | Fix some typos. | |
885 | ||
886 | =back | |
887 | ||
888 | =head3 L<perlvar> | |
889 | ||
890 | =over 4 | |
891 | ||
892 | =item * | |
893 | ||
894 | Now recommends stringifying C<$]> and comparing it numerically. | |
895 | ||
896 | =back | |
897 | ||
898 | =head3 L<perlapi>, L<perlintern> | |
899 | ||
900 | =over 4 | |
901 | ||
902 | =item * | |
903 | ||
904 | Documentation has been added for several functions that were | |
905 | lacking it before. | |
906 | ||
907 | =back | |
908 | ||
909 | =head3 L<perlxs> | |
910 | ||
911 | =over 4 | |
912 | ||
913 | =item * | |
914 | ||
45233210 S |
915 | Suggest using C<libffi> for simple library bindings via CPAN modules |
916 | like L<FFI::Platypus> or L<FFI::Raw>. | |
0382c61d S |
917 | |
918 | =back | |
919 | ||
920 | =head3 L<POSIX> | |
921 | ||
922 | =over 4 | |
923 | ||
924 | =item * | |
925 | ||
926 | C<setlocale> warning about threaded builds updated to note it does not | |
927 | apply on Perl 5.28.X and later. | |
928 | ||
929 | =item * | |
930 | ||
931 | C<< Posix::SigSet->new(...) >> updated to state it throws an error if any of | |
932 | the supplied signals cannot be added to the set. | |
933 | ||
934 | =back | |
935 | ||
936 | Additionally, the following selected changes have been made: | |
937 | ||
938 | =head3 Updating of links | |
939 | ||
940 | =over 4 | |
941 | ||
942 | =item * | |
943 | ||
944 | Links to the now defunct L<https://search.cpan.org> site now point at | |
945 | the equivalent L<https://metacpan.org> URL. [L<GH #17393|https://github.com/Perl/perl5/issues/17393>] | |
946 | ||
947 | =item * | |
948 | ||
949 | The man page for L<ExtUtils::XSSymSet> is now only installed on VMS, | |
950 | which is the only platform the module is installed on. [L<GH #17424|https://github.com/Perl/perl5/issues/17424>] | |
951 | ||
952 | =item * | |
953 | ||
954 | URLs have been changed to C<https://> and stale links have been updated. | |
955 | ||
956 | Where applicable, the URLs in the documentation have been moved from using the | |
957 | C<http://> protocol to C<https://>. This also affects the location of the bug | |
958 | tracker at L<https://rt.perl.org>. | |
959 | ||
960 | =item * | |
961 | ||
962 | Some links to OS/2 libraries, Address Sanitizer and other system tools had gone | |
963 | stale. These have been updated with working links. | |
964 | ||
965 | =item * | |
966 | ||
967 | Some links to old email addresses on perl5-porters had gone stale. These have been | |
968 | updated with working links. | |
969 | ||
970 | =back | |
971 | ||
972 | =head1 Diagnostics | |
973 | ||
974 | The following additions or changes have been made to diagnostic output, | |
975 | including warnings and fatal error messages. For the complete list of | |
976 | diagnostic messages, see L<perldiag>. | |
977 | ||
978 | =head2 New Diagnostics | |
979 | ||
980 | =head3 New Errors | |
981 | ||
982 | =over 4 | |
983 | ||
984 | =item * | |
985 | ||
986 | L<Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol> | |
987 | |perldiag/"Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>"> | |
988 | ||
989 | This is a replacement for several error messages listed under | |
990 | L</Changes to Existing Diagnostics>. | |
991 | ||
992 | =item * | |
993 | ||
994 | C<L<No digits found for %s literal|perldiag/"No digits found for %s literal">> | |
995 | ||
996 | (F) No hexadecimal digits were found following C<0x> or no binary digits were | |
997 | found following C<0b>. | |
998 | ||
999 | =back | |
1000 | ||
1001 | =head3 New Warnings | |
1002 | ||
1003 | =over 4 | |
1004 | ||
1005 | =item * | |
1006 | ||
1007 | L<Code point 0x%X is not Unicode, and not portable|perldiag/"Code point 0x%X is not Unicode, and not portable"> | |
1008 | ||
1009 | This is actually not a new message, but it is now output when the | |
1010 | warnings category C<portable> is enabled. | |
1011 | ||
1012 | When raised during regular expression pattern compilation, the warning | |
1013 | has extra text added at the end marking where precisely in the pattern | |
1014 | it occurred. | |
1015 | ||
1016 | =item * | |
1017 | ||
1018 | L<Non-hex character '%c' terminates \x early. Resolved as "%s"|perldiag/"Non-hex character '%c' terminates \x early. Resolved as "%s""> | |
1019 | ||
1020 | This replaces a warning that was much less specific, and which gave | |
1021 | false information. This new warning parallels the similar | |
1022 | already-existing one raised for C<\o{}>. | |
1023 | ||
1024 | =back | |
1025 | ||
1026 | =head2 Changes to Existing Diagnostics | |
1027 | ||
1028 | =over 4 | |
1029 | ||
1030 | =item * | |
1031 | ||
1032 | L<Character following "\c" must be printable ASCII|perldiag/"Character following "\c" must be printable ASCII"> | |
1033 | ||
1034 | ...now has extra text added at the end, when raised during regular | |
1035 | expression pattern compilation, marking where precisely in the pattern | |
1036 | it occurred. | |
1037 | ||
1038 | =item * | |
1039 | ||
1040 | L<Use "%s" instead of "%s"|perldiag/"Use "%s" instead of "%s""> | |
1041 | ||
1042 | ...now has extra text added at the end, when raised during regular | |
1043 | expression pattern compilation, marking where precisely in the pattern | |
1044 | it occurred. | |
1045 | ||
1046 | =item * | |
1047 | ||
1048 | L<Sequence "\c{" invalid|perldiag/"Sequence "\c{" invalid"> | |
1049 | ||
1050 | ...now has extra text added at the end, when raised during regular | |
1051 | expression pattern compilation, marking where precisely in the pattern | |
1052 | it occurred. | |
1053 | ||
1054 | =item * | |
1055 | ||
1056 | L<"\c%c" is more clearly written simply as "%s"|perldiag/""\c%c" is more clearly written simply as "%s""> | |
1057 | ||
1058 | ...now has extra text added at the end, when raised during regular | |
1059 | expression pattern compilation, marking where precisely in the pattern | |
1060 | it occurred. | |
1061 | ||
1062 | =item * | |
1063 | ||
1064 | L<Non-octal character '%c' terminates \o early. Resolved as "%s"|perldiag/"Non-octal character '%c' terminates \o early. Resolved as "%s""> | |
1065 | ||
1066 | ...now includes the phrase "terminates \o early", and has extra text added | |
1067 | at the end, when raised during regular expression pattern compilation, | |
1068 | marking where precisely in the pattern it occurred. In some instances | |
1069 | the text of the resolution has been clarified. | |
1070 | ||
1071 | =item * | |
1072 | ||
1073 | L<'%s' resolved to '\o{%s}%d'|perldiag/'%s' resolved to '\o{%s}%d'> | |
1074 | ||
1075 | As of Perl 5.32, this message is no longer generated. Instead, | |
1076 | L<perldiag/Non-octal character '%c' terminates \o early. Resolved as "%s"> | |
1077 | is used instead. | |
1078 | ||
1079 | =item * | |
1080 | ||
1081 | L<Use of code point 0x%s is not allowed; the permissible max is 0x%X|perldiag/"Use of code point 0x%s is not allowed; the permissible max is 0x%X"> | |
1082 | ||
1083 | Some instances of this message previously output the hex digits C<A>, | |
1084 | C<B>, C<C>, C<D>, C<E>, and C<F> in lower case. Now they are all | |
1085 | consistently upper case. | |
1086 | ||
1087 | =item * | |
1088 | ||
1089 | The following three diagnostics have been removed, and replaced by | |
1090 | L<C<Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>> | |
1091 | |perldiag/"Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>">: | |
1092 | C<Expecting close paren for nested extended charclass in regex; marked | |
1093 | by <-- HERE in mE<sol>%sE<sol>>, | |
1094 | C<Expecting close paren for wrapper for nested extended charclass in | |
1095 | regex; marked by <-- HERE in mE<sol>%sE<sol>>, | |
1096 | and | |
1097 | C<Expecting '(?flags:(?[...' in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>>. | |
1098 | ||
1099 | =item * | |
1100 | ||
1101 | The C<Code point 0x%X is not Unicode, and not portable> warning removed | |
1102 | the line C<Code points above 0xFFFF_FFFF require larger than a 32 bit word.> | |
1103 | as code points that large are no longer legal on 32-bit platforms. | |
1104 | ||
1105 | =item * | |
1106 | ||
1107 | L<Can't use global %s in %s|perldiag/"Can't use global %s in %s"> | |
1108 | ||
1109 | This error message has been slightly reformatted from the original C<Can't use | |
1110 | global %s in "%s">, and in particular misleading error messages like C<Can't | |
1111 | use global $_ in "my"> are now rendered as C<Can't use global $_ in subroutine | |
1112 | signature>. | |
1113 | ||
1114 | =item * | |
1115 | ||
1116 | L<Constants from lexical variables potentially modified elsewhere are no longer permitted|perldiag/"Constants from lexical variables potentially modified elsewhere are no longer permitted"> | |
1117 | ||
1118 | This error message replaces the former C<Constants from lexical variables | |
1119 | potentially modified elsewhere are deprecated. This will not be allowed in Perl | |
1120 | 5.32> to reflect the fact that this previously deprecated usage has now been | |
1121 | transformed into an exception. The message's classification has also been | |
1122 | updated from D (deprecated) to F (fatal). | |
1123 | ||
1124 | See also L</Incompatible Changes>. | |
1125 | ||
1126 | =item * | |
1127 | ||
1128 | C<\N{} here is restricted to one character> is now emitted in the same | |
1129 | circumstances where previously C<\N{} in inverted character class or as a range | |
1130 | end-point is restricted to one character> was. | |
1131 | ||
1132 | This is due to new circumstances having been added in Perl 5.30 that weren't | |
1133 | covered by the earlier wording. | |
1134 | ||
1135 | =back | |
1136 | ||
1137 | =head1 Utility Changes | |
1138 | ||
1139 | =head2 L<perlbug> | |
1140 | ||
1141 | =over 4 | |
1142 | ||
1143 | =item * The bug tracker homepage URL now points to GitHub. | |
1144 | ||
1145 | =back | |
1146 | ||
1147 | =head2 L<streamzip> | |
1148 | ||
1149 | =over 4 | |
1150 | ||
1151 | =item * | |
1152 | ||
1153 | This is a new utility, included as part of an | |
1154 | L<IO::Compress::Base> upgrade. | |
1155 | ||
1156 | L<streamzip> creates a zip file from stdin. The program will read data | |
1157 | from stdin, compress it into a zip container and, by default, write a | |
1158 | streamed zip file to stdout. | |
1159 | ||
1160 | =back | |
1161 | ||
1162 | =head1 Configuration and Compilation | |
1163 | ||
1164 | =head2 F<Configure> | |
1165 | ||
1166 | =over 4 | |
1167 | ||
1168 | =item * | |
1169 | ||
1170 | For clang++, add C<< #include <stdlib.h> >> to Configure's probes for | |
1171 | C<futimes>, C<strtoll>, C<strtoul>, C<strtoull>, C<strtouq>, otherwise the | |
1172 | probes would fail to compile. | |
1173 | ||
1174 | =item * | |
1175 | ||
1176 | Use a compile and run test for C<lchown> to satisfy clang++ which should | |
1177 | more reliably detect it. | |
1178 | ||
1179 | =item * | |
1180 | ||
1181 | For C++ compilers, add C<< #include <stdio.h> >> to Configure's probes for | |
1182 | C<getpgrp> and C<setpgrp> as they use printf and C++ compilers may fail | |
1183 | compilation instead of just warning. | |
1184 | ||
1185 | =item * | |
1186 | ||
1187 | Check if the compiler can handle inline attribute. | |
1188 | ||
1189 | =item * | |
1190 | ||
1191 | Check for character data alignment. | |
1192 | ||
1193 | =item * | |
1194 | ||
1195 | F<Configure> now correctly handles gcc-10. Previously it was interpreting it | |
1196 | as gcc-1 and turned on C<-fpcc-struct-return>. | |
1197 | ||
1198 | =item * | |
1199 | ||
1200 | Perl now no longer probes for C<d_u32align>, defaulting to C<define> on all | |
1201 | platforms. This check was error-prone when it was done, which was on 32-bit | |
1202 | platforms only. | |
29c6c804 | 1203 | L<[GH #16680]|https://github.com/Perl/perl5/issues/16680> |
0382c61d S |
1204 | |
1205 | =item * | |
1206 | ||
1207 | Documentation and hints for building perl on Z/OS (native EBCDIC) have been | |
1208 | updated. This is still a work in progress. | |
1209 | ||
1210 | =item * | |
1211 | ||
1212 | A new probe for C<malloc_usable_size> has been added. | |
1213 | ||
1214 | =item * | |
1215 | ||
1216 | Improvements in F<Configure> to detection in C++ and clang++. Work ongoing by | |
29c6c804 | 1217 | Andy Dougherty. L<[GH #17033]|https://github.com/Perl/perl5/issues/17033> |
0382c61d S |
1218 | |
1219 | =item * | |
1220 | ||
1221 | F<autodoc.pl> | |
1222 | ||
1223 | This tool that regenerates L<perlintern> and L<perlapi> has been overhauled | |
1224 | significantly, restoring consistency in flags used in F<embed.fnc> and | |
1225 | L<Devel::PPPort> and allowing removal of many redundant C<=for apidoc> | |
1226 | entries in code. | |
1227 | ||
1228 | =item * | |
1229 | ||
1230 | The C<ECHO> macro is now defined. This is used in a C<dtrace> rule that was | |
1231 | originally changed for FreeBSD, and the FreeBSD make apparently predefines it. | |
1232 | The Solaris make does not predefine C<ECHO> which broke this rule on Solaris. | |
29c6c804 | 1233 | L<[GH #17057]|https://github.com/Perl/perl5/issues/17057> |
0382c61d S |
1234 | |
1235 | =item * | |
1236 | ||
1237 | Bison versions 3.1 through 3.4 are now supported. | |
1238 | ||
1239 | =back | |
1240 | ||
1241 | =head1 Testing | |
1242 | ||
1243 | Tests were added and changed to reflect the other additions and | |
1244 | changes in this release. Furthermore, these significant changes were | |
1245 | made: | |
1246 | ||
1247 | =over 4 | |
1248 | ||
1249 | =item * | |
1250 | ||
1251 | F<t/run/switches.t> no longer uses (and re-uses) the F<tmpinplace/> | |
1252 | directory under F<t/>. This may prevent spurious failures. [L<GH #17424|https://github.com/Perl/perl5/issues/17424>] | |
1253 | ||
1254 | =item * | |
1255 | ||
1256 | Various bugs in C<POSIX::mbtowc> were fixed. Potential races with | |
1257 | other threads are now avoided, and previously the returned wide | |
1258 | character could well be garbage. | |
1259 | ||
1260 | =item * | |
1261 | ||
1262 | Various bugs in C<POSIX::wctomb> were fixed. Potential races with other | |
1263 | threads are now avoided, and previously it would segfault if the string | |
1264 | parameter was shared or hadn't been pre-allocated with a string of | |
1265 | sufficient length to hold the result. | |
1266 | ||
1267 | =item * | |
1268 | ||
1269 | Certain test output of scalars containing control characters and Unicode | |
1270 | has been fixed on EBCDIC. | |
1271 | ||
1272 | =item * | |
1273 | ||
1274 | F<t/charset_tools.pl>: Avoid some work on ASCII platforms. | |
1275 | ||
1276 | =item * | |
1277 | ||
1278 | F<t/re/regexp.t>: Speed up many regex tests on ASCII platform | |
1279 | ||
1280 | =item * | |
1281 | ||
1282 | F<t/re/pat.t>: Skip tests that don't work on EBCDIC. | |
1283 | ||
1284 | =back | |
1285 | ||
1286 | =head1 Platform Support | |
1287 | ||
1288 | =head2 Discontinued Platforms | |
1289 | ||
1290 | =over 4 | |
1291 | ||
1292 | =item Windows CE | |
1293 | ||
1294 | Support for building perl on Windows CE has now been removed. | |
1295 | ||
1296 | =back | |
1297 | ||
1298 | =head2 Platform-Specific Notes | |
1299 | ||
1300 | =over 4 | |
1301 | ||
1302 | =item Linux | |
1303 | ||
1304 | C<cc> will be used to populate C<plibpth> if C<cc> is C<clang>. | |
29c6c804 | 1305 | L<[GH #17043]|https://github.com/Perl/perl5/issues/17043> |
0382c61d S |
1306 | |
1307 | =item NetBSD 8.0 | |
1308 | ||
1309 | Fix compilation of Perl on NetBSD 8.0 with g++. | |
1310 | [L<GH #17381|https://github.com/Perl/perl5/issues/17381>] | |
1311 | ||
1312 | =item Windows | |
1313 | ||
1314 | =over 4 | |
1315 | ||
1316 | =item * | |
1317 | ||
1318 | The configuration for C<ccflags> and C<optimize> are now separate, as | |
1319 | with POSIX platforms. [L<GH #17156|https://github.com/Perl/perl5/issues/17156>] | |
1320 | ||
1321 | =item * | |
1322 | ||
1323 | Support for building perl with Visual C++ 6.0 has now been removed. | |
1324 | ||
1325 | =item * | |
1326 | ||
1327 | The locale tests could crash on Win32 due to a Windows bug, and | |
1328 | separately due to the CRT throwing an exception if the locale name | |
1329 | wasn't validly encoded in the current code page. | |
1330 | ||
1331 | For the second we now decode the locale name ourselves, and always | |
29c6c804 | 1332 | decode it as UTF-8. L<[GH #16922]|https://github.com/Perl/perl5/issues/16922> |
0382c61d S |
1333 | |
1334 | =item * | |
1335 | ||
1336 | F<t/op/magic.t> could fail if environment variables starting with | |
1337 | C<FOO> already existed. | |
1338 | ||
1339 | =item * | |
1340 | ||
1341 | MYMALLOC (PERL_MALLOC) build has been fixed. | |
1342 | ||
1343 | =back | |
1344 | ||
1345 | =item Solaris | |
1346 | ||
1347 | =over 4 | |
1348 | ||
1349 | =item * | |
1350 | ||
1351 | C<Configure> will now find recent versions of the Oracle Developer Studio | |
1352 | compiler, which are found under C</opt/developerstudio*>. | |
1353 | ||
1354 | =item * | |
1355 | ||
1356 | C<Configure> now uses the detected types for C<gethostby*> functions, allowing | |
1357 | Perl to once again compile on certain configurations of Solaris. | |
1358 | ||
1359 | =back | |
1360 | ||
1361 | =item VMS | |
1362 | ||
1363 | =over 4 | |
1364 | ||
1365 | =item * | |
1366 | ||
1367 | With the release of the patch kit C99 V2.0, VSI has provided support for a | |
1368 | number of previously-missing C99 features. On systems with that patch kit | |
1369 | installed, Perl's configuration process will now detect the presence of the | |
1370 | header C<stdint.h> and the following functions: C<fpclassify>, C<isblank>, C<isless>, | |
1371 | C<llrint>, C<llrintl>, C<llround>, C<llroundl>, C<nearbyint>, C<round>, C<scalbn>, | |
1372 | and C<scalbnl>. | |
1373 | ||
1374 | =item * | |
1375 | ||
1376 | C<-Duse64bitint> is now the default on VMS. | |
1377 | ||
1378 | =back | |
1379 | ||
1380 | =item z/OS | |
1381 | ||
1382 | Perl 5.32 has been tested on z/OS 2.4, with the following caveats: | |
1383 | ||
1384 | =over 4 | |
1385 | ||
1386 | =item * | |
1387 | ||
1388 | Only static builds (the default) build reliably | |
1389 | ||
1390 | =item * | |
1391 | ||
1392 | When using locales, z/OS does not handle the C<LC_MESSAGES> category | |
1393 | properly, so when compiling perl, you should add the following to your | |
1394 | F<Configure> options | |
1395 | ||
1396 | ./Configure <other options> -Accflags=-DNO_LOCALE_MESSAGES | |
1397 | ||
1398 | =item * | |
1399 | ||
1400 | z/OS does not support locales with threads, so when compiling a threaded | |
1401 | perl, you should add the following to your F<Configure> options | |
1402 | ||
1403 | ./Configure <other Configure options> -Accflags=-DNO_LOCALE | |
1404 | ||
1405 | =item * | |
1406 | ||
1407 | Some CPAN modules that are shipped with perl fail at least one of their | |
1408 | self-tests. These are: | |
1409 | Archive::Tar, | |
1410 | Config::Perl::V, | |
1411 | CPAN::Meta, | |
1412 | CPAN::Meta::YAML, | |
1413 | Digest::MD5, | |
1414 | Digest::SHA, | |
1415 | Encode, | |
1416 | ExtUtils::MakeMaker, | |
1417 | ExtUtils::Manifest, | |
1418 | HTTP::Tiny, | |
1419 | IO::Compress, | |
1420 | IPC::Cmd, | |
1421 | JSON::PP, | |
1422 | libnet, | |
1423 | MIME::Base64, | |
1424 | Module::Metadata, | |
1425 | PerlIO::via-QuotedPrint, | |
1426 | Pod::Checker, | |
1427 | podlators, | |
1428 | Pod::Simple, | |
1429 | Socket, | |
1430 | and Test::Harness. | |
1431 | ||
1432 | The causes of the failures range from the self-test itself is flawed, | |
1433 | and the module actually works fine, up to the module doesn't work at all | |
1434 | on EBCDIC platforms. | |
1435 | ||
1436 | =back | |
1437 | ||
1438 | =back | |
1439 | ||
1440 | =head1 Internal Changes | |
1441 | ||
1442 | =over 4 | |
1443 | ||
1444 | =item * | |
1445 | ||
1446 | C<savepvn>'s len parameter is now a C<Size_t> instead of an C<I32> since we | |
1447 | can handle longer strings than 31 bits. | |
1448 | ||
1449 | =item * | |
1450 | ||
1451 | The lexer (C<Perl_yylex()> in F<toke.c>) was previously a single 4100-line | |
1452 | function, relying heavily on C<goto> and a lot of widely-scoped local variables | |
1453 | to do its work. It has now been pulled apart into a few dozen smaller static | |
1454 | functions; the largest remaining chunk (C<yyl_word_or_keyword()>) is a little | |
1455 | over 900 lines, and consists of a single C<switch> statement, all of whose | |
1456 | C<case> groups are independent. This should be much easier to understand and | |
1457 | maintain. | |
1458 | ||
1459 | =item * | |
1460 | ||
1461 | The OS-level signal handlers and type (Sighandler_t) used by the perl core | |
1462 | were declared as having three parameters, but the OS was always told to | |
1463 | call them with one argument. This has been fixed by declaring them to have | |
1464 | one parameter. See the merge commit C<v5.31.5-346-g116e19abbf> for full | |
1465 | details. | |
1466 | ||
1467 | =item * | |
1468 | ||
1469 | The code that handles C<tr///> has been extensively revised, fixing | |
1470 | various bugs, especially when the source and/or replacement strings | |
1471 | contain characters whose code points are above 255. Some of the bugs | |
1472 | were undocumented, one being that under some circumstances (but not all) | |
1473 | with C</s>, the squeezing was done based on the source, rather than the | |
1474 | replacement. A documented bug that got fixed was | |
29c6c804 | 1475 | L<[GH #14777]|https://github.com/Perl/perl5/issues/14777>. |
0382c61d S |
1476 | |
1477 | =item * | |
1478 | ||
1479 | A new macro for XS writers dealing with UTF-8-encoded Unicode strings | |
1480 | has been created L<perlapi/C<UTF8_CHK_SKIP>> that is safer in the face | |
1481 | of malformed UTF-8 input than L<perlapi/C<UTF8_SKIP>> (but not as safe | |
1482 | as L<perlapi/C<UTF8_SAFE_SKIP>>). It won't read past a NUL character. | |
1483 | It has been backported in L<Devel::PPPort> 3.55 and later. | |
1484 | ||
1485 | =item * | |
1486 | ||
1487 | Added the C<< PL_curstackinfo->si_cxsubix >> field. This records the stack index | |
1488 | of the most recently pushed sub/format/eval context. It is set and restored | |
1489 | automatically by C<cx_pushsub()>, C<cx_popsub()> etc., but would need to be | |
1490 | manually managed if you do any unusual manipulation of the context stack. | |
1491 | ||
1492 | =item * | |
1493 | ||
1494 | Various macros dealing with character type classification and changing case | |
1495 | where the input is encoded in UTF-8 now require an extra parameter to prevent | |
1496 | potential reads beyond the end of the buffer. Use of these has generated a | |
1497 | deprecation warning since Perl 5.26. Details are in | |
1498 | L<perldeprecation/In XS code, use of various macros dealing with UTF-8.> | |
1499 | ||
1500 | =item * | |
1501 | ||
1502 | A new parser function L<parse_subsignature()|perlapi/parse_subsignature> | |
1503 | allows a keyword plugin to parse a subroutine signature while C<use feature | |
1504 | 'signatures'> is in effect. This allows custom keywords to implement | |
1505 | semantics similar to regular C<sub> declarations that include signatures. | |
29c6c804 | 1506 | L<[GH #16261]|https://github.com/Perl/perl5/issues/16261> |
0382c61d S |
1507 | |
1508 | =item * | |
1509 | ||
1510 | Since on some platforms we need to hold a mutex when temporarily | |
1511 | switching locales, new macros (C<STORE_LC_NUMERIC_SET_TO_NEEDED_IN>, | |
1512 | C<WITH_LC_NUMERIC_SET_TO_NEEDED> and C<WITH_LC_NUMERIC_SET_TO_NEEDED_IN>) | |
1513 | have been added to make it easier to do this safely and efficiently | |
29c6c804 | 1514 | as part of L<[GH #17034]|https://github.com/Perl/perl5/issues/17034>. |
0382c61d S |
1515 | |
1516 | =item * | |
1517 | ||
1518 | The memory bookkeeping overhead for allocating an OP structure has been | |
1519 | reduced by 8 bytes per OP on 64-bit systems. | |
1520 | ||
1521 | =item * | |
1522 | ||
1523 | L<eval_pv()|perlapi/eval_pv> no longer stringifies the exception when | |
29c6c804 | 1524 | C<[GH #17035]|https://github.com/Perl/perl5/issues/17035>] |
0382c61d S |
1525 | |
1526 | =item * | |
1527 | ||
1528 | The PERL_DESTRUCT_LEVEL environment variable was formerly only honoured on perl | |
1529 | binaries built with DEBUGGING support. It is now checked on all perl builds. | |
1530 | Its normal use is to force perl to individually free every block of memory | |
1531 | which it has allocated before exiting, which is useful when using automated | |
1532 | leak detection tools such as valgrind. | |
1533 | ||
1534 | =item * | |
1535 | ||
1536 | The API eval_sv() now accepts a C<G_RETHROW> flag. If this flag is set and an | |
1537 | exception is thrown while compiling or executing the supplied code, it will be | |
1538 | rethrown, and eval_sv() will not return. | |
29c6c804 | 1539 | L<[GH #17036]|https://github.com/Perl/perl5/issues/17036> |
0382c61d S |
1540 | |
1541 | =item * | |
1542 | ||
1543 | As part of the fix for | |
29c6c804 | 1544 | L<[GH #1537]|https://github.com/Perl/perl5/issues/1537> perl_parse() |
0382c61d S |
1545 | now returns non-zero if exit(0) is called in a C<BEGIN>, C<UNITCHECK> or |
1546 | C<CHECK> block. | |
1547 | ||
1548 | =item * | |
1549 | ||
1550 | Most functions which recursively walked an op tree during compilation have been | |
1551 | made non-recursive. This avoids SEGVs from stack overflow when the op tree is | |
1552 | deeply nested, such as C<$n == 1 ? "one" : $n == 2 ? "two" : ....> (especially | |
1553 | in code which is auto-generated). | |
1554 | ||
1555 | This is particularly noticeable where the code is compiled within a separate | |
1556 | thread, as threads tend to have small stacks by default. | |
1557 | ||
1558 | =back | |
1559 | ||
1560 | =head1 Selected Bug Fixes | |
1561 | ||
1562 | =over 4 | |
1563 | ||
1564 | =item * | |
1565 | ||
1566 | Previously L<perlfunc/require> would only treat the special built-in | |
1567 | SV C<&PL_sv_undef> as a value in C<%INC> as if a previous C<require> | |
1568 | has failed, treating other undefined SVs as if the previous C<require> | |
1569 | has succeeded. This could cause unexpected success from C<require> | |
1570 | e.g., on C<local %INC = %INC;>. This has been fixed. [L<GH #17428|https://github.com/Perl/perl5/issues/17428>] | |
1571 | ||
1572 | =item * | |
1573 | ||
1574 | C<(?{...})> eval groups in regular expressions no longer unintentionally | |
1575 | trigger "EVAL without pos change exceeded limit in regex" [L<GH #17490|https://github.com/Perl/perl5/issues/17490>]. | |
1576 | ||
1577 | =item * | |
1578 | ||
1579 | C<(?[...])> extended bracketed character classes do not wrongly raise an | |
1580 | error on some cases where a previously-compiled such class is | |
1581 | interpolated into another. The heuristics previously used have been | |
1582 | replaced by a reliable method, and hence the diagnostics generated have | |
1583 | changed. See L</Diagnostics>. | |
1584 | ||
1585 | =item * | |
1586 | ||
1587 | The debug display (say by specifying C<-Dr> or S<C<use re>> (with | |
1588 | appropriate options) of compiled Unicode property wildcard subpatterns no | |
1589 | longer has extraneous output. | |
1590 | ||
1591 | =item * | |
1592 | ||
1593 | Fix an assertion failure in the regular expression engine. | |
1594 | [L<GH #17372|https://github.com/Perl/perl5/issues/17372>] | |
1595 | ||
1596 | =item * | |
1597 | ||
1598 | Fix coredump in pp_hot.c after C<B::UNOP_AUX::aux_list()>. | |
1599 | [L<GH #17301|https://github.com/Perl/perl5/issues/17301>] | |
1600 | ||
1601 | =item * | |
1602 | ||
1603 | Loading IO is now threadsafe. | |
1604 | [L<GH #14816|https://github.com/Perl/perl5/issues/14816>] | |
1605 | ||
1606 | =item * | |
1607 | ||
1608 | C<\p{user-defined}> overrides official Unicode [L<GH #17025|https://github.com/Perl/perl5/issues/17025>] | |
1609 | ||
1610 | Prior to this patch, the override was only sometimes in effect. | |
1611 | ||
1612 | =item * | |
1613 | ||
1614 | Properly handle filled C</il> regnodes and multi-char folds | |
1615 | ||
1616 | =item * | |
1617 | ||
1618 | Compilation error during make minitest [L<GH #17293|https://github.com/Perl/perl5/issues/17293>] | |
1619 | ||
1620 | =item * | |
1621 | ||
1622 | Move the implementation of C<%->, C<%+> into core. | |
1623 | ||
1624 | =item * | |
1625 | ||
1626 | Read beyond buffer in C<grok_inf_nan> [L<GH #17370|https://github.com/Perl/perl5/issues/17370>] | |
1627 | ||
1628 | =item * | |
1629 | ||
1630 | Workaround glibc bug with C<LC_MESSAGES> [L<GH #17081|https://github.com/Perl/perl5/issues/17081>] | |
1631 | ||
1632 | =item * | |
1633 | ||
1634 | C<printf()> or C<sprintf()> with the C<%n> format could cause a panic on | |
1635 | debugging builds, or report an incorrectly cached length value when | |
1636 | producing C<SVfUTF8> flagged strings. [L<GH #17221|https://github.com/Perl/perl5/issues/17221>] | |
1637 | ||
1638 | =item * | |
1639 | ||
1640 | The tokenizer has been extensively refactored. | |
1641 | [L<GH #17241|https://github.com/Perl/perl5/issues/17241>] | |
1642 | [L<GH #17189|https://github.com/Perl/perl5/issues/17189>] | |
1643 | ||
1644 | =item * | |
1645 | ||
1646 | C<use strict "subs"> is now enforced for bareword constants optimized | |
1647 | into a C<multiconcat> operator. [L<GH #17254|https://github.com/Perl/perl5/issues/17254>] | |
1648 | ||
1649 | =item * | |
1650 | ||
1651 | A memory leak in regular expression patterns has been fixed. [L<GH #17218|https://github.com/Perl/perl5/issues/17218>] | |
1652 | ||
1653 | =item * | |
1654 | ||
1655 | Perl no longer treats strings starting with "0x" or "0b" as hex or | |
1656 | binary numbers respectively when converting a string to a number. | |
1657 | This reverts a change in behaviour inadvertently introduced in perl | |
1658 | 5.30.0 intended to improve precision when converting a string to a | |
29c6c804 | 1659 | floating point number. L<[GH #17062]|https://github.com/Perl/perl5/issues/17062> |
0382c61d S |
1660 | |
1661 | =item * | |
1662 | ||
1663 | Matching a non-C<SVf_UTF8> string against a regular expression | |
1664 | containing unicode literals could leak a SV on each match attempt. | |
29c6c804 | 1665 | L<[GH #17140]|https://github.com/Perl/perl5/issues/17140> |
0382c61d S |
1666 | |
1667 | =item * | |
1668 | ||
1669 | Overloads for octal and binary floating point literals were always | |
1670 | passed a string with a C<0x> prefix instead of the appropriate C<0> or | |
29c6c804 | 1671 | C<[GH #14791]|https://github.com/Perl/perl5/issues/14791>] |
0382c61d S |
1672 | |
1673 | =item * | |
1674 | ||
1675 | C<< $@ = 100; die; >> now correctly propagates the 100 as an exception | |
29c6c804 | 1676 | instead of ignoring it. L<[GH #17098]|https://github.com/Perl/perl5/issues/17098> |
0382c61d S |
1677 | |
1678 | =item * | |
1679 | ||
29c6c804 | 1680 | C<[GH #17108]|https://github.com/Perl/perl5/issues/17108>] |
0382c61d S |
1681 | |
1682 | =item * | |
1683 | ||
1684 | Exceptions thrown while C<$@> is read-only could result in infinite | |
1685 | recursion as perl tried to update C<$@>, which throws another | |
1686 | exception, resulting in a stack overflow. Perl now replaces C<$@> | |
29c6c804 | 1687 | with a copy if it's not a simple writable SV. L<[GH #17083]|https://github.com/Perl/perl5/issues/17083> |
0382c61d S |
1688 | |
1689 | =item * | |
1690 | ||
1691 | Setting C<$)> now properly sets supplementary group ids if you have | |
29c6c804 | 1692 | the necessary privileges. L<[GH #17031]|https://github.com/Perl/perl5/issues/17031> |
0382c61d S |
1693 | |
1694 | =item * | |
1695 | ||
1696 | close() on a pipe now preemptively clears the PerlIO object from the | |
1697 | IO SV. This prevents a second attempt to close the already closed | |
1698 | PerlIO object if a signal handler calls die() or exit() while close() | |
29c6c804 | 1699 | is waiting for the child process to complete. L<[GH #13929]|https://github.com/Perl/perl5/issues/13929> |
0382c61d S |
1700 | |
1701 | =item * | |
1702 | ||
1703 | C<< sprintf("%.*a", -10000, $x) >> would cause a buffer overflow due | |
29c6c804 | 1704 | to mishandling of the negative precision value. L<[GH #16942]|https://github.com/Perl/perl5/issues/16942> |
0382c61d S |
1705 | |
1706 | =item * | |
1707 | ||
1708 | scalar() on a reference could cause an erroneous assertion failure | |
29c6c804 | 1709 | during compilation. L<[GH #16969]|https://github.com/Perl/perl5/issues/16969> |
0382c61d S |
1710 | |
1711 | =item * | |
1712 | ||
1713 | C<%{^CAPTURE_ALL}> is now an alias to C<%-> as documented, rather than | |
29c6c804 | 1714 | incorrectly an alias for C<[GH #16105]|https://github.com/Perl/perl5/issues/16105>] |
0382c61d S |
1715 | |
1716 | =item * | |
1717 | ||
1718 | C<%{^CAPTURE}> didn't work if C<@{^CAPTURE}> was mentioned first. | |
1719 | Similarly for C<%{^CAPTURE_ALL}> and C<@{^CAPTURE_ALL}>, though | |
29c6c804 | 1720 | C<[GH #17045]|https://github.com/Perl/perl5/issues/17045>] |
0382c61d S |
1721 | |
1722 | =item * | |
1723 | ||
1724 | Extraordinarily large (over 2GB) floating point format widths could | |
1725 | cause an integer overflow in the underlying call to snprintf(), | |
1726 | resulting in an assertion. Formatted floating point widths are now | |
29c6c804 | 1727 | limited to the range of int, the return value of snprintf(). |
1728 | [L<#16881|https://github.com/Perl/perl5/issues/16881>] | |
0382c61d S |
1729 | |
1730 | =item * | |
1731 | ||
1732 | Parsing the following constructs within a sub-parse (such as with | |
1733 | C<"${code here}"> or C<s/.../code here/e>) has changed to match how | |
1734 | they're parsed normally: | |
1735 | ||
1736 | =over | |
1737 | ||
1738 | =item * | |
1739 | ||
1740 | C<print $fh ...> no longer produces a syntax error. | |
1741 | ||
1742 | =item * | |
1743 | ||
1744 | Code like C<s/.../ ${time} /e> now properly produces an "Ambiguous use | |
1745 | of ${time} resolved to $time at ..." warning when warnings are enabled. | |
1746 | ||
1747 | =item * | |
1748 | ||
1749 | C<@x {"a"}> (with the space) in a sub-parse now properly produces a | |
1750 | "better written as" warning when warnings are enabled. | |
1751 | ||
1752 | =item * | |
1753 | ||
1754 | Attributes can now be used in a sub-parse. | |
29c6c804 | 1755 | L<[GH #16847]|https://github.com/Perl/perl5/issues/16847> |
0382c61d S |
1756 | |
1757 | =back | |
1758 | ||
1759 | =item * | |
1760 | ||
1761 | Incomplete hex and binary literals like C<0x> and C<0b> are now | |
29c6c804 | 1762 | treated as if the C<x> or C<b> is part of the next token. |
1763 | [L<#17010|https://github.com/Perl/perl5/issues/17010>] | |
0382c61d S |
1764 | |
1765 | =item * | |
1766 | ||
1767 | A spurious C<)> in a subparse, such as in C<s/.../code here/e> or | |
1768 | C<"...${code here}">, no longer confuses the parser. | |
1769 | ||
1770 | Previously a subparse was bracketed with generated C<(> and C<)> | |
1771 | tokens, so a spurious C<)> would close the construct without doing the | |
1772 | normal subparse clean up, confusing the parser and possible causing an | |
1773 | assertion failure. | |
1774 | ||
1775 | Such constructs are now surrounded by artificial tokens that can't be | |
29c6c804 | 1776 | included in the source. L<[GH #15814]|https://github.com/Perl/perl5/issues/15814> |
0382c61d S |
1777 | |
1778 | =item * | |
1779 | ||
1780 | Reference assignment of a sub, such as C<\&foo = \&bar;>, silently did | |
29c6c804 | 1781 | nothing in the C<[GH #16987]|https://github.com/Perl/perl5/issues/16987>] |
0382c61d S |
1782 | |
1783 | =item * | |
1784 | ||
1785 | sv_gets() now recovers better if the target SV is modified by a signal | |
29c6c804 | 1786 | handler. L<[GH #16960]|https://github.com/Perl/perl5/issues/16960> |
0382c61d S |
1787 | |
1788 | =item * | |
1789 | ||
1790 | C<readline @foo> now evaluates C<@foo> in scalar context. Previously | |
1791 | it would be evaluated in list context, and since readline() pops only | |
1792 | one argument from the stack, the stack could underflow, or be left | |
29c6c804 | 1793 | with unexpected values on the stack. L<[GH #16929]|https://github.com/Perl/perl5/issues/16929> |
0382c61d S |
1794 | |
1795 | =item * | |
1796 | ||
1797 | Parsing incomplete hex or binary literals was changed in 5.31.1 to treat such a | |
1798 | literal as just the 0, leaving the following C<x> or C<b> to be parsed as part | |
1799 | of the next token. This could lead to some silent changes in behaviour, so now | |
1800 | incomplete hex or binary literals produce a fatal error. | |
29c6c804 | 1801 | L<[GH #17010]|https://github.com/Perl/perl5/issues/17010> |
0382c61d S |
1802 | |
1803 | =item * | |
1804 | ||
1805 | eval_pv()'s I<croak_on_error> flag will now throw even if the exception is a | |
1806 | false overloaded value. | |
29c6c804 | 1807 | L<[GH #17036]|https://github.com/Perl/perl5/issues/17036> |
0382c61d S |
1808 | |
1809 | =item * | |
1810 | ||
1811 | C<INIT> blocks and the program itself are no longer run if exit(0) is called | |
1812 | within a C<BEGIN>, C<UNITCHECK> or C<CHECK> block. | |
29c6c804 | 1813 | L<[GH #1537]|https://github.com/Perl/perl5/issues/1537> |
0382c61d S |
1814 | |
1815 | =item * | |
1816 | ||
1817 | C<< open my $fh, ">>+", undef >> now opens the temporary file in append mode: | |
1818 | writes will seek to the end of file before writing. | |
29c6c804 | 1819 | L<[GH #17058]|https://github.com/Perl/perl5/issues/17058> |
0382c61d S |
1820 | |
1821 | =item * | |
1822 | ||
1823 | Fixed a SEGV when searching for the source of an uninitialized value warning on | |
1824 | an op whose subtree includes an OP_MULTIDEREF. | |
29c6c804 | 1825 | L<[GH #17088]|https://github.com/Perl/perl5/issues/17088> |
0382c61d S |
1826 | |
1827 | =back | |
1828 | ||
1829 | =head1 Obituary | |
1830 | ||
1831 | Jeff Goff (JGOFF or DrForr), an integral part of the Perl and Raku | |
1832 | communities and a dear friend to all of us, has passed away on March | |
1833 | 13th, 2020. DrForr was a prominent member of the communities, attending | |
1834 | and speaking at countless events, contributing to numerous projects, | |
1835 | and assisting and helping in any way he could. | |
1836 | ||
1837 | His passing leaves a hole in our hearts and in our communities and he | |
1838 | will be sorely missed. | |
1839 | ||
1840 | =head1 Acknowledgements | |
1841 | ||
1842 | Perl 5.32.0 represents approximately 13 months of development since Perl | |
1843 | 5.30.0 and contains approximately 220,000 lines of changes across 1,800 | |
1844 | files from 89 authors. | |
1845 | ||
1846 | Excluding auto-generated files, documentation and release tools, there were | |
1847 | approximately 140,000 lines of changes to 880 .pm, .t, .c and .h files. | |
1848 | ||
1849 | Perl continues to flourish into its fourth decade thanks to a vibrant | |
1850 | community of users and developers. The following people are known to have | |
1851 | contributed the improvements that became Perl 5.32.0: | |
1852 | ||
1853 | Aaron Crane, Alberto Simões, Alexandr Savca, Andreas König, Andrew Fresh, | |
1854 | Andy Dougherty, Ask Bjørn Hansen, Atsushi Sugawara, Bernhard M. Wiedemann, | |
1855 | brian d foy, Bryan Stenson, Chad Granum, Chase Whitener, Chris 'BinGOs' | |
1856 | Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Book, Daniel | |
1857 | Dragan, Dan Kogai, Dave Cross, Dave Rolsky, David Cantrell, David Mitchell, | |
1858 | Dominic Hargreaves, E. Choroba, Felipe Gasper, Florian Weimer, Graham Knop, | |
1859 | Håkon Hægland, Hauke D, H.Merijn Brand, Hugo van der Sanden, Ichinose | |
1860 | Shogo, James E Keenan, Jason McIntosh, Jerome Duval, Johan Vromans, John | |
1861 | Lightsey, John Paul Adrian Glaubitz, Kang-min Liu, Karen Etheridge, Karl | |
1862 | Williamson, Leon Timmermans, Manuel Mausz, Marc Green, Matthew Horsfall, | |
1863 | Matt Turner, Max Maischein, Michael Haardt, Nicholas Clark, Nicolas R., Niko | |
1864 | Tyni, Pali, Paul Evans, Paul Johnson, Paul Marquess, Peter Eisentraut, Peter | |
1865 | John Acklam, Peter Oliver, Petr Písař, Renee Baecker, Ricardo Signes, | |
1866 | Richard Leach, Russ Allbery, Samuel Smith, Santtu Ojanperä, Sawyer X, | |
1867 | Sergey Aleynikov, Sergiy Borodych, Shirakata Kentaro, Shlomi Fish, Sisyphus, | |
1868 | Slaven Rezic, Smylers, Stefan Seifert, Steve Hay, Steve Peters, Svyatoslav, | |
1869 | Thibault Duponchelle, Todd Rinaldo, Tomasz Konojacki, Tom Hukins, Tony Cook, | |
1870 | Unicode Consortium, VanL, Vickenty Fesunov, Vitali Peil, Yves Orton, Zefram. | |
1871 | ||
1872 | The list above is almost certainly incomplete as it is automatically | |
1873 | generated from version control history. In particular, it does not include | |
1874 | the names of the (very much appreciated) contributors who reported issues to | |
1875 | the Perl bug tracker. | |
1876 | ||
1877 | Many of the changes included in this version originated in the CPAN modules | |
1878 | included in Perl's core. We're grateful to the entire CPAN community for | |
1879 | helping Perl to flourish. | |
1880 | ||
1881 | For a more complete list of all of Perl's historical contributors, please | |
1882 | see the F<AUTHORS> file in the Perl source distribution. | |
1883 | ||
1884 | =head1 Reporting Bugs | |
1885 | ||
1886 | If you find what you think is a bug, you might check the perl bug database | |
1887 | at L<https://github.com/Perl/perl5/issues>. There may also be information at | |
1888 | L<http://www.perl.org/>, the Perl Home Page. | |
1889 | ||
1890 | If you believe you have an unreported bug, please open an issue at | |
1891 | L<https://github.com/Perl/perl5/issues>. Be sure to trim your bug down to a | |
1892 | tiny but sufficient test case. | |
1893 | ||
1894 | If the bug you are reporting has security implications which make it | |
1895 | inappropriate to send to a public issue tracker, then see | |
1896 | L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> | |
1897 | for details of how to report the issue. | |
1898 | ||
1899 | =head1 Give Thanks | |
1900 | ||
1901 | If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, | |
1902 | you can do so by running the C<perlthanks> program: | |
1903 | ||
1904 | perlthanks | |
1905 | ||
1906 | This will send an email to the Perl 5 Porters list with your show of thanks. | |
1907 | ||
1908 | =head1 SEE ALSO | |
1909 | ||
1910 | The F<Changes> file for an explanation of how to view exhaustive details on | |
1911 | what changed. | |
1912 | ||
1913 | The F<INSTALL> file for how to build Perl. | |
1914 | ||
1915 | The F<README> file for general stuff. | |
1916 | ||
1917 | The F<Artistic> and F<Copying> files for copyright information. | |
1918 | ||
1919 | =cut |