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
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
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
346 • The 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
374 • my() 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
382 • msgsnd() 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
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
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
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
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
585 • t/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
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
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
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
818 • op.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
826 • regexec.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
832 • semctl(), 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
846 • semop() 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
852 • msgrcv() 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
882 None
883
885 None
886
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
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
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
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
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)