1PERL5340DELTA(1) Perl Programmers Reference Guide PERL5340DELTA(1)
2
3
4
6 perl5340delta - what is new for perl v5.34.0
7
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
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
61 • Fix a memory leak in RegEx [GH #18604
62 <https://github.com/Perl/perl5/issues/18604>]
63
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
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
345 • The 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
373 • my() 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
381 • msgsnd() 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
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
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
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
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
583 • t/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
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
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
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
816 • op.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
824 • regexec.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
830 • semctl(), 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
844 • semop() 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
850 • msgrcv() 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
880 None
881
883 None
884
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
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
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
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
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)