This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
bump version to v5.36.0 (RC3)
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perldelta - what is new for perl v5.36.0
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.34.0 release and the 5.36.0
10 release.
11
12 =head1 Core Enhancements
13
14 =head2 C<use v5.36>
15
16 As always, C<use v5.36> turns on the feature bundle for that version of Perl.
17
18 The 5.36 bundle enables the C<signatures> feature.  Introduced in Perl version
19 5.20.0, and modified several times since, the subroutine signatures feature is
20 now no longer considered experimental. It is now considered a stable language
21 feature and no longer prints a warning.
22
23     use v5.36;
24
25     sub add ($x, $y) {
26       return $x + $y;
27     }
28
29 Despite this, certain elements of signatured subroutines remain experimental;
30 see below.
31
32 The 5.36 bundle enables the C<isa> feature.  Introduced in Perl version 5.32.0,
33 this operator has remained unchanged since then. The operator is now considered
34 a stable language feature.  For more detail see L<perlop/Class Instance
35 Operator>.
36
37 The 5.36 bundle also I<disables> the features C<indirect>, and
38 C<multidimensional>.  These will forbid, respectively: the use of "indirect"
39 method calls (like C<$x = new Class;>); the use of a list expression as a hash
40 key to simulate sparse multidimensional arrays.  The specifics of these changes
41 can be found in L<feature>, but the short version is: this is a bit like having
42 more C<use strict> turned on, disabling features that cause more trouble than
43 they're worth.
44
45 Furthermore, C<use v5.36> will also enable warnings as if you'd written C<use
46 warnings>.
47
48 Finally, with this release, the experimental C<switch> feature, present in
49 every feature bundle since they were introduced in v5.10, has been removed from
50 the v5.36 bundle.  If you want to use it (against our advice), you'll have to
51 enable it explicitly.
52
53 =head2 -g command-line flag
54
55 A new command-line flag, -g, is available. It is a simpler alias for -0777.
56
57 For more information, see L<perlrun/-g>.
58
59 =head2 Unicode 14.0 is supported
60
61 See L<https://www.unicode.org/versions/Unicode14.0.0/> for details.
62
63 =head2 Variable length lookbehind is mostly no longer considered experimental
64
65 Prior to this release any form of variable length lookbehind was
66 considered experimental. With this release the experimental status has
67 been reduced to cover only lookbehind that contains capturing parenthesis.
68 This is because it is not clear if
69
70     "aaz"=~/(?=z)(?<=(a|aa))/
71
72 should match and leave $1 equaling "a" or "aa". Currently it will match
73 the longest possible alternative, "aa". We are confident that the overall
74 construct will now match only when it should, we are not confident that we
75 will keep the current "longest match" behavior.
76
77 =head2 SIGFPE no longer deferred
78
79 Floating-point exceptions are now delivered immediately, in the same way
80 as other "fault"-like signals such as SIGSEGV. This means one has at
81 least a chance to catch such a signal with a C<$SIG{FPE}> handler, e.g.
82 so that C<die> can report the line in perl that triggered it.
83
84 =head2 Stable boolean tracking
85
86 The "true" and "false" boolean values, often accessed by constructions like
87 C<!!0> and C<!!1>, as well as being returned from many core functions and
88 operators, now remember their boolean nature even through assignment into
89 variables. The new function C<is_bool()> in L<builtin> can check whether
90 a value has boolean nature.
91
92 This is likely to be useful when interoperating with other languages or
93 data-type serialisation, among other places.
94
95 =head2 iterating over multiple values at a time (experimental)
96
97 You can now iterate over multiple values at a time by specifying a list of
98 lexicals within parentheses. For example,
99
100     for my ($key, $value) (%hash) { ... }
101     for my ($left, $right, $gripping) (@moties) { ... }
102
103 Prior to perl v5.36, attempting to specify a list after C<for my> was a syntax
104 error.
105
106 This feature is currently experimental and will cause a warning of category
107 C<experimental::for_list>.  For more detail see L<perlsyn/Compound Statements>.
108 See also L</builtin::indexed> in this document, which is a handy companion to
109 n-at-a-time foreach.
110
111 =head2 builtin functions (experimental)
112
113 A new core module L<builtin> has been added, which provides documentation for
114 new always-present functions that are built into the interpreter.
115
116     say "Reference type of arrays is ", builtin::reftype([]);
117
118 It also provides a lexical import mechanism for providing short name versions
119 of these functions.
120
121     use builtin 'reftype';
122     say "Reference type of arrays is ", reftype([]);
123
124 This builtin function mechanism and the functions it provides are all
125 currently B<experimental>.  We expect that C<builtin> itself will cease to be
126 experimental in the near future, but that individual functions in it may become
127 stable on an ongoing basis.  Other functions will be added to C<builtin> over
128 time.
129
130 For details, see L<builtin>, but here's a summary of builtin functions in
131 v5.36:
132
133 =over 4
134
135 =item builtin::trim
136
137 This function treats its argument as a string, returning the result of removing
138 all white space at its beginning and ending.
139
140 =item builtin::indexed
141
142 This function returns a list twice as big as its argument list, where each item
143 is preceded by its index within that list. This is primarily useful for using
144 the new C<foreach> syntax with multiple iterator variables to iterate over an
145 array or list, while also tracking the index of each item:
146
147     use builtin 'indexed';
148
149     foreach my ($index, $val) (indexed @array) {
150         ...
151     }
152
153 =item builtin::true, builtin::false, builtin::is_bool
154
155 C<true> and C<false> return boolean true and false values.  Perl is still perl,
156 and doesn't have strict typing of booleans, but these values will be known to
157 have been created as booleans.  C<is_bool> will tell you whether a value was
158 known to have been created as a boolean.
159
160 =item builtin::weaken, builtin::unweaken, builtin::is_weak
161
162 These functions will, respectively: weaken a reference; strengthen a reference;
163 and return whether a reference is weak.  (A weak reference is not counted for
164 garbage collection purposes.  See L<perlref>.)  These can take the place of
165 some similar routines in L<Scalar::Util>.
166
167 =item builtin::blessed, builtin::refaddr, builtin::reftype
168
169 These functions provide more data about references (or non-references,
170 actually!) and can take the place of similar routines found in L<Scalar::Util>.
171
172 =item builtin::ceil, builtin::floor
173
174 C<ceil> returns the smallest integer greater than or equal to its argument.
175 C<floor> returns the largest integer less than or equal to its argument.  These
176 can take the place of similar routines found in L<POSIX>.
177
178 =back
179
180 =head2 C<defer> blocks (experimental)
181
182 This release adds support for C<defer> blocks, which are blocks of code
183 prefixed by the C<defer> modifier. They provide a section of code which runs
184 at a later time, during scope exit.
185
186 In brief, when a C<defer> block is reached at runtime, its body is set aside to
187 be run when the enclosing scope is exited.  It is unlike a UNITCHECK (among
188 other reasons) in that if the block I<containing> the C<defer> block is exited
189 before the block is reached, it will not be run.
190
191 C<defer> blocks can be used to take the place of "scope guard" objects where an
192 object is passed a code block to be run by its destructor.
193
194 For more information, see L<perlsyn/"defer blocks">.
195
196 =head2 try/catch can now have a C<finally> block (experimental)
197
198 The experimental C<try>/C<catch> syntax has been extended to support an
199 optional third block introduced by the C<finally> keyword.
200
201     try {
202         attempt();
203         print "Success\n";
204     }
205     catch ($e) {
206         print "Failure\n";
207     }
208     finally {
209         print "This happens regardless\n";
210     }
211
212 This provides code which runs at the end of the C<try>/C<catch> construct,
213 even if aborted by an exception or control-flow keyword. They are similar
214 to C<defer> blocks.
215
216 For more information, see L<perlsyn/"Try Catch Exception Handling">.
217
218 =head2 non-ASCII delimiters for quote-like operators (experimental)
219
220 Perl traditionally has allowed just four pairs of string/pattern
221 delimiters: S<C<( )>> S<C<{ }>> S<C<[ ]>> and S<C<< < > >>>, all in the
222 ASCII range.  Unicode has hundreds more possibilities, and using this
223 feature enables many of them.  When enabled, you can say S<C<qr« »>> for
224 example, or S<C<use utf8; q𝄃string𝄂>>.  See L<feature/The
225 'extra_paired_delimiters' feature> for details.
226
227 =head2 @_ is now experimental within signatured subs
228
229 Even though subroutine signatures are now stable, use of the legacy arguments
230 array (C<@_>) with a subroutine that has a signature I<remains> experimental,
231 with its own warning category.  Silencing the C<experimental::signatures>
232 warning category is not sufficient to dismiss this.  The new warning is emitted
233 with the category name C<experimental::args_array_with_signatures>.
234
235 Any subroutine that has a signature and tries to make use of the defaults
236 argument array or an element thereof (C<@_> or C<$_[INDEX]>), either
237 explicitly or implicitly (such as C<shift> or C<pop> with no argument) will
238 provoke a warning at compile-time:
239
240     use v5.36;
241
242     sub f ($x, $y = 123) {
243       say "The first argument is $_[0]";
244     }
245
246 Z<>
247
248     Use of @_ in array element with signatured subroutine is experimental
249     at file.pl line 4.
250
251 The behaviour of code which attempts to do this is no longer specified, and
252 may be subject to change in a future version.
253
254 =head1 Incompatible Changes
255
256 =head2 A physically empty sort is now a compile-time error
257
258     @a = sort @empty; # unaffected
259     @a = sort;        # now a compile-time error
260     @a = sort ();     # also a compile-time error
261
262 A bare sort used to be a weird way to create an empty list; now it croaks
263 at compile time. This change is intended to free up some of the syntax space
264 for possible future enhancements to C<sort>.
265
266 =head1 Deprecations
267
268 =head2 C<use VERSION> below v5.11 after use v5.11 is deprecated
269
270 When in the scope of C<use v5.11> or later, a C<use vX> line where I<X> is
271 lower than v5.11 will now issue a warning:
272
273     Downgrading a use VERSION declaration to below v5.11 is deprecated
274
275 For example:
276
277     use v5.14;
278     say "The say statement is permitted";
279     use v5.8;                               # This will print a warning
280     print "We must use print\n";
281
282 This is because the Perl team plans to change the behavior in this case.  Since
283 Perl v5.12 (and parts of v5.11), strict is enabled I<unless it had previously
284 been disabled>.  In other words:
285
286     no strict;
287     use v5.12;  # will not enable strict, because "no strict" preceded it
288     $x = 1;     # permitted, despite no "my" declaration
289
290 In the future, this behavior will be eliminated.  C<use VERSION> will I<always>
291 enable strict for versions that I<ever> enable it now.
292
293 Code which wishes to mix versions in this manner should use lexical scoping
294 with block syntax to ensure that the differently versioned regions remain
295 lexically isolated.
296
297     {
298         use v5.14;
299         say "The say statement is permitted";
300     }
301
302     {
303         use v5.8;                           # No warning is emitted
304         print "We must use print\n";
305     }
306
307 Of course, this is probably not something you ever need to do!  If the first
308 block compiles, it means you're using perl v5.14.0 or later.
309
310 =head1 Performance Enhancements
311
312 =over 4
313
314 =item *
315
316 We now probe for compiler support for C11 thread local storage, and where
317 available use this for "implicit context" for XS extensions making API calls for
318 a threaded Perl build.  This requires fewer function calls at the C level than
319 POSIX thread specific storage. We continue to use the the pthreads approach if
320 the C11 approach is not available.
321
322 F<Configure> run with the defaults will build an unthreaded Perl (which is
323 slightly faster), but most operating systems ship a threaded Perl.
324
325 =item *
326
327 Large hashes no longer allocate their keys from the shared string table.
328
329 The same internal datatype (C<PVHV>) is used for all of
330
331 =over 4
332
333 =item *
334
335 Symbol tables
336
337 =item *
338
339 Objects (by default)
340
341 =item *
342
343 Associative arrays
344
345 =back
346
347 The shared string table was originally added to improve performance for blessed
348 hashes used as objects, because every object instance has the same keys, so it
349 is an optimisation to share memory between them. It also makes sense for symbol
350 tables, where derived classes will have the same keys (typically method names),
351 and the OP trees built for method calls can also share memory. The shared
352 string table behaves roughly like a cache for hash keys.
353
354 But for hashes actually used as associative arrays - mapping keys to values -
355 typically the keys are not re-used in other hashes. For example, "seen" hashes
356 are keyed by object IDs (or addresses), and logically these keys won't repeat
357 in other hashes.
358
359 Storing these "used just once" keys in the shared string table increases CPU
360 and RAM use for no gain. For such keys the shared string table behaves as a
361 cache with a 0% hit rate. Storing all the keys there increases the total size
362 of the shared string table, as well as increasing the number of times it is
363 resized as it grows. B<Worse> - in any environment that has "copy on write"
364 memory for child process (such as a pre-forking server), the memory pages used
365 for the shared string table rapidly need to be copied as the child process
366 manipulates hashes. Hence if most of the shared string table is such keys that
367 are used only in one place, there is no benefit from re-use within the perl
368 interpreter, but a high cost due to more pages for the OS to copy.
369
370 The perl interpreter now disables shared hash keys for "large" hashes (that are
371 neither objects nor symbol tables). "Large" is a heuristic - currently the
372 heuristic is that sharing is disabled when adding a key to a hash triggers
373 allocation of more storage, and the hash has more than 42 keys.
374
375 This B<might> cause slightly increased memory usage for programs that create
376 (unblessed) data structures that contain multiple large hashes that share the
377 same keys. But generally our testing suggests that for the specific cases
378 described it is a win, and other code is unaffected.
379
380 =item *
381
382 In certain scenarios, creation of new scalars is now noticeably faster.
383
384 For example, the following code is now executing ~30% faster:
385
386     $str = "A" x 64;
387     for (0..1_000_000) {
388         @svs = split //, $str
389     }
390
391 (You can read more about this one in L<[perl
392 #19414]|https://github.com/Perl/perl5/pull/19414>.)
393
394 =back
395
396 =head1 Modules and Pragmata
397
398 =head2 Updated Modules and Pragmata
399
400 =over 4
401
402 =item *
403
404 L<Archive::Tar> has been upgraded from version 2.38 to 2.40.
405
406 =item *
407
408 L<Attribute::Handlers> has been upgraded from version 1.01 to 1.02.
409
410 =item *
411
412 L<attributes> has been upgraded from version 0.33 to 0.34.
413
414 =item *
415
416 L<B> has been upgraded from version 1.82 to 1.83.
417
418 =item *
419
420 L<B::Concise> has been upgraded from version 1.004 to 1.006.
421
422 =item *
423
424 L<B::Deparse> has been upgraded from version 1.56 to 1.64.
425
426 =item *
427
428 L<bignum> has been upgraded from version 0.51 to 0.65.
429
430 =item *
431
432 L<charnames> has been upgraded from version 1.48 to 1.50.
433
434 =item *
435
436 L<Compress::Raw::Bzip2> has been upgraded from version 2.101 to 2.103.
437
438 =item *
439
440 L<Compress::Raw::Zlib> has been upgraded from version 2.101 to 2.105.
441
442 =item *
443
444 L<CPAN> has been upgraded from version 2.28 to 2.33.
445
446 =item *
447
448 L<Data::Dumper> has been upgraded from version 2.179 to 2.184.
449
450 =item *
451
452 L<DB_File> has been upgraded from version 1.855 to 1.857.
453
454 =item *
455
456 L<Devel::Peek> has been upgraded from version 1.30 to 1.32.
457
458 =item *
459
460 L<Devel::PPPort> has been upgraded from version 3.62 to 3.68.
461
462 =item *
463
464 L<diagnostics> has been upgraded from version 1.37 to 1.39.
465
466 =item *
467
468 L<Digest> has been upgraded from version 1.19 to 1.20.
469
470 =item *
471
472 L<DynaLoader> has been upgraded from version 1.50 to 1.52.
473
474 =item *
475
476 L<Encode> has been upgraded from version 3.08 to 3.17.
477
478 =item *
479
480 L<Errno> has been upgraded from version 1.33 to 1.36.
481
482 =item *
483
484 L<experimental> has been upgraded from version 0.024 to 0.028.
485
486 =item *
487
488 L<Exporter> has been upgraded from version 5.76 to 5.77.
489
490 =item *
491
492 L<ExtUtils::MakeMaker> has been upgraded from version 7.62 to 7.64.
493
494 =item *
495
496 L<ExtUtils::Miniperl> has been upgraded from version 1.10 to 1.11.
497
498 =item *
499
500 L<ExtUtils::ParseXS> has been upgraded from version 3.43 to 3.45.
501
502 =item *
503
504 L<ExtUtils::Typemaps> has been upgraded from version 3.43 to 3.45.
505
506 =item *
507
508 L<Fcntl> has been upgraded from version 1.14 to 1.15.
509
510 =item *
511
512 L<feature> has been upgraded from version 1.64 to 1.72.
513
514 =item *
515
516 L<File::Compare> has been upgraded from version 1.1006 to 1.1007.
517
518 =item *
519
520 L<File::Copy> has been upgraded from version 2.35 to 2.39.
521
522 =item *
523
524 L<File::Fetch> has been upgraded from version 1.00 to 1.04.
525
526 =item *
527
528 L<File::Find> has been upgraded from version 1.39 to 1.40.
529
530 =item *
531
532 L<File::Glob> has been upgraded from version 1.33 to 1.37.
533
534 =item *
535
536 L<File::Spec> has been upgraded from version 3.80 to 3.84.
537
538 =item *
539
540 L<File::stat> has been upgraded from version 1.09 to 1.12.
541
542 =item *
543
544 L<FindBin> has been upgraded from version 1.52 to 1.53.
545
546 =item *
547
548 L<GDBM_File> has been upgraded from version 1.19 to 1.23.
549
550 =item *
551
552 L<Hash::Util> has been upgraded from version 0.25 to 0.28.
553
554 =item *
555
556 L<Hash::Util::FieldHash> has been upgraded from version 1.21 to 1.26.
557
558 =item *
559
560 L<HTTP::Tiny> has been upgraded from version 0.076 to 0.080.
561
562 =item *
563
564 L<I18N::Langinfo> has been upgraded from version 0.19 to 0.21.
565
566 =item *
567
568 L<if> has been upgraded from version 0.0609 to 0.0610.
569
570 =item *
571
572 L<IO> has been upgraded from version 1.46 to 1.50.
573
574 =item *
575
576 IO-Compress has been upgraded from version 2.102 to 2.106.
577
578 =item *
579
580 L<IPC::Open3> has been upgraded from version 1.21 to 1.22.
581
582 =item *
583
584 L<JSON::PP> has been upgraded from version 4.06 to 4.07.
585
586 =item *
587
588 libnet has been upgraded from version 3.13 to 3.14.
589
590 =item *
591
592 L<Locale::Maketext> has been upgraded from version 1.29 to 1.31.
593
594 =item *
595
596 L<Math::BigInt> has been upgraded from version 1.999818 to 1.999830.
597
598 =item *
599
600 L<Math::BigInt::FastCalc> has been upgraded from version 0.5009 to 0.5012.
601
602 =item *
603
604 L<Math::BigRat> has been upgraded from version 0.2614 to 0.2621.
605
606 =item *
607
608 L<Module::CoreList> has been upgraded from version 5.20210520 to 5.20220520.
609
610 =item *
611
612 L<mro> has been upgraded from version 1.25_001 to 1.26.
613
614 =item *
615
616 L<NEXT> has been upgraded from version 0.68 to 0.69.
617
618 =item *
619
620 L<Opcode> has been upgraded from version 1.50 to 1.57.
621
622 =item *
623
624 L<open> has been upgraded from version 1.12 to 1.13.
625
626 =item *
627
628 L<overload> has been upgraded from version 1.33 to 1.35.
629
630 =item *
631
632 L<perlfaq> has been upgraded from version 5.20210411 to 5.20210520.
633
634 =item *
635
636 L<PerlIO> has been upgraded from version 1.11 to 1.12.
637
638 =item *
639
640 L<Pod::Functions> has been upgraded from version 1.13 to 1.14.
641
642 =item *
643
644 L<Pod::Html> has been upgraded from version 1.27 to 1.33.
645
646 =item *
647
648 L<Pod::Simple> has been upgraded from version 3.42 to 3.43.
649
650 =item *
651
652 L<POSIX> has been upgraded from version 1.97 to 2.03.
653
654 =item *
655
656 L<re> has been upgraded from version 0.41 to 0.43.
657
658 =item *
659
660 L<Scalar::Util> has been upgraded from version 1.55 to 1.62.
661
662 =item *
663
664 L<sigtrap> has been upgraded from version 1.09 to 1.10.
665
666 =item *
667
668 L<Socket> has been upgraded from version 2.031 to 2.033.
669
670 =item *
671
672 L<sort> has been upgraded from version 2.04 to 2.05.
673
674 =item *
675
676 L<Storable> has been upgraded from version 3.23 to 3.26.
677
678 =item *
679
680 L<Sys::Hostname> has been upgraded from version 1.23 to 1.24.
681
682 =item *
683
684 L<Test::Harness> has been upgraded from version 3.43 to 3.44.
685
686 =item *
687
688 L<Test::Simple> has been upgraded from version 1.302183 to 1.302190.
689
690 =item *
691
692 L<Text::ParseWords> has been upgraded from version 3.30 to 3.31.
693
694 =item *
695
696 L<Text::Tabs> has been upgraded from version 2013.0523 to 2021.0814.
697
698 =item *
699
700 L<Text::Wrap> has been upgraded from version 2013.0523 to 2021.0814.
701
702 =item *
703
704 L<threads> has been upgraded from version 2.26 to 2.27.
705
706 =item *
707
708 L<threads::shared> has been upgraded from version 1.62 to 1.64.
709
710 =item *
711
712 L<Tie::Handle> has been upgraded from version 4.2 to 4.3.
713
714 =item *
715
716 L<Tie::Hash> has been upgraded from version 1.05 to 1.06.
717
718 =item *
719
720 L<Tie::Scalar> has been upgraded from version 1.05 to 1.06.
721
722 =item *
723
724 L<Tie::SubstrHash> has been upgraded from version 1.00 to 1.01.
725
726 =item *
727
728 L<Time::HiRes> has been upgraded from version 1.9767 to 1.9770.
729
730 =item *
731
732 L<Unicode::Collate> has been upgraded from version 1.29 to 1.31.
733
734 =item *
735
736 L<Unicode::Normalize> has been upgraded from version 1.28 to 1.31.
737
738 =item *
739
740 L<Unicode::UCD> has been upgraded from version 0.75 to 0.78.
741
742 =item *
743
744 L<UNIVERSAL> has been upgraded from version 1.13 to 1.14.
745
746 =item *
747
748 L<version> has been upgraded from version 0.9928 to 0.9929.
749
750 =item *
751
752 L<VMS::Filespec> has been upgraded from version 1.12 to 1.13.
753
754 =item *
755
756 L<VMS::Stdio> has been upgraded from version 2.45 to 2.46.
757
758 =item *
759
760 L<warnings> has been upgraded from version 1.51 to 1.58.
761
762 =item *
763
764 L<Win32> has been upgraded from version 0.57 to 0.59.
765
766 =item *
767
768 L<XS::APItest> has been upgraded from version 1.16 to 1.22.
769
770 =item *
771
772 L<XS::Typemap> has been upgraded from version 0.18 to 0.19.
773
774 =item *
775
776 L<XSLoader> has been upgraded from version 0.30 to 0.31.
777
778 =back
779
780 =head1 Documentation
781
782 =head2 New Documentation
783
784 =head3 F<Porting/vote_admin_guide.pod>
785
786 This document provides the process for administering an election or vote
787 within the Perl Core Team.
788
789 =head2 Changes to Existing Documentation
790
791 We have attempted to update the documentation to reflect the changes
792 listed in this document.  If you find any we have missed, open an issue
793 at L<https://github.com/Perl/perl5/issues>.
794
795 Additionally, the following selected changes have been made:
796
797 =head3 L<perlapi>
798
799 =over 4
800
801 =item *
802
803 This has been cleaned up some, and about 90% of the (previously many)
804 undocumented functions have now either been documented or deemed to have
805 been inappropriately marked as API.
806
807 As always, Patches Welcome!
808
809 =back
810
811 =head3 L<perldeprecation>
812
813 =over 4
814
815 =item *
816
817 notes the new location for functions moved from L<Pod::Html> to
818 L<Pod::Html::Util> that are no longer intended to be used outside of core.
819
820 =back
821
822 =head3 L<perlexperiment>
823
824 =over 4
825
826 =item *
827
828 notes the C<:win32> IO pseudolayer is removed (this happened in 5.35.2).
829
830 =back
831
832 =head3 L<perlgov>
833
834 =over 4
835
836 =item *
837
838 The election process has been finetuned to allow the vote to be skipped if there
839 are no more candidates than open seats.
840
841 =item *
842
843 A special election is now allowed to be postponed for up to twelve weeks, for
844 example until a normal election.
845
846 =back
847
848 =head3 L<perlop>
849
850 =over 4
851
852 =item *
853
854 now notes that an invocant only needs to be an object or class name
855 for method calls, not for subroutine references.
856
857 =back
858
859 =head3 L<perlre>
860
861 =over 4
862
863 =item *
864
865 Updated to discourage the use of the /d regexp modifier.
866
867 =back
868
869 =head3 L<perlrun>
870
871 =over 4
872
873 =item *
874
875 B<-?> is now a synonym for B<-h>
876
877 =item *
878
879 B<-g> is now a synonym for B<-0777>
880
881 =back
882
883 =head1 Diagnostics
884
885 The following additions or changes have been made to diagnostic output,
886 including warnings and fatal error messages.  For the complete list of
887 diagnostic messages, see L<perldiag>.
888
889 =head2 New Diagnostics
890
891 =head3 New Errors
892
893 =over 4
894
895 =item *
896
897 L<Can't "%s" out of a "defer" block|perldiag/"Can't "%s" out of a "defer" block">
898
899 (F) An attempt was made to jump out of the scope of a defer block by using
900 a control-flow statement such as C<return>, C<goto> or a loop control. This is
901 not permitted.
902
903 =item *
904
905 L<Can't modify %s in %s|perldiag/"Can't modify %s in %s"> (for scalar
906 assignment to C<undef>)
907
908 Attempting to perform a scalar assignment to C<undef>, for example via
909 C<undef = $foo;>, previously triggered a fatal runtime error with the
910 message "L<Modification of a read-only value attempted|perldiag/"Modification of a read-only value attempted">."
911 It is more helpful to detect such attempted assignments prior to runtime, so
912 they are now compile time errors, resulting in the message "Can't modify undef
913 operator in scalar assignment".
914
915 =item *
916
917 L<panic: newFORLOOP, %s|perldiag/"panic: newFORLOOP, %s">
918
919 The parser failed an internal consistency check while trying to parse
920 a C<foreach> loop.
921
922 =back
923
924 =head3 New Warnings
925
926 =over 4
927
928 =item *
929
930 L<Built-in function '%s' is experimental|perldiag/"Built-in function '%s' is experimental">
931
932 A call is being made to a function in the C<builtin::> namespace, which is
933 currently experimental.
934
935 =item *
936
937 L<defer is experimental|perldiag/"defer is experimental">
938
939 The C<defer> block modifier is experimental. If you want to use the feature,
940 disable the warning with C<no warnings 'experimental::defer'>, but know that in
941 doing so you are taking the risk that your code may break in a future Perl
942 version.
943
944 =item *
945
946 L<Downgrading a use VERSION declaration to below v5.11 is deprecated|perldiag/"Downgrading a use VERSION declaration to below v5.11 is deprecated">
947
948 This warning is emitted on a C<use VERSION> statement that
949 requests a version below v5.11 (when the effects of C<use strict> would be
950 disabled), after a previous declaration of one having a larger number (which
951 would have enabled these effects)
952
953 =item *
954
955 L<for my (...) is experimental|perldiag/"for my (...) is experimental">
956
957 This warning is emitted if you use C<for> to iterate multiple values at
958 a time. This syntax is currently experimental and its behaviour may
959 change in future releases of Perl.
960
961 =item *
962
963 L<Implicit use of @_ in %s with signatured subroutine is experimental|perldiag/"Implicit use of @_ in %s with signatured subroutine is experimental">
964
965 An expression that implicitly involves the C<@_> arguments array was found in
966 a subroutine that uses a signature.
967
968 =item *
969
970 L<Use of @_ in %s with signatured subroutine is experimental|perldiag/"Use of @_ in %s with signatured subroutine is experimental">
971
972 An expression involving the C<@_> arguments array was found in a subroutine that uses a signature.
973
974 =item *
975
976 L<Wide character in $0|perldiag/"Wide character in %s">
977
978 Attempts to put wide characters into the program name (C<$0>) now provoke this
979 warning.
980
981 =back
982
983 =head2 Changes to Existing Diagnostics
984
985 =over 4
986
987 =item *
988
989 L<'E<sol>' does not take a repeat count in %s|perldiag/"'/' does not take a repeat count in %s">
990
991 This warning used to not include the C<in %s>.
992
993 =item *
994
995 L<Subroutine %s redefined|perldiag/"Subroutine %s redefined">
996
997 Localized subroutine redefinitions no longer trigger this warning.
998
999 =item *
1000
1001 L<unexpected constant lvalue entersub entry via typeE<sol>targ %d:%d"|perldiag/"panic: unexpected constant lvalue entersub entry via type/targ %d:%d"> now has a panic prefix
1002
1003 This makes it consistent with other checks of internal consistency when
1004 compiling a subroutine.
1005
1006 =item *
1007
1008 L<Useless use of sort in scalar context|perldiag/"Useless use of %s in scalar
1009 context"> is now in the new C<scalar> category.
1010
1011 When C<sort> is used in scalar context, it provokes a warning that doing this
1012 is not useful. This warning used to be in the C<void> category. A new category
1013 for warnings about scalar context has now been added, called C<scalar>.
1014
1015 =item *
1016
1017 Removed a number of diagnostics
1018
1019 Many diagnostics that have been removed from the perl core across many years
1020 have now I<also> been removed from the documentation.
1021
1022 =back
1023
1024 =head1 Configuration and Compilation
1025
1026 =over 4
1027
1028 =item *
1029
1030 The Perl C source code now uses some C99 features, which we have verified are
1031 supported by all compilers we target. This means that Perl's headers now
1032 contain some code that is legal in C99 but not C89.
1033
1034 This may cause problems for some XS modules that unconditionally add
1035 C<-Werror=declaration-after-statement> to their C compiler flags if compiling
1036 with gcc or clang. Earlier versions of Perl support long obsolete compilers
1037 that are strict in rejecting certain C99 features, particularly mixed
1038 declarations and code, and hence it makes sense for XS module authors to audit
1039 that their code does not violate this. However, doing this is now only
1040 possible on these earlier versions of Perl, hence these modules need to be
1041 changed to only add this flag for C<<$] < 5.035005>>.
1042
1043 =item *
1044
1045 The makedepend step is now run in parallel by using make
1046
1047 When using MAKEFLAGS=-j8, this significantly reduces the time required for:
1048
1049     sh ./makedepend MAKE=make cflags
1050
1051 =item *
1052
1053 F<Configure> now tests whether C<< #include <xlocale.h> >> is required
1054 to use the POSIX 1003 thread-safe locale functions or some related
1055 extensions.  This prevents problems where a non-public F<xlocale.h> is
1056 removed in a library update, or F<xlocale.h> isn't intended for public
1057 use. (github L<#18936|https://github.com/Perl/perl5/pull/18936>)
1058
1059 =back
1060
1061 =head1 Testing
1062
1063 Tests were added and changed to reflect the other additions and changes
1064 in this release.
1065
1066 =head1 Platform Support
1067
1068 =head2 Windows
1069
1070 =over 4
1071
1072 =item *
1073
1074 Support for old MSVC++ (pre-VC12) has been removed
1075
1076 These did not support C99 and hence can no longer be used to compile perl.
1077
1078 =item *
1079
1080 Support for compiling perl on Windows using Microsoft Visual Studio 2022
1081 (containing Visual C++ 14.3) has been added.
1082
1083 =item *
1084
1085 The :win32 IO layer has been removed. This experimental replacement for the
1086 :unix layer never reached maturity in its nearly two decades of existence.
1087
1088 =back
1089
1090 =head2 VMS
1091
1092 =over 4
1093
1094 =item C<keys %ENV> on VMS returns consistent results
1095
1096 On VMS entries in the C<%ENV> hash are loaded from the OS environment on
1097 first access, hence the first iteration of C<%ENV> requires the entire
1098 environment to be scanned to find all possible keys. This initialisation had
1099 always been done correctly for full iteration, but previously was not
1100 happening for C<%ENV> in scalar context, meaning that C<scalar %ENV> would
1101 return 0 if called before any other C<%ENV> access, or would only return the
1102 count of keys accessed if there had been no iteration.
1103
1104 These bugs are now fixed - C<%ENV> and C<keys %ENV> in scalar context now
1105 return the correct result - the count of all keys in the environment.
1106
1107 =back
1108
1109 =head2 Discontinued Platforms
1110
1111 =over 4
1112
1113 =item AT&T UWIN
1114
1115 UWIN is a UNIX compatibility layer for Windows.  It was last released
1116 in 2012 and has been superseded by Cygwin these days.
1117
1118 =item DOS/DJGPP
1119
1120 DJGPP is a port of the GNU toolchain to 32-bit x86 systems running
1121 DOS.  The last known attempt to build Perl on it was on 5.20, which
1122 only got as far as building miniperl.
1123
1124 =item NetWare
1125
1126 Support code for Novell NetWare has been removed.  NetWare was a
1127 server operating system by Novell.  The port was last updated in July
1128 2002, and the platform itself in May 2009.
1129
1130 Unrelated changes accidentally broke the build for the NetWare port in
1131 September 2009, and in 12 years no-one has reported this.
1132
1133 =back
1134
1135 =head2 Platform-Specific Notes
1136
1137 =over 4
1138
1139 =item z/OS
1140
1141 This update enables us to build EBCDIC static/dynamic and 31-bit/64-bit
1142 addressing mode Perl. The number of tests that pass is consistent with the
1143 baseline before these updates.
1144
1145 These changes also provide the base support to be able to provide ASCII
1146 static/dynamic and 31-bit/64-bit addressing mode Perl.
1147
1148 The z/OS (previously called OS/390) README was updated to describe ASCII and
1149 EBCDIC builds.
1150
1151 =back
1152
1153 =head1 Internal Changes
1154
1155 =over 4
1156
1157 =item *
1158
1159 Since the removal of PERL_OBJECT in Perl 5.8, PERL_IMPLICIT_CONTEXT and
1160 MULTIPLICITY have been synonymous and they were being used interchangeably.
1161 To simplify the code, all instances of PERL_IMPLICIT_CONTEXT have been
1162 replaced with MULTIPLICITY.
1163
1164 PERL_IMPLICIT_CONTEXT will remain defined for compatibility with XS modules.
1165
1166 =item *
1167
1168 The API constant formerly named C<G_ARRAY>, indicating list context, has now
1169 been renamed to a more accurate C<G_LIST>.  A compatibilty macro C<G_ARRAY> has
1170 been added to allow existing code to work unaffected.  New code should be
1171 written using the new constant instead.  This is supported by C<Devel::PPPort>
1172 version 3.63.
1173
1174 =item *
1175
1176 Macros have been added to F<perl.h> to facilitate version comparisons:
1177 C<PERL_GCC_VERSION_GE>, C<PERL_GCC_VERSION_GT>, C<PERL_GCC_VERSION_LE> and
1178 C<PERL_GCC_VERSION_LT>.
1179
1180 Inline functions have been added to F<embed.h> to determine the position of
1181 the least significant 1 bit in a word: C<lsbit_pos32> and C<lsbit_pos64>.
1182
1183 =item *
1184
1185 C<Perl_ptr_table_clear> has been deleted. This has been marked as deprecated
1186 since v5.14.0 (released in 2011), and is not used by any code on CPAN.
1187
1188 =item *
1189
1190 Added new boolean macros and functions. See L</Stable boolean tracking> for
1191 related information and L<perlapi> for documentation.
1192
1193 =over 4
1194
1195 =item *
1196
1197 sv_setbool
1198
1199 =item *
1200
1201 sv_setbool_mg
1202
1203 =item *
1204
1205 SvIsBOOL
1206
1207 =back
1208
1209 =item *
1210
1211 Added 4 missing functions for dealing with RVs:
1212
1213 =over 4
1214
1215 =item *
1216
1217 sv_setrv_noinc
1218
1219 =item *
1220
1221 sv_setrv_noinc_mg
1222
1223 =item *
1224
1225 sv_setrv_inc
1226
1227 =item *
1228
1229 sv_setrv_inc_mg
1230
1231 =back
1232
1233 =item *
1234
1235 C<xs_handshake()>'s two failure modes now provide distinct messages.
1236
1237 =item *
1238
1239 Memory for hash iterator state (C<struct xpvhv_aux>) is now allocated as part
1240 of the hash body, instead of as part of the block of memory allocated for the
1241 main hash array.
1242
1243 =item *
1244
1245 A new phase_name() interface provides access to the name for each interpreter
1246 phase (i.e., PL_phase value).
1247
1248 =item *
1249
1250 The C<pack> behavior of C<U> has changed for EBCDIC.
1251
1252 =item *
1253
1254 New equality-test functions C<sv_numeq> and C<sv_streq> have been added, along
1255 with C<..._flags>-suffixed variants.  These expose a simple and consistent API
1256 to perform numerical or string comparison which is aware of operator
1257 overloading.
1258
1259 =item *
1260
1261 Reading the string form of an integer value no longer sets the flag C<SVf_POK>.
1262 The string form is still cached internally, and still re-read directly by the
1263 macros C<SvPV(sv)> I<etc> (inline, without calling a C function). XS code that
1264 already calls the APIs to get values will not be affected by this change. XS
1265 code that accesses flags directly instead of using API calls to express its
1266 intent I<might> break, but such code likely is already buggy if passed some
1267 other values, such as floating point values or objects with string overloading.
1268
1269 This small change permits code (such as JSON serializers) to reliably determine
1270 between
1271
1272 =over 4
1273
1274 =item *
1275
1276 a value that was initially B<written> as an integer, but then B<read> as a string
1277
1278     my $answer = 42;
1279     print "The answer is $answer\n";
1280
1281 =item *
1282
1283 that same value that was initially B<written> as a string, but then B<read> as an integer
1284
1285     my $answer = "42";
1286     print "That doesn't look right\n"
1287         unless $answer == 6 * 9;
1288
1289 =back
1290
1291 For the first case (originally written as an integer), we now have:
1292
1293     use Devel::Peek;
1294     my $answer = 42;
1295     Dump ($answer);
1296     my $void = "$answer";
1297     print STDERR "\n";
1298     Dump($answer)
1299
1300
1301     SV = IV(0x562538925778) at 0x562538925788
1302       REFCNT = 1
1303       FLAGS = (IOK,pIOK)
1304       IV = 42
1305
1306     SV = PVIV(0x5625389263c0) at 0x562538925788
1307       REFCNT = 1
1308       FLAGS = (IOK,pIOK,pPOK)
1309       IV = 42
1310       PV = 0x562538919b50 "42"\0
1311       CUR = 2
1312       LEN = 10
1313
1314 For the second (originally written as a string), we now have:
1315
1316     use Devel::Peek;
1317     my $answer = "42";
1318     Dump ($answer);
1319     my $void = $answer == 6 * 9;
1320     print STDERR "\n";
1321     Dump($answer)'
1322
1323
1324     SV = PV(0x5586ffe9bfb0) at 0x5586ffec0788
1325       REFCNT = 1
1326       FLAGS = (POK,IsCOW,pPOK)
1327       PV = 0x5586ffee7fd0 "42"\0
1328       CUR = 2
1329       LEN = 10
1330       COW_REFCNT = 1
1331
1332     SV = PVIV(0x5586ffec13c0) at 0x5586ffec0788
1333       REFCNT = 1
1334       FLAGS = (IOK,POK,IsCOW,pIOK,pPOK)
1335       IV = 42
1336       PV = 0x5586ffee7fd0 "42"\0
1337       CUR = 2
1338       LEN = 10
1339       COW_REFCNT = 1
1340
1341 (One can't rely on the presence or absence of the flag C<SVf_IsCOW> to
1342 determine the history of operations on a scalar.)
1343
1344 Previously both cases would be indistinguishable, with all 4 flags set:
1345
1346     SV = PVIV(0x55d4d62edaf0) at 0x55d4d62f0930
1347       REFCNT = 1
1348       FLAGS = (IOK,POK,pIOK,pPOK)
1349       IV = 42
1350       PV = 0x55d4d62e1740 "42"\0
1351       CUR = 2
1352       LEN = 10
1353
1354 (and possibly C<SVf_IsCOW>, but not always)
1355
1356 This now means that if XS code I<really> needs to determine which form a value
1357 was first written as, it should implement logic roughly
1358
1359     if (flags & SVf_IOK|SVf_NOK) && !(flags & SVf_POK)
1360         serialize as number
1361     else if (flags & SVf_POK)
1362         serialize as string
1363     else
1364         the existing guesswork ...
1365
1366 Note that this doesn't cover "dualvars" - scalars that report different
1367 values when asked for their string form or number form (such as C<$!>).
1368 Most serialization formats cannot represent such duplicity.
1369
1370 I<The existing guesswork> remains because as well as dualvars, values might
1371 be C<undef>, references, overloaded references, typeglobs and other things that
1372 Perl itself can represent but do not map one-to-one into external formats, so
1373 need some amount of approximation or encapsulation.
1374
1375 =item *
1376
1377 C<sv_dump> (and L<Devel::Peek>’s C<Dump> function) now escapes high-bit
1378 octets in the PV as hex rather than octal. Since most folks understand hex
1379 more readily than octal, this should make these dumps a bit more legible.
1380 This does B<not> affect any other diagnostic interfaces like C<pv_display>.
1381
1382 =back
1383
1384 =head1 Selected Bug Fixes
1385
1386 =over 4
1387
1388 =item *
1389
1390 utime() now correctly sets errno/C<$!> when called on a closed handle.
1391
1392 =item *
1393
1394 The flags on the OPTVAL parameter to setsockopt() were previously
1395 checked before magic was called, possibly treating a numeric value as
1396 a packed buffer or vice versa.  It also ignored the UTF-8 flag,
1397 potentially treating the internal representation of an upgraded SV as
1398 the bytes to supply to the setsockopt() system call.  (github L<#18660|https://github.com/Perl/perl5/issues/18660>)
1399
1400 =item *
1401
1402 Only set IOKp, not IOK on $) and $(.
1403 This was issue L<#18955|https://github.com/Perl/perl5/issues/18955>: This will prevent serializers from serializing these
1404 variables as numbers (which loses the additional groups).
1405 This restores behaviour from 5.16
1406
1407 =item *
1408
1409 Use of the C<mktables> debugging facility would cause perl to croak since
1410 v5.31.10; this problem has now been fixed.
1411
1412 =item *
1413
1414 C<makedepend> logic is now compatible with BSD make (fixes
1415 L<GH #19046|https://github.com/Perl/perl5/issues/19046>).
1416
1417 =item *
1418
1419 Calling C<untie> on a tied hash that is partway through iteration now frees the
1420 iteration state immediately.
1421
1422 Iterating a tied hash causes perl to store a copy of the current hash key to
1423 track the iteration state, with this stored copy passed as the second parameter
1424 to C<NEXTKEY>. This internal state is freed immediately when tie hash iteration
1425 completes, or if the hash is destroyed, but due to an implementation oversight,
1426 it was not freed if the hash was untied. In that case, the internal copy of the
1427 key would persist until the earliest of
1428
1429 =over 4
1430
1431 =item 1
1432
1433 C<tie> was called again on the same hash
1434
1435 =item 2
1436
1437 The (now untied) hash was iterated (ie passed to any of C<keys>, C<values> or
1438 C<each>)
1439
1440 =item 3
1441
1442 The hash was destroyed.
1443
1444 =back
1445
1446 This inconsistency is now fixed - the internal state is now freed immediately by
1447 C<untie>.
1448
1449 As the precise timing of this behaviour can be observed with pure Perl code
1450 (the timing of C<DESTROY> on objects returned from C<FIRSTKEY> and C<NEXTKEY>)
1451 it's just possible that some code is sensitive to it.
1452
1453 =item *
1454
1455 The C<Internals::getcwd()> function added for bootstrapping miniperl
1456 in perl 5.30.0 is now only available in miniperl. [github #19122]
1457
1458 =item *
1459
1460 Setting a breakpoint on a BEGIN or equivalently a C<use> statement
1461 could cause a memory write to a freed C<dbstate> op.
1462 [L<GH #19198|https://github.com/Perl/perl5/issues/19198>]
1463
1464 =item *
1465
1466 When bareword filehandles are disabled, the parser was interpreting
1467 any bareword as a filehandle, even when immediatey followed by parens.
1468
1469 =back
1470
1471 =head1 Errata From Previous Releases
1472
1473 =over 4
1474
1475 =item *
1476
1477 L<perl5300delta> mistakenly identified a CVE whose correct identification is
1478 CVE-2015-1592.
1479
1480 =back
1481
1482 =head1 Obituaries
1483
1484 Raun "Spider" Boardman (SPIDB on CPAN), author of at least 66 commits to the
1485 Perl 5 core distribution between 1996 and 2002, passed away May 24, 2021 from
1486 complications of COVID.  He will be missed.
1487
1488 David H. Adler (DHA) passed away on November 16, 2021.  In 1997, David
1489 co-founded NY.pm, the first Perl user group, and in 1998 co-founded Perl
1490 Mongers to help establish other user groups across the globe.  He was a
1491 frequent attendee at Perl conferences in both North America and Europe and well
1492 known for his role in organizing I<Bad Movie Night> celebrations at those
1493 conferences.  He also contributed to the work of the Perl Foundation, including
1494 administering the White Camel awards for community service.  He will be missed.
1495
1496 =head1 Acknowledgements
1497
1498 Perl 5.36.0 represents approximately a year of development since Perl
1499 5.34.0 and contains approximately 250,000 lines of changes across 2,000
1500 files from 82 authors.
1501
1502 Excluding auto-generated files, documentation and release tools, there were
1503 approximately 190,000 lines of changes to 1,300 .pm, .t, .c and .h files.
1504
1505 Perl continues to flourish into its fourth decade thanks to a vibrant
1506 community of users and developers. The following people are known to have
1507 contributed the improvements that became Perl 5.36.0:
1508
1509 Alyssa Ross, Andrew Fresh, Aristotle Pagaltzis, Asher Mancinelli, Atsushi
1510 Sugawara, Ben Cornett, Bernd, Biswapriyo Nath, Brad Barden, Bram, Branislav
1511 Zahradník, brian d foy, Chad Granum, Chris 'BinGOs' Williams, Christian
1512 Walde (Mithaldu), Christopher Yeleighton, Craig A. Berry, cuishuang, Curtis
1513 Poe, Dagfinn Ilmari Mannsåker, Dan Book, Daniel Laügt, Dan Jacobson, Dan
1514 Kogai, Dave Cross, Dave Lambley, David Cantrell, David Golden, David
1515 Marshall, David Mitchell, E. Choroba, Eugen Konkov, Felipe Gasper, François
1516 Perrad, Graham Knop, H.Merijn Brand, Hugo van der Sanden, Ilya Sashcheka,
1517 Ivan Panchenko, Jakub Wilk, James E Keenan, James Raspass, Karen Etheridge,
1518 Karl Williamson, Leam Hall, Leon Timmermans, Magnus Woldrich, Matthew
1519 Horsfall, Max Maischein, Michael G Schwern, Michiel Beijen, Mike Fulton,
1520 Neil Bowers, Nicholas Clark, Nicolas R, Niyas Sait, Olaf Alders, Paul Evans,
1521 Paul Marquess, Petar-Kaleychev, Pete Houston, Renee Baecker, Ricardo Signes,
1522 Richard Leach, Robert Rothenberg, Sawyer X, Scott Baker, Sergey Poznyakoff,
1523 Sergey Zhmylove, Sisyphus, Slaven Rezic, Steve Hay, Sven Kirmess, TAKAI
1524 Kousuke, Thibault Duponchelle, Todd Rinaldo, Tomasz Konojacki, Tomoyuki
1525 Sadahiro, Tony Cook, Unicode Consortium, Yves Orton, Михаил
1526 Козачков.
1527
1528 The list above is almost certainly incomplete as it is automatically
1529 generated from version control history. In particular, it does not include
1530 the names of the (very much appreciated) contributors who reported issues to
1531 the Perl bug tracker.
1532
1533 Many of the changes included in this version originated in the CPAN modules
1534 included in Perl's core. We're grateful to the entire CPAN community for
1535 helping Perl to flourish.
1536
1537 For a more complete list of all of Perl's historical contributors, please
1538
1539 =head1 Reporting Bugs
1540
1541 If you find what you think is a bug, you might check the perl bug database
1542 at L<https://github.com/Perl/perl5/issues>.  There may also be information at
1543 L<http://www.perl.org/>, the Perl Home Page.
1544
1545 If you believe you have an unreported bug, please open an issue at
1546 L<https://github.com/Perl/perl5/issues>.  Be sure to trim your bug down to a
1547 tiny but sufficient test case.
1548
1549 If the bug you are reporting has security implications which make it
1550 inappropriate to send to a public issue tracker, then see
1551 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
1552 for details of how to report the issue.
1553
1554 =head1 Give Thanks
1555
1556 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
1557 you can do so by running the C<perlthanks> program:
1558
1559     perlthanks
1560
1561 This will send an email to the Perl 5 Porters list with your show of thanks.
1562
1563 =head1 SEE ALSO
1564
1565 The F<Changes> file for an explanation of how to view exhaustive details on
1566 what changed.
1567
1568 The F<INSTALL> file for how to build Perl.
1569
1570 The F<README> file for general stuff.
1571
1572 The F<Artistic> and F<Copying> files for copyright information.
1573
1574 =cut