This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
msgrcv: properly downgrade the receive buffer
[perl5.git] / pod / perl5320delta.pod
1 =pod
2
3 =encoding utf8
4
5 =head1 NAME
6
7 perl5320delta - what is new for perl v5.32.0
8
9 =head1 DESCRIPTION
10
11 This document describes differences between the 5.30.0 release and the 5.32.0
12 release.
13
14 If you are upgrading from an earlier release such as 5.28.0, first read
15 L<perl5300delta>, which describes differences between 5.28.0 and 5.30.0.
16
17 =head1 Core Enhancements
18
19 =head2 The isa Operator
20
21 A new experimental infix operator called C<isa> tests whether a given object
22 is an instance of a given class or a class derived from it:
23
24     if( $obj isa Package::Name ) { ... }
25
26 For more detail see L<perlop/Class Instance Operator>.
27
28 =head2 Unicode 13.0 is supported
29
30 See L<https://www.unicode.org/versions/Unicode13.0.0/> for details.
31
32 =head2 Chained comparisons capability
33
34 Some comparison operators, as their associativity, I<chain> with some
35 operators of the same precedence (but never with operators of different
36 precedence).
37
38     if ( $x < $y <= $z ) {...}
39
40 behaves exactly like:
41
42     if ( $x < $y && $y <= $z ) {...}
43
44 (assuming that C<"$y"> is as simple a scalar as it looks.)
45
46 You can read more about this in L<perlop> under
47 L<perlop/Operator Precedence and Associativity>.
48
49 =head2 New Unicode properties C<Identifier_Status> and C<Identifier_Type> supported
50
51 Unicode has revised its regular expression requirements:
52 L<https://www.unicode.org/reports/tr18/tr18-21.html>.
53 As part of that they are wanting more properties to be exposed, ones
54 that aren't part of the strict UCD (Unicode character database). These
55 two are used for examining inputs for security purposes. Details on
56 their usage is at L<https://www.unicode.org/reports/tr39/>.
57
58 =head2 It is now possible to write C<qr/\p{Name=...}/>, or
59 C<qr!\p{na=/(SMILING|GRINNING) FACE/}!>
60
61 The Unicode Name property is now accessible in regular expression
62 patterns, as an alternative to C<\N{...}>.
63 A comparison of the two methods is given in
64 L<perlunicode/Comparison of \N{...} and \p{name=...}>.
65
66 The second example above shows that wildcard subpatterns are also usable
67 in this property. See L<perlunicode/Wildcards in Property Values>.
68
69 =head2 Improvement of C<POSIX::mblen()>, C<mbtowc>, and C<wctomb>
70
71 The C<POSIX::mblen()>, C<mbtowc>, and C<wctomb> functions now
72 work on shift state locales and are thread-safe on C99 and above
73 compilers when executed on a platform that has locale thread-safety; the
74 length parameters are now optional.
75
76 These functions are always executed under the current C language locale.
77 (See L<perllocale>.)  Most locales are stateless, but a few, notably the
78 very rarely encountered ISO 2022, maintain a state between calls to
79 these functions. Previously the state was cleared on every call, but
80 now the state is not reset unless the appropriate parameter is C<undef>.
81
82 On threaded perls, the C99 functions L<mbrlen(3)>, L<mbrtowc(3)>, and
83 L<wcrtomb(3)>, when available, are substituted for the plain functions.
84 This makes these functions thread-safe when executing on a locale
85 thread-safe platform.
86
87 The string length parameters in C<mblen> and C<mbtowc> are now optional;
88 useful only if you wish to restrict the length parsed in the source
89 string to less than the actual length.
90
91 =head2 Alpha assertions are no longer experimental
92
93 See L<perlre/(*pla:pattern)>, L<perlre/(*plb:pattern)>,
94 L<perlre/(*nla:pattern)>>, and L<perlre/(*nlb:pattern)>.
95 Use of these no longer generates a warning; existing code that disables
96 the warning category C<experimental::alpha_assertions> will continue to work
97 without any changes needed. Enabling the category has no effect.
98
99 =head2 Script runs are no longer experimental
100
101 See L<perlre/Script Runs>. Use of these no longer generates a warning;
102 existing code that disables the warning category
103 C<experimental::script_run> will continue to work without any
104 changes needed. Enabling the category has no effect.
105
106 =head2 Feature checks are now faster
107
108 Previously feature checks in the parser required a hash lookup when
109 features were set outside of a feature bundle, this has been optimized
110 to a bit mask check. [L<GH #17229|https://github.com/Perl/perl5/issues/17229>]
111
112 =head2 Perl is now developed on GitHub
113
114 Perl is now developed on GitHub. You can find us at
115 L<https://github.com/Perl/perl5>.
116
117 Non-security bugs should now be reported via GitHub. Security issues should
118 continue to be reported as documented in L<perlsec>.
119
120 =head2 Compiled patterns can now be dumped before optimization
121
122 This is primarily useful for tracking down bugs in the regular
123 expression compiler. This dump happens on C<-DDEBUGGING> perls, if you
124 specify C<-Drv> on the command line; or on any perl if the pattern is
125 compiled within the scope of S<C<use re qw(Debug DUMP_PRE_OPTIMIZE)>> or
126 S<C<use re qw(Debug COMPILE EXTRA)>>. (All but the second case display
127 other information as well.)
128
129 =head1 Security
130
131 =head2 [CVE-2020-10543] Buffer overflow caused by a crafted regular expression
132
133 A signed C<size_t> integer overflow in the storage space calculations for
134 nested regular expression quantifiers could cause a heap buffer overflow in
135 Perl's regular expression compiler that overwrites memory allocated after the
136 regular expression storage space with attacker supplied data.
137
138 The target system needs a sufficient amount of memory to allocate partial
139 expansions of the nested quantifiers prior to the overflow occurring.  This
140 requirement is unlikely to be met on 64-bit systems.
141
142 Discovered by: ManhND of The Tarantula Team, VinCSS (a member of Vingroup).
143
144 =head2 [CVE-2020-10878] Integer overflow via malformed bytecode produced by a crafted regular expression
145
146 Integer overflows in the calculation of offsets between instructions for the
147 regular expression engine could cause corruption of the intermediate language
148 state of a compiled regular expression.  An attacker could abuse this behaviour
149 to insert instructions into the compiled form of a Perl regular expression.
150
151 Discovered by: Hugo van der Sanden and Slaven Rezic.
152
153 =head2 [CVE-2020-12723] Buffer overflow caused by a crafted regular expression
154
155 Recursive calls to C<S_study_chunk()> by Perl's regular expression compiler to
156 optimize the intermediate language representation of a regular expression could
157 cause corruption of the intermediate language state of a compiled regular
158 expression.
159
160 Discovered by: Sergey Aleynikov.
161
162 =head2 Additional Note
163
164 An application written in Perl would only be vulnerable to any of the above
165 flaws if it evaluates regular expressions supplied by the attacker.  Evaluating
166 regular expressions in this fashion is known to be dangerous since the regular
167 expression engine does not protect against denial of service attacks in this
168 usage scenario.
169
170 =head1 Incompatible Changes
171
172 =head2 Certain pattern matching features are now prohibited in compiling
173 Unicode property value wildcard subpatterns
174
175 These few features are either inappropriate or interfere with the
176 algorithm used to accomplish this task. The complete list is in
177 L<perlunicode/Wildcards in Property Values>.
178
179 =head2 Unused functions C<POSIX::mbstowcs> and C<POSIX::wcstombs> are removed
180
181 These functions could never have worked due to a defective interface
182 specification. There is clearly no demand for them, given that no one
183 has ever complained in the many years the functions were claimed to be
184 available, hence so-called "support" for them is now dropped.
185
186 =head2 A bug fix for C<(?[...])> may have caused some patterns to no
187 longer compile
188
189 See L</Selected Bug Fixes>. The heuristics previously used may have let
190 some constructs compile (perhaps not with the programmer's intended
191 effect) that should have been errors. None are known, but it is
192 possible that some erroneous constructs no longer compile.
193
194 =head2 C<\p{I<user-defined>}> properties now always override official
195 Unicode ones
196
197 Previously, if and only if a user-defined property was declared prior to
198 the compilation of the regular expression pattern that contains it, its
199 definition was used instead of any official Unicode property with the
200 same name. Now, it always overrides the official property. This
201 change could break existing code that relied (likely unwittingly) on the
202 previous behavior. Without this fix, if Unicode released a new version
203 with a new property that happens to have the same name as the one you
204 had long been using, your program would break when you upgraded to a
205 perl that used that new Unicode version. See L<perlunicode/User-Defined
206 Character Properties>. [L<GH #17205|https://github.com/Perl/perl5/issues/17205>]
207
208 =head2 Modifiable variables are no longer permitted in constants
209
210 Code like:
211
212     my $var;
213     $sub = sub () { $var };
214
215 where C<$var> is referenced elsewhere in some sort of modifiable context now
216 produces an exception when the sub is defined.
217
218 This error can be avoided by adding a return to the sub definition:
219
220     $sub = sub () { return $var };
221
222 This has been deprecated since Perl 5.22.
223 [L<perl #134138|https://rt.perl.org/Ticket/Display.html?id=134138>]
224
225 =head2 Use of L<C<vec>|perlfunc/vec EXPR,OFFSET,BITS> on strings with code points above 0xFF is forbidden
226
227 Such strings are represented internally in UTF-8, and C<vec> is a
228 bit-oriented operation that will likely give unexpected results on those
229 strings. This was deprecated in perl 5.28.0.
230
231 =head2 Use of code points over 0xFF in string bitwise operators
232
233 Some uses of these were already illegal after a previous deprecation
234 cycle. The remaining uses are now prohibited, having been deprecated in perl
235 5.28.0. See L<perldeprecation>.
236
237 =head2 C<Sys::Hostname::hostname()> does not accept arguments
238
239 This usage was deprecated in perl 5.28.0 and is now fatal.
240
241 =head2 Plain "0" string now treated as a number for range operator
242
243 Previously a range C<"0" .. "-1"> would produce a range of numeric
244 strings from "0" through "99"; this now produces an empty list, just
245 as C<0 .. -1> does. This also means that C<"0" .. "9"> now produces a
246 list of integers, where previously it would produce a list of strings.
247
248 This was due to a special case that treated strings starting with "0"
249 as strings so ranges like C<"00" .. "03"> produced C<"00", "01", "02", "03">,
250 but didn't specially handle the string C<"0">.
251 [L<perl #133695|https://rt.perl.org/Ticket/Display.html?id=133695>]
252
253 =head2 C<\K> now disallowed in look-ahead and look-behind assertions
254
255 This was disallowed because it causes unexpected behaviour, and no-one
256 could define what the desired behaviour should be.
257 [L<perl #124256|https://rt.perl.org/Ticket/Display.html?id=124256>]
258
259 =head1 Performance Enhancements
260
261 =over 4
262
263 =item *
264
265 C<my_strnlen> has been sped up for systems that don't have their own
266 C<strnlen> implementation.
267
268 =item *
269
270 C<grok_bin_oct_hex> (and so, C<grok_bin>, C<grok_oct>, and C<grok_hex>)
271 have been sped up.
272
273 =item *
274
275 C<grok_number_flags> has been sped up.
276
277 =item *
278
279 C<sort> is now noticeably faster in cases such as C<< sort {$a <=> $b} >> or
280 C<< sort {$b <=> $a} >>. [L<GH #17608|https://github.com/Perl/perl5/pull/17608>]
281
282 =back
283
284 =head1 Modules and Pragmata
285
286 =head2 Updated Modules and Pragmata
287
288 =over 4
289
290 =item *
291
292 L<Archive::Tar> has been upgraded from version 2.32 to 2.36.
293
294 =item *
295
296 L<autodie> has been upgraded from version 2.29 to 2.32.
297
298 =item *
299
300 L<B> has been upgraded from version 1.76 to 1.80.
301
302 =item *
303
304 L<B::Deparse> has been upgraded from version 1.49 to 1.54.
305
306 =item *
307
308 L<Benchmark> has been upgraded from version 1.22 to 1.23.
309
310 =item *
311
312 L<charnames> has been upgraded from version 1.45 to 1.48.
313
314 =item *
315
316 L<Class::Struct> has been upgraded from version 0.65 to 0.66.
317
318 =item *
319
320 L<Compress::Raw::Bzip2> has been upgraded from version 2.084 to 2.093.
321
322 =item *
323
324 L<Compress::Raw::Zlib> has been upgraded from version 2.084 to 2.093.
325
326 =item *
327
328 L<CPAN> has been upgraded from version 2.22 to 2.27.
329
330 =item *
331
332 L<DB_File> has been upgraded from version 1.843 to 1.853.
333
334 =item *
335
336 L<Devel::PPPort> has been upgraded from version 3.52 to 3.57.
337
338 The test files generated on Win32 are now identical to when they are
339 generated on POSIX-like systems.
340
341 =item *
342
343 L<diagnostics> has been upgraded from version 1.36 to 1.37.
344
345 =item *
346
347 L<Digest::MD5> has been upgraded from version 2.55 to 2.55_01.
348
349 =item *
350
351 L<Dumpvalue> has been upgraded from version 1.18 to 1.21.
352
353 Previously, when dumping elements of an array and encountering an undefined
354 value, the string printed would have been C<empty array>. This has been
355 changed to what was apparently originally intended:  C<empty slot>.
356
357 =item *
358
359 L<DynaLoader> has been upgraded from version 1.45 to 1.47.
360
361 =item *
362
363 L<Encode> has been upgraded from version 3.01 to 3.06.
364
365 =item *
366
367 L<encoding> has been upgraded from version 2.22 to 3.00.
368
369 =item *
370
371 L<English> has been upgraded from version 1.10 to 1.11.
372
373 =item *
374
375 L<Exporter> has been upgraded from version 5.73 to 5.74.
376
377 =item *
378
379 L<ExtUtils::CBuilder> has been upgraded from version 0.280231 to 0.280234.
380
381 =item *
382
383 L<ExtUtils::MakeMaker> has been upgraded from version 7.34 to 7.44.
384
385 =item *
386
387 L<feature> has been upgraded from version 1.54 to 1.58.
388
389 A new C<indirect> feature has been added, which is enabled by default
390 but allows turning off L<indirect object syntax|perlobj/Indirect
391 Object Syntax>.
392
393 =item *
394
395 L<File::Find> has been upgraded from version 1.36 to 1.37.
396
397 On Win32, the tests no longer require either a file in the drive root
398 directory, or a writable root directory.
399
400 =item *
401
402 L<File::Glob> has been upgraded from version 1.32 to 1.33.
403
404 =item *
405
406 L<File::stat> has been upgraded from version 1.08 to 1.09.
407
408 =item *
409
410 L<Filter::Simple> has been upgraded from version 0.95 to 0.96.
411
412 =item *
413
414 L<Getopt::Long> has been upgraded from version 2.5 to 2.51.
415
416 =item *
417
418 L<Hash::Util> has been upgraded from version 0.22 to 0.23.
419
420 The Synopsis has been updated as the example code stopped working with
421 newer perls.
422 [L<GH #17399|https://github.com/Perl/perl5/issues/17399>]
423
424 =item *
425
426 L<I18N::Langinfo> has been upgraded from version 0.18 to 0.19.
427
428 =item *
429
430 L<I18N::LangTags> has been upgraded from version 0.43 to 0.44.
431
432 Document the C<IGNORE_WIN32_LOCALE> environment variable.
433
434 =item *
435
436 L<IO> has been upgraded from version 1.40 to 1.43.
437
438 L<IO::Socket> no longer caches a zero protocol value, since this
439 indicates that the implementation will select a protocol. This means
440 that on platforms that don't implement C<SO_PROTOCOL> for a given
441 socket type the protocol method may return C<undef>.
442
443 The supplied I<TO> is now always honoured on calls to the C<send()>
444 method. [L<perl #133936|https://rt.perl.org/Ticket/Display.html?id=133936>]
445
446 =item *
447
448 IO-Compress has been upgraded from version 2.084 to 2.093.
449
450 =item *
451
452 L<IPC::Cmd> has been upgraded from version 1.02 to 1.04.
453
454 =item *
455
456 L<IPC::Open3> has been upgraded from version 1.20 to 1.21.
457
458 =item *
459
460 L<JSON::PP> has been upgraded from version 4.02 to 4.04.
461
462 =item *
463
464 L<Math::BigInt> has been upgraded from version 1.999816 to 1.999818.
465
466 =item *
467
468 L<Math::BigInt::FastCalc> has been upgraded from version 0.5008 to 0.5009.
469
470 =item *
471
472 L<Module::CoreList> has been upgraded from version 5.20190522 to 5.20200620.
473
474 =item *
475
476 L<Module::Load::Conditional> has been upgraded from version 0.68 to 0.70.
477
478 =item *
479
480 L<Module::Metadata> has been upgraded from version 1.000036 to 1.000037.
481
482 =item *
483
484 L<mro> has been upgraded from version 1.22 to 1.23.
485
486 =item *
487
488 L<Net::Ping> has been upgraded from version 2.71 to 2.72.
489
490 =item *
491
492 L<Opcode> has been upgraded from version 1.43 to 1.47.
493
494 =item *
495
496 L<open> has been upgraded from version 1.11 to 1.12.
497
498 =item *
499
500 L<overload> has been upgraded from version 1.30 to 1.31.
501
502 =item *
503
504 L<parent> has been upgraded from version 0.237 to 0.238.
505
506 =item *
507
508 L<perlfaq> has been upgraded from version 5.20190126 to 5.20200523.
509
510 =item *
511
512 L<PerlIO> has been upgraded from version 1.10 to 1.11.
513
514 =item *
515
516 L<PerlIO::encoding> has been upgraded from version 0.27 to 0.28.
517
518 =item *
519
520 L<PerlIO::via> has been upgraded from version 0.17 to 0.18.
521
522 =item *
523
524 L<Pod::Html> has been upgraded from version 1.24 to 1.25.
525
526 =item *
527
528 L<Pod::Simple> has been upgraded from version 3.35 to 3.40.
529
530 =item *
531
532 L<podlators> has been upgraded from version 4.11 to 4.14.
533
534 =item *
535
536 L<POSIX> has been upgraded from version 1.88 to 1.94.
537
538 =item *
539
540 L<re> has been upgraded from version 0.37 to 0.40.
541
542 =item *
543
544 L<Safe> has been upgraded from version 2.40 to 2.41.
545
546 =item *
547
548 L<Scalar::Util> has been upgraded from version 1.50 to 1.55.
549
550 =item *
551
552 L<SelfLoader> has been upgraded from version 1.25 to 1.26.
553
554 =item *
555
556 L<Socket> has been upgraded from version 2.027 to 2.029.
557
558 =item *
559
560 L<Storable> has been upgraded from version 3.15 to 3.21.
561
562 Use of C<note()> from L<Test::More> is now optional in tests. This works
563 around a circular dependency with L<Test::More> when installing on very
564 old perls from CPAN.
565
566 Vstring magic strings over 2GB are now disallowed.
567
568 Regular expressions objects weren't properly counted for object id
569 purposes on retrieve. This would corrupt the resulting structure, or
570 cause a runtime error in some cases. [L<perl #134179|https://rt.perl.org/Ticket/Display.html?id=134179>]
571
572 =item *
573
574 L<Sys::Hostname> has been upgraded from version 1.22 to 1.23.
575
576 =item *
577
578 L<Sys::Syslog> has been upgraded from version 0.35 to 0.36.
579
580 =item *
581
582 L<Term::ANSIColor> has been upgraded from version 4.06 to 5.01.
583
584 =item *
585
586 L<Test::Simple> has been upgraded from version 1.302162 to 1.302175.
587
588 =item *
589
590 L<Thread> has been upgraded from version 3.04 to 3.05.
591
592 =item *
593
594 L<Thread::Queue> has been upgraded from version 3.13 to 3.14.
595
596 =item *
597
598 L<threads> has been upgraded from version 2.22 to 2.25.
599
600 =item *
601
602 L<threads::shared> has been upgraded from version 1.60 to 1.61.
603
604 =item *
605
606 L<Tie::File> has been upgraded from version 1.02 to 1.06.
607
608 =item *
609
610 L<Tie::Hash::NamedCapture> has been upgraded from version 0.10 to 0.13.
611
612 =item *
613
614 L<Tie::Scalar> has been upgraded from version 1.04 to 1.05.
615
616 =item *
617
618 L<Tie::StdHandle> has been upgraded from version 4.5 to 4.6.
619
620 =item *
621
622 L<Time::HiRes> has been upgraded from version 1.9760 to 1.9764.
623
624 Removed obsolete code such as support for pre-5.6 perl and classic
625 MacOS. [L<perl #134288|https://rt.perl.org/Ticket/Display.html?id=134288>]
626
627 =item *
628
629 L<Time::Piece> has been upgraded from version 1.33 to 1.3401.
630
631 =item *
632
633 L<Unicode::Normalize> has been upgraded from version 1.26 to 1.27.
634
635 =item *
636
637 L<Unicode::UCD> has been upgraded from version 0.72 to 0.75.
638
639 =item *
640
641 L<VMS::Stdio> has been upgraded from version 2.44 to 2.45.
642
643 =item *
644
645 L<warnings> has been upgraded from version 1.44 to 1.47.
646
647 =item *
648
649 L<Win32> has been upgraded from version 0.52 to 0.53.
650
651 =item *
652
653 L<Win32API::File> has been upgraded from version 0.1203 to 0.1203_01.
654
655 =item *
656
657 L<XS::APItest> has been upgraded from version 1.00 to 1.09.
658
659 =back
660
661 =head2 Removed Modules and Pragmata
662
663 =over 4
664
665 =item *
666
667 Pod::Parser has been removed from the core distribution.
668 It still is available for download from CPAN. This resolves [L<perl
669 #119439|https://rt.perl.org/Ticket/Display.html?id=119439>].
670
671 =back
672
673 =head1 Documentation
674
675 =head2 Changes to Existing Documentation
676
677 We have attempted to update the documentation to reflect the changes
678 listed in this document. If you find any we have missed, open an issue
679 at L<https://github.com/Perl/perl5/issues>.
680
681 Additionally, the following selected changes have been made:
682
683 =head3 L<perldebguts>
684
685 =over 4
686
687 =item *
688
689 Simplify a few regnode definitions
690
691 Update C<BOUND> and C<NBOUND> definitions.
692
693 =item *
694
695 Add ANYOFHs regnode
696
697 This node is like C<ANYOFHb>, but is used when more than one leading byte
698 is the same in all the matched code points.
699
700 C<ANYOFHb> is used to avoid having to convert from UTF-8 to code point for
701 something that won't match. It checks that the first byte in the UTF-8
702 encoded target is the desired one, thus ruling out most of the possible
703 code points.
704
705 =back
706
707 =head3 L<perlapi>
708
709 =over 4
710
711 =item *
712
713 C<sv_2pvbyte> updated to mention it will croak if the SV cannot be
714 downgraded.
715
716 =item *
717
718 C<sv_setpvn> updated to mention that the UTF-8 flag will not be changed by
719 this function, and a terminating NUL byte is guaranteed.
720
721 =item *
722
723 Documentation for C<PL_phase> has been added.
724
725 =item *
726
727 The documentation for C<grok_bin>, C<grok_oct>, and C<grok_hex> has been
728 updated and clarified.
729
730 =back
731
732 =head3 L<perldiag>
733
734 =over 4
735
736 =item *
737
738 Add documentation for experimental 'isa' operator
739
740 (S experimental::isa) This warning is emitted if you use the (C<isa>)
741 operator. This operator is currently experimental and its behaviour may
742 change in future releases of Perl.
743
744 =back
745
746 =head3 L<perlfunc>
747
748 =over 4
749
750 =item C<caller>
751
752 Like L<C<__FILE__>|/__FILE__> and L<C<__LINE__>|/__LINE__>, the filename and
753 line number returned here may be altered by the mechanism described at
754 L<perlsyn/"Plain Old Comments (Not!)">.
755
756 =item C<__FILE__>
757
758 It can be altered by the mechanism described at
759 L<perlsyn/"Plain Old Comments (Not!)">.
760
761 =item C<__LINE__>
762
763 It can be altered by the mechanism described at
764 L<perlsyn/"Plain Old Comments (Not!)">.
765
766 =item C<return>
767
768 Now mentions that you cannot return from C<do BLOCK>.
769
770 =item C<open>
771
772 The C<open()> section had been renovated significantly.
773
774 =back
775
776 =head3 L<perlguts>
777
778 =over 4
779
780 =item *
781
782 No longer suggesting using perl's C<malloc>. Modern system C<malloc> is
783 assumed to be much better than perl's implementation now.
784
785 =item *
786
787 Documentation about F<embed.fnc> flags has been removed. F<embed.fnc> now has
788 sufficient comments within it. Anyone changing that file will see those
789 comments first, so entries here are now redundant.
790
791 =item *
792
793 Updated documentation for C<UTF8f>
794
795 =item *
796
797 Added missing C<=for apidoc> lines
798
799 =back
800
801 =head3 L<perlhacktips>
802
803 =over 4
804
805 =item *
806
807 The differences between Perl strings and C strings are now detailed.
808
809 =back
810
811 =head3 L<perlintro>
812
813 =over 4
814
815 =item *
816
817 The documentation for the repetition operator C<x> have been clarified.
818 [L<GH #17335|https://github.com/Perl/perl5/issues/17335>]
819
820 =back
821
822 =head3 L<perlipc>
823
824 =over 4
825
826 =item *
827
828 The documentation surrounding C<open> and handle usage has been modernized
829 to prefer 3-arg open and lexical variables instead of barewords.
830
831 =item *
832
833 Various updates and fixes including making all examples strict-safe and
834 replacing C<-w> with C<use warnings>.
835
836 =back
837
838 =head3 L<perlop>
839
840 =over 4
841
842 =item *
843
844 'isa' operator is experimental
845
846 This is an experimental feature and is available when enabled
847 by C<use feature 'isa'>. It emits a warning in the C<experimental::isa>
848 category.
849
850 =back
851
852 =head3 L<perlpod>
853
854 =over 4
855
856 =item *
857
858 Details of the various stacks within the perl interpreter are now explained
859 here.
860
861 =item *
862
863 Advice has been added regarding the usage of C<< ZE<lt>E<gt> >>.
864
865 =back
866
867 =head3 L<perlport>
868
869 =over 4
870
871 =item *
872
873 Update C<timegm> example to use the correct year format I<1970> instead of I<70>.
874 [L<GH #16431|https://github.com/Perl/perl5/issues/16431>]
875
876 =back
877
878 =head3 L<perlreref>
879
880 =over 4
881
882 =item *
883
884 Fix some typos.
885
886 =back
887
888 =head3 L<perlvar>
889
890 =over 4
891
892 =item *
893
894 Now recommends stringifying C<$]> and comparing it numerically.
895
896 =back
897
898 =head3 L<perlapi>, L<perlintern>
899
900 =over 4
901
902 =item *
903
904 Documentation has been added for several functions that were
905 lacking it before.
906
907 =back
908
909 =head3 L<perlxs>
910
911 =over 4
912
913 =item *
914
915 Suggest using C<libffi> for simple library bindings via CPAN modules
916 like L<FFI::Platypus> or L<FFI::Raw>.
917
918 =back
919
920 =head3 L<POSIX>
921
922 =over 4
923
924 =item *
925
926 C<setlocale> warning about threaded builds updated to note it does not
927 apply on Perl 5.28.X and later.
928
929 =item *
930
931 C<< Posix::SigSet->new(...) >> updated to state it throws an error if any of
932 the supplied signals cannot be added to the set.
933
934 =back
935
936 Additionally, the following selected changes have been made:
937
938 =head3 Updating of links
939
940 =over 4
941
942 =item *
943
944 Links to the now defunct L<https://search.cpan.org> site now point at
945 the equivalent L<https://metacpan.org> URL. [L<GH #17393|https://github.com/Perl/perl5/issues/17393>]
946
947 =item *
948
949 The man page for L<ExtUtils::XSSymSet> is now only installed on VMS,
950 which is the only platform the module is installed on. [L<GH #17424|https://github.com/Perl/perl5/issues/17424>]
951
952 =item *
953
954 URLs have been changed to C<https://> and stale links have been updated.
955
956 Where applicable, the URLs in the documentation have been moved from using the
957 C<http://> protocol to C<https://>. This also affects the location of the bug
958 tracker at L<https://rt.perl.org>.
959
960 =item *
961
962 Some links to OS/2 libraries, Address Sanitizer and other system tools had gone
963 stale. These have been updated with working links.
964
965 =item *
966
967 Some links to old email addresses on perl5-porters had gone stale. These have been
968 updated with working links.
969
970 =back
971
972 =head1 Diagnostics
973
974 The following additions or changes have been made to diagnostic output,
975 including warnings and fatal error messages. For the complete list of
976 diagnostic messages, see L<perldiag>.
977
978 =head2 New Diagnostics
979
980 =head3 New Errors
981
982 =over 4
983
984 =item *
985
986 L<Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>
987 |perldiag/"Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>">
988
989 This is a replacement for several error messages listed under
990 L</Changes to Existing Diagnostics>.
991
992 =item *
993
994 C<L<No digits found for %s literal|perldiag/"No digits found for %s literal">>
995
996 (F) No hexadecimal digits were found following C<0x> or no binary digits were
997 found following C<0b>.
998
999 =back
1000
1001 =head3 New Warnings
1002
1003 =over 4
1004
1005 =item *
1006
1007 L<Code point 0x%X is not Unicode, and not portable|perldiag/"Code point 0x%X is not Unicode, and not portable">
1008
1009 This is actually not a new message, but it is now output when the
1010 warnings category C<portable> is enabled.
1011
1012 When raised during regular expression pattern compilation, the warning
1013 has extra text added at the end marking where precisely in the pattern
1014 it occurred.
1015
1016 =item *
1017
1018 L<Non-hex character '%c' terminates \x early.  Resolved as "%s"|perldiag/"Non-hex character '%c' terminates \x early.  Resolved as "%s"">
1019
1020 This replaces a warning that was much less specific, and which gave
1021 false information. This new warning parallels the similar
1022 already-existing one raised for C<\o{}>.
1023
1024 =back
1025
1026 =head2 Changes to Existing Diagnostics
1027
1028 =over 4
1029
1030 =item *
1031
1032 L<Character following "\c" must be printable ASCII|perldiag/"Character following "\c" must be printable ASCII">
1033
1034 ...now has extra text added at the end, when raised during regular
1035 expression pattern compilation, marking where precisely in the pattern
1036 it occurred.
1037
1038 =item *
1039
1040 L<Use "%s" instead of "%s"|perldiag/"Use "%s" instead of "%s"">
1041
1042 ...now has extra text added at the end, when raised during regular
1043 expression pattern compilation, marking where precisely in the pattern
1044 it occurred.
1045
1046 =item *
1047
1048 L<Sequence "\c{" invalid|perldiag/"Sequence "\c{" invalid">
1049
1050 ...now has extra text added at the end, when raised during regular
1051 expression pattern compilation, marking where precisely in the pattern
1052 it occurred.
1053
1054 =item *
1055
1056 L<"\c%c" is more clearly written simply as "%s"|perldiag/""\c%c" is more clearly written simply as "%s"">
1057
1058 ...now has extra text added at the end, when raised during regular
1059 expression pattern compilation, marking where precisely in the pattern
1060 it occurred.
1061
1062 =item *
1063
1064 L<Non-octal character '%c' terminates \o early.  Resolved as "%s"|perldiag/"Non-octal character '%c' terminates \o early.  Resolved as "%s"">
1065
1066 ...now includes the phrase "terminates \o early", and has extra text added
1067 at the end, when raised during regular expression pattern compilation,
1068 marking where precisely in the pattern it occurred. In some instances
1069 the text of the resolution has been clarified.
1070
1071 =item *
1072
1073 L<'%s' resolved to '\o{%s}%d'|perldiag/'%s' resolved to '\o{%s}%d'>
1074
1075 As of Perl 5.32, this message is no longer generated. Instead,
1076 L<perldiag/Non-octal character '%c' terminates \o early.  Resolved as "%s">
1077 is used instead.
1078
1079 =item *
1080
1081 L<Use of code point 0x%s is not allowed; the permissible max is 0x%X|perldiag/"Use of code point 0x%s is not allowed; the permissible max is 0x%X">
1082
1083 Some instances of this message previously output the hex digits C<A>,
1084 C<B>, C<C>, C<D>, C<E>, and C<F> in lower case. Now they are all
1085 consistently upper case.
1086
1087 =item *
1088
1089 The following three diagnostics have been removed, and replaced by
1090 L<C<Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>>
1091 |perldiag/"Expecting interpolated extended charclass in regex; marked by <-- HERE in mE<sol>%sE<sol>">:
1092 C<Expecting close paren for nested extended charclass in regex; marked
1093 by <-- HERE in mE<sol>%sE<sol>>,
1094 C<Expecting close paren for wrapper for nested extended charclass in
1095 regex; marked by <-- HERE in mE<sol>%sE<sol>>,
1096 and
1097 C<Expecting '(?flags:(?[...' in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>>.
1098
1099 =item *
1100
1101 The C<Code point 0x%X is not Unicode, and not portable> warning removed
1102 the line C<Code points above 0xFFFF_FFFF require larger than a 32 bit word.>
1103 as code points that large are no longer legal on 32-bit platforms.
1104
1105 =item *
1106
1107 L<Can't use global %s in %s|perldiag/"Can't use global %s in %s">
1108
1109 This error message has been slightly reformatted from the original C<Can't use
1110 global %s in "%s">, and in particular misleading error messages like C<Can't
1111 use global $_ in "my"> are now rendered as C<Can't use global $_ in subroutine
1112 signature>.
1113
1114 =item *
1115
1116 L<Constants from lexical variables potentially modified elsewhere are no longer permitted|perldiag/"Constants from lexical variables potentially modified elsewhere are no longer permitted">
1117
1118 This error message replaces the former C<Constants from lexical variables
1119 potentially modified elsewhere are deprecated. This will not be allowed in Perl
1120 5.32> to reflect the fact that this previously deprecated usage has now been
1121 transformed into an exception. The message's classification has also been
1122 updated from D (deprecated) to F (fatal).
1123
1124 See also L</Incompatible Changes>.
1125
1126 =item *
1127
1128 C<\N{} here is restricted to one character> is now emitted in the same
1129 circumstances where previously C<\N{} in inverted character class or as a range
1130 end-point is restricted to one character> was.
1131
1132 This is due to new circumstances having been added in Perl 5.30 that weren't
1133 covered by the earlier wording.
1134
1135 =back
1136
1137 =head1 Utility Changes
1138
1139 =head2 L<perlbug>
1140
1141 =over 4
1142
1143 =item * The bug tracker homepage URL now points to GitHub.
1144
1145 =back
1146
1147 =head2 L<streamzip>
1148
1149 =over 4
1150
1151 =item *
1152
1153 This is a new utility, included as part of an
1154 L<IO::Compress::Base> upgrade.
1155
1156 L<streamzip> creates a zip file from stdin. The program will read data
1157 from stdin, compress it into a zip container and, by default, write a
1158 streamed zip file to stdout.
1159
1160 =back
1161
1162 =head1 Configuration and Compilation
1163
1164 =head2 F<Configure>
1165
1166 =over 4
1167
1168 =item *
1169
1170 For clang++, add C<< #include <stdlib.h> >> to Configure's probes for
1171 C<futimes>, C<strtoll>, C<strtoul>, C<strtoull>, C<strtouq>, otherwise the
1172 probes would fail to compile.
1173
1174 =item *
1175
1176 Use a compile and run test for C<lchown> to satisfy clang++ which should
1177 more reliably detect it.
1178
1179 =item *
1180
1181 For C++ compilers, add C<< #include <stdio.h> >> to Configure's probes for
1182 C<getpgrp> and C<setpgrp> as they use printf and C++ compilers may fail
1183 compilation instead of just warning.
1184
1185 =item *
1186
1187 Check if the compiler can handle inline attribute.
1188
1189 =item *
1190
1191 Check for character data alignment.
1192
1193 =item *
1194
1195 F<Configure> now correctly handles gcc-10. Previously it was interpreting it
1196 as gcc-1 and turned on C<-fpcc-struct-return>.
1197
1198 =item *
1199
1200 Perl now no longer probes for C<d_u32align>, defaulting to C<define> on all
1201 platforms. This check was error-prone when it was done, which was on 32-bit
1202 platforms only.
1203 [L<perl #133495|https://rt.perl.org/Ticket/Display.html?id=133495>]
1204
1205 =item *
1206
1207 Documentation and hints for building perl on Z/OS (native EBCDIC) have been
1208 updated. This is still a work in progress.
1209
1210 =item *
1211
1212 A new probe for C<malloc_usable_size> has been added.
1213
1214 =item *
1215
1216 Improvements in F<Configure> to detection in C++ and clang++. Work ongoing by
1217 Andy Dougherty. [L<perl #134171|https://rt.perl.org/Ticket/Display.html?id=134171>]
1218
1219 =item *
1220
1221 F<autodoc.pl>
1222
1223 This tool that regenerates L<perlintern> and L<perlapi> has been overhauled
1224 significantly, restoring consistency in flags used in F<embed.fnc> and
1225 L<Devel::PPPort> and allowing removal of many redundant C<=for apidoc>
1226 entries in code.
1227
1228 =item *
1229
1230 The C<ECHO> macro is now defined. This is used in a C<dtrace> rule that was
1231 originally changed for FreeBSD, and the FreeBSD make apparently predefines it.
1232 The Solaris make does not predefine C<ECHO> which broke this rule on Solaris.
1233 [L<perl #134218|https://rt.perl.org/Ticket/Display.html?id=134218>]
1234
1235 =item *
1236
1237 Bison versions 3.1 through 3.4 are now supported.
1238
1239 =back
1240
1241 =head1 Testing
1242
1243 Tests were added and changed to reflect the other additions and
1244 changes in this release. Furthermore, these significant changes were
1245 made:
1246
1247 =over 4
1248
1249 =item *
1250
1251 F<t/run/switches.t> no longer uses (and re-uses) the F<tmpinplace/>
1252 directory under F<t/>. This may prevent spurious failures. [L<GH #17424|https://github.com/Perl/perl5/issues/17424>]
1253
1254 =item *
1255
1256 Various bugs in C<POSIX::mbtowc> were fixed. Potential races with
1257 other threads are now avoided, and previously the returned wide
1258 character could well be garbage.
1259
1260 =item *
1261
1262 Various bugs in C<POSIX::wctomb> were fixed. Potential races with other
1263 threads are now avoided, and previously it would segfault if the string
1264 parameter was shared or hadn't been pre-allocated with a string of
1265 sufficient length to hold the result.
1266
1267 =item *
1268
1269 Certain test output of scalars containing control characters and Unicode
1270 has been fixed on EBCDIC.
1271
1272 =item *
1273
1274 F<t/charset_tools.pl>: Avoid some work on ASCII platforms.
1275
1276 =item *
1277
1278 F<t/re/regexp.t>: Speed up many regex tests on ASCII platform
1279
1280 =item *
1281
1282 F<t/re/pat.t>: Skip tests that don't work on EBCDIC.
1283
1284 =back
1285
1286 =head1 Platform Support
1287
1288 =head2 Discontinued Platforms
1289
1290 =over 4
1291
1292 =item Windows CE
1293
1294 Support for building perl on Windows CE has now been removed.
1295
1296 =back
1297
1298 =head2 Platform-Specific Notes
1299
1300 =over 4
1301
1302 =item Linux
1303
1304 C<cc> will be used to populate C<plibpth> if C<cc> is C<clang>.
1305 [L<perl #134189|https://rt.perl.org/Ticket/Display.html?id=134189>]
1306
1307 =item NetBSD 8.0
1308
1309 Fix compilation of Perl on NetBSD 8.0 with g++.
1310 [L<GH #17381|https://github.com/Perl/perl5/issues/17381>]
1311
1312 =item Windows
1313
1314 =over 4
1315
1316 =item *
1317
1318 The configuration for C<ccflags> and C<optimize> are now separate, as
1319 with POSIX platforms. [L<GH #17156|https://github.com/Perl/perl5/issues/17156>]
1320
1321 =item *
1322
1323 Support for building perl with Visual C++ 6.0 has now been removed.
1324
1325 =item *
1326
1327 The locale tests could crash on Win32 due to a Windows bug, and
1328 separately due to the CRT throwing an exception if the locale name
1329 wasn't validly encoded in the current code page.
1330
1331 For the second we now decode the locale name ourselves, and always
1332 decode it as UTF-8. [L<perl #133981|https://rt.perl.org/Ticket/Display.html?id=133981>]
1333
1334 =item *
1335
1336 F<t/op/magic.t> could fail if environment variables starting with
1337 C<FOO> already existed.
1338
1339 =item *
1340
1341 MYMALLOC (PERL_MALLOC) build has been fixed.
1342
1343 =back
1344
1345 =item Solaris
1346
1347 =over 4
1348
1349 =item *
1350
1351 C<Configure> will now find recent versions of the Oracle Developer Studio
1352 compiler, which are found under C</opt/developerstudio*>.
1353
1354 =item *
1355
1356 C<Configure> now uses the detected types for C<gethostby*> functions, allowing
1357 Perl to once again compile on certain configurations of Solaris.
1358
1359 =back
1360
1361 =item VMS
1362
1363 =over 4
1364
1365 =item *
1366
1367 With the release of the patch kit C99 V2.0, VSI has provided support for a
1368 number of previously-missing C99 features. On systems with that patch kit
1369 installed, Perl's configuration process will now detect the presence of the
1370 header C<stdint.h> and the following functions: C<fpclassify>, C<isblank>, C<isless>,
1371 C<llrint>, C<llrintl>, C<llround>, C<llroundl>, C<nearbyint>, C<round>, C<scalbn>,
1372 and C<scalbnl>.
1373
1374 =item *
1375
1376 C<-Duse64bitint> is now the default on VMS.
1377
1378 =back
1379
1380 =item z/OS
1381
1382 Perl 5.32 has been tested on z/OS 2.4, with the following caveats:
1383
1384 =over 4
1385
1386 =item *
1387
1388 Only static builds (the default) build reliably
1389
1390 =item *
1391
1392 When using locales, z/OS does not handle the C<LC_MESSAGES> category
1393 properly, so when compiling perl, you should add the following to your
1394 F<Configure> options
1395
1396  ./Configure <other options> -Accflags=-DNO_LOCALE_MESSAGES
1397
1398 =item *
1399
1400 z/OS does not support locales with threads, so when compiling a threaded
1401 perl, you should add the following to your F<Configure> options
1402
1403  ./Configure <other Configure options> -Accflags=-DNO_LOCALE
1404
1405 =item *
1406
1407 Some CPAN modules that are shipped with perl fail at least one of their
1408 self-tests.  These are:
1409 Archive::Tar,
1410 Config::Perl::V,
1411 CPAN::Meta,
1412 CPAN::Meta::YAML,
1413 Digest::MD5,
1414 Digest::SHA,
1415 Encode,
1416 ExtUtils::MakeMaker,
1417 ExtUtils::Manifest,
1418 HTTP::Tiny,
1419 IO::Compress,
1420 IPC::Cmd,
1421 JSON::PP,
1422 libnet,
1423 MIME::Base64,
1424 Module::Metadata,
1425 PerlIO::via-QuotedPrint,
1426 Pod::Checker,
1427 podlators,
1428 Pod::Simple,
1429 Socket,
1430 and Test::Harness.
1431
1432 The causes of the failures range from the self-test itself is flawed,
1433 and the module actually works fine, up to the module doesn't work at all
1434 on EBCDIC platforms.
1435
1436 =back
1437
1438 =back
1439
1440 =head1 Internal Changes
1441
1442 =over 4
1443
1444 =item *
1445
1446 C<savepvn>'s len parameter is now a C<Size_t> instead of an C<I32> since we
1447 can handle longer strings than 31 bits.
1448
1449 =item *
1450
1451 The lexer (C<Perl_yylex()> in F<toke.c>) was previously a single 4100-line
1452 function, relying heavily on C<goto> and a lot of widely-scoped local variables
1453 to do its work. It has now been pulled apart into a few dozen smaller static
1454 functions; the largest remaining chunk (C<yyl_word_or_keyword()>) is a little
1455 over 900 lines, and consists of a single C<switch> statement, all of whose
1456 C<case> groups are independent. This should be much easier to understand and
1457 maintain.
1458
1459 =item *
1460
1461 The OS-level signal handlers and type (Sighandler_t) used by the perl core
1462 were declared as having three parameters, but the OS was always told to
1463 call them with one argument. This has been fixed by declaring them to have
1464 one parameter. See the merge commit C<v5.31.5-346-g116e19abbf> for full
1465 details.
1466
1467 =item *
1468
1469 The code that handles C<tr///> has been extensively revised, fixing
1470 various bugs, especially when the source and/or replacement strings
1471 contain characters whose code points are above 255. Some of the bugs
1472 were undocumented, one being that under some circumstances (but not all)
1473 with C</s>, the squeezing was done based on the source, rather than the
1474 replacement. A documented bug that got fixed was
1475 [L<perl #125493|https://rt.perl.org/Ticket/Display.html?id=125493>].
1476
1477 =item *
1478
1479 A new macro for XS writers dealing with UTF-8-encoded Unicode strings
1480 has been created L<perlapi/C<UTF8_CHK_SKIP>> that is safer in the face
1481 of malformed UTF-8 input than L<perlapi/C<UTF8_SKIP>> (but not as safe
1482 as L<perlapi/C<UTF8_SAFE_SKIP>>). It won't read past a NUL character.
1483 It has been backported in L<Devel::PPPort> 3.55 and later.
1484
1485 =item *
1486
1487 Added the C<< PL_curstackinfo->si_cxsubix >> field. This records the stack index
1488 of the most recently pushed sub/format/eval context. It is set and restored
1489 automatically by C<cx_pushsub()>, C<cx_popsub()> etc., but would need to be
1490 manually managed if you do any unusual manipulation of the context stack.
1491
1492 =item *
1493
1494 Various macros dealing with character type classification and changing case
1495 where the input is encoded in UTF-8 now require an extra parameter to prevent
1496 potential reads beyond the end of the buffer. Use of these has generated a
1497 deprecation warning since Perl 5.26. Details are in
1498 L<perldeprecation/In XS code, use of various macros dealing with UTF-8.>
1499
1500 =item *
1501
1502 A new parser function L<parse_subsignature()|perlapi/parse_subsignature>
1503 allows a keyword plugin to parse a subroutine signature while C<use feature
1504 'signatures'> is in effect. This allows custom keywords to implement
1505 semantics similar to regular C<sub> declarations that include signatures.
1506 [L<perl #132474|https://rt.perl.org/Ticket/Display.html?id=132474>]
1507
1508 =item *
1509
1510 Since on some platforms we need to hold a mutex when temporarily
1511 switching locales, new macros (C<STORE_LC_NUMERIC_SET_TO_NEEDED_IN>,
1512 C<WITH_LC_NUMERIC_SET_TO_NEEDED> and C<WITH_LC_NUMERIC_SET_TO_NEEDED_IN>)
1513 have been added to make it easier to do this safely and efficiently
1514 as part of [L<perl #134172|https://rt.perl.org/Ticket/Display.html?id=134172>].
1515
1516 =item *
1517
1518 The memory bookkeeping overhead for allocating an OP structure has been
1519 reduced by 8 bytes per OP on 64-bit systems.
1520
1521 =item *
1522
1523 L<eval_pv()|perlapi/eval_pv> no longer stringifies the exception when
1524 C<croak_on_error> is true. [L<perl #134175|https://rt.perl.org/Ticket/Display.html?id=134175>]
1525
1526 =item *
1527
1528 The PERL_DESTRUCT_LEVEL environment variable was formerly only honoured on perl
1529 binaries built with DEBUGGING support. It is now checked on all perl builds.
1530 Its normal use is to force perl to individually free every block of memory
1531 which it has allocated before exiting, which is useful when using automated
1532 leak detection tools such as valgrind.
1533
1534 =item *
1535
1536 The API eval_sv() now accepts a C<G_RETHROW> flag. If this flag is set and an
1537 exception is thrown while compiling or executing the supplied code, it will be
1538 rethrown, and eval_sv() will not return.
1539 [L<perl #134177|https://rt.perl.org/Ticket/Display.html?id=134177>]
1540
1541 =item *
1542
1543 As part of the fix for
1544 [L<perl #2754|https://rt.perl.org/Ticket/Display.html?id=2754>] perl_parse()
1545 now returns non-zero if exit(0) is called in a C<BEGIN>, C<UNITCHECK> or
1546 C<CHECK> block.
1547
1548 =item *
1549
1550 Most functions which recursively walked an op tree during compilation have been
1551 made non-recursive. This avoids SEGVs from stack overflow when the op tree is
1552 deeply nested, such as C<$n == 1 ? "one" : $n == 2 ? "two" : ....> (especially
1553 in code which is auto-generated).
1554
1555 This is particularly noticeable where the code is compiled within a separate
1556 thread, as threads tend to have small stacks by default.
1557
1558 =back
1559
1560 =head1 Selected Bug Fixes
1561
1562 =over 4
1563
1564 =item *
1565
1566 Previously L<perlfunc/require> would only treat the special built-in
1567 SV C<&PL_sv_undef> as a value in C<%INC> as if a previous C<require>
1568 has failed, treating other undefined SVs as if the previous C<require>
1569 has succeeded. This could cause unexpected success from C<require>
1570 e.g., on C<local %INC = %INC;>. This has been fixed. [L<GH #17428|https://github.com/Perl/perl5/issues/17428>]
1571
1572 =item *
1573
1574 C<(?{...})> eval groups in regular expressions no longer unintentionally
1575 trigger "EVAL without pos change exceeded limit in regex" [L<GH #17490|https://github.com/Perl/perl5/issues/17490>].
1576
1577 =item *
1578
1579 C<(?[...])> extended bracketed character classes do not wrongly raise an
1580 error on some cases where a previously-compiled such class is
1581 interpolated into another. The heuristics previously used have been
1582 replaced by a reliable method, and hence the diagnostics generated have
1583 changed. See L</Diagnostics>.
1584
1585 =item *
1586
1587 The debug display (say by specifying C<-Dr> or S<C<use re>> (with
1588 appropriate options) of compiled Unicode property wildcard subpatterns no
1589 longer has extraneous output.
1590
1591 =item *
1592
1593 Fix an assertion failure in the regular expression engine.
1594 [L<GH #17372|https://github.com/Perl/perl5/issues/17372>]
1595
1596 =item *
1597
1598 Fix coredump in pp_hot.c after C<B::UNOP_AUX::aux_list()>.
1599 [L<GH #17301|https://github.com/Perl/perl5/issues/17301>]
1600
1601 =item *
1602
1603 Loading IO is now threadsafe.
1604 [L<GH #14816|https://github.com/Perl/perl5/issues/14816>]
1605
1606 =item *
1607
1608 C<\p{user-defined}> overrides official Unicode [L<GH #17025|https://github.com/Perl/perl5/issues/17025>]
1609
1610 Prior to this patch, the override was only sometimes in effect.
1611
1612 =item *
1613
1614 Properly handle filled C</il> regnodes and multi-char folds
1615
1616 =item *
1617
1618 Compilation error during make minitest [L<GH #17293|https://github.com/Perl/perl5/issues/17293>]
1619
1620 =item *
1621
1622 Move the implementation of C<%->, C<%+> into core.
1623
1624 =item *
1625
1626 Read beyond buffer in C<grok_inf_nan> [L<GH #17370|https://github.com/Perl/perl5/issues/17370>]
1627
1628 =item *
1629
1630 Workaround glibc bug with C<LC_MESSAGES> [L<GH #17081|https://github.com/Perl/perl5/issues/17081>]
1631
1632 =item *
1633
1634 C<printf()> or C<sprintf()> with the C<%n> format could cause a panic on
1635 debugging builds, or report an incorrectly cached length value when
1636 producing C<SVfUTF8> flagged strings. [L<GH #17221|https://github.com/Perl/perl5/issues/17221>]
1637
1638 =item *
1639
1640 The tokenizer has been extensively refactored.
1641 [L<GH #17241|https://github.com/Perl/perl5/issues/17241>]
1642 [L<GH #17189|https://github.com/Perl/perl5/issues/17189>]
1643
1644 =item *
1645
1646 C<use strict "subs"> is now enforced for bareword constants optimized
1647 into a C<multiconcat> operator. [L<GH #17254|https://github.com/Perl/perl5/issues/17254>]
1648
1649 =item *
1650
1651 A memory leak in regular expression patterns has been fixed. [L<GH #17218|https://github.com/Perl/perl5/issues/17218>]
1652
1653 =item *
1654
1655 Perl no longer treats strings starting with "0x" or "0b" as hex or
1656 binary numbers respectively when converting a string to a number.
1657 This reverts a change in behaviour inadvertently introduced in perl
1658 5.30.0 intended to improve precision when converting a string to a
1659 floating point number. [L<perl #134230|https://rt.perl.org/Ticket/Display.html?id=134230>]
1660
1661 =item *
1662
1663 Matching a non-C<SVf_UTF8> string against a regular expression
1664 containing unicode literals could leak a SV on each match attempt.
1665 [L<perl #134390|https://rt.perl.org/Ticket/Display.html?id=134390>]
1666
1667 =item *
1668
1669 Overloads for octal and binary floating point literals were always
1670 passed a string with a C<0x> prefix instead of the appropriate C<0> or
1671 C<0b> prefix. [L<perl #125557|https://rt.perl.org/Ticket/Display.html?id=125557>]
1672
1673 =item *
1674
1675 C<< $@ = 100; die; >> now correctly propagates the 100 as an exception
1676 instead of ignoring it. [L<perl #134291|https://rt.perl.org/Ticket/Display.html?id=134291>]
1677
1678 =item *
1679
1680 C<< 0 0x@ >> no longer asserts in S_no_op(). [L<perl #134310|https://rt.perl.org/Ticket/Display.html?id=134310>]
1681
1682 =item *
1683
1684 Exceptions thrown while C<$@> is read-only could result in infinite
1685 recursion as perl tried to update C<$@>, which throws another
1686 exception, resulting in a stack overflow. Perl now replaces C<$@>
1687 with a copy if it's not a simple writable SV. [L<perl #134266|https://rt.perl.org/Ticket/Display.html?id=134266>]
1688
1689 =item *
1690
1691 Setting C<$)> now properly sets supplementary group ids if you have
1692 the necessary privileges. [L<perl #134169|https://rt.perl.org/Ticket/Display.html?id=134169>]
1693
1694 =item *
1695
1696 close() on a pipe now preemptively clears the PerlIO object from the
1697 IO SV. This prevents a second attempt to close the already closed
1698 PerlIO object if a signal handler calls die() or exit() while close()
1699 is waiting for the child process to complete. [L<perl #122112|https://rt.perl.org/Ticket/Display.html?id=122112>]
1700
1701 =item *
1702
1703 C<< sprintf("%.*a", -10000, $x) >> would cause a buffer overflow due
1704 to mishandling of the negative precision value. [L<perl #134008|https://rt.perl.org/Ticket/Display.html?id=134008>]
1705
1706 =item *
1707
1708 scalar() on a reference could cause an erroneous assertion failure
1709 during compilation. [L<perl #134045|https://rt.perl.org/Ticket/Display.html?id=134045>]
1710
1711 =item *
1712
1713 C<%{^CAPTURE_ALL}> is now an alias to C<%-> as documented, rather than
1714 incorrectly an alias for C<%+>. [L<perl #131867|https://rt.perl.org/Ticket/Display.html?id=131867>]
1715
1716 =item *
1717
1718 C<%{^CAPTURE}> didn't work if C<@{^CAPTURE}> was mentioned first.
1719 Similarly for C<%{^CAPTURE_ALL}> and C<@{^CAPTURE_ALL}>, though
1720 C<@{^CAPTURE_ALL}> currently isn't used. [L<perl #134193|https://rt.perl.org/Ticket/Display.html?id=134193>]
1721
1722 =item *
1723
1724 Extraordinarily large (over 2GB) floating point format widths could
1725 cause an integer overflow in the underlying call to snprintf(),
1726 resulting in an assertion. Formatted floating point widths are now
1727 limited to the range of int, the return value of snprintf(). [L<perl
1728 #133913|https://rt.perl.org/Ticket/Display.html?id=133913>]
1729
1730 =item *
1731
1732 Parsing the following constructs within a sub-parse (such as with
1733 C<"${code here}"> or C<s/.../code here/e>) has changed to match how
1734 they're parsed normally:
1735
1736 =over
1737
1738 =item *
1739
1740 C<print $fh ...> no longer produces a syntax error.
1741
1742 =item *
1743
1744 Code like C<s/.../ ${time} /e> now properly produces an "Ambiguous use
1745 of ${time} resolved to $time at ..." warning when warnings are enabled.
1746
1747 =item *
1748
1749 C<@x {"a"}> (with the space) in a sub-parse now properly produces a
1750 "better written as" warning when warnings are enabled.
1751
1752 =item *
1753
1754 Attributes can now be used in a sub-parse.
1755 [L<perl #133850|https://rt.perl.org/Ticket/Display.html?id=133850>]
1756
1757 =back
1758
1759 =item *
1760
1761 Incomplete hex and binary literals like C<0x> and C<0b> are now
1762 treated as if the C<x> or C<b> is part of the next token. [L<perl
1763 #134125|https://rt.perl.org/Ticket/Display.html?id=134125>]
1764
1765 =item *
1766
1767 A spurious C<)> in a subparse, such as in C<s/.../code here/e> or
1768 C<"...${code here}">, no longer confuses the parser.
1769
1770 Previously a subparse was bracketed with generated C<(> and C<)>
1771 tokens, so a spurious C<)> would close the construct without doing the
1772 normal subparse clean up, confusing the parser and possible causing an
1773 assertion failure.
1774
1775 Such constructs are now surrounded by artificial tokens that can't be
1776 included in the source. [L<perl #130585|https://rt.perl.org/Ticket/Display.html?id=130585>]
1777
1778 =item *
1779
1780 Reference assignment of a sub, such as C<\&foo = \&bar;>, silently did
1781 nothing in the C<main::> package. [L<perl #134072|https://rt.perl.org/Ticket/Display.html?id=134072>]
1782
1783 =item *
1784
1785 sv_gets() now recovers better if the target SV is modified by a signal
1786 handler. [L<perl #134035|https://rt.perl.org/Ticket/Display.html?id=134035>]
1787
1788 =item *
1789
1790 C<readline @foo> now evaluates C<@foo> in scalar context. Previously
1791 it would be evaluated in list context, and since readline() pops only
1792 one argument from the stack, the stack could underflow, or be left
1793 with unexpected values on the stack. [L<perl #133989|https://rt.perl.org/Ticket/Display.html?id=133989>]
1794
1795 =item *
1796
1797 Parsing incomplete hex or binary literals was changed in 5.31.1 to treat such a
1798 literal as just the 0, leaving the following C<x> or C<b> to be parsed as part
1799 of the next token. This could lead to some silent changes in behaviour, so now
1800 incomplete hex or binary literals produce a fatal error.
1801 [L<perl #134125|https://rt.perl.org/Ticket/Display.html?id=134125>]
1802
1803 =item *
1804
1805 eval_pv()'s I<croak_on_error> flag will now throw even if the exception is a
1806 false overloaded value.
1807 [L<perl #134177|https://rt.perl.org/Ticket/Display.html?id=134177>]
1808
1809 =item *
1810
1811 C<INIT> blocks and the program itself are no longer run if exit(0) is called
1812 within a C<BEGIN>, C<UNITCHECK> or C<CHECK> block.
1813 [L<perl #2754|https://rt.perl.org/Ticket/Display.html?id=2754>]
1814
1815 =item *
1816
1817 C<< open my $fh, ">>+", undef >> now opens the temporary file in append mode:
1818 writes will seek to the end of file before writing.
1819 [L<perl #134221|https://rt.perl.org/Ticket/Display.html?id=134221>]
1820
1821 =item *
1822
1823 Fixed a SEGV when searching for the source of an uninitialized value warning on
1824 an op whose subtree includes an OP_MULTIDEREF.
1825 [L<perl #134275|https://rt.perl.org/Ticket/Display.html?id=134275>]
1826
1827 =back
1828
1829 =head1 Obituary
1830
1831 Jeff Goff (JGOFF or DrForr), an integral part of the Perl and Raku
1832 communities and a dear friend to all of us, has passed away on March
1833 13th, 2020. DrForr was a prominent member of the communities, attending
1834 and speaking at countless events, contributing to numerous projects,
1835 and assisting and helping in any way he could.
1836
1837 His passing leaves a hole in our hearts and in our communities and he
1838 will be sorely missed.
1839
1840 =head1 Acknowledgements
1841
1842 Perl 5.32.0 represents approximately 13 months of development since Perl
1843 5.30.0 and contains approximately 220,000 lines of changes across 1,800
1844 files from 89 authors.
1845
1846 Excluding auto-generated files, documentation and release tools, there were
1847 approximately 140,000 lines of changes to 880 .pm, .t, .c and .h files.
1848
1849 Perl continues to flourish into its fourth decade thanks to a vibrant
1850 community of users and developers. The following people are known to have
1851 contributed the improvements that became Perl 5.32.0:
1852
1853 Aaron Crane, Alberto Simões, Alexandr Savca, Andreas König, Andrew Fresh,
1854 Andy Dougherty, Ask Bjørn Hansen, Atsushi Sugawara, Bernhard M. Wiedemann,
1855 brian d foy, Bryan Stenson, Chad Granum, Chase Whitener, Chris 'BinGOs'
1856 Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Book, Daniel
1857 Dragan, Dan Kogai, Dave Cross, Dave Rolsky, David Cantrell, David Mitchell,
1858 Dominic Hargreaves, E. Choroba, Felipe Gasper, Florian Weimer, Graham Knop,
1859 Håkon Hægland, Hauke D, H.Merijn Brand, Hugo van der Sanden, Ichinose
1860 Shogo, James E Keenan, Jason McIntosh, Jerome Duval, Johan Vromans, John
1861 Lightsey, John Paul Adrian Glaubitz, Kang-min Liu, Karen Etheridge, Karl
1862 Williamson, Leon Timmermans, Manuel Mausz, Marc Green, Matthew Horsfall,
1863 Matt Turner, Max Maischein, Michael Haardt, Nicholas Clark, Nicolas R., Niko
1864 Tyni, Pali, Paul Evans, Paul Johnson, Paul Marquess, Peter Eisentraut, Peter
1865 John Acklam, Peter Oliver, Petr Písař, Renee Baecker, Ricardo Signes,
1866 Richard Leach, Russ Allbery, Samuel Smith, Santtu Ojanperä, Sawyer X,
1867 Sergey Aleynikov, Sergiy Borodych, Shirakata Kentaro, Shlomi Fish, Sisyphus,
1868 Slaven Rezic, Smylers, Stefan Seifert, Steve Hay, Steve Peters, Svyatoslav,
1869 Thibault Duponchelle, Todd Rinaldo, Tomasz Konojacki, Tom Hukins, Tony Cook,
1870 Unicode Consortium, VanL, Vickenty Fesunov, Vitali Peil, Yves Orton, Zefram.
1871
1872 The list above is almost certainly incomplete as it is automatically
1873 generated from version control history. In particular, it does not include
1874 the names of the (very much appreciated) contributors who reported issues to
1875 the Perl bug tracker.
1876
1877 Many of the changes included in this version originated in the CPAN modules
1878 included in Perl's core. We're grateful to the entire CPAN community for
1879 helping Perl to flourish.
1880
1881 For a more complete list of all of Perl's historical contributors, please
1882 see the F<AUTHORS> file in the Perl source distribution.
1883
1884 =head1 Reporting Bugs
1885
1886 If you find what you think is a bug, you might check the perl bug database
1887 at L<https://github.com/Perl/perl5/issues>. There may also be information at
1888 L<http://www.perl.org/>, the Perl Home Page.
1889
1890 If you believe you have an unreported bug, please open an issue at
1891 L<https://github.com/Perl/perl5/issues>. Be sure to trim your bug down to a
1892 tiny but sufficient test case.
1893
1894 If the bug you are reporting has security implications which make it
1895 inappropriate to send to a public issue tracker, then see
1896 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
1897 for details of how to report the issue.
1898
1899 =head1 Give Thanks
1900
1901 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
1902 you can do so by running the C<perlthanks> program:
1903
1904     perlthanks
1905
1906 This will send an email to the Perl 5 Porters list with your show of thanks.
1907
1908 =head1 SEE ALSO
1909
1910 The F<Changes> file for an explanation of how to view exhaustive details on
1911 what changed.
1912
1913 The F<INSTALL> file for how to build Perl.
1914
1915 The F<README> file for general stuff.
1916
1917 The F<Artistic> and F<Copying> files for copyright information.
1918
1919 =cut