Commit | Line | Data |
---|---|---|
b129a266 S |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | perl5340delta - what is new for perl v5.34.0 | |
6 | ||
7 | =head1 DESCRIPTION | |
8 | ||
9 | This document describes differences between the 5.32.0 release and the 5.34.0 | |
10 | release. | |
11 | ||
12 | If you are upgrading from an earlier release such as 5.30.0, first read | |
13 | L<perl5320delta>, which describes differences between 5.30.0 and 5.32.0. | |
14 | ||
15 | =head1 Core Enhancements | |
16 | ||
17 | =head2 Experimental Try/Catch Syntax | |
18 | ||
19 | An initial experimental attempt at providing C<try>/C<catch> notation has | |
20 | been added. | |
21 | ||
22 | use feature 'try'; | |
23 | ||
24 | try { | |
25 | a_function(); | |
26 | } | |
27 | catch ($e) { | |
28 | warn "An error occurred: $e"; | |
29 | } | |
30 | ||
31 | For more information, see L<perlsyn/"Try Catch Exception Handling">. | |
32 | ||
33 | =head2 C<qr/{,n}/> is now accepted | |
34 | ||
35 | An empty lower bound is now accepted for regular expression quantifiers, | |
24eef90b KW |
36 | like C<m/x{,3}/> meaning C<m/x{0,3}/> |
37 | ||
38 | =cut | |
39 | ||
b129a266 S |
40 | |
41 | =head2 Blanks freely allowed within but adjacent to curly braces | |
42 | ||
43 | (in double-quotish contexts and regular expression patterns) | |
44 | ||
45 | This means you can write things like S<C<\x{ FFFC }>> if you like. This | |
46 | applies to all such constructs, namely C<\b{}>, C<\g{}>, C<\k{}>, | |
47 | C<\N{}>, C<\o{}>, and C<\x{}>; as well as the regular expression | |
48 | quantifier C<{I<m>,I<n>}>. C<\p{}> and C<\P{}> retain their | |
49 | already-existing, even looser, rules mandated by the Unicode standard | |
50 | (see L<perluniprops/Properties accessible through \p{} and \P{}>). | |
51 | ||
52 | This ability is in effect regardless of the presence of the C</x> | |
53 | regular expression pattern modifier. | |
54 | ||
55 | Additionally, the comma in a regular expression braced quantifier may | |
56 | have blanks (tabs or spaces) before and/or after the comma, like | |
57 | S<C<qr/a{ 5, 7 }/>>. | |
58 | ||
59 | =head2 New octal syntax C<0oI<ddddd>> | |
60 | ||
61 | It is now possible to specify octal literals with C<0o> prefixes, | |
62 | as in C<0o123_456>, parallel to the existing construct to specify | |
63 | hexadecimal literal C<0xI<ddddd>> and binary literal C<0bI<ddddd>>. | |
64 | Also, the builtin C<oct()> function now accepts this new syntax. | |
65 | ||
66 | See L<perldata/Scalar value constructors> and L<perlfunc/oct EXPR>. | |
67 | ||
68 | =head1 Performance Enhancements | |
69 | ||
70 | =over 4 | |
71 | ||
72 | =item * | |
73 | ||
74 | Fix a memory leak in RegEx | |
75 | [L<GH #18604|https://github.com/Perl/perl5/issues/18604>] | |
76 | ||
77 | =back | |
78 | ||
79 | =head1 Modules and Pragmata | |
80 | ||
81 | =head2 New Modules and Pragmata | |
82 | ||
83 | =over 4 | |
84 | ||
85 | =item * | |
86 | ||
87 | L<ExtUtils::PL2Bat> 0.004 has been added to the Perl core. | |
88 | ||
89 | This module is a generalization of the C<pl2bat> script. It being a script has | |
90 | led to at least two forks of this code; this module will unify them under one | |
91 | implementation with tests. | |
92 | ||
93 | =back | |
94 | ||
95 | =head2 Updated Modules and Pragmata | |
96 | ||
97 | =over 4 | |
98 | ||
99 | =item * | |
100 | ||
101 | L<Archive::Tar> has been upgraded from version 2.36 to 2.38. | |
102 | ||
103 | =item * | |
104 | ||
105 | L<autodie> has been upgraded from version 2.32 to 2.34. | |
106 | ||
107 | =item * | |
108 | ||
109 | L<B> has been upgraded from version 1.80 to 1.82. | |
110 | ||
111 | =item * | |
112 | ||
113 | L<B::Deparse> has been upgraded from version 1.54 to 1.56. | |
114 | ||
115 | =item * | |
116 | ||
117 | L<bytes> has been upgraded from version 1.07 to 1.08. | |
118 | ||
119 | =item * | |
120 | ||
121 | L<Carp> has been upgraded from version 1.50 to 1.52. | |
122 | ||
123 | =item * | |
124 | ||
125 | L<Compress::Raw::Bzip2> has been upgraded from version 2.093 to 2.101. | |
126 | ||
127 | =item * | |
128 | ||
129 | L<Compress::Raw::Zlib> has been upgraded from version 2.093 to 2.101. | |
130 | ||
131 | =item * | |
132 | ||
133 | L<Config::Perl::V> has been upgraded from version 0.32 to 0.33. | |
134 | ||
135 | =item * | |
136 | ||
137 | L<CPAN> has been upgraded from version 2.27 to 2.28. | |
138 | ||
139 | =item * | |
140 | ||
141 | L<Data::Dumper> has been upgraded from version 2.174 to 2.179. | |
142 | ||
143 | =item * | |
144 | ||
145 | L<DB> has been upgraded from version 1.58 to 1.59. | |
146 | ||
147 | =item * | |
148 | ||
149 | L<DB_File> has been upgraded from version 1.853 to 1.855. | |
150 | ||
151 | =item * | |
152 | ||
153 | L<Devel::Peek> has been upgraded from version 1.28 to 1.30. | |
154 | ||
155 | =item * | |
156 | ||
157 | L<Devel::PPPort> has been upgraded from version 3.57 to 3.62. | |
158 | ||
159 | New C<PERL_VERSION_*> comparison macros are now available. | |
160 | ||
161 | C<ppport.h --api-info> no longer includes non-API info unless that is the only | |
162 | match | |
163 | ||
164 | =item * | |
165 | ||
166 | L<Digest> has been upgraded from version 1.17_01 to 1.19. | |
167 | ||
168 | =item * | |
169 | ||
170 | L<Digest::MD5> has been upgraded from version 2.55_01 to 2.58. | |
171 | ||
172 | =item * | |
173 | ||
174 | L<DynaLoader> has been upgraded from version 1.47 to 1.50. | |
175 | ||
176 | =item * | |
177 | ||
178 | L<Encode> has been upgraded from version 3.06 to 3.08. | |
179 | ||
180 | =item * | |
181 | ||
182 | L<Env> has been upgraded from version 1.04 to 1.05. | |
183 | ||
184 | =item * | |
185 | ||
186 | L<Errno> has been upgraded from version 1.30 to 1.33. | |
187 | ||
188 | =item * | |
189 | ||
190 | L<experimental> has been upgraded from version 0.020 to 0.024. | |
191 | ||
192 | =item * | |
193 | ||
194 | L<Exporter> has been upgraded from version 5.74 to 5.76. | |
195 | ||
196 | =item * | |
197 | ||
198 | L<ExtUtils::CBuilder> has been upgraded from version 0.280234 to 0.280236. | |
199 | ||
200 | =item * | |
201 | ||
202 | L<ExtUtils::Install> has been upgraded from version 2.14 to 2.20. | |
203 | ||
204 | =item * | |
205 | ||
206 | L<ExtUtils::MakeMaker> has been upgraded from version 7.44 to 7.62. | |
207 | ||
208 | =item * | |
209 | ||
210 | L<ExtUtils::Manifest> has been upgraded from version 1.72 to 1.73. | |
211 | ||
212 | =item * | |
213 | ||
214 | L<ExtUtils::Miniperl> has been upgraded from version 1.09 to 1.10. | |
215 | ||
216 | =item * | |
217 | ||
218 | L<ExtUtils::ParseXS> has been upgraded from version 3.40 to 3.43. | |
219 | ||
220 | =item * | |
221 | ||
222 | L<ExtUtils::Typemaps> has been upgraded from version 3.38 to 3.43. | |
223 | ||
224 | =item * | |
225 | ||
226 | L<Fcntl> has been upgraded from version 1.13 to 1.14. | |
227 | ||
228 | =item * | |
229 | ||
230 | L<feature> has been upgraded from version 1.58 to 1.64. | |
231 | ||
232 | Added the default enabled C<bareword_filehandles> feature. | |
233 | ||
234 | A new L<multidimensional|feature/"The 'multidimensional' feature"> | |
235 | feature has been added, which is enabled by | |
236 | default but allows turning off L<multi-dimensional array | |
237 | emulation|perldata/Multi-dimensional array emulation>. | |
238 | ||
239 | =item * | |
240 | ||
241 | L<File::Copy> has been upgraded from version 2.34 to 2.35. | |
242 | ||
243 | =item * | |
244 | ||
245 | L<File::Fetch> has been upgraded from version 0.56 to 1.00. | |
246 | ||
247 | =item * | |
248 | ||
249 | L<File::Find> has been upgraded from version 1.37 to 1.39. | |
250 | ||
251 | =item * | |
252 | ||
253 | L<File::Path> has been upgraded from version 2.16 to 2.18. | |
254 | ||
255 | =item * | |
256 | ||
257 | L<File::Spec> has been upgraded from version 3.78 to 3.80. | |
258 | ||
259 | =item * | |
260 | ||
261 | L<File::Temp> has been upgraded from version 0.2309 to 0.2311. | |
262 | ||
263 | =item * | |
264 | ||
265 | L<Filter::Util::Call> has been upgraded from version 1.59 to 1.60. | |
266 | ||
267 | =item * | |
268 | ||
269 | L<FindBin> has been upgraded from version 1.51 to 1.52. | |
270 | ||
271 | =item * | |
272 | ||
273 | L<GDBM_File> has been upgraded from version 1.18 to 1.19. | |
274 | ||
275 | New functions and compatibility for newer versions of GDBM. | |
276 | [L<GH #18435|https://github.com/Perl/perl5/pull/18435>] | |
277 | ||
278 | =item * | |
279 | ||
280 | L<Getopt::Long> has been upgraded from version 2.51 to 2.52. | |
281 | ||
282 | =item * | |
283 | ||
284 | L<Getopt::Std> has been upgraded from version 1.12 to 1.13. | |
285 | ||
286 | =item * | |
287 | ||
288 | L<Hash::Util> has been upgraded from version 0.23 to 0.25. | |
289 | ||
290 | =item * | |
291 | ||
292 | L<Hash::Util::FieldHash> has been upgraded from version 1.20 to 1.21. | |
293 | ||
294 | =item * | |
295 | ||
296 | L<I18N::LangTags> has been upgraded from version 0.44 to 0.45. | |
297 | ||
298 | =item * | |
299 | ||
300 | L<if> has been upgraded from version 0.0608 to 0.0609. | |
301 | ||
302 | =item * | |
303 | ||
304 | L<IO> has been upgraded from version 1.43 to 1.46. | |
305 | ||
306 | IO::Socket now stores error messages in C<$IO::Socket::errstr>, in | |
307 | addition to in C<$@>. | |
308 | ||
309 | The C<error> method now reports the error state for both the input and | |
310 | output streams for sockets and character devices. Similarly | |
311 | C<clearerr> now clears the error state for both streams. | |
312 | ||
313 | A spurious error reported for regular file handles has been | |
314 | fixed in L<IO::Handle>. | |
315 | [L<GH #18019|https://github.com/Perl/perl5/issues/18019>] | |
316 | ||
317 | =item * | |
318 | ||
319 | IO-Compress has been upgraded from version 2.093 to 2.102. | |
320 | ||
321 | bin/zipdetails version 2.02 | |
322 | ||
323 | =item * | |
324 | ||
325 | L<IO::Socket::IP> has been upgraded from version 0.39 to 0.41. | |
326 | ||
327 | =item * | |
328 | ||
329 | L<IO::Zlib> has been upgraded from version 1.10 to 1.11. | |
330 | ||
331 | =item * | |
332 | ||
333 | L<IPC::SysV> has been upgraded from version 2.07 to 2.09. | |
334 | ||
335 | =item * | |
336 | ||
337 | L<JSON::PP> has been upgraded from version 4.04 to 4.06. | |
338 | ||
339 | =item * | |
340 | ||
341 | The libnet distribution has been upgraded from version 3.11 to 3.13. | |
342 | ||
343 | =item * | |
344 | ||
345 | L<locale> has been upgraded from version 1.09 to 1.10. | |
346 | ||
347 | =item * | |
348 | ||
349 | L<Math::Complex> has been upgraded from version 1.5901 to 1.5902. | |
350 | ||
351 | =item * | |
352 | ||
353 | L<MIME::Base64> has been upgraded from version 3.15 to 3.16. | |
354 | ||
355 | =item * | |
356 | ||
357 | L<Module::CoreList> has been upgraded from version 5.20200620 to 5.20210520. | |
358 | ||
359 | =item * | |
360 | ||
361 | L<Module::Load> has been upgraded from version 0.34 to 0.36. | |
362 | ||
363 | =item * | |
364 | ||
365 | L<Module::Load::Conditional> has been upgraded from version 0.70 to 0.74. | |
366 | ||
367 | =item * | |
368 | ||
369 | L<mro> has been upgraded from version 1.23 to 1.25_001. | |
370 | ||
371 | =item * | |
372 | ||
373 | L<Net::Ping> has been upgraded from version 2.72 to 2.74. | |
374 | ||
375 | =item * | |
376 | ||
377 | L<NEXT> has been upgraded from version 0.67_01 to 0.68. | |
378 | ||
379 | =item * | |
380 | ||
381 | L<ODBM_File> has been upgraded from version 1.16 to 1.17. | |
382 | ||
383 | =item * | |
384 | ||
385 | L<Opcode> has been upgraded from version 1.47 to 1.50. | |
386 | ||
387 | =item * | |
388 | ||
389 | L<overload> has been upgraded from version 1.31 to 1.33. | |
390 | ||
391 | =item * | |
392 | ||
393 | L<perlfaq> has been upgraded from version 5.20200523 to 5.20210411. | |
394 | ||
395 | =item * | |
396 | ||
397 | L<PerlIO::encoding> has been upgraded from version 0.28 to 0.30. | |
398 | ||
399 | =item * | |
400 | ||
401 | L<PerlIO::mmap> has been upgraded from version 0.016 to 0.017. | |
402 | ||
403 | =item * | |
404 | ||
405 | L<PerlIO::scalar> has been upgraded from version 0.30 to 0.31. | |
406 | ||
407 | =item * | |
408 | ||
409 | L<PerlIO::via::QuotedPrint> has been upgraded from version 0.08 to 0.09. | |
410 | ||
411 | =item * | |
412 | ||
413 | L<Pod::Checker> has been upgraded from version 1.73 to 1.74. | |
414 | ||
415 | =item * | |
416 | ||
417 | L<Pod::Html> has been upgraded from version 1.25 to 1.27. | |
418 | ||
419 | =item * | |
420 | ||
421 | L<Pod::Simple> has been upgraded from version 3.40 to 3.42. | |
422 | ||
423 | =item * | |
424 | ||
425 | L<Pod::Usage> has been upgraded from version 1.69 to 2.01. | |
426 | ||
427 | =item * | |
428 | ||
429 | L<POSIX> has been upgraded from version 1.94 to 1.97. | |
430 | ||
431 | POSIX::signbit() behaviour has been improved. | |
432 | [L<GH #18441|https://github.com/Perl/perl5/pull/18441>] | |
433 | ||
434 | Documentation for C<asctime> clarifies that the result is always in English. | |
435 | (Use C<strftime> for a localized result.) | |
436 | ||
437 | =item * | |
438 | ||
439 | L<re> has been upgraded from version 0.40 to 0.41. | |
440 | ||
441 | (See under L</Internal Changes> for more information.) | |
442 | ||
443 | =item * | |
444 | ||
445 | L<Safe> has been upgraded from version 2.41 to 2.43. | |
446 | ||
447 | =item * | |
448 | ||
449 | L<Socket> has been upgraded from version 2.029 to 2.031. | |
450 | ||
451 | =item * | |
452 | ||
453 | L<Storable> has been upgraded from version 3.21 to 3.23. | |
454 | ||
455 | =item * | |
456 | ||
457 | L<strict> has been upgraded from version 1.11 to 1.12. | |
458 | ||
459 | =item * | |
460 | ||
461 | L<subs> has been upgraded from version 1.03 to 1.04. | |
462 | ||
463 | =item * | |
464 | ||
465 | L<Symbol> has been upgraded from version 1.08 to 1.09. | |
466 | ||
467 | =item * | |
468 | ||
469 | L<Test::Harness> has been upgraded from version 3.42 to 3.43. | |
470 | ||
471 | =item * | |
472 | ||
473 | L<Test::Simple> has been upgraded from version 1.302175 to 1.302183. | |
474 | ||
475 | =item * | |
476 | ||
477 | L<Text::Balanced> has been upgraded from version 2.03 to 2.04. | |
478 | ||
479 | =item * | |
480 | ||
481 | L<threads> has been upgraded from version 2.25 to 2.26. | |
482 | ||
483 | =item * | |
484 | ||
485 | L<threads::shared> has been upgraded from version 1.61 to 1.62. | |
486 | ||
487 | =item * | |
488 | ||
489 | L<Tie::RefHash> has been upgraded from version 1.39 to 1.40. | |
490 | ||
491 | =item * | |
492 | ||
493 | L<Time::HiRes> has been upgraded from version 1.9764 to 1.9767. | |
494 | ||
495 | =item * | |
496 | ||
497 | L<Time::Local> has been upgraded from version 1.28 to 1.30. | |
498 | ||
499 | =item * | |
500 | ||
501 | L<Unicode::Collate> has been upgraded from version 1.27 to 1.29. | |
502 | ||
503 | =item * | |
504 | ||
505 | L<Unicode::Normalize> has been upgraded from version 1.27 to 1.28. | |
506 | ||
507 | =item * | |
508 | ||
509 | L<utf8> has been upgraded from version 1.22 to 1.24. | |
510 | ||
511 | =item * | |
512 | ||
513 | L<version> has been upgraded from version 0.9924 to 0.9928. | |
514 | ||
515 | =item * | |
516 | ||
517 | L<warnings> has been upgraded from version 1.47 to 1.51. | |
518 | ||
519 | =item * | |
520 | ||
521 | L<Win32> has been upgraded from version 0.53 to 0.57. | |
522 | ||
523 | Fix calling convention for C<PFNRegGetValueA>. | |
524 | ||
525 | Added C<Win32::IsSymlinkCreationAllowed()>, | |
526 | C<Win32::IsDeveloperModeEnabled()>, and C<Win32::GetProcessPrivileges()>. | |
527 | ||
528 | Removed old code for versions before Windows 2000. | |
529 | ||
530 | =item * | |
531 | ||
532 | L<XS::APItest> has been upgraded from version 1.09 to 1.16. | |
533 | ||
534 | =item * | |
535 | ||
536 | L<XS::Typemap> has been upgraded from version 0.17 to 0.18. | |
537 | ||
538 | =back | |
539 | ||
540 | =head1 Documentation | |
541 | ||
542 | =head2 New Documentation | |
543 | ||
544 | =head3 L<perldocstyle> | |
545 | ||
546 | This document is a guide for the authorship and maintenance of the | |
547 | documentation that ships with Perl. | |
548 | ||
549 | =head3 L<perlgov> | |
550 | ||
551 | This document describes the goals, scope, system, and rules for Perl's new | |
552 | governance model. | |
553 | ||
554 | Other pod files, most notably L<perlpolicy>, were amended to reflect | |
555 | its adoption. | |
556 | ||
557 | =head2 Changes to Existing Documentation | |
558 | ||
559 | We have attempted to update the documentation to reflect the changes | |
560 | listed in this document. If you find any we have missed, open an issue | |
561 | at L<https://github.com/Perl/perl5/issues>. | |
562 | ||
563 | Additionally, the following selected changes have been made: | |
564 | ||
565 | =over 4 | |
566 | ||
567 | =item * | |
568 | ||
569 | L<perlapi>, L<perlguts>, L<perlxs>, and L<perlxstut> now prefer C<SvPVbyte> | |
570 | over C<SvPV>. | |
571 | ||
572 | =item * | |
573 | ||
574 | References to B<Pumpking> have been replaced with a more accurate term or | |
575 | B<Steering Council> where appropriate. | |
576 | ||
577 | =item * | |
578 | ||
579 | B<The Perl Steering Council> is now the fallback contact for security issues. | |
580 | ||
581 | =back | |
582 | ||
583 | =head3 L<perlapi> | |
584 | ||
585 | =over 4 | |
586 | ||
587 | =item * | |
588 | ||
589 | Efforts continue in improving the presentation of this document, and to | |
590 | document more API elements. | |
591 | ||
592 | =back | |
593 | ||
594 | =head3 L<perlcommunity> | |
595 | ||
596 | =over 4 | |
597 | ||
598 | =item * | |
599 | ||
600 | The freenode IRC URL has been updated. | |
601 | ||
602 | =back | |
603 | ||
604 | =head3 L<perldebguts> | |
605 | ||
606 | =over 4 | |
607 | ||
608 | =item * | |
609 | ||
610 | Corrected the description of the scalar C<< ${"_<$filename"} >> | |
611 | variables. | |
612 | ||
613 | =back | |
614 | ||
615 | =head3 L<perldiag> | |
616 | ||
617 | =over 4 | |
618 | ||
619 | =item * | |
620 | ||
621 | Now documents additional examples of "not imported" warnings. | |
622 | ||
623 | =back | |
624 | ||
625 | =head3 L<perlfaq> | |
626 | ||
627 | =over 4 | |
628 | ||
629 | =item * | |
630 | ||
631 | The Perl FAQ was updated to CPAN version 5.20201107 with minor | |
632 | improvements. | |
633 | ||
634 | =back | |
635 | ||
636 | =head3 L<perlfunc> | |
637 | ||
638 | =over 4 | |
639 | ||
640 | =item * | |
641 | ||
642 | L<my()|perlfunc/my> and L<state()|perlfunc/state> now explicitly warn | |
643 | the reader that lexical variables should typically not be redeclared | |
644 | within the same scope or statement. | |
645 | [L<GH #18389|https://github.com/Perl/perl5/issues/18389>] | |
646 | ||
647 | =item * | |
648 | ||
649 | The L<localtime|perlfunc/localtime> entry has been improved and now | |
650 | also states that the result of the function is always in English. | |
651 | ||
652 | =item * | |
653 | ||
654 | L<msgsnd()|perlfunc/msgsnd> documented a length field included in the | |
655 | packed C<MSG> parameter to C<msgsnd()>, but there was no such field. | |
656 | C<MSG> contains only the type and the message content. | |
657 | ||
658 | =item * | |
659 | ||
660 | Better explanation of what happens when C<sleep> is called with a zero or | |
661 | negative value. | |
662 | ||
663 | =item * | |
664 | ||
665 | Simplify the C<split()> documentation by removing the C<join()>s from the | |
666 | examples | |
667 | [L<GH #18676|https://github.com/Perl/perl5/issues/18676>] | |
668 | ||
669 | =back | |
670 | ||
671 | =head3 L<perlgit> | |
672 | ||
673 | =over 4 | |
674 | ||
675 | =item * | |
676 | ||
677 | document how to create a remote-tracking branch for every PR | |
678 | ||
679 | =item * | |
680 | ||
681 | document how to get a PR as a local branch | |
682 | ||
683 | =back | |
684 | ||
685 | =head3 L<perlguts> | |
686 | ||
687 | =over 4 | |
688 | ||
689 | =item * | |
690 | ||
691 | L<perlguts> now explains in greater detail the need to consult C<SvUTF8> | |
692 | when calling C<SvPV> (or variants). A new "How do I pass a Perl string to a C | |
693 | library?" section in the same document discusses when to use which style of | |
694 | macro to read an SV's string value. | |
695 | ||
696 | =item * | |
697 | ||
698 | Corrected C<my_rpeep> example in perlguts. | |
699 | ||
700 | =item * | |
701 | ||
702 | A section has been added on the formatted printing of special sizes. | |
703 | ||
704 | =back | |
705 | ||
706 | =head3 L<perlop> | |
707 | ||
708 | =over 4 | |
709 | ||
710 | =item * | |
711 | ||
712 | The C<< <> >> and C<<< <<>> >>> operators are commonly referred to as | |
713 | the diamond and double diamond operators respectively, but that wasn't | |
714 | mentioned previously in their documentation. | |
715 | ||
716 | =item * | |
717 | ||
718 | Document range op behavior change. | |
719 | ||
720 | =back | |
721 | ||
722 | =head3 L<perlpacktut> | |
723 | ||
724 | =over 4 | |
725 | ||
726 | =item * | |
727 | ||
728 | Incorrect variables used in an example have been fixed. | |
729 | ||
730 | =back | |
731 | ||
732 | =head3 L<perlsyn> | |
733 | ||
734 | =over 4 | |
735 | ||
736 | =item * | |
737 | ||
738 | Document that caller() does not see try{} blocks | |
739 | ||
740 | =item * | |
741 | ||
742 | A new example shows how a lexical C<my> variable can be declared | |
743 | during the initialization of a C<for> loop. | |
744 | ||
745 | =back | |
746 | ||
747 | =head3 L<perlunifaq> | |
748 | ||
749 | =over 4 | |
750 | ||
751 | =item * | |
752 | ||
753 | Fix description of what Perl does with unencoded strings | |
754 | ||
755 | =back | |
756 | ||
757 | =head1 Diagnostics | |
758 | ||
759 | The following additions or changes have been made to diagnostic output, | |
760 | including warnings and fatal error messages. For the complete list of | |
761 | diagnostic messages, see L<perldiag>. | |
762 | ||
763 | =head2 New Diagnostics | |
764 | ||
765 | =head3 New Errors | |
766 | ||
767 | =over 4 | |
768 | ||
769 | =item * | |
770 | ||
771 | L<Bareword filehandle "%s" not allowed under 'no feature "bareword_filehandles"'|perldiag/"Bareword filehandle "%s" not allowed under 'no feature "bareword_filehandles"'"> | |
772 | ||
773 | This accompanies the new | |
774 | L<bareword_filehandles|feature/"The 'bareword_filehandles' feature."> feature. | |
775 | ||
776 | =item * | |
777 | ||
778 | L<Multidimensional hash lookup is disabled|perldiag/"Multidimensional hash lookup is disabled"> | |
779 | ||
780 | This accompanies the new | |
781 | L<multidimensional|feature/"The 'multidimensional' feature"> feature. | |
782 | ||
783 | =back | |
784 | ||
785 | =head3 New Warnings | |
786 | ||
787 | =over 4 | |
788 | ||
789 | =item * | |
790 | ||
791 | L<Wide character in setenv key (encoding to utf8)|perldiag/"Wide character in %s"> | |
792 | ||
793 | Attempts to put wide characters into environment variable keys via C<%ENV> now | |
794 | provoke this warning. | |
795 | ||
796 | =back | |
797 | ||
798 | =head2 Changes to Existing Diagnostics | |
799 | ||
800 | =over 4 | |
801 | ||
802 | =item * | |
803 | ||
804 | L<Error %s in expansion of %s|perldiag/"Error %s in expansion of %s"> | |
805 | ||
806 | An error was encountered in handling a user-defined property | |
807 | (L<perlunicode/User-Defined Character Properties>). These are | |
808 | programmer written subroutines, hence subject to errors that may | |
809 | prevent them from compiling or running. | |
810 | ||
811 | =item * | |
812 | ||
813 | L<Infinite recursion in user-defined property|perldiag/"Infinite recursion in user-defined property"> | |
814 | ||
815 | A user-defined property (L<perlunicode/User-Defined Character Properties>) | |
816 | can depend on the definitions of other user-defined | |
817 | properties. If the chain of dependencies leads back to this property, | |
818 | infinite recursion would occur, were it not for the check that raised | |
819 | this error. | |
820 | ||
821 | =item * | |
822 | ||
823 | L<Timeout waiting for another thread to define \p{%s}|perldiag/"Timeout waiting for another thread to define \p{%s}"> | |
824 | ||
825 | The first time a user-defined property | |
826 | (L<perlunicode/User-Defined Character Properties>) is used, its | |
827 | definition is looked up and converted into an internal form for more | |
828 | efficient handling in subsequent uses. There could be a race if two or | |
829 | more threads tried to do this processing nearly simultaneously. | |
830 | ||
831 | =item * | |
832 | ||
833 | L<Unknown user-defined property name \p{%s}|perldiag/"Unknown user-defined property name \p{%s}"> | |
834 | ||
835 | You specified to use a property within the C<\p{...}> which was a | |
836 | syntactically valid user-defined property, but no definition was found | |
837 | for it | |
838 | ||
839 | =item * | |
840 | ||
841 | L<Too few arguments for subroutine '%s' (got %d; expected %d)|perldiag/"Too few arguments for subroutine '%s' (got %d; expected %d)"> | |
842 | ||
843 | Subroutine argument-count mismatch errors now include the number of | |
844 | given and expected arguments. | |
845 | ||
846 | =item * | |
847 | ||
848 | L<Too many arguments for subroutine '%s' (got %d; expected %d)|perldiag/"Too many arguments for subroutine '%s' (got %d; expected %d)"> | |
849 | ||
850 | Subroutine argument-count mismatch errors now include the number of | |
851 | given and expected arguments. | |
852 | ||
853 | =item * | |
854 | ||
855 | L<Lost precision when %s %f by 1|perldiag/"Lost precision when %s %f by 1"> | |
856 | ||
857 | This warning was only issued for positive too-large values when | |
858 | incrementing, and only for negative ones when decrementing. | |
859 | It is now issued for both positive or negative too-large values. | |
860 | [L<GH #18333|https://github.com/Perl/perl5/issues/18333>] | |
861 | ||
862 | =item * | |
863 | ||
864 | L<\K not permitted in lookahead/lookbehind in regex; marked by <-- HERE in mE<sol>%sE<sol>|perldiag/"\K not permitted in lookahead/lookbehind in regex; marked by <-- HERE in m/%s/"> | |
865 | ||
866 | This error was incorrectly produced in some cases involving nested | |
867 | lookarounds. This has been fixed. | |
868 | [L<GH #18123|https://github.com/Perl/perl5/issues/18123>] | |
869 | ||
870 | =item * | |
871 | ||
872 | L<Use of uninitialized value%s|perldiag/"Use of uninitialized value%s"> | |
873 | ||
874 | This warning may now include the array or hash index when the | |
875 | uninitialized value is the result of an element not found. This will | |
876 | only happen if the index is a simple non-magical variable. | |
877 | ||
878 | =back | |
879 | ||
880 | =head1 Utility Changes | |
881 | ||
882 | =head2 L<perl5db.pl> (the debugger) | |
883 | ||
884 | =over 4 | |
885 | ||
886 | =item * New option: C<HistItemMinLength> | |
887 | ||
888 | This option controls the minimum length a command must be to get stored in | |
889 | history. Traditionally, this has been fixed at 2. Changes to the debugger | |
890 | are often perilous, and new bugs should be reported so the debugger can be | |
891 | debugged. | |
892 | ||
893 | =item * Fix to C<i> and C<l> commands | |
894 | ||
895 | The C<i $var> and C<l $var> commands work again with lexical variables. | |
896 | ||
897 | =back | |
898 | ||
899 | =head1 Configuration and Compilation | |
900 | ||
901 | =over 4 | |
902 | ||
903 | =item * | |
904 | ||
905 | Prevented incpath to spill into libpth | |
906 | ||
907 | =item * | |
908 | ||
909 | Use realpath if available. (This might catch more duplicate paths.) | |
910 | ||
911 | =item * | |
912 | ||
913 | Only include real existing paths. | |
914 | ||
915 | =item * | |
916 | ||
917 | Filter inc paths out of libpth. | |
918 | ||
919 | =item * stadtx hash support has been removed | |
920 | ||
921 | stadtx support has been entirely removed. Previously, it could be requested | |
922 | with C<PERL_HASH_FUNC_STADTX>, and was default in 64-bit builds. It has been | |
923 | replaced with SipHash. SipHash has been more rigorously reviewed than stadtx. | |
924 | ||
925 | =item * Configure | |
926 | ||
927 | A new probe checks for buggy libc implementations of the C<gcvt>/C<qgcvt> | |
928 | functions. | |
929 | [L<GH #18170|https://github.com/Perl/perl5/issues/18170>] | |
930 | ||
931 | =item * C<-Dusedefaultstrict> | |
932 | ||
933 | Perl can now be built with L<strict> on by default (using the configuration | |
934 | option C<-Dusedefaultstrict>. | |
935 | ||
936 | These strict defaults do not apply when C<perl> is run via C<-e> or C<-E>. | |
937 | ||
938 | This setting provides a diagnostic mechanism intended for development | |
939 | purposes only and is thus undefined by default. | |
940 | ||
941 | =item * | |
942 | ||
943 | The minimum supported Bison version is now 2.4, and the maximum is 3.7. | |
944 | ||
945 | =item * | |
946 | ||
947 | Newer 64-bit versions of the Intel C/C++ compiler are now recognised | |
948 | and have the correct flags set. | |
949 | ||
950 | =item * | |
951 | ||
952 | We now trap SIGBUS when F<Configure> checks for C<va_copy>. | |
953 | ||
954 | On several systems the attempt to determine if we need C<va_copy> or similar | |
955 | results in a SIGBUS instead of the expected SIGSEGV, which previously caused a | |
956 | core dump. | |
957 | ||
958 | [L<GH #18148|https://github.com/Perl/perl5/issues/18148>] | |
959 | ||
960 | =back | |
961 | ||
962 | =head1 Testing | |
963 | ||
964 | Tests were added and changed to reflect the other additions and | |
965 | changes in this release. Furthermore, these significant changes were | |
966 | made: | |
967 | ||
968 | =over 4 | |
969 | ||
970 | =item * | |
971 | ||
972 | Split Config-dependent tests in F<t/opbasic/arith.t> to F<t/op/arith2.t> | |
973 | ||
974 | =item * | |
975 | ||
976 | F<t/re/opt.t> was added, providing a test harness for regexp optimization. | |
977 | [L<GH #18213|https://github.com/Perl/perl5/pull/18213>] | |
978 | ||
979 | =item * | |
980 | ||
981 | A workaround for CPAN distributions needing dot in C<@INC> has been removed | |
982 | [L<GH #18394|https://github.com/Perl/perl5/pull/18394>]. | |
983 | All distributions that previously required the workaround have now been | |
984 | adapted. | |
985 | ||
986 | =item * | |
987 | ||
988 | When testing in parallel on many-core platforms, you can now cause the | |
989 | test suite to finish somewhat earlier, but with less logical ordering of | |
990 | the tests, by setting | |
991 | ||
992 | PERL_TEST_HARNESS_ASAP=1 | |
993 | ||
994 | while running the test suite. | |
995 | ||
996 | =back | |
997 | ||
998 | =head1 Platform Support | |
999 | ||
1000 | =head2 New Platforms | |
1001 | ||
1002 | =over 4 | |
1003 | ||
1004 | =item 9front | |
1005 | ||
1006 | Allow building Perl on i386 9front systems (a fork of plan9). | |
1007 | ||
1008 | =back | |
1009 | ||
1010 | =head2 Updated Platforms | |
1011 | ||
1012 | =over 4 | |
1013 | ||
1014 | =item Plan9 | |
1015 | ||
1016 | Improve support for Plan9 on i386 platforms. | |
1017 | ||
1018 | =item MacOS (Darwin) | |
1019 | ||
1020 | The hints file for darwin has been updated to handle future MacOS versions | |
1021 | beyond 10. [L<GH #17946|https://github.com/Perl/perl5/issues/17946>] | |
1022 | ||
1023 | =back | |
1024 | ||
1025 | =head2 Discontinued Platforms | |
1026 | ||
1027 | =over 4 | |
1028 | ||
1029 | =item Symbian | |
1030 | ||
1031 | Support code relating to Symbian has been removed. Symbian was an | |
1032 | operating system for mobile devices. The port was last updated in July | |
1033 | 2009, and the platform itself in October 2012. | |
1034 | ||
1035 | =back | |
1036 | ||
1037 | =head2 Platform-Specific Notes | |
1038 | ||
1039 | =over 4 | |
1040 | ||
1041 | =item DragonFlyBSD | |
1042 | ||
1043 | Tests were updated to workaround DragonFlyBSD bugs in L<tc*() | |
1044 | functions|https://bugs.dragonflybsd.org/issues/3252> and L<ctime | |
1045 | updates|https://bugs.dragonflybsd.org/issues/3251>. | |
1046 | ||
1047 | =item Mac OS X | |
1048 | ||
1049 | A number of system libraries no longer exist as actual files on Big Sur, | |
1050 | even though C<dlopen> will pretend they do, so now we fall back to C<dlopen> | |
1051 | if a library file can not be found. | |
1052 | [L<GH #18407|https://github.com/Perl/perl5/issues/18407>] | |
1053 | ||
1054 | =item Windows | |
1055 | ||
1056 | Reading non-ASCII characters from the console when its codepage was set to | |
1057 | 65001 (UTF-8) was broken due to a bug in Windows. A workaround for this | |
1058 | problem has been implemented. | |
1059 | [L<GH #18701|https://github.com/Perl/perl5/issues/18701>] | |
1060 | ||
1061 | Building with mingw.org compilers (version 3.4.5 or later) using mingw runtime | |
1062 | versions < 3.22 now works again. This was broken in Perl 5.31.4. | |
1063 | ||
1064 | Building with mingw.org compilers (version 3.4.5 or later) using mingw runtime | |
1065 | versions >= 3.21 now works (for compilers up to version 5.3.0). | |
1066 | ||
1067 | F<Makefile.mk>, and thus support for dmake, has been removed. It is still | |
1068 | possible to build Perl on Windows using nmake (Makefile) and GNU make | |
1069 | (GNUmakefile). | |
1070 | [L<GH #18511|https://github.com/Perl/perl5/pull/18511>] | |
1071 | ||
1072 | perl can now be built with C<USE_QUADMATH> on MS Windows using | |
1073 | (32-bit and 64-bit) mingw-w64 ports of gcc. | |
1074 | [L<GH #18465|https://github.com/Perl/perl5/pull/18465>] | |
1075 | ||
1076 | The F<pl2bat.pl> utility now needs to C<use ExtUtils::PL2Bat>. This could | |
1077 | cause failures in parallel builds. | |
1078 | ||
1079 | Windows now supports L<symlink()|perlfunc/symlink> and | |
1080 | L<readlink()|perlfunc/readlink>, and L<lstat()|perlfunc/lstat> is no | |
1081 | longer an alias for L<stat()|perlfunc/stat>. | |
1082 | [L<GH #18005|https://github.com/Perl/perl5/issues/18005>]. | |
1083 | ||
1084 | Unlike POSIX systems, creating a symbolic link on Windows requires | |
1085 | either elevated privileges or Windows 10 1703 or later with Developer | |
1086 | Mode enabled. | |
1087 | ||
1088 | stat(), including C<stat FILEHANDLE>, and lstat() now uses our own | |
1089 | implementation that populates the device C<dev> and inode numbers | |
1090 | C<ino> returned rather than always returning zero. The number of | |
1091 | links C<nlink> field is now always populated. | |
1092 | ||
1093 | L<< C<${^WIN32_SLOPPY_STAT}> |perlvar/${^WIN32_SLOPPY_STAT} >> previously | |
1094 | controlled whether the C<nlink> field was populated requiring a | |
1095 | separate Windows API call to fetch, since C<nlink> and the other | |
1096 | information required for C<stat()> is now retrieved in a single API call. | |
1097 | ||
1098 | The C<-r> and C<-w> operators now return true for the C<STDIN>, | |
1099 | C<STDOUT> and C<STDERR> handles. Unfortunately it still won't return | |
1100 | true for duplicates of those handles. | |
1101 | [L<GH #8502|https://github.com/Perl/perl5/issues/8502>]. | |
1102 | ||
1103 | The times returned by stat() and lstat() are no longer incorrect | |
1104 | across Daylight Savings Time adjustments. | |
1105 | [L<GH #6080|https://github.com/Perl/perl5/issues/6080>]. | |
1106 | ||
1107 | C<-x> on a filehandle should now match C<-x> on the corresponding | |
1108 | filename on Vista or later. | |
1109 | [L<GH #4145|https://github.com/Perl/perl5/issues/4145>]. | |
1110 | ||
1111 | C<-e '"'> no longer incorrectly returns true. | |
1112 | [L<GH #12431|https://github.com/Perl/perl5/issues/12431>]. | |
1113 | ||
1114 | The same manifest is now used for Visual C++ and gcc builds. | |
1115 | ||
1116 | Previously, MSVC builds were using the B</manifestdependency> flag instead of | |
1117 | embedding F<perlexe.manifest>, which caused issues such as C<GetVersionEx()> | |
1118 | returning the wrong version number on Windows 10. | |
1119 | ||
1120 | =item z/OS | |
1121 | ||
1122 | The locale categories C<LC_SYNTAX> and C<LC_TOD> are now recognized. | |
1123 | Perl doesn't do anything with these, except it now allows you to specify | |
1124 | them. They are included in C<LC_ALL>. | |
1125 | ||
1126 | =back | |
1127 | ||
1128 | =head1 Internal Changes | |
1129 | ||
1130 | =over 4 | |
1131 | ||
1132 | =item * | |
1133 | ||
1134 | Corrected handling of double and long double parameters for perl's | |
1135 | implementation of formatted output for C<-Dusequadmath> builds. | |
1136 | ||
1137 | This applies to C<PerlIO_printf()>, C<croak()>, C<warn()>, C<sv_catpvf()> and | |
1138 | their variants. | |
1139 | ||
1140 | Previously in C<quadmath> builds, code like: | |
1141 | ||
1142 | PerlIO_printf(PerlIO_stderr(), "%g", somedouble); | |
1143 | ||
1144 | or | |
1145 | ||
1146 | PerlIO_printf(PerlIO_stderr(), "%Lg", somelongdouble); | |
1147 | ||
1148 | would erroneously throw an exception "panic: quadmath invalid format | |
1149 | ...", since the code added for quadmath builds assumed C<NV>s were the | |
1150 | only floating point format passed into these functions. | |
1151 | ||
1152 | This code would also process the standard C long double specifier C<L> | |
1153 | as if it expected an C<NV> (C<__float128> for quadmath builds), | |
1154 | resulting in undefined behaviour. | |
1155 | ||
1156 | These functions now correctly accept doubles, long doubles and NVs. | |
1157 | ||
1158 | =item * | |
1159 | ||
1160 | Previously the right operand of bitwise shift operators (shift amount) | |
1161 | was implicitly cast from IV to int, but it might lead wrong results | |
1162 | if IV does not fit in int. | |
1163 | ||
1164 | And also, shifting INT_MIN bits used to yield the shiftee unchanged | |
1165 | (treated as 0-bit shift instead of negative shift). | |
1166 | ||
1167 | =item * | |
1168 | ||
1169 | A set of C<cop_hints_exists_{pv,pvn,pvs,sv}> functions was added, | |
1170 | to support checking for the existence of keys in the hints hash of a | |
1171 | specific cop without needing to create a mortal copy of said value. | |
1172 | ||
1173 | =item * | |
1174 | ||
1175 | An aid has been added for using the C<DEBUG> macros when debugging XS or | |
1176 | C code. The comments in F<perl.h> describe C<DEBUG_PRE_STMTS> and | |
1177 | C<DEBUG_POST_STMTS>. which you can C<#define> to do things like save and | |
1178 | restore C<errno>, in case the C<DEBUG> calls are interfering with that, | |
1179 | or to display timestamps, or which thread it's coming from, or the | |
1180 | location of the call, or whatever. You can make a quick hack to help | |
1181 | you track something down without having to edit individual C<DEBUG> | |
1182 | calls. | |
1183 | ||
1184 | =item * | |
1185 | ||
1186 | Make C<REFCOUNTED_HE_EXISTS> available outside of core | |
1187 | ||
1188 | =item * | |
1189 | ||
1190 | All C<SvTRUE>-ish functions now evaluate their arguments exactly once. | |
1191 | In 5.32, plain L<perlapi/C<SvTRUE>> was changed to do that; now the rest | |
1192 | do as well. | |
1193 | ||
1194 | =item * | |
1195 | ||
1196 | Unicode is now a first class citizen when considering the pattern /A*B/ where | |
1197 | A and B are arbitrary. The pattern matching code tries to make a tight loop | |
1198 | to match the span of A's. The logic of this was now really updated with | |
1199 | support for UTF-8. | |
1200 | ||
1201 | =item * | |
1202 | ||
1203 | The L<re> module has a new function C<optimization>, which can return a | |
1204 | hashref of optimization data discovered about a compiled regexp. | |
1205 | ||
1206 | =item * | |
1207 | ||
1208 | The C<PERL_GLOBAL_STRUCT> compilation option has been removed, and | |
1209 | with it the need or the C<dVAR> macro. C<dVAR> remains defined as a | |
1210 | no-op outside C<PERL_CORE> for backwards compatiblity with XS modules. | |
1211 | ||
1212 | =item * | |
1213 | ||
1214 | A new savestack type C<SAVEt_HINTS_HH> has been added, which neatens the | |
1215 | previous behaviour of C<SAVEt_HINTS>. On previous versions the types and | |
1216 | values pushed to the save stack would depend on whether the hints included the | |
1217 | C<HINT_LOCALIZE_HH> bit, which complicates external code that inspects the | |
1218 | save stack. The new version uses a different savestack type to indicate the | |
1219 | difference. | |
1220 | ||
1221 | =item * | |
1222 | ||
1223 | A new API function L<perlapi/av_count> has been added which gives a | |
1224 | clearly named way to find how many elements are in an array. | |
1225 | ||
1226 | =back | |
1227 | ||
1228 | =head1 Selected Bug Fixes | |
1229 | ||
1230 | =over 4 | |
1231 | ||
1232 | =item * | |
1233 | ||
1234 | Setting C<%ENV> now properly handles upgraded strings in the key. Previously | |
1235 | Perl sent the SV's internal PV directly to the OS; now it will handle keys | |
1236 | as it has handled values since 5.18: attempt to downgrade the string first; | |
1237 | if that fails then warn and use the utf8 form. | |
1238 | ||
1239 | =item * | |
1240 | ||
1241 | Fix a memory leak in regcomp.c | |
1242 | [L<GH #18604|https://github.com/Perl/perl5/issues/18604>] | |
1243 | ||
1244 | =item * pack/unpack format 'D' now works on all systems that could support it | |
1245 | ||
1246 | Previously if C<NV == long double>, now it is supported on all platforms that | |
1247 | have long doubles. In particular that means it is now also supported on | |
1248 | quadmath platforms. | |
1249 | ||
1250 | =item * | |
1251 | ||
1252 | Skip trying to constant fold an incomplete op tree | |
1253 | [L<GH #18380|https://github.com/Perl/perl5/issues/18380>] | |
1254 | ||
1255 | Constant folding of chained comparison op trees could fail under certain | |
1256 | conditions, causing perl to crash. As a quick fix, constant folding is | |
1257 | now skipped for such op trees. This also addresses | |
1258 | [L<GH #17917|https://github.com/Perl/perl5/issues/17917>]. | |
1259 | ||
1260 | =item * | |
1261 | ||
1262 | C<%g> formatting broken on Ubuntu-18.04, C<NVSIZE == 8> | |
1263 | [L<GH #18170|https://github.com/Perl/perl5/issues/18170>] | |
1264 | ||
1265 | Buggy libc implementations of the C<gcvt> and C<qgcvt> functions | |
1266 | caused C<(s)printf> to incorrectly truncate C<%g> formatted numbers. | |
1267 | A new Configure probe now checks for this, with the result that the libc | |
1268 | C<sprintf> will be used in place of C<gcvt> and C<qgcvt>. | |
1269 | ||
1270 | Tests added as part of this fix also revealed related problems in | |
1271 | some Windows builds. The makefiles for MINGW builds on Windows have | |
1272 | thus been adjusted to use C<USE_MINGW_ANSI_STDIO> by default, ensuring | |
1273 | that they also provide correct C<(s)printf> formatting of numbers. | |
1274 | ||
1275 | =item * | |
1276 | ||
1277 | F<op.c>: croak on C<my $_> when C<use utf8> is in effect | |
1278 | [L<GH #18449|https://github.com/Perl/perl5/issues/18449>] | |
1279 | ||
1280 | The lexical topic feature experiment was removed in Perl v5.24 and | |
1281 | declaring C<my $_> became a compile time error. However, it was previously | |
1282 | still possible to make this declaration if C<use utf8> was in effect. | |
1283 | ||
1284 | =item * | |
1285 | ||
1286 | F<regexec.c>: Fix assertion failure | |
1287 | [L<GH #18451|https://github.com/Perl/perl5/issues/18451>] | |
1288 | ||
1289 | Fuzzing triggered an assertion failure in the regexp engine when too many | |
1290 | characters were copied into a buffer. | |
1291 | ||
1292 | =item * | |
1293 | ||
1294 | L<semctl()|perlfunc/semctl>, L<msgctl()|perlfunc/msgctl>, and | |
1295 | L<shmctl()|perlfunc/shmctl> now properly reset the UTF-8 flag on the | |
1296 | C<ARG> parameter if it's modified for C<IPC_STAT> or C<GETALL> | |
1297 | operations. | |
1298 | ||
1299 | =item * | |
1300 | ||
1301 | C<semctl()>, C<msgctl()>, and C<shmctl()> now attempt to downgrade the C<ARG> | |
1302 | parameter if its value is being used as input to C<IPC_SET> or | |
1303 | C<SETALL> calls. A failed downgrade will thrown an exception. | |
1304 | ||
1305 | =item * | |
1306 | ||
1307 | In cases where C<semctl()>, C<msgctl()> or C<shmctl()> would treat the C<ARG> | |
1308 | parameter as a pointer, an undefined value no longer generates a | |
1309 | warning. In most such calls the pointer isn't used anyway and this | |
1310 | allows you to supply C<undef> for a value not used by the underlying | |
1311 | function. | |
1312 | ||
1313 | =item * | |
1314 | ||
1315 | L<semop()|perlfunc/semop> now downgrades the C<OPSTRING> parameter, | |
1316 | L<msgsnd()|perlfunc/msgsnd> now downgrades the C<MSG> parameter and | |
1317 | L<shmwrite|perlfunc/shmwrite> now downgrades the C<STRING> parameter | |
1318 | to treat them as bytes. Previously they would be left upgraded, | |
1319 | providing a corrupted structure to the underlying function call. | |
1320 | ||
1321 | =item * | |
1322 | ||
1323 | L<msgrcv()|perlfunc/msgrcv> now properly resets the UTF-8 flag the | |
1324 | C<VAR> parameter when it is modified. Previously the UTF-8 flag could | |
1325 | be left on, resulting in a possibly corrupt result in C<VAR>. | |
1326 | ||
1327 | =item * | |
1328 | ||
1329 | Magic is now called correctly for stacked file test operators. | |
1330 | [L<GH #18293|https://github.com/Perl/perl5/issues/18293>] | |
1331 | ||
1332 | =item * | |
1333 | ||
1334 | The C<@ary = split(...)> optimization no longer switches in the target | |
1335 | array as the value stack. | |
1336 | [L<GH #18232|https://github.com/Perl/perl5/issues/18232>] | |
1337 | Also see discussion at | |
1338 | L<https://github.com/Perl/perl5/pull/18014#issuecomment-671299506>. | |
1339 | ||
1340 | =item * | |
1341 | ||
1342 | Fixed a bug in which some regexps with recursive subpatterns matched | |
1343 | incorrectly. | |
1344 | ||
1345 | [L<GH #18096|https://github.com/Perl/perl5/issues/18096>] | |
1346 | ||
1347 | =item * | |
1348 | ||
1349 | On Win32, C<waitpid(-1, WNOHANG)> could sometimes have a very large | |
1350 | timeout. [L<GH #16529|https://github.com/Perl/perl5/issues/16529>] | |
1351 | ||
1352 | =item * | |
1353 | ||
1354 | C<MARK> and hence C<items> are now correctly initialized in C<BOOT> XSUBs. | |
1355 | ||
1356 | =item * | |
1357 | ||
1358 | Some list assignments involving C<undef> on the left-hand side were | |
1359 | over-optimized and produced incorrect results. | |
1360 | [L<GH #16685|https://github.com/Perl/perl5/issues/16685>], | |
1361 | [L<GH #17816|https://github.com/Perl/perl5/issues/17816>] | |
1362 | ||
1363 | =back | |
1364 | ||
1365 | =head1 Known Problems | |
1366 | ||
1367 | None | |
1368 | ||
1369 | =head1 Errata From Previous Releases | |
1370 | ||
1371 | None | |
1372 | ||
1373 | =head1 Obituary | |
1374 | ||
1375 | Kent Fredric (KENTNL) passed away in February 2021. A native of New Zealand | |
1376 | and a self-described "huge geek," Kent was the author or maintainer of 178 | |
1377 | CPAN distributions, the Perl maintainer for the Gentoo Linux distribution and | |
1378 | a contributor to the Perl core distribution. He is mourned by his family, | |
1379 | friends and open source software communities worldwide. | |
1380 | ||
1381 | =head1 Acknowledgements | |
1382 | ||
1383 | Perl 5.34.0 represents approximately 11 months of development since Perl | |
1384 | 5.32.0 and contains approximately 280,000 lines of changes across 2,100 | |
1385 | files from 78 authors. | |
1386 | ||
1387 | Excluding auto-generated files, documentation and release tools, there were | |
1388 | approximately 150,000 lines of changes to 1,300 .pm, .t, .c and .h files. | |
1389 | ||
1390 | Perl continues to flourish into its fourth decade thanks to a vibrant | |
1391 | community of users and developers. The following people are known to have | |
1392 | contributed the improvements that became Perl 5.34.0: | |
1393 | ||
1394 | Aaron Crane, Adam Hartley, Andy Dougherty, Ben Cornett, Branislav | |
1395 | Zahradník, brian d foy, Chris 'BinGOs' Williams, Christian Walde | |
1396 | (Mithaldu), Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Book, Daniel | |
1397 | Böhmer, Daniel Laügt, Dan Kogai, David Cantrell, David Mitchell, Dominic | |
1398 | Hamon, E. Choroba, Ed J, Eric Herman, Eric Lindblad, Eugene Alvin Villar, | |
1399 | Felipe Gasper, Giovanni Tataranni, Graham Knop, Graham Ollis, Hauke D, | |
1400 | H.Merijn Brand, Hugo van der Sanden, Ichinose Shogo, Ivan Baidakou, Jae | |
1401 | Bradley, James E Keenan, Jason McIntosh, jkahrman, John Karr, John Lightsey, | |
1402 | Kang-min Liu, Karen Etheridge, Karl Williamson, Keith Thompson, Leon | |
1403 | Timmermans, Marc Reisner, Marcus Holland-Moritz, Max Maischein, Michael G | |
1404 | Schwern, Nicholas Clark, Nicolas R., Paul Evans, Petr Písař, raiph, Renee | |
1405 | Baecker, Ricardo Signes, Richard Leach, Romano, Ryan Voots, Samanta Navarro, | |
1406 | Samuel Thibault, Sawyer X, Scott Baker, Sergey Poznyakoff, Sevan Janiyan, | |
1407 | Shirakata Kentaro, Shlomi Fish, Sisyphus, Sizhe Zhao, Steve Hay, TAKAI | |
1408 | Kousuke, Thibault Duponchelle, Todd Rinaldo, Tomasz Konojacki, Tom Hukins, | |
1409 | Tom Stellard, Tony Cook, vividsnow, Yves Orton, Zakariyya Mughal, | |
1410 | Михаил Козачков. | |
1411 | ||
1412 | The list above is almost certainly incomplete as it is automatically | |
1413 | generated from version control history. In particular, it does not include | |
1414 | the names of the (very much appreciated) contributors who reported issues to | |
1415 | the Perl bug tracker. | |
1416 | ||
1417 | Many of the changes included in this version originated in the CPAN modules | |
1418 | included in Perl's core. We're grateful to the entire CPAN community for | |
1419 | helping Perl to flourish. | |
1420 | ||
1421 | For a more complete list of all of Perl's historical contributors, please | |
1422 | see the F<AUTHORS> file in the Perl source distribution. | |
1423 | ||
1424 | =head1 Reporting Bugs | |
1425 | ||
1426 | If you find what you think is a bug, you might check the perl bug database | |
1427 | at L<https://github.com/Perl/perl5/issues>. There may also be information at | |
1428 | L<http://www.perl.org/>, the Perl Home Page. | |
1429 | ||
1430 | If you believe you have an unreported bug, please open an issue at | |
1431 | L<https://github.com/Perl/perl5/issues>. Be sure to trim your bug down to a | |
1432 | tiny but sufficient test case. | |
1433 | ||
1434 | If the bug you are reporting has security implications which make it | |
1435 | inappropriate to send to a public issue tracker, then see | |
1436 | L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> | |
1437 | for details of how to report the issue. | |
1438 | ||
1439 | =head1 Give Thanks | |
1440 | ||
1441 | If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, | |
1442 | you can do so by running the C<perlthanks> program: | |
1443 | ||
1444 | perlthanks | |
1445 | ||
1446 | This will send an email to the Perl 5 Porters list with your show of thanks. | |
1447 | ||
1448 | =head1 SEE ALSO | |
1449 | ||
1450 | The F<Changes> file for an explanation of how to view exhaustive details on | |
1451 | what changed. | |
1452 | ||
1453 | The F<INSTALL> file for how to build Perl. | |
1454 | ||
1455 | The F<README> file for general stuff. | |
1456 | ||
1457 | The F<Artistic> and F<Copying> files for copyright information. | |
1458 | ||
1459 | =cut |