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
310           "Win32::GetProcessPrivileges()".
311
312           Removed old code for versions before Windows 2000.
313
314       •   XS::APItest has been upgraded from version 1.09 to 1.16.
315
316       •   XS::Typemap has been upgraded from version 0.17 to 0.18.
317

Documentation

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

Diagnostics

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

Utility Changes

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

Configuration and Compilation

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

Testing

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

Platform Support

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

Internal Changes

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

Selected Bug Fixes

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

Known Problems

882       None
883

Errata From Previous Releases

885       None
886

Obituary

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

Acknowledgements

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

Reporting Bugs

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

Give Thanks

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

SEE ALSO

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