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