xref: /openbsd-src/gnu/usr.bin/perl/pod/perl5300delta.pod (revision 5486feefcc8cb79b19e014ab332cc5dfd05b3b33)
1=encoding utf8
2
3=head1 NAME
4
5perl5300delta - what is new for perl v5.30.0
6
7=head1 DESCRIPTION
8
9This document describes differences between the 5.28.0 release and the 5.30.0
10release.
11
12If you are upgrading from an earlier release such as 5.26.0, first read
13L<perl5280delta>, which describes differences between 5.26.0 and 5.28.0.
14
15=head1 Notice
16
17sv_utf8_(downgrade|decode) are no longer marked as experimental.
18L<[GH #16822]|https://github.com/Perl/perl5/issues/16822>.
19
20=head1 Core Enhancements
21
22=head2 Limited variable length lookbehind in regular expression pattern matching is now experimentally supported
23
24Using a lookbehind assertion (like C<(?<=foo?)> or C<(?<!ba{1,9}r)> previously
25would generate an error and refuse to compile.  Now it compiles (if the
26maximum lookbehind is at most 255 characters), but raises a warning in
27the new C<experimental::vlb> warnings category.  This is to caution you
28that the precise behavior is subject to change based on feedback from
29use in the field.
30
31See L<perlre/(?<=pattern)> and L<perlre/(?<!pattern)>.
32
33=head2 The upper limit C<"n"> specifiable in a regular expression quantifier of the form C<"{m,n}"> has been doubled to 65534
34
35The meaning of an unbounded upper quantifier C<"{m,}"> remains unchanged.
36It matches 2**31 - 1 times on most platforms, and more on ones where a C
37language short variable is more than 4 bytes long.
38
39=head2 Unicode 12.1 is supported
40
41Because of a change in Unicode release cycles, Perl jumps from Unicode
4210.0 in Perl 5.28 to Unicode 12.1 in Perl 5.30.
43
44For details on the Unicode changes, see
45L<https://www.unicode.org/versions/Unicode11.0.0/> for 11.0;
46L<https://www.unicode.org/versions/Unicode12.0.0/> for 12.0;
47and
48L<https://www.unicode.org/versions/Unicode12.1.0/> for 12.1.
49(Unicode 12.1 differs from 12.0 only in the addition of a single
50character, that for the new Japanese era name.)
51
52The Word_Break property, as in past Perl releases, remains tailored to
53behave more in line with expectations of Perl users.  This means that
54sequential runs of horizontal white space characters are not broken
55apart, but kept as a single run.  Unicode 11 changed from past versions
56to be more in line with Perl, but it left several white space characters
57as causing breaks: TAB, NO BREAK SPACE, and FIGURE SPACE (U+2007).  We
58have decided to continue to use the previous Perl tailoring with regards
59to these.
60
61=head2 Wildcards in Unicode property value specifications are now partially supported
62
63You can now do something like this in a regular expression pattern
64
65 qr! \p{nv= /(?x) \A [0-5] \z / }!
66
67which matches all Unicode code points whose numeric value is
68between 0 and 5 inclusive.  So, it could match the Thai or Bengali
69digits whose numeric values are 0, 1, 2, 3, 4, or 5.
70
71This marks another step in implementing the regular expression features
72the Unicode Consortium suggests.
73
74Most properties are supported, with the remainder planned for 5.32.
75Details are in L<perlunicode/Wildcards in Property Values>.
76
77=head2 qr'\N{name}' is now supported
78
79Previously it was an error to evaluate a named character C<\N{...}>
80within a single quoted regular expression pattern (whose evaluation is
81deferred from the normal place).  This restriction is now removed.
82
83=head2 Turkic UTF-8 locales are now seamlessly supported
84
85Turkic languages have different casing rules than other languages for
86the characters C<"i"> and C<"I">.  The uppercase of C<"i"> is LATIN
87CAPITAL LETTER I WITH DOT ABOVE (U+0130); and the lowercase of C<"I"> is LATIN
88SMALL LETTER DOTLESS I (U+0131).  Unicode furnishes alternate casing
89rules for use with Turkic languages.  Previously, Perl ignored these,
90but now, it uses them when it detects that it is operating under a
91Turkic UTF-8 locale.
92
93=head2 It is now possible to compile perl to always use thread-safe locale operations
94
95Previously, these calls were only used when the perl was compiled to be
96multi-threaded.  To always enable them, add
97
98 -Accflags='-DUSE_THREAD_SAFE_LOCALE'
99
100to your F<Configure> flags.
101
102=head2 Eliminate opASSIGN macro usage from core
103
104This macro is still defined but no longer used in core
105
106=head2 C<-Drv> now means something on C<-DDEBUGGING> builds
107
108Now, adding the verbose flag (C<-Dv>) to the C<-Dr> flag turns on all
109possible regular expression debugging.
110
111=head1 Incompatible Changes
112
113=head2 Assigning non-zero to C<$[> is fatal
114
115Setting L<< C<$[>|perlvar/$[ >> to a non-zero value has been deprecated since
116Perl 5.12 and now throws a fatal error.
117See L<<< perldeprecation/Assigning non-zero to C<< $[ >> is fatal >>>.
118
119=head2 Delimiters must now be graphemes
120
121See L<perldeprecation/Use of unassigned code point or non-standalone grapheme
122for a delimiter.>
123
124=head2 Some formerly deprecated uses of an unescaped left brace C<"{"> in
125regular expression patterns are now illegal
126
127But to avoid breaking code unnecessarily, most instances that issued a
128deprecation warning, remain legal and now have a non-deprecation warning
129raised.  See L<perldeprecation/Unescaped left braces in regular expressions>.
130
131=head2 Previously deprecated sysread()/syswrite() on :utf8 handles is now fatal
132
133Calling sysread(), syswrite(), send() or recv() on a C<:utf8> handle,
134whether applied explicitly or implicitly, is now fatal.  This was
135deprecated in perl 5.24.
136
137There were two problems with calling these functions on C<:utf8>
138handles:
139
140=over
141
142=item *
143
144All four functions only paid attention to the C<:utf8> flag.  Other
145layers were completely ignored, so a handle with
146C<:encoding(UTF-16LE)> layer would be treated as UTF-8.  Other layers,
147such as compression are completely ignored with or without the
148C<:utf8> flag.
149
150=item *
151
152sysread() and recv() would read from the handle, skipping any
153validation by the layers, and do no validation of their own.  This
154could lead to invalidly encoded perl scalars.
155
156=back
157
158L<[GH #14839]|https://github.com/Perl/perl5/issues/14839>.
159
160=head2 my() in false conditional prohibited
161
162Declarations such as C<my $x if 0> are no longer permitted.
163
164L<[GH #16702]|https://github.com/Perl/perl5/issues/16702>.
165
166=head2 Fatalize $* and $#
167
168These special variables, long deprecated, now throw exceptions when used.
169
170L<[GH #16718]|https://github.com/Perl/perl5/issues/16718>.
171
172=head2 Fatalize unqualified use of dump()
173
174The C<dump()> function, long discouraged, may no longer be used unless it is
175fully qualified, I<i.e.>, C<CORE::dump()>.
176
177L<[GH #16719]|https://github.com/Perl/perl5/issues/16719>.
178
179=head2 Remove File::Glob::glob()
180
181The C<File::Glob::glob()> function, long deprecated, has been removed and now
182throws an exception which advises use of C<File::Glob::bsd_glob()> instead.
183
184L<[GH #16721]|https://github.com/Perl/perl5/issues/16721>.
185
186=head2 C<pack()> no longer can return malformed UTF-8
187
188It croaks if it would otherwise return a UTF-8 string that contains
189malformed UTF-8.  This protects against potential security threats.  This
190is considered a bug fix as well.
191L<[GH #16035]|https://github.com/Perl/perl5/issues/16035>.
192
193=head2 Any set of digits in the Common script are legal in a script run of another script
194
195There are several sets of digits in the Common script.  C<[0-9]> is the
196most familiar.  But there are also C<[\x{FF10}-\x{FF19}]> (FULLWIDTH
197DIGIT ZERO - FULLWIDTH DIGIT NINE), and several sets for use in
198mathematical notation, such as the MATHEMATICAL DOUBLE-STRUCK DIGITs.
199Any of these sets should be able to appear in script runs of, say,
200Greek.  But the design of 5.30 overlooked all but the ASCII digits
201C<[0-9]>, so the design was flawed.  This has been fixed, so is both a
202bug fix and an incompatibility.
203L<[GH #16704]|https://github.com/Perl/perl5/issues/16704>.
204
205All digits in a run still have to come from the same set of ten digits.
206
207=head2 JSON::PP enables allow_nonref by default
208
209As JSON::XS 4.0 changed its policy and enabled allow_nonref
210by default, JSON::PP also enabled allow_nonref by default.
211
212=head1 Deprecations
213
214=head2 In XS code, use of various macros dealing with UTF-8
215
216This deprecation was scheduled to become fatal in 5.30, but has been
217delayed to 5.32 due to problems that showed up with some CPAN modules.
218For details of what's affected, see L<perldeprecation|
219perldeprecation/In XS code, use of various macros dealing with UTF-8.>.
220
221=head1 Performance Enhancements
222
223=over 4
224
225=item *
226
227Translating from UTF-8 into the code point it represents now is done via a
228deterministic finite automaton, speeding it up.  As a typical example,
229C<ord("\x7fff")> now requires 12% fewer instructions than before.  The
230performance of checking that a sequence of bytes is valid UTF-8 is similarly
231improved, again by using a DFA.
232
233=item *
234
235Eliminate recursion from finalize_op().
236L<[GH #11866]|https://github.com/Perl/perl5/issues/11866>.
237
238=item *
239
240A handful of small optimizations related to character folding
241and character classes in regular expressions.
242
243=item *
244
245Optimization of C<IV> to C<UV> conversions.
246L<[GH #16761]|https://github.com/Perl/perl5/issues/16761>.
247
248=item *
249
250Speed up of the integer stringification algorithm by processing
251two digits at a time instead of one.
252L<[GH #16769]|https://github.com/Perl/perl5/issues/16769>.
253
254=item *
255
256Improvements based on LGTM analysis and recommendation.
257(L<https://lgtm.com/projects/g/Perl/perl5/alerts/?mode=tree>).
258L<[GH #16765]|https://github.com/Perl/perl5/issues/16765>.
259L<[GH #16773]|https://github.com/Perl/perl5/issues/16773>.
260
261=item *
262
263Code optimizations in F<regcomp.c>, F<regcomp.h>, F<regexec.c>.
264
265=item *
266
267Regular expression pattern matching of things like C<qr/[^I<a>]/> is
268significantly sped up, where I<a> is any ASCII character.  Other classes
269can get this speed up, but which ones is complicated and depends on the
270underlying bit patterns of those characters, so differs between ASCII
271and EBCDIC platforms, but all case pairs, like C<qr/[Gg]/> are included,
272as is C<[^01]>.
273
274=back
275
276=head1 Modules and Pragmata
277
278=head2 Updated Modules and Pragmata
279
280=over 4
281
282=item *
283
284L<Archive::Tar> has been upgraded from version 2.30 to 2.32.
285
286=item *
287
288L<B> has been upgraded from version 1.74 to 1.76.
289
290=item *
291
292L<B::Concise> has been upgraded from version 1.003 to 1.004.
293
294=item *
295
296L<B::Deparse> has been upgraded from version 1.48 to 1.49.
297
298=item *
299
300L<bignum> has been upgraded from version 0.49 to 0.51.
301
302=item *
303
304L<bytes> has been upgraded from version 1.06 to 1.07.
305
306=item *
307
308L<Carp> has been upgraded from version 1.38 to 1.50
309
310=item *
311
312L<Compress::Raw::Bzip2> has been upgraded from version 2.074 to 2.084.
313
314=item *
315
316L<Compress::Raw::Zlib> has been upgraded from version 2.076 to 2.084.
317
318=item *
319
320L<Config::Extensions> has been upgraded from version 0.02 to 0.03.
321
322=item *
323
324L<Config::Perl::V>. has been upgraded from version 0.29 to 0.32. This was due
325to a new configuration variable that has influence on binary compatibility:
326C<USE_THREAD_SAFE_LOCALE>.
327
328=item *
329
330L<CPAN> has been upgraded from version 2.20 to 2.22.
331
332=item *
333
334L<Data::Dumper> has been upgraded from version 2.170 to 2.174
335
336L<Data::Dumper> now avoids leaking when C<croak>ing.
337
338=item *
339
340L<DB_File> has been upgraded from version 1.840 to 1.843.
341
342=item *
343
344L<deprecate> has been upgraded from version 0.03 to 0.04.
345
346=item *
347
348L<Devel::Peek> has been upgraded from version 1.27 to 1.28.
349
350=item *
351
352L<Devel::PPPort> has been upgraded from version 3.40 to 3.52.
353
354=item *
355
356L<Digest::SHA> has been upgraded from version 6.01 to 6.02.
357
358=item *
359
360L<Encode> has been upgraded from version 2.97 to 3.01.
361
362=item *
363
364L<Errno> has been upgraded from version 1.29 to 1.30.
365
366=item *
367
368L<experimental> has been upgraded from version 0.019 to 0.020.
369
370=item *
371
372L<ExtUtils::CBuilder> has been upgraded from version 0.280230 to 0.280231.
373
374=item *
375
376L<ExtUtils::Manifest> has been upgraded from version 1.70 to 1.72.
377
378=item *
379
380L<ExtUtils::Miniperl> has been upgraded from version 1.08 to 1.09.
381
382=item *
383
384L<ExtUtils::ParseXS> has been upgraded from version 3.39 to 3.40.
385C<OUTLIST> parameters are no longer incorrectly included in the
386automatically generated function prototype.
387L<[GH #16746]|https://github.com/Perl/perl5/issues/16746>.
388
389=item *
390
391L<feature> has been upgraded from version 1.52 to 1.54.
392
393=item *
394
395L<File::Copy> has been upgraded from version 2.33 to 2.34.
396
397=item *
398
399L<File::Find> has been upgraded from version 1.34 to 1.36.
400
401C<$File::Find::dont_use_nlink> now defaults to 1 on all
402platforms.
403L<[GH #16759]|https://github.com/Perl/perl5/issues/16759>.
404
405Variables C<< $Is_Win32 >> and C<< $Is_VMS >> are being initialized.
406
407=item *
408
409L<File::Glob> has been upgraded from version 1.31 to 1.32.
410
411=item *
412
413L<File::Path> has been upgraded from version 2.15 to 2.16.
414
415=item *
416
417L<File::Spec> has been upgraded from version 3.74 to 3.78.
418
419Silence L<Cwd> warning on Android builds if C<targetsh> is not defined.
420
421=item *
422
423L<File::Temp> has been upgraded from version 0.2304 to 0.2309.
424
425=item *
426
427L<Filter::Util::Call> has been upgraded from version 1.58 to 1.59.
428
429=item *
430
431L<GDBM_File> has been upgraded from version 1.17 to 1.18.
432
433=item *
434
435L<HTTP::Tiny> has been upgraded from version 0.070 to 0.076.
436
437=item *
438
439L<I18N::Langinfo> has been upgraded from version 0.17 to 0.18.
440
441=item *
442
443L<IO> has been upgraded from version 1.39 to 1.40.
444
445=item *
446
447IO-Compress has been upgraded from version 2.074 to 2.084.
448
449Adds support for C<< IO::Uncompress::Zstd >> and
450C<< IO::Uncompress::UnLzip >>.
451
452The C<< BinModeIn >> and C<< BinModeOut >> options are now no-ops.
453ALL files will be read/written in binmode.
454
455=item *
456
457L<IPC::Cmd> has been upgraded from version 1.00 to 1.02.
458
459=item *
460
461L<JSON::PP> has been upgraded from version 2.97001 to 4.02.
462
463L<JSON::PP> as JSON::XS 4.0 enables C<allow_nonref> by default.
464
465=item *
466
467L<lib> has been upgraded from version 0.64 to 0.65.
468
469=item *
470
471L<Locale::Codes> has been upgraded from version 3.56 to 3.57.
472
473=item *
474
475L<Math::BigInt> has been upgraded from version 1.999811 to 1.999816.
476
477C<< bnok() >> now supports the full Kronenburg extension.
478L<[cpan #95628]|https://rt.cpan.org/Ticket/Display.html?id=95628>.
479
480=item *
481
482L<Math::BigInt::FastCalc> has been upgraded from version 0.5006 to 0.5008.
483
484=item *
485
486L<Math::BigRat> has been upgraded from version 0.2613 to 0.2614.
487
488=item *
489
490L<Module::CoreList> has been upgraded from version 5.20180622 to 5.20190520.
491
492Changes to B::Op_private and Config
493
494=item *
495
496L<Module::Load> has been upgraded from version 0.32 to 0.34.
497
498=item *
499
500L<Module::Metadata> has been upgraded from version 1.000033 to 1.000036.
501
502Properly clean up temporary directories after testing.
503
504=item *
505
506L<NDBM_File> has been upgraded from version 1.14 to 1.15.
507
508=item *
509
510L<Net::Ping> has been upgraded from version 2.62 to 2.71.
511
512=item *
513
514L<ODBM_File> has been upgraded from version 1.15 to 1.16.
515
516=item *
517
518PathTools has been upgraded from version 3.74 to 3.78.
519
520=item *
521
522L<parent> has been upgraded from version 0.236 to 0.237.
523
524=item *
525
526L<perl5db.pl> has been upgraded from version 1.54 to 1.55.
527
528Debugging threaded code no longer deadlocks in C<DB::sub> nor
529C<DB::lsub>.
530
531=item *
532
533L<perlfaq> has been upgraded from version 5.021011 to 5.20190126.
534
535=item *
536
537L<PerlIO::encoding> has been upgraded from version 0.26 to 0.27.
538
539Warnings enabled by setting the C<WARN_ON_ERR> flag in
540C<$PerlIO::encoding::fallback> are now only produced if warnings are
541enabled with C<use warnings "utf8";> or setting C<$^W>.
542
543=item *
544
545L<PerlIO::scalar> has been upgraded from version 0.29 to 0.30.
546
547=item *
548
549podlators has been upgraded from version 4.10 to 4.11.
550
551=item *
552
553L<POSIX> has been upgraded from version 1.84 to 1.88.
554
555=item *
556
557L<re> has been upgraded from version 0.36 to 0.37.
558
559=item *
560
561L<SDBM_File> has been upgraded from version 1.14 to 1.15.
562
563=item *
564
565L<sigtrap> has been upgraded from version 1.08 to 1.09.
566
567=item *
568
569L<Storable> has been upgraded from version 3.08 to 3.15.
570
571Storable no longer probes for recursion limits at build time.
572L<[GH #16780]|https://github.com/Perl/perl5/issues/16780>
573and others.
574
575Metasploit exploit code was included to test for CVE-2015-1592
576detection, this caused anti-virus detections on at least one AV suite.
577The exploit code has been removed and replaced with a simple
578functional test.
579L<[GH #16778]|https://github.com/Perl/perl5/issues/16778>
580
581=item *
582
583L<Test::Simple> has been upgraded from version 1.302133 to 1.302162.
584
585=item *
586
587L<Thread::Queue> has been upgraded from version 3.12 to 3.13.
588
589=item *
590
591L<threads::shared> has been upgraded from version 1.58 to 1.60.
592
593Added support for extra tracing of locking, this requires a
594C<-DDEBUGGING> and extra compilation flags.
595
596=item *
597
598L<Time::HiRes> has been upgraded from version 1.9759 to 1.9760.
599
600=item *
601
602L<Time::Local> has been upgraded from version 1.25 to 1.28.
603
604=item *
605
606L<Time::Piece> has been upgraded from version 1.3204 to 1.33.
607
608=item *
609
610L<Unicode::Collate> has been upgraded from version 1.25 to 1.27.
611
612=item *
613
614L<Unicode::UCD> has been upgraded from version 0.70 to 0.72.
615
616=item *
617
618L<User::grent> has been upgraded from version 1.02 to 1.03.
619
620=item *
621
622L<utf8> has been upgraded from version 1.21 to 1.22.
623
624=item *
625
626L<vars> has been upgraded from version 1.04 to 1.05.
627
628C<vars.pm> no longer disables non-vars strict when checking if strict
629vars is enabled.
630L<[GH #15851]|https://github.com/Perl/perl5/issues/15851>.
631
632=item *
633
634L<version> has been upgraded from version 0.9923 to 0.9924.
635
636=item *
637
638L<warnings> has been upgraded from version 1.42 to 1.44.
639
640=item *
641
642L<XS::APItest> has been upgraded from version 0.98 to 1.00.
643
644=item *
645
646L<XS::Typemap> has been upgraded from version 0.16 to 0.17.
647
648=back
649
650=head2 Removed Modules and Pragmata
651
652The following modules will be removed from the core distribution in a
653future release, and will at that time need to be installed from CPAN.
654Distributions on CPAN which require these modules will need to list them as
655prerequisites.
656
657The core versions of these modules will now issue C<"deprecated">-category
658warnings to alert you to this fact.  To silence these deprecation warnings,
659install the modules in question from CPAN.
660
661Note that these are (with rare exceptions) fine modules that you are encouraged
662to continue to use.  Their disinclusion from core primarily hinges on their
663necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
664not usually on concerns over their design.
665
666=over 4
667
668=item *
669
670arybase has been removed. It used to provide the implementation of the C<$[>
671variable (also known as the C<array_base> feature), letting array and string
672indices start at a non-zero value. As the feature has been removed (see
673L</Assigning non-zero to C<$[> is fatal>), this internal module is gone as
674well.
675
676=item *
677
678B::Debug is no longer distributed with the core distribution.  It
679continues to be available on CPAN as
680C<< L<B::Debug|https://metacpan.org/pod/B::Debug> >>.
681
682=item *
683
684Locale::Codes has been removed at the request of its author.  It
685continues to be available on CPAN as
686C<< L<Locale::Codes|https://metacpan.org/pod/Locale::Codes> >>
687L<[GH #16660]|https://github.com/Perl/perl5/issues/16660>.
688
689=back
690
691=head1 Documentation
692
693=head2 Changes to Existing Documentation
694
695We have attempted to update the documentation to reflect the changes
696listed in this document.  If you find any we have missed, send email
697to L<perlbug@perl.org|mailto:perlbug@perl.org>.
698
699=head3 L<perlapi>
700
701=over 4
702
703=item *
704
705C<AvFILL()> was wrongly listed as deprecated.  This has been corrected.
706L<[GH #16586]|https://github.com/Perl/perl5/issues/16586>
707
708=back
709
710=head3 L<perlop>
711
712=over 4
713
714=item *
715
716We no longer have null (empty line) here doc terminators, so
717L<perlop> should not refer to them.
718
719=item *
720
721The behaviour of C<tr> when the delimiter is an apostrophe has been clarified.
722In particular, hyphens aren't special, and C<\x{}> isn't interpolated.
723L<[GH #15853]|https://github.com/Perl/perl5/issues/15853>
724
725=back
726
727=head3 L<perlreapi>, L<perlvar>
728
729=over 4
730
731=item *
732
733Improve docs for lastparen, lastcloseparen.
734
735=back
736
737=head3 L<perlfunc>
738
739=over 4
740
741=item *
742
743The entry for L<perlfunc/-X> has been clarified to indicate that symbolic
744links are followed for most tests.
745
746=item *
747
748Clarification of behaviour of C<reset EXPR>.
749
750=item *
751
752Try to clarify that C<< ref(qr/xx/) >> returns C<Regexp> rather than
753C<REGEXP> and why.
754L<[GH #16801]|https://github.com/Perl/perl5/issues/16801>.
755
756=back
757
758=head3 L<perlreref>
759
760=over 4
761
762=item *
763
764Clarification of the syntax of /(?(cond)yes)/.
765
766=back
767
768=head3 L<perllocale>
769
770=over 4
771
772=item *
773
774There are actually two slightly different types of UTF-8 locales: one for Turkic
775languages and one for everything else. Starting in Perl v5.30, Perl seamlessly
776handles both types.
777
778=back
779
780=head3 L<perlrecharclass>
781
782=over 4
783
784=item *
785
786Added a note for the ::xdigit:: character class.
787
788=back
789
790=head3 L<perlvar>
791
792=over 4
793
794=item *
795
796More specific documentation of paragraph mode.
797L<[GH #16787]|https://github.com/Perl/perl5/issues/16787>.
798
799=back
800
801=head1 Diagnostics
802
803The following additions or changes have been made to diagnostic output,
804including warnings and fatal error messages.  For the complete list of
805diagnostic messages, see L<perldiag>.
806
807=head2 Changes to Existing Diagnostics
808
809=over 4
810
811=item *
812
813As noted under L<Incompatible Changes> above, the deprecation warning
814"Unescaped left brace in regex is deprecated here (and will be fatal in Perl
8155.30), passed through in regex; marked by S<<-- HERE> in m/%s/" has been
816changed to the non-deprecation warning "Unescaped left brace in regex is passed
817through in regex; marked by S<<-- HERE> in m/%s/".
818
819=item *
820
821Specifying C<\o{}> without anything between the braces now yields the
822fatal error message "Empty \o{}".  Previously it was  "Number with no
823digits".  This means the same wording is used for this kind of error as
824with similar constructs such as C<\p{}>.
825
826=item *
827
828Within the scope of the experimental feature C<use re 'strict'>,
829specifying C<\x{}> without anything between the braces now yields the
830fatal error message "Empty \x{}".  Previously it was  "Number with no
831digits".  This means the same wording is used for this kind of error as
832with similar constructs such as C<\p{}>.  It is legal, though not wise
833to have an empty C<\x> outside of C<re 'strict'>; it silently generates
834a NUL character.
835
836=item *
837
838L<Type of arg %d to %s must be %s (not %s)|perldiag/"Type of arg %d to %s must be %s (not %s)">
839
840Attempts to push, pop, etc on a hash or glob now produce this message
841rather than complaining that they no longer work on scalars.
842L<[GH #15774]|https://github.com/Perl/perl5/issues/15774>.
843
844=item *
845
846L<Prototype not terminated|perldiag/"Prototype not terminated">
847
848The file and line number is now reported for this error.
849L<[GH #16697]|https://github.com/Perl/perl5/issues/16697>
850
851=item *
852
853Under C<< -Dr >> (or C<< use re 'Debug' >>) the compiled regex engine
854program is displayed. It used to use two different spellings for I<<
855infinity >>,
856C<< INFINITY >>, and C<< INFTY >>. It now uses the latter exclusively,
857as that spelling has been around the longest.
858
859=back
860
861=head1 Utility Changes
862
863=head2 L<xsubpp>
864
865=over 4
866
867=item *
868
869The generated prototype (with C<< PROTOTYPES: ENABLE >>) would include
870C<< OUTLIST >> parameters, but these aren't arguments to the perl function.
871This has been rectified.
872L<[GH #16746]|https://github.com/Perl/perl5/issues/16746>.
873
874=back
875
876=head1 Configuration and Compilation
877
878=over 4
879
880=item *
881
882Normally the thread-safe locale functions are used only on threaded
883builds.  It is now possible to force their use on unthreaded builds on
884systems that have them available, by including the
885C<-Accflags='-DUSE_THREAD_SAFE_LOCALE'> option to F<Configure>.
886
887=item *
888
889Improve detection of memrchr, strlcat, and strlcpy
890
891=item *
892
893Improve Configure detection of memmem().
894L<[GH #16807]|https://github.com/Perl/perl5/issues/16807>.
895
896=item *
897
898Multiple improvements and fixes for -DPERL_GLOBAL_STRUCT build option.
899
900=item *
901
902Fix -DPERL_GLOBAL_STRUCT_PRIVATE build option.
903
904=back
905
906=head1 Testing
907
908=over 4
909
910=item *
911
912F<t/lib/croak/op>
913L<[GH #15774]|https://github.com/Perl/perl5/issues/15774>.
914
915separate error for C<push>, etc. on hash/glob.
916
917=item *
918
919F<t/op/svleak.t>
920L<[GH #16749]|https://github.com/Perl/perl5/issues/16749>.
921
922Add test for C<goto &sub> in overload leaking.
923
924=item *
925
926Split F<t/re/fold_grind.t> into multiple test files.
927
928=item *
929
930Fix intermittent tests which failed due to race conditions which
931surface during parallel testing.
932L<[GH #16795]|https://github.com/Perl/perl5/issues/16795>.
933
934=item *
935
936Thoroughly test paragraph mode, using a new test file,
937F<t/io/paragraph_mode.t>.
938L<[GH #16787]|https://github.com/Perl/perl5/issues/16787>.
939
940=item *
941
942Some tests in F<< t/io/eintr.t >> caused the process to hang on
943pre-16 Darwin. These tests are skipped for those version of Darwin.
944
945=back
946
947=head1 Platform Support
948
949=head2 Platform-Specific Notes
950
951=over 4
952
953=item HP-UX 11.11
954
955An obscure problem in C<pack()> when compiling with HP C-ANSI-C has been fixed
956by disabling optimizations in F<pp_pack.c>.
957
958=item Mac OS X
959
960Perl's build and testing process on Mac OS X for C<-Duseshrplib>
961builds is now compatible with Mac OS X System Integrity Protection
962(SIP).
963
964SIP prevents binaries in F</bin> (and a few other places) being passed
965the C<DYLD_LIBRARY_PATH> environment variable.  For our purposes this
966prevents C<DYLD_LIBRARY_PATH> from being passed to the shell, which
967prevents that variable being passed to the testing or build process,
968so running C<perl> couldn't find F<libperl.dylib>.
969
970To work around that, the initial build of the F<perl> executable
971expects to find F<libperl.dylib> in the build directory, and the
972library path is then adjusted during installation to point to the
973installed library.
974
975L<[GH #15057]|https://github.com/Perl/perl5/issues/15057>.
976
977=item Minix3
978
979Some support for Minix3 has been re-added.
980
981=item Cygwin
982
983Cygwin doesn't make C<< cuserid >> visible.
984
985=item Win32 Mingw
986
987C99 math functions are now available.
988
989=item Windows
990
991=over 4
992
993=item *
994
995The C<USE_CPLUSPLUS> build option which has long been available in
996F<win32/Makefile> (for B<nmake>) and F<win32/makefile.mk> (for B<dmake>) is now
997also available in F<win32/GNUmakefile> (for B<gmake>).
998
999=item *
1000
1001The B<nmake> makefile no longer defaults to Visual C++ 6.0 (a very old version
1002which is unlikely to be widely used today).  As a result, it is now a
1003requirement to specify the C<CCTYPE> since there is no obvious choice of which
1004modern version to default to instead.  Failure to specify C<CCTYPE> will result
1005in an error being output and the build will stop.
1006
1007(The B<dmake> and B<gmake> makefiles will automatically detect which compiler
1008is being used, so do not require C<CCTYPE> to be set.  This feature has not yet
1009been added to the B<nmake> makefile.)
1010
1011=item *
1012
1013C<sleep()> with warnings enabled for a C<USE_IMP_SYS> build no longer
1014warns about the sleep timeout being too large.
1015L<[GH #16631]|https://github.com/Perl/perl5/issues/16631>.
1016
1017=item *
1018
1019Support for compiling perl on Windows using Microsoft Visual Studio 2019
1020(containing Visual C++ 14.2) has been added.
1021
1022=item *
1023
1024socket() now sets C<$!> if the protocol, address family and socket
1025type combination is not found.
1026L<[GH #16849]|https://github.com/Perl/perl5/issues/16849>.
1027
1028=item *
1029
1030The Windows Server 2003 SP1 Platform SDK build, with its early x64 compiler and
1031tools, was accidentally broken in Perl 5.27.9.  This has now been fixed.
1032
1033=back
1034
1035=back
1036
1037=head1 Internal Changes
1038
1039=over 4
1040
1041=item *
1042
1043The sizing pass has been eliminated from the regular expression
1044compiler.  An extra pass may instead be needed in some cases to count
1045the number of parenthetical capture groups.
1046
1047=item *
1048
1049A new function L<perlapi/C<my_strtod>> or its synonym, Strtod(), is
1050now available with the same signature as the libc strtod().  It provides
1051strotod() equivalent behavior on all platforms, using the best available
1052precision, depending on platform capabilities and F<Configure> options,
1053while handling locale-related issues, such as if the radix character
1054should be a dot or comma.
1055
1056=item *
1057
1058Added C<newSVsv_nomg()> to copy a SV without processing get magic on
1059the source.
1060L<[GH #16461]|https://github.com/Perl/perl5/issues/16461>.
1061
1062=item *
1063
1064It is now forbidden to malloc more than C<PTRDIFF_T_MAX> bytes.  Much
1065code (including C optimizers) assumes that all data structures will not
1066be larger than this, so this catches such attempts before overflow
1067happens.
1068
1069=item *
1070
1071Two new regnodes have been introduced C<< EXACT_ONLY8 >>, and
1072C<< EXACTFU_ONLY8 >>. They're equivalent to C<< EXACT >> and C<< EXACTFU >>,
1073except that they contain a code point which requires UTF-8 to
1074represent/match. Hence, if the target string isn't UTF-8, we know
1075it can't possibly match, without needing to try.
1076
1077=item *
1078
1079C<< print_bytes_for_locale() >> is now defined if C<< DEBUGGING >>,
1080Prior, it didn't get defined unless C<< LC_COLLATE >> was defined
1081on the platform.
1082
1083=back
1084
1085=head1 Selected Bug Fixes
1086
1087=over 4
1088
1089=item *
1090
1091Compilation under C<-DPERL_MEM_LOG> and C<-DNO_LOCALE> have been fixed.
1092
1093=item *
1094
1095Perl 5.28 introduced an C<index()> optimization when comparing to -1 (or
1096indirectly, e.g. >= 0).  When this optimization was triggered inside a C<when>
1097clause it caused a warning ("Argument %s isn't numeric in smart match").  This
1098has now been fixed.
1099L<[GH #16626]|https://github.com/Perl/perl5/issues/16626>
1100
1101=item *
1102
1103The new in-place editing code no longer leaks directory handles.
1104L<[GH #16602]|https://github.com/Perl/perl5/issues/16602>.
1105
1106=item *
1107
1108Warnings produced from constant folding operations on overloaded
1109values no longer produce spurious "Use of uninitialized value"
1110warnings.
1111L<[GH #16349]|https://github.com/Perl/perl5/issues/16349>.
1112
1113=item *
1114
1115Fix for "mutator not seen in (lex = ...) .= ..."
1116L<[GH #16655]|https://github.com/Perl/perl5/issues/16655>.
1117
1118=item *
1119
1120C<pack "u", "invalid uuencoding"> now properly NUL terminates the
1121zero-length SV produced.
1122L<[GH #16343]|https://github.com/Perl/perl5/issues/16343>.
1123
1124=item *
1125
1126Improve the debugging output for calloc() calls with C<-Dm>.
1127L<[GH #16653]|https://github.com/Perl/perl5/issues/16653>.
1128
1129=item *
1130
1131Regexp script runs were failing to permit ASCII digits in some cases.
1132L<[GH #16704]|https://github.com/Perl/perl5/issues/16704>.
1133
1134=item *
1135
1136On Unix-like systems supporting a platform-specific technique for
1137determining L<< C<$^X>|perlvar/$^X >>, Perl failed to fall back to the
1138generic technique when the platform-specific one fails (for example, a Linux
1139system with /proc not mounted).  This was a regression in Perl 5.28.0.
1140L<[GH #16715]|https://github.com/Perl/perl5/issues/16715>.
1141
1142=item *
1143
1144L<SDBM_File> is now more robust with corrupt database files.  The
1145improvements do not make SDBM files suitable as an interchange format.
1146L<[GH #16164]|https://github.com/Perl/perl5/issues/16164>.
1147
1148=item *
1149
1150C<binmode($fh);> or C<binmode($fh, ':raw');> now properly removes the
1151C<:utf8> flag from the default C<:crlf> I/O layer on Win32.
1152L<[GH #16730]|https://github.com/Perl/perl5/issues/16730>.
1153
1154=item *
1155
1156The experimental reference aliasing feature was misinterpreting array and
1157hash slice assignment as being localised, e.g.
1158
1159    \(@a[3,5,7]) = \(....);
1160
1161was being interpreted as:
1162
1163    local \(@a[3,5,7]) = \(....);
1164
1165L<[GH #16701]|https://github.com/Perl/perl5/issues/16701>.
1166
1167=item *
1168
1169C<sort SUBNAME> within an C<eval EXPR> when C<EXPR> was UTF-8 upgraded
1170could panic if the C<SUBNAME> was non-ASCII.
1171L<[GH #16979]|https://github.com/Perl/perl5/issues/16979>.
1172
1173=item *
1174
1175Correctly handle realloc() modifying C<errno> on success so that the
1176modification isn't visible to the perl user, since realloc() is called
1177implicitly by the interpreter.  This modification is permitted by the
1178C standard, but has only been observed on FreeBSD 13.0-CURRENT.
1179L<[GH #16907]|https://github.com/Perl/perl5/issues/16907>.
1180
1181=item *
1182
1183Perl now exposes POSIX C<getcwd> as C<Internals::getcwd()> if
1184available.  This is intended for use by C<Cwd.pm> during bootstrapping
1185and may be removed or changed without notice.  This fixes some
1186bootstrapping issues while building perl in a directory where some
1187ancestor directory isn't readable.
1188L<[GH #16903]|https://github.com/Perl/perl5/issues/16903>.
1189
1190=item *
1191
1192C<pack()> no longer can return malformed UTF-8.  It croaks if it would
1193otherwise return a UTF-8 string that contains malformed UTF-8.  This
1194protects against potential security threats.
1195L<[GH #16035]|https://github.com/Perl/perl5/issues/16035>.
1196
1197=item *
1198
1199See L</Any set of digits in the Common script are legal in a script run
1200of another script>.
1201
1202=item *
1203
1204Regular expression matching no longer leaves stale UTF-8 length magic
1205when updating C<$^R>. This could result in C<length($^R)> returning
1206an incorrect value.
1207
1208=item *
1209
1210Reduce recursion on ops
1211L<[GH #11866]|https://github.com/Perl/perl5/issues/11866>.
1212
1213This can prevent stack overflow when processing extremely deep op
1214trees.
1215
1216=item *
1217
1218Avoid leak in multiconcat with overloading.
1219L<[GH #16823]|https://github.com/Perl/perl5/issues/16823>.
1220
1221=item *
1222
1223The handling of user-defined C<\p{}> properties (see
1224L<perlunicode/User-Defined Character Properties>) has been rewritten to
1225be in C (instead of Perl).  This speeds things up, but in the process
1226several inconsistencies and bug fixes are made.
1227
1228=over 4
1229
1230=item 1
1231
1232A few error messages have minor wording changes.  This is essentially
1233because the new way is integrated into the regex error handling
1234mechanism that marks the position in the input at which the error
1235occurred.  That was not possible previously.  The messages now also
1236contain additional back-trace-like information in case the error occurs
1237deep in nested calls.
1238
1239=item 2
1240
1241A user-defined property is implemented as a perl subroutine with certain
1242highly constrained naming conventions.  It was documented previously
1243that the sub would be in the current package if the package was
1244unspecified.  This turned out not to be true in all cases, but now it
1245is.
1246
1247=item 3
1248
1249All recursive calls are treated as infinite recursion.  Previously they
1250would cause the interpreter to panic.  Now, they cause the regex pattern
1251to fail to compile.
1252
1253=item 4
1254
1255Similarly, any other error likely would lead to a panic; now to just the
1256pattern failing to compile.
1257
1258=item 5
1259
1260The old mechanism did not detect illegal ranges in the definition of the
1261property.  Now, the range max must not be smaller than the range min.
1262Otherwise, the pattern fails to compile.
1263
1264=item 6
1265
1266The intention was to have each sub called only once during the lifetime
1267of the program, so that a property's definition is immutable.  This was
1268relaxed so that it could be called once for all /i compilations, and
1269potentially a second time for non-/i (the sub is passed a parameter
1270indicating which).  However, in practice there were instances when this
1271was broken, and multiple calls were possible.  Those have been fixed.
1272Now (besides the /i,non-/i cases) the only way a sub can be called
1273multiple times is if some component of it has not been defined yet.  For
1274example, suppose we have sub IsA() whose definition is known at compile
1275time, and it in turn calls isB() whose definition is not yet known.
1276isA() will be called each time a pattern it appears in is compiled.  If
1277isA() also calls isC() and that definition is known, isC() will be
1278called just once.
1279
1280=item 7
1281
1282There were some races and very long hangs should one thread be compiling
1283the same property as another simultaneously.  These have now been fixed.
1284
1285=back
1286
1287=item *
1288
1289Fixed a failure to match properly.
1290
1291An EXACTFish regnode has a finite length it can hold for the string
1292being matched.  If that length is exceeded, a second node is used for
1293the next segment of the string, for as many regnodes as are needed.
1294Care has to be taken where to break the string, in order to deal
1295multi-character folds in Unicode correctly. If we want to break a
1296string at a place which could potentially be in the middle of a
1297multi-character fold, we back off one (or more) characters, leaving
1298a shorter EXACTFish regnode. This backing off mechanism contained
1299an off-by-one error.
1300L<[GH #16806]|https://github.com/Perl/perl5/issues/16806>.
1301
1302=item *
1303
1304A bare C<eof> call with no previous file handle now returns true.
1305L<[GH #16786]|https://github.com/Perl/perl5/issues/16786>
1306
1307=item *
1308
1309Failing to compile a format now aborts compilation.  Like other errors
1310in sub-parses this could leave the parser in a strange state, possibly
1311crashing perl if compilation continued.
1312L<[GH #16169]|https://github.com/Perl/perl5/issues/16169>
1313
1314=item *
1315
1316If an in-place edit is still in progress during global destruction and
1317the process exit code (as stored in C<$?>) is zero, perl will now
1318treat the in-place edit as successful, replacing the input file with
1319any output produced.
1320
1321This allows code like:
1322
1323  perl -i -ne 'print "Foo"; last'
1324
1325to replace the input file, while code like:
1326
1327  perl -i -ne 'print "Foo"; die'
1328
1329will not.  Partly resolves
1330L<[GH #16748]|https://github.com/Perl/perl5/issues/16748>.
1331
1332=item *
1333
1334A regression in 5.28 caused the following code to fail
1335
1336 close(STDIN); open(CHILD, "|wc -l")'
1337
1338because the child's stdin would be closed on exec. This has now been fixed.
1339
1340=item *
1341
1342Fixed an issue where compiling a regexp containing both compile-time
1343and run-time code blocks could lead to trying to compile something
1344which is invalid syntax.
1345
1346=item *
1347
1348Fixed build failures with C<< -DNO_LOCALE_NUMERIC >> and
1349C<< -DNO_LOCALE_COLLATE >>.
1350L<[GH #16771]|https://github.com/Perl/perl5/issues/16771>.
1351
1352=item *
1353
1354Prevent the tests in F<< ext/B/t/strict.t >> from being skipped.
1355L<[GH #16783]|https://github.com/Perl/perl5/issues/16783>.
1356
1357=item *
1358
1359C<< /di >> nodes ending or beginning in I<s> are now C<< EXACTF >>. We do not
1360want two C<< EXACTFU >> to be joined together during optimization,
1361and to form a C<< ss >>, C<< sS >>, C<< Ss >> or C<< SS >> sequence;
1362they are the only multi-character sequences which may match differently
1363under C<< /ui >> and C<< /di >>.
1364
1365=back
1366
1367=head1 Acknowledgements
1368
1369Perl 5.30.0 represents approximately 11 months of development since Perl
13705.28.0 and contains approximately 620,000 lines of changes across 1,300
1371files from 58 authors.
1372
1373Excluding auto-generated files, documentation and release tools, there were
1374approximately 510,000 lines of changes to 750 .pm, .t, .c and .h files.
1375
1376Perl continues to flourish into its fourth decade thanks to a vibrant
1377community of users and developers. The following people are known to have
1378contributed the improvements that became Perl 5.30.0:
1379
1380Aaron Crane, Abigail, Alberto Simões, Alexandr Savca, Andreas König, Andy
1381Dougherty, Aristotle Pagaltzis, Brian Greenfield, Chad Granum, Chris
1382'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Book, Dan
1383Dedrick, Daniel Dragan, Dan Kogai, David Cantrell, David Mitchell, Dominic
1384Hargreaves, E. Choroba, Ed J, Eugen Konkov, François Perrad, Graham Knop,
1385Hauke D, H.Merijn Brand, Hugo van der Sanden, Jakub Wilk, James Clarke,
1386James E Keenan, Jerry D. Hedden, Jim Cromie, John SJ Anderson, Karen
1387Etheridge, Karl Williamson, Leon Timmermans, Matthias Bethke, Nicholas
1388Clark, Nicolas R., Niko Tyni, Pali, Petr Písař, Phil Pearl (Lobbes),
1389Richard Leach, Ryan Voots, Sawyer X, Shlomi Fish, Sisyphus, Slaven Rezic,
1390Steve Hay, Sullivan Beck, Tina Müller, Tomasz Konojacki, Tom Wyant, Tony
1391Cook, Unicode Consortium, Yves Orton, Zak B. Elep.
1392
1393The list above is almost certainly incomplete as it is automatically
1394generated from version control history. In particular, it does not include
1395the names of most of the (very much appreciated) contributors who reported
1396issues to the Perl bug tracker. Noteworthy in this release were the large
1397number of bug fixes made possible by Sergey Aleynikov's high quality perlbug
1398reports for issues he discovered by fuzzing with AFL.
1399
1400Many of the changes included in this version originated in the CPAN modules
1401included in Perl's core. We're grateful to the entire CPAN community for
1402helping Perl to flourish.
1403
1404For a more complete list of all of Perl's historical contributors, please
1405see the F<AUTHORS> file in the Perl source distribution.
1406
1407=head1 Reporting Bugs
1408
1409If you find what you think is a bug, you might check the perl bug database
1410at L<https://rt.perl.org/>.  There may also be information at
1411L<http://www.perl.org/>, the Perl Home Page.
1412
1413If you believe you have an unreported bug, please run the L<perlbug> program
1414included with your release.  Be sure to trim your bug down to a tiny but
1415sufficient test case.  Your bug report, along with the output of C<perl -V>,
1416will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
1417
1418If the bug you are reporting has security implications which make it
1419inappropriate to send to a publicly archived mailing list, then see
1420L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
1421for details of how to report the issue.
1422
1423=head1 Give Thanks
1424
1425If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
1426you can do so by running the C<perlthanks> program:
1427
1428    perlthanks
1429
1430This will send an email to the Perl 5 Porters list with your show of thanks.
1431
1432=head1 SEE ALSO
1433
1434The F<Changes> file for an explanation of how to view exhaustive details on
1435what changed.
1436
1437The F<INSTALL> file for how to build Perl.
1438
1439The F<README> file for general stuff.
1440
1441The F<Artistic> and F<Copying> files for copyright information.
1442
1443=cut
1444