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