1PERL5340DELTA(1)       Perl Programmers Reference Guide       PERL5340DELTA(1)
2
3
4

NAME

6       perl5340delta - what is new for perl v5.34.0
7

DESCRIPTION

9       This document describes differences between the 5.32.0 release and the
10       5.34.0 release.
11
12       If you are upgrading from an earlier release such as 5.30.0, first read
13       perl5320delta, which describes differences between 5.30.0 and 5.32.0.
14

Core Enhancements

16   Experimental Try/Catch Syntax
17       An initial experimental attempt at providing "try"/"catch" notation has
18       been added.
19
20           use feature 'try';
21
22           try {
23               a_function();
24           }
25           catch ($e) {
26               warn "An error occurred: $e";
27           }
28
29       For more information, see "Try Catch Exception Handling" in perlsyn.
30
31   "qr/{,n}/" is now accepted
32       An empty lower bound is now accepted for regular expression
33       quantifiers, like "m/x{,3}/" meaning "m/x{0,3}/"
34
35   Blanks freely allowed within but adjacent to curly braces
36       (in double-quotish contexts and regular expression patterns)
37
38       This means you can write things like "\x{ FFFC }" if you like.  This
39       applies to all such constructs, namely "\b{}", "\g{}", "\k{}", "\N{}",
40       "\o{}", and "\x{}"; as well as the regular expression quantifier
41       "{m,n}".  "\p{}" and "\P{}" retain their already-existing, even looser,
42       rules mandated by the Unicode standard (see "Properties accessible
43       through \p{} and \P{}" in perluniprops).
44
45       This ability is in effect regardless of the presence of the "/x"
46       regular expression pattern modifier.
47
48       Additionally, the comma in a regular expression braced quantifier may
49       have blanks (tabs or spaces) before and/or after the comma, like
50       "qr/a{ 5, 7 }/".
51
52   New octal syntax "0oddddd"
53       It is now possible to specify octal literals with "0o" prefixes, as in
54       "0o123_456", parallel to the existing construct to specify hexadecimal
55       literal "0xddddd" and binary literal "0bddddd".  Also, the builtin
56       oct() function now accepts this new syntax.
57
58       See "Scalar value constructors" in perldata and "oct EXPR" in perlfunc.
59

Performance Enhancements

61       •   Fix a memory leak in RegEx [GH #18604
62           <https://github.com/Perl/perl5/issues/18604>]
63

Modules and Pragmata

65   New Modules and Pragmata
66       •   ExtUtils::PL2Bat 0.004 has been added to the Perl core.
67
68           This module is a generalization of the "pl2bat" script. It being a
69           script has led to at least two forks of this code; this module will
70           unify them under one implementation with tests.
71
72   Updated Modules and Pragmata
73       •   Archive::Tar has been upgraded from version 2.36 to 2.38.
74
75       •   autodie has been upgraded from version 2.32 to 2.34.
76
77       •   B has been upgraded from version 1.80 to 1.82.
78
79       •   B::Deparse has been upgraded from version 1.54 to 1.56.
80
81       •   bytes has been upgraded from version 1.07 to 1.08.
82
83       •   Carp has been upgraded from version 1.50 to 1.52.
84
85       •   Compress::Raw::Bzip2 has been upgraded from version 2.093 to 2.101.
86
87       •   Compress::Raw::Zlib has been upgraded from version 2.093 to 2.101.
88
89       •   Config::Perl::V has been upgraded from version 0.32 to 0.33.
90
91       •   CPAN has been upgraded from version 2.27 to 2.28.
92
93       •   Data::Dumper has been upgraded from version 2.174 to 2.179.
94
95       •   DB has been upgraded from version 1.58 to 1.59.
96
97       •   DB_File has been upgraded from version 1.853 to 1.855.
98
99       •   Devel::Peek has been upgraded from version 1.28 to 1.30.
100
101       •   Devel::PPPort has been upgraded from version 3.57 to 3.62.
102
103           New "PERL_VERSION_*" comparison macros are now available.
104
105           "ppport.h --api-info" no longer includes non-API info unless that
106           is the only match
107
108       •   Digest has been upgraded from version 1.17_01 to 1.19.
109
110       •   Digest::MD5 has been upgraded from version 2.55_01 to 2.58.
111
112       •   DynaLoader has been upgraded from version 1.47 to 1.50.
113
114       •   Encode has been upgraded from version 3.06 to 3.08.
115
116       •   Env has been upgraded from version 1.04 to 1.05.
117
118       •   Errno has been upgraded from version 1.30 to 1.33.
119
120       •   experimental has been upgraded from version 0.020 to 0.024.
121
122       •   Exporter has been upgraded from version 5.74 to 5.76.
123
124       •   ExtUtils::CBuilder has been upgraded from version 0.280234 to
125           0.280236.
126
127       •   ExtUtils::Install has been upgraded from version 2.14 to 2.20.
128
129       •   ExtUtils::MakeMaker has been upgraded from version 7.44 to 7.62.
130
131       •   ExtUtils::Manifest has been upgraded from version 1.72 to 1.73.
132
133       •   ExtUtils::Miniperl has been upgraded from version 1.09 to 1.10.
134
135       •   ExtUtils::ParseXS has been upgraded from version 3.40 to 3.43.
136
137       •   ExtUtils::Typemaps has been upgraded from version 3.38 to 3.43.
138
139       •   Fcntl has been upgraded from version 1.13 to 1.14.
140
141       •   feature has been upgraded from version 1.58 to 1.64.
142
143           Added the default enabled "bareword_filehandles" feature.
144
145           A new multidimensional feature has been added, which is enabled by
146           default but allows turning off multi-dimensional array emulation.
147
148       •   File::Copy has been upgraded from version 2.34 to 2.35.
149
150       •   File::Fetch has been upgraded from version 0.56 to 1.00.
151
152       •   File::Find has been upgraded from version 1.37 to 1.39.
153
154       •   File::Path has been upgraded from version 2.16 to 2.18.
155
156       •   File::Spec has been upgraded from version 3.78 to 3.80.
157
158       •   File::Temp has been upgraded from version 0.2309 to 0.2311.
159
160       •   Filter::Util::Call has been upgraded from version 1.59 to 1.60.
161
162       •   FindBin has been upgraded from version 1.51 to 1.52.
163
164       •   GDBM_File has been upgraded from version 1.18 to 1.19.
165
166           New functions and compatibility for newer versions of GDBM.  [GH
167           #18435 <https://github.com/Perl/perl5/pull/18435>]
168
169       •   Getopt::Long has been upgraded from version 2.51 to 2.52.
170
171       •   Getopt::Std has been upgraded from version 1.12 to 1.13.
172
173       •   Hash::Util has been upgraded from version 0.23 to 0.25.
174
175       •   Hash::Util::FieldHash has been upgraded from version 1.20 to 1.21.
176
177       •   I18N::LangTags has been upgraded from version 0.44 to 0.45.
178
179       •   if has been upgraded from version 0.0608 to 0.0609.
180
181       •   IO has been upgraded from version 1.43 to 1.46.
182
183           IO::Socket now stores error messages in $IO::Socket::errstr, in
184           addition to in $@.
185
186           The "error" method now reports the error state for both the input
187           and output streams for sockets and character devices.  Similarly
188           "clearerr" now clears the error state for both streams.
189
190           A spurious error reported for regular file handles has been fixed
191           in IO::Handle.  [GH #18019
192           <https://github.com/Perl/perl5/issues/18019>]
193
194       •   IO-Compress has been upgraded from version 2.093 to 2.102.
195
196           bin/zipdetails version 2.02
197
198       •   IO::Socket::IP has been upgraded from version 0.39 to 0.41.
199
200       •   IO::Zlib has been upgraded from version 1.10 to 1.11.
201
202       •   IPC::SysV has been upgraded from version 2.07 to 2.09.
203
204       •   JSON::PP has been upgraded from version 4.04 to 4.06.
205
206       •   The libnet distribution has been upgraded from version 3.11 to
207           3.13.
208
209       •   locale has been upgraded from version 1.09 to 1.10.
210
211       •   Math::Complex has been upgraded from version 1.5901 to 1.5902.
212
213       •   MIME::Base64 has been upgraded from version 3.15 to 3.16.
214
215       •   Module::CoreList has been upgraded from version 5.20200620 to
216           5.20210520.
217
218       •   Module::Load has been upgraded from version 0.34 to 0.36.
219
220       •   Module::Load::Conditional has been upgraded from version 0.70 to
221           0.74.
222
223       •   mro has been upgraded from version 1.23 to 1.25_001.
224
225       •   Net::Ping has been upgraded from version 2.72 to 2.74.
226
227       •   NEXT has been upgraded from version 0.67_01 to 0.68.
228
229       •   ODBM_File has been upgraded from version 1.16 to 1.17.
230
231       •   Opcode has been upgraded from version 1.47 to 1.50.
232
233       •   overload has been upgraded from version 1.31 to 1.33.
234
235       •   perlfaq has been upgraded from version 5.20200523 to 5.20210411.
236
237       •   PerlIO::encoding has been upgraded from version 0.28 to 0.30.
238
239       •   PerlIO::mmap has been upgraded from version 0.016 to 0.017.
240
241       •   PerlIO::scalar has been upgraded from version 0.30 to 0.31.
242
243       •   PerlIO::via::QuotedPrint has been upgraded from version 0.08 to
244           0.09.
245
246       •   Pod::Checker has been upgraded from version 1.73 to 1.74.
247
248       •   Pod::Html has been upgraded from version 1.25 to 1.27.
249
250       •   Pod::Simple has been upgraded from version 3.40 to 3.42.
251
252       •   Pod::Usage has been upgraded from version 1.69 to 2.01.
253
254       •   POSIX has been upgraded from version 1.94 to 1.97.
255
256           POSIX::signbit() behaviour has been improved.  [GH #18441
257           <https://github.com/Perl/perl5/pull/18441>]
258
259           Documentation for "asctime" clarifies that the result is always in
260           English.  (Use "strftime" for a localized result.)
261
262       •   re has been upgraded from version 0.40 to 0.41.
263
264           (See under "Internal Changes" for more information.)
265
266       •   Safe has been upgraded from version 2.41 to 2.43.
267
268       •   Socket has been upgraded from version 2.029 to 2.031.
269
270       •   Storable has been upgraded from version 3.21 to 3.23.
271
272       •   strict has been upgraded from version 1.11 to 1.12.
273
274       •   subs has been upgraded from version 1.03 to 1.04.
275
276       •   Symbol has been upgraded from version 1.08 to 1.09.
277
278       •   Test::Harness has been upgraded from version 3.42 to 3.43.
279
280       •   Test::Simple has been upgraded from version 1.302175 to 1.302183.
281
282       •   Text::Balanced has been upgraded from version 2.03 to 2.04.
283
284       •   threads has been upgraded from version 2.25 to 2.26.
285
286       •   threads::shared has been upgraded from version 1.61 to 1.62.
287
288       •   Tie::RefHash has been upgraded from version 1.39 to 1.40.
289
290       •   Time::HiRes has been upgraded from version 1.9764 to 1.9767.
291
292       •   Time::Local has been upgraded from version 1.28 to 1.30.
293
294       •   Unicode::Collate has been upgraded from version 1.27 to 1.29.
295
296       •   Unicode::Normalize has been upgraded from version 1.27 to 1.28.
297
298       •   utf8 has been upgraded from version 1.22 to 1.24.
299
300       •   version has been upgraded from version 0.9924 to 0.9928.
301
302       •   warnings has been upgraded from version 1.47 to 1.51.
303
304       •   Win32 has been upgraded from version 0.53 to 0.57.
305
306           Fix calling convention for "PFNRegGetValueA".
307
308           Added Win32::IsSymlinkCreationAllowed(),
309           Win32::IsDeveloperModeEnabled(), and Win32::GetProcessPrivileges().
310
311           Removed old code for versions before Windows 2000.
312
313       •   XS::APItest has been upgraded from version 1.09 to 1.16.
314
315       •   XS::Typemap has been upgraded from version 0.17 to 0.18.
316

Documentation

318   New Documentation
319       perldocstyle
320
321       This document is a guide for the authorship and maintenance of the
322       documentation that ships with Perl.
323
324       perlgov
325
326       This document describes the goals, scope, system, and rules for Perl's
327       new governance model.
328
329       Other pod files, most notably perlpolicy, were amended to reflect its
330       adoption.
331
332   Changes to Existing Documentation
333       We have attempted to update the documentation to reflect the changes
334       listed in this document.  If you find any we have missed, open an issue
335       at <https://github.com/Perl/perl5/issues>.
336
337       Additionally, the following selected changes have been made:
338
339       •   perlapi, perlguts, perlxs, and perlxstut now prefer "SvPVbyte" over
340           "SvPV".
341
342       •   References to Pumpking have been replaced with a more accurate term
343           or Steering Council where appropriate.
344
345The Perl Steering Council is now the fallback contact for security
346           issues.
347
348       perlapi
349
350       •   Efforts continue in improving the presentation of this document,
351           and to document more API elements.
352
353       perlcommunity
354
355       •   The freenode IRC URL has been updated.
356
357       perldebguts
358
359       •   Corrected the description of the scalar "${"_<$filename"}"
360           variables.
361
362       perldiag
363
364       •   Now documents additional examples of "not imported" warnings.
365
366       perlfaq
367
368       •   The Perl FAQ was updated to CPAN version 5.20201107 with minor
369           improvements.
370
371       perlfunc
372
373my() and state() now explicitly warn the reader that lexical
374           variables should typically not be redeclared within the same scope
375           or statement.  [GH #18389
376           <https://github.com/Perl/perl5/issues/18389>]
377
378       •   The localtime entry has been improved and now also states that the
379           result of the function is always in English.
380
381msgsnd() documented a length field included in the packed "MSG"
382           parameter to msgsnd(), but there was no such field.  "MSG" contains
383           only the type and the message content.
384
385       •   Better explanation of what happens when "sleep" is called with a
386           zero or negative value.
387
388       •   Simplify the split() documentation by removing the join()s from the
389           examples [GH #18676 <https://github.com/Perl/perl5/issues/18676>]
390
391       perlgit
392
393       •   document how to create a remote-tracking branch for every PR
394
395       •   document how to get a PR as a local branch
396
397       perlguts
398
399       •   perlguts now explains in greater detail the need to consult
400           "SvUTF8" when calling "SvPV" (or variants). A new "How do I pass a
401           Perl string to a C library?" section in the same document discusses
402           when to use which style of macro to read an SV's string value.
403
404       •   Corrected "my_rpeep" example in perlguts.
405
406       •   A section has been added on the formatted printing of special
407           sizes.
408
409       perlop
410
411       •   The "<>" and "<<>>" operators are commonly referred to as the
412           diamond and double diamond operators respectively, but that wasn't
413           mentioned previously in their documentation.
414
415       •   Document range op behavior change.
416
417       perlpacktut
418
419       •   Incorrect variables used in an example have been fixed.
420
421       perlsyn
422
423       •   Document that caller() does not see try{} blocks
424
425       •   A new example shows how a lexical "my" variable can be declared
426           during the initialization of a "for" loop.
427
428       perlunifaq
429
430       •   Fix description of what Perl does with unencoded strings
431

Diagnostics

433       The following additions or changes have been made to diagnostic output,
434       including warnings and fatal error messages.  For the complete list of
435       diagnostic messages, see perldiag.
436
437   New Diagnostics
438       New Errors
439
440       •   Bareword filehandle "%s" not allowed under 'no feature
441           "bareword_filehandles"'
442
443           This accompanies the new bareword_filehandles feature.
444
445       •   Multidimensional hash lookup is disabled
446
447           This accompanies the new multidimensional feature.
448
449       New Warnings
450
451       •   Wide character in setenv key (encoding to utf8)
452
453           Attempts to put wide characters into environment variable keys via
454           %ENV now provoke this warning.
455
456   Changes to Existing Diagnostics
457       •   Error %s in expansion of %s
458
459           An error was encountered in handling a user-defined property
460           ("User-Defined Character Properties" in perlunicode).  These are
461           programmer written subroutines, hence subject to errors that may
462           prevent them from compiling or running.
463
464       •   Infinite recursion in user-defined property
465
466           A user-defined property ("User-Defined Character Properties" in
467           perlunicode) can depend on the definitions of other user-defined
468           properties.  If the chain of dependencies leads back to this
469           property, infinite recursion would occur, were it not for the check
470           that raised this error.
471
472       •   Timeout waiting for another thread to define \p{%s}
473
474           The first time a user-defined property ("User-Defined Character
475           Properties" in perlunicode) is used, its definition is looked up
476           and converted into an internal form for more efficient handling in
477           subsequent uses.  There could be a race if two or more threads
478           tried to do this processing nearly simultaneously.
479
480       •   Unknown user-defined property name \p{%s}
481
482           You specified to use a property within the "\p{...}" which was a
483           syntactically valid user-defined property, but no definition was
484           found for it
485
486       •   Too few arguments for subroutine '%s' (got %d; expected %d)
487
488           Subroutine argument-count mismatch errors now include the number of
489           given and expected arguments.
490
491       •   Too many arguments for subroutine '%s' (got %d; expected %d)
492
493           Subroutine argument-count mismatch errors now include the number of
494           given and expected arguments.
495
496       •   Lost precision when %s %f by 1
497
498           This warning was only issued for positive too-large values when
499           incrementing, and only for negative ones when decrementing.  It is
500           now issued for both positive or negative too-large values.  [GH
501           #18333 <https://github.com/Perl/perl5/issues/18333>]
502
503       •   \K not permitted in lookahead/lookbehind in regex; marked by <--
504           HERE in m/%s/
505
506           This error was incorrectly produced in some cases involving nested
507           lookarounds.  This has been fixed.  [GH #18123
508           <https://github.com/Perl/perl5/issues/18123>]
509
510       •   Use of uninitialized value%s
511
512           This warning may now include the array or hash index when the
513           uninitialized value is the result of an element not found.  This
514           will only happen if the index is a simple non-magical variable.
515

Utility Changes

517   perl5db.pl (the debugger)
518       •   New option: "HistItemMinLength"
519
520           This option controls the minimum length a command must be to get
521           stored in history.  Traditionally, this has been fixed at 2.
522           Changes to the debugger are often perilous, and new bugs should be
523           reported so the debugger can be debugged.
524
525       •   Fix to "i" and "l" commands
526
527           The "i $var" and "l $var" commands work again with lexical
528           variables.
529

Configuration and Compilation

531       •   Prevented incpath to spill into libpth
532
533       •   Use realpath if available. (This might catch more duplicate paths.)
534
535       •   Only include real existing paths.
536
537       •   Filter inc paths out of libpth.
538
539       •   stadtx hash support has been removed
540
541           stadtx support has been entirely removed.  Previously, it could be
542           requested with "PERL_HASH_FUNC_STADTX", and was default in 64-bit
543           builds.  It has been replaced with SipHash.  SipHash has been more
544           rigorously reviewed than stadtx.
545
546       •   Configure
547
548           A new probe checks for buggy libc implementations of the
549           "gcvt"/"qgcvt" functions.  [GH #18170
550           <https://github.com/Perl/perl5/issues/18170>]
551
552       •   "-Dusedefaultstrict"
553
554           Perl can now be built with strict on by default (using the
555           configuration option "-Dusedefaultstrict".
556
557           These strict defaults do not apply when "perl" is run via "-e" or
558           "-E".
559
560           This setting provides a diagnostic mechanism intended for
561           development purposes only and is thus undefined by default.
562
563       •   The minimum supported Bison version is now 2.4, and the maximum is
564           3.7.
565
566       •   Newer 64-bit versions of the Intel C/C++ compiler are now
567           recognised and have the correct flags set.
568
569       •   We now trap SIGBUS when Configure checks for "va_copy".
570
571           On several systems the attempt to determine if we need "va_copy" or
572           similar results in a SIGBUS instead of the expected SIGSEGV, which
573           previously caused a core dump.
574
575           [GH #18148 <https://github.com/Perl/perl5/issues/18148>]
576

Testing

578       Tests were added and changed to reflect the other additions and changes
579       in this release.  Furthermore, these significant changes were made:
580
581       •   Split Config-dependent tests in t/opbasic/arith.t to t/op/arith2.t
582
583t/re/opt.t was added, providing a test harness for regexp
584           optimization.  [GH #18213
585           <https://github.com/Perl/perl5/pull/18213>]
586
587       •   A workaround for CPAN distributions needing dot in @INC has been
588           removed [GH #18394 <https://github.com/Perl/perl5/pull/18394>].
589           All distributions that previously required the workaround have now
590           been adapted.
591
592       •   When testing in parallel on many-core platforms, you can now cause
593           the test suite to finish somewhat earlier, but with less logical
594           ordering of the tests, by setting
595
596            PERL_TEST_HARNESS_ASAP=1
597
598           while running the test suite.
599

Platform Support

601   New Platforms
602       9front
603           Allow building Perl on i386 9front systems (a fork of plan9).
604
605   Updated Platforms
606       Plan9
607           Improve support for Plan9 on i386 platforms.
608
609       MacOS (Darwin)
610           The hints file for darwin has been updated to handle future MacOS
611           versions beyond 10. [GH #17946
612           <https://github.com/Perl/perl5/issues/17946>]
613
614   Discontinued Platforms
615       Symbian
616           Support code relating to Symbian has been removed.  Symbian was an
617           operating system for mobile devices.  The port was last updated in
618           July 2009, and the platform itself in October 2012.
619
620   Platform-Specific Notes
621       DragonFlyBSD
622           Tests were updated to workaround DragonFlyBSD bugs in tc*()
623           functions <https://bugs.dragonflybsd.org/issues/3252> and ctime
624           updates <https://bugs.dragonflybsd.org/issues/3251>.
625
626       Mac OS X
627           A number of system libraries no longer exist as actual files on Big
628           Sur, even though "dlopen" will pretend they do, so now we fall back
629           to "dlopen" if a library file can not be found.  [GH #18407
630           <https://github.com/Perl/perl5/issues/18407>]
631
632       Windows
633           Reading non-ASCII characters from the console when its codepage was
634           set to 65001 (UTF-8) was broken due to a bug in Windows. A
635           workaround for this problem has been implemented.  [GH #18701
636           <https://github.com/Perl/perl5/issues/18701>]
637
638           Building with mingw.org compilers (version 3.4.5 or later) using
639           mingw runtime versions < 3.22 now works again.  This was broken in
640           Perl 5.31.4.
641
642           Building with mingw.org compilers (version 3.4.5 or later) using
643           mingw runtime versions >= 3.21 now works (for compilers up to
644           version 5.3.0).
645
646           Makefile.mk, and thus support for dmake, has been removed. It is
647           still possible to build Perl on Windows using nmake (Makefile) and
648           GNU make (GNUmakefile).  [GH #18511
649           <https://github.com/Perl/perl5/pull/18511>]
650
651           perl can now be built with "USE_QUADMATH" on MS Windows using
652           (32-bit and 64-bit) mingw-w64 ports of gcc.  [GH #18465
653           <https://github.com/Perl/perl5/pull/18465>]
654
655           The pl2bat.pl utility now needs to "use ExtUtils::PL2Bat". This
656           could cause failures in parallel builds.
657
658           Windows now supports symlink() and readlink(), and lstat() is no
659           longer an alias for stat().  [GH #18005
660           <https://github.com/Perl/perl5/issues/18005>].
661
662           Unlike POSIX systems, creating a symbolic link on Windows requires
663           either elevated privileges or Windows 10 1703 or later with
664           Developer Mode enabled.
665
666           stat(), including "stat FILEHANDLE", and lstat() now uses our own
667           implementation that populates the device "dev" and inode numbers
668           "ino" returned rather than always returning zero.  The number of
669           links "nlink" field is now always populated.
670
671           "${^WIN32_SLOPPY_STAT}"  previously controlled whether the "nlink"
672           field was populated requiring a separate Windows API call to fetch,
673           since "nlink" and the other information required for stat() is now
674           retrieved in a single API call.
675
676           The "-r" and "-w" operators now return true for the "STDIN",
677           "STDOUT" and "STDERR" handles.  Unfortunately it still won't return
678           true for duplicates of those handles.  [GH #8502
679           <https://github.com/Perl/perl5/issues/8502>].
680
681           The times returned by stat() and lstat() are no longer incorrect
682           across Daylight Savings Time adjustments.  [GH #6080
683           <https://github.com/Perl/perl5/issues/6080>].
684
685           "-x" on a filehandle should now match "-x" on the corresponding
686           filename on Vista or later.  [GH #4145
687           <https://github.com/Perl/perl5/issues/4145>].
688
689           "-e '"'" no longer incorrectly returns true.  [GH #12431
690           <https://github.com/Perl/perl5/issues/12431>].
691
692           The same manifest is now used for Visual C++ and gcc builds.
693
694           Previously, MSVC builds were using the /manifestdependency flag
695           instead of embedding perlexe.manifest, which caused issues such as
696           GetVersionEx() returning the wrong version number on Windows 10.
697
698       z/OS
699           The locale categories "LC_SYNTAX" and "LC_TOD" are now recognized.
700           Perl doesn't do anything with these, except it now allows you to
701           specify them.  They are included in "LC_ALL".
702

Internal Changes

704       •   Corrected handling of double and long double parameters for perl's
705           implementation of formatted output for "-Dusequadmath" builds.
706
707           This applies to PerlIO_printf(), croak(), warn(), sv_catpvf() and
708           their variants.
709
710           Previously in "quadmath" builds, code like:
711
712             PerlIO_printf(PerlIO_stderr(), "%g", somedouble);
713
714           or
715
716             PerlIO_printf(PerlIO_stderr(), "%Lg", somelongdouble);
717
718           would erroneously throw an exception "panic: quadmath invalid
719           format ...", since the code added for quadmath builds assumed "NV"s
720           were the only floating point format passed into these functions.
721
722           This code would also process the standard C long double specifier
723           "L" as if it expected an "NV" ("__float128" for quadmath builds),
724           resulting in undefined behaviour.
725
726           These functions now correctly accept doubles, long doubles and NVs.
727
728       •   Previously the right operand of bitwise shift operators (shift
729           amount) was implicitly cast from IV to int, but it might lead wrong
730           results if IV does not fit in int.
731
732           And also, shifting INT_MIN bits used to yield the shiftee unchanged
733           (treated as 0-bit shift instead of negative shift).
734
735       •   A set of "cop_hints_exists_{pv,pvn,pvs,sv}" functions was added, to
736           support checking for the existence of keys in the hints hash of a
737           specific cop without needing to create a mortal copy of said value.
738
739       •   An aid has been added for using the "DEBUG" macros when debugging
740           XS or C code. The comments in perl.h describe "DEBUG_PRE_STMTS" and
741           "DEBUG_POST_STMTS". which you can "#define" to do things like save
742           and restore "errno", in case the "DEBUG" calls are interfering with
743           that, or to display timestamps, or which thread it's coming from,
744           or the location of the call, or whatever.  You can make a quick
745           hack to help you track something down without having to edit
746           individual "DEBUG" calls.
747
748       •   Make "REFCOUNTED_HE_EXISTS" available outside of core
749
750       •   All "SvTRUE"-ish functions now evaluate their arguments exactly
751           once.  In 5.32, plain ""SvTRUE"" in perlapi was changed to do that;
752           now the rest do as well.
753
754       •   Unicode is now a first class citizen when considering the pattern
755           /A*B/ where A and B are arbitrary.  The pattern matching code tries
756           to make a tight loop to match the span of A's.  The logic of this
757           was now really updated with support for UTF-8.
758
759       •   The re module has a new function "optimization", which can return a
760           hashref of optimization data discovered about a compiled regexp.
761
762       •   The "PERL_GLOBAL_STRUCT" compilation option has been removed, and
763           with it the need or the "dVAR" macro.  "dVAR" remains defined as a
764           no-op outside "PERL_CORE" for backwards compatiblity with XS
765           modules.
766
767       •   A new savestack type "SAVEt_HINTS_HH" has been added, which neatens
768           the previous behaviour of "SAVEt_HINTS".  On previous versions the
769           types and values pushed to the save stack would depend on whether
770           the hints included the "HINT_LOCALIZE_HH" bit, which complicates
771           external code that inspects the save stack. The new version uses a
772           different savestack type to indicate the difference.
773
774       •   A new API function "av_count" in perlapi has been added which gives
775           a clearly named way to find how many elements are in an array.
776

Selected Bug Fixes

778       •   Setting %ENV now properly handles upgraded strings in the key.
779           Previously Perl sent the SV's internal PV directly to the OS; now
780           it will handle keys as it has handled values since 5.18: attempt to
781           downgrade the string first; if that fails then warn and use the
782           utf8 form.
783
784       •   Fix a memory leak in regcomp.c [GH #18604
785           <https://github.com/Perl/perl5/issues/18604>]
786
787       •   pack/unpack format 'D' now works on all systems that could support
788           it
789
790           Previously if "NV == long double", now it is supported on all
791           platforms that have long doubles. In particular that means it is
792           now also supported on quadmath platforms.
793
794       •   Skip trying to constant fold an incomplete op tree [GH #18380
795           <https://github.com/Perl/perl5/issues/18380>]
796
797           Constant folding of chained comparison op trees could fail under
798           certain conditions, causing perl to crash. As a quick fix, constant
799           folding is now skipped for such op trees. This also addresses [GH
800           #17917 <https://github.com/Perl/perl5/issues/17917>].
801
802       •   %g formatting broken on Ubuntu-18.04, "NVSIZE == 8" [GH #18170
803           <https://github.com/Perl/perl5/issues/18170>]
804
805           Buggy libc implementations of the "gcvt" and "qgcvt" functions
806           caused "(s)printf" to incorrectly truncate %g formatted numbers.  A
807           new Configure probe now checks for this, with the result that the
808           libc "sprintf" will be used in place of "gcvt" and "qgcvt".
809
810           Tests added as part of this fix also revealed related problems in
811           some Windows builds. The makefiles for MINGW builds on Windows have
812           thus been adjusted to use "USE_MINGW_ANSI_STDIO" by default,
813           ensuring that they also provide correct "(s)printf" formatting of
814           numbers.
815
816op.c: croak on "my $_" when "use utf8" is in effect [GH #18449
817           <https://github.com/Perl/perl5/issues/18449>]
818
819           The lexical topic feature experiment was removed in Perl v5.24 and
820           declaring "my $_" became a compile time error. However, it was
821           previously still possible to make this declaration if "use utf8"
822           was in effect.
823
824regexec.c: Fix assertion failure [GH #18451
825           <https://github.com/Perl/perl5/issues/18451>]
826
827           Fuzzing triggered an assertion failure in the regexp engine when
828           too many characters were copied into a buffer.
829
830semctl(), msgctl(), and shmctl() now properly reset the UTF-8 flag
831           on the "ARG" parameter if it's modified for "IPC_STAT" or "GETALL"
832           operations.
833
834       •   semctl(), msgctl(), and shmctl() now attempt to downgrade the "ARG"
835           parameter if its value is being used as input to "IPC_SET" or
836           "SETALL" calls.  A failed downgrade will thrown an exception.
837
838       •   In cases where semctl(), msgctl() or shmctl() would treat the "ARG"
839           parameter as a pointer, an undefined value no longer generates a
840           warning.  In most such calls the pointer isn't used anyway and this
841           allows you to supply "undef" for a value not used by the underlying
842           function.
843
844semop() now downgrades the "OPSTRING" parameter, msgsnd() now
845           downgrades the "MSG" parameter and shmwrite now downgrades the
846           "STRING" parameter to treat them as bytes.  Previously they would
847           be left upgraded, providing a corrupted structure to the underlying
848           function call.
849
850msgrcv() now properly resets the UTF-8 flag the "VAR" parameter
851           when it is modified.  Previously the UTF-8 flag could be left on,
852           resulting in a possibly corrupt result in "VAR".
853
854       •   Magic is now called correctly for stacked file test operators.  [GH
855           #18293 <https://github.com/Perl/perl5/issues/18293>]
856
857       •   The "@ary = split(...)" optimization no longer switches in the
858           target array as the value stack.  [GH #18232
859           <https://github.com/Perl/perl5/issues/18232>] Also see discussion
860           at
861           <https://github.com/Perl/perl5/pull/18014#issuecomment-671299506>.
862
863       •   Fixed a bug in which some regexps with recursive subpatterns
864           matched incorrectly.
865
866           [GH #18096 <https://github.com/Perl/perl5/issues/18096>]
867
868       •   On Win32, "waitpid(-1, WNOHANG)" could sometimes have a very large
869           timeout.  [GH #16529 <https://github.com/Perl/perl5/issues/16529>]
870
871       •   "MARK" and hence "items" are now correctly initialized in "BOOT"
872           XSUBs.
873
874       •   Some list assignments involving "undef" on the left-hand side were
875           over-optimized and produced incorrect results.  [GH #16685
876           <https://github.com/Perl/perl5/issues/16685>], [GH #17816
877           <https://github.com/Perl/perl5/issues/17816>]
878

Known Problems

880       None
881

Errata From Previous Releases

883       None
884

Obituary

886       Kent Fredric (KENTNL) passed away in February 2021.  A native of New
887       Zealand and a self-described "huge geek," Kent was the author or
888       maintainer of 178 CPAN distributions, the Perl maintainer for the
889       Gentoo Linux distribution and a contributor to the Perl core
890       distribution.  He is mourned by his family, friends and open source
891       software communities worldwide.
892

Acknowledgements

894       Perl 5.34.0 represents approximately 11 months of development since
895       Perl 5.32.0 and contains approximately 280,000 lines of changes across
896       2,100 files from 78 authors.
897
898       Excluding auto-generated files, documentation and release tools, there
899       were approximately 150,000 lines of changes to 1,300 .pm, .t, .c and .h
900       files.
901
902       Perl continues to flourish into its fourth decade thanks to a vibrant
903       community of users and developers. The following people are known to
904       have contributed the improvements that became Perl 5.34.0:
905
906       Aaron Crane, Adam Hartley, Andy Dougherty, Ben Cornett, Branislav
907       Zahradník, brian d foy, Chris 'BinGOs' Williams, Christian Walde
908       (Mithaldu), Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Book, Daniel
909       Böhmer, Daniel Laügt, Dan Kogai, David Cantrell, David Mitchell,
910       Dominic Hamon, E. Choroba, Ed J, Eric Herman, Eugene Alvin Villar,
911       Felipe Gasper, Giovanni Tataranni, Graham Knop, Graham Ollis, Hauke D,
912       H.Merijn Brand, Hugo van der Sanden, Ichinose Shogo, Ivan Baidakou, Jae
913       Bradley, James E Keenan, Jason McIntosh, jkahrman, John Karr, John
914       Lightsey, Kang-min Liu, Karen Etheridge, Karl Williamson, Keith
915       Thompson, Leon Timmermans, Marc Reisner, Marcus Holland-Moritz, Max
916       Maischein, Michael G Schwern, Nicholas Clark, Nicolas R., Paul Evans,
917       Petr Písař, raiph, Renee Baecker, Ricardo Signes, Richard Leach,
918       Romano, Ryan Voots, Samanta Navarro, Samuel Thibault, Sawyer X, Scott
919       Baker, Sergey Poznyakoff, Sevan Janiyan, Shirakata Kentaro, Shlomi
920       Fish, Sisyphus, Sizhe Zhao, Steve Hay, TAKAI Kousuke, Thibault
921       Duponchelle, Todd Rinaldo, Tomasz Konojacki, Tom Hukins, Tom Stellard,
922       Tony Cook, vividsnow, Yves Orton, Zakariyya Mughal, Михаил Козачков.
923
924       The list above is almost certainly incomplete as it is automatically
925       generated from version control history. In particular, it does not
926       include the names of the (very much appreciated) contributors who
927       reported issues to the Perl bug tracker.
928
929       Many of the changes included in this version originated in the CPAN
930       modules included in Perl's core. We're grateful to the entire CPAN
931       community for helping Perl to flourish.
932
933       For a more complete list of all of Perl's historical contributors,
934       please see the AUTHORS file in the Perl source distribution.
935

Reporting Bugs

937       If you find what you think is a bug, you might check the perl bug
938       database at <https://github.com/Perl/perl5/issues>.  There may also be
939       information at <http://www.perl.org/>, the Perl Home Page.
940
941       If you believe you have an unreported bug, please open an issue at
942       <https://github.com/Perl/perl5/issues>.  Be sure to trim your bug down
943       to a tiny but sufficient test case.
944
945       If the bug you are reporting has security implications which make it
946       inappropriate to send to a public issue tracker, then see "SECURITY
947       VULNERABILITY CONTACT INFORMATION" in perlsec for details of how to
948       report the issue.
949

Give Thanks

951       If you wish to thank the Perl 5 Porters for the work we had done in
952       Perl 5, you can do so by running the "perlthanks" program:
953
954           perlthanks
955
956       This will send an email to the Perl 5 Porters list with your show of
957       thanks.
958

SEE ALSO

960       The Changes file for an explanation of how to view exhaustive details
961       on what changed.
962
963       The INSTALL file for how to build Perl.
964
965       The README file for general stuff.
966
967       The Artistic and Copying files for copyright information.
968
969
970
971perl v5.38.2                      2023-11-30                  PERL5340DELTA(1)
Impressum