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