This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: Fix broken link
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
2c8edc25 5perldelta - what is new for perl v5.26.0
eabfc7bc 6
2cfe9b50 7=head1 DESCRIPTION
eabfc7bc 8
2c8edc25
S
9This document describes the differences between the 5.24.0 release and the
105.26.0 release.
11
12=head1 Core Enhancements
f3ed8cbf 13
2c8edc25 14=head2 New regular expression modifier C</xx>
f4b40f11 15
2c8edc25
S
16Specifying two C<x> characters to modify a regular expression pattern
17does everything that a single one does, but additionally TAB and SPACE
18characters within a bracketed character class are generally ignored and
19can be added to improve readability, like
20S<C</[ ^ A-Z d-f p-x ]/xx>>. Details are at
21L<perlre/E<sol>x and E<sol>xx>.
5e50eae4 22
2c8edc25 23=head2 New Hash Function For 64-bit Builds
a049258c 24
2c8edc25
S
25We have switched to a hybrid hash function to better balance
26performance for short and long keys.
27
28For short keys, 16 bytes and under, we use an optimised variant of
29One At A Time Hard, and for longer keys we use Siphash 1-3. For very
30long keys this is a big improvement in performance. For shorter keys
31there is a modest improvement.
32
33=head2 Indented Here-documents
34
35This adds a new modifier '~' to here-docs that tells the parser
36that it should look for /^\s*$DELIM\n/ as the closing delimiter.
37
38These syntaxes are all supported:
39
40 <<~EOF;
41 <<~\EOF;
42 <<~'EOF';
43 <<~"EOF";
44 <<~`EOF`;
45 <<~ 'EOF';
46 <<~ "EOF";
47 <<~ `EOF`;
48
49The '~' modifier will strip, from each line in the here-doc, the
50same whitespace that appears before the delimiter.
51
52Newlines will be copied as is, and lines that don't include the
53proper beginning whitespace will cause perl to croak.
54
55For example:
56
57 if (1) {
58 print <<~EOF;
59 Hello there
60 EOF
61 }
62
63prints "Hello there\n" with no leading whitespace.
64
65=head2 '.' and @INC
66
90ed3b64
AB
67Since time immemorial Perl has, as a last resort, loaded libraries
68from the current directory. For security reasons this is no longer the
69case, the C<@INC> variable no longer contains C<.> as its last element
70by default.
71
72If you want to disable this behavior at compile-time build perl with
73C<-Udefault_inc_excludes_dot> (C<-Ddefault_inc_excludes_dot> being the
74default now).
75
76If you'd like to add C<.> back to C<@INC> at runtime set
77C<PERL_USE_UNSAFE_INC=1> in the environment before starting
78perl. Setting it to 1 restores C<.> in the C<@INC> when perl otherwise
79lacks it.
80
81Various toolchain modules will set C<PERL_USE_UNSAFE_INC=1>
82themselves. E.g. L<Test::Harness> sets it since loading modules from a
83relative path is a common idiom in test code. If you find that you
84have C<.> in C<@INC> on a perl built with default settings it's likely
85that your code is being invoked by a toolchain module of some sort.
2c8edc25 86
2c8edc25
S
87=head2 @{^CAPTURE}, %{^CAPTURE}, and %{^CAPTURE_ALL}
88
89C<@{^CAPTURE}> exposes the capture buffers of the last match as an
95013431
YO
90array. So C<$1> is C<${^CAPTURE}[0]>. This is a more efficient equivalent
91to code like C<substr($matched_string,$-[0],$+[0]-$-[0])>, and you don't
92have to keep track of the C<$matched_string> either. This variable has no
93single character equivalent. Note like the other regex magic variables
94the contents of this variable is dynamic, if you wish to store it beyond
95the lifetime of the match you must copy it to another array.
2c8edc25 96
95013431
YO
97C<%{^CAPTURE}> is the equivalent to C<%+> (ie named captures). Other than
98being more self documenting there is no difference between the two forms.
2c8edc25
S
99
100C<%{^CAPTURE_ALL}> is the equivalent to C<%-> (ie all named captures).
95013431
YO
101Other than being more self documenting there is no difference between the
102two forms.
2c8edc25
S
103
104=head2 Unicode 9.0 is now supported
105
106A list of changes is at L<http://www.unicode.org/versions/Unicode9.0.0/>.
107Modules that are shipped with core Perl but not maintained by p5p do not
108necessarily support Unicode 9.0. L<Unicode::Normalize> does work on 9.0.
109
110=head2 Use of C<\p{I<script>}> uses the improved Script_Extensions property
111
112Unicode 6.0 introduced an improved form of the Script (C<sc>) property, and
113called it Script_Extensions (C<scx>). As of now, Perl uses this improved
114version when a property is specified as just C<\p{I<script>}>. The meaning of
115compound forms, like C<\p{sc=I<script>}> are unchanged. This should make
116programs be more accurate when determining if a character is used in a given
117script, but there is a slight chance of breakage for programs that very
118specifically needed the old behavior. See L<perlunicode/Scripts>.
119
120=head2 Declaring a reference to a variable
121
122As an experimental feature, Perl now allows the referencing operator to come
123after L<C<my()>|perlfunc/my>, L<C<state()>|perlfunc/state>,
124L<C<our()>|perlfunc/our>, or L<C<local()>|perlfunc/local>. This syntax must
125be enabled with C<use feature 'declared_refs'>. It is experimental, and will
126warn by default unless C<no warnings 'experimental::refaliasing'> is in effect.
127It is intended mainly for use in assignments to references. For example:
128
129 use experimental 'refaliasing', 'declared_refs';
130 my \$a = \$b;
131
a9fbda47 132See L<perlref/Assigning to References> for more details.
a049258c 133
2c8edc25
S
134=head2 Perl can now do default collation in UTF-8 locales on platforms
135that support it
a049258c 136
2c8edc25
S
137Some platforms natively do a reasonable job of collating and sorting in
138UTF-8 locales. Perl now works with those. For portability and full
139control, L<Unicode::Collate> is still recommended, but now you may
140not need to do anything special to get good-enough results, depending on
141your application. See
142L<perllocale/Category C<LC_COLLATE>: Collation: Text Comparisons and Sorting>.
143
144=head2 Better locale collation of strings containing embedded C<NUL>
145characters
146
147In locales that have multi-level character weights, these are now
148ignored at the higher priority ones. There are still some gotchas in
149some strings, though. See
150L<perllocale/Collation of strings containing embedded C<NUL> characters>.
151
152=head2 Lexical subroutines are no longer experimental
153
2586f92e 154Using the C<lexical_subs> feature introduced in v5.18 no longer emits a warning. Existing
2c8edc25
S
155code that disables the C<experimental::lexical_subs> warning category
156that the feature previously used will continue to work. The
157C<lexical_subs> feature has no effect; all Perl code can use lexical
158subroutines, regardless of what feature declarations are in scope.
159
160=head2 C<CORE> subroutines for hash and array functions callable via
161reference
162
163The hash and array functions in the C<CORE> namespace--C<keys>, C<each>,
164C<values>, C<push>, C<pop>, C<shift>, C<unshift> and C<splice>--, can now
165be called with ampersand syntax (C<&CORE::keys(\%hash>) and via reference
e6abae1c 166(C<< my $k = \&CORE::keys; $k-E<gt>(\%hash) >>). Previously they could only be
2c8edc25
S
167used when inlined.
168
169=head2 POSIX::tmpnam() has been removed
170
171The fundamentally unsafe C<tmpnam()> interface was deprecated in
172Perl 5.22.0 and has now been removed. In its place you can use
173for example the L<File::Temp> interfaces.
174
175=head2 require ::Foo::Bar is now illegal.
176
177Formerly, C<require ::Foo::Bar> would try to read F</Foo/Bar.pm>. Now any
178bareword require which starts with a double colon dies instead.
179
180=head2 Unescaped literal C<"{"> characters in regular expression
181patterns are no longer permissible
182
183You have to now say something like C<"\{"> or C<"[{]"> to specify to
184match a LEFT CURLY BRACKET. This will allow future extensions to the
185language. This restriction is not enforced, nor are there current plans
186to enforce it, if the C<"{"> is the first character in the pattern.
187
188These have been deprecated since v5.16, with a deprecation message
189displayed starting in v5.22.
190
191=head2 Literal control character variable names are no longer permissible
192
193A variable name may no longer contain a literal control character under
194any circumstances. These previously were allowed in single-character
195names on ASCII platforms, but have been deprecated there since Perl
196v5.20. This affects things like C<$I<\cT>>, where I<\cT> is a literal
197control (such as a C<NAK> or C<NEGATIVE ACKNOWLEDGE> character) in the
198source code.
199
200=head2 C<NBSP> is no longer permissible in C<\N{...}>
201
202The name of a character may no longer contain non-breaking spaces. It
203has been deprecated to do so since Perl v5.22.
a049258c 204
b4ed7b96
AB
205=head2 create a safer utf8_hop() called utf8_hop_safe()
206
207Unlike utf8_hop(), utf8_hop_safe() won't navigate before the beginning or after
208the end of the supplied buffer.
209
a049258c
S
210=head1 Security
211
2c8edc25
S
212=head2 Remove current dir (C<.>) from C<@INC>
213
214For security reasons, C<@INC> no longer contains the default directory
c11bd60c 215(C<.>). See L</'.' and @INC> in the L</Core Enhancements> section for
90ed3b64 216details.
2c8edc25
S
217
218=head2 "Escaped" colons and relative paths in PATH
219
220On Unix systems, Perl treats any relative paths in the PATH environment
221variable as tainted when starting a new process. Previously, it was
222allowing a backslash to escape a colon (unlike the OS), consequently
223allowing relative paths to be considered safe if the PATH was set to
224something like C</\:.>. The check has been fixed to treat C<.> as tainted
225in that example.
226
227=head2 C<-Di> switch is now required for PerlIO debugging output
228
229Previously PerlIO debugging output would be sent to the file specified
230by the C<PERLIO_DEBUG> environment variable if perl wasn't running
231setuid and the C<-T> or C<-t> switches hadn't been parsed yet.
232
233If perl performed output at a point where it hadn't yet parsed its
234switches this could result in perl creating or overwriting the file
235named by C<PERLIO_DEBUG> even when the C<-T> switch had been supplied.
236
237Perl now requires the C<-Di> switch to produce PerlIO debugging
238output. By default this is written to C<stderr>, but can optionally
239be redirected to a file by setting the C<PERLIO_DEBUG> environment
240variable.
a049258c 241
2c8edc25
S
242If perl is running setuid or the C<-T> switch has supplied
243C<PERLIO_DEBUG> is ignored and the debugging output is sent to
244C<stderr> as for any other C<-D> switch.
a049258c
S
245
246=head1 Incompatible Changes
247
2c8edc25 248=head2 C<${^ENCODING}> has been removed
a049258c 249
2c8edc25
S
250Consequently, the L<encoding> pragma's default mode is no longer supported. If
251you still need to write your source code in encodings other than UTF-8, use a
252source filter such as L<Filter::Encoding> on CPAN or L<encoding>'s C<Filter>
253option.
a049258c 254
2c8edc25
S
255=head2 C<scalar(%hash)> return signature changed
256
257The value returned for C<scalar(%hash)> will no longer show information about
258the buckets allocated in the hash. It will simply return the count of used
259keys. It is thus equivalent to C<0+keys(%hash)>.
260
261A form of backwards compatibility is provided via C<Hash::Util::bucket_ratio()>
262which provides the same behavior as C<scalar(%hash)> provided prior to Perl
2635.25.
264
265=head2 C<keys> returned from an lvalue subroutine
266
267C<keys> returned from an lvalue subroutine can no longer be assigned
268to in list context.
269
270 sub foo : lvalue { keys(%INC) }
271 (foo) = 3; # death
272 sub bar : lvalue { keys(@_) }
273 (bar) = 3; # also an error
274
275This makes the lvalue sub case consistent with C<(keys %hash) = ...> and
276C<(keys @_) = ...>, which are also errors. [perl #128187]
a049258c
S
277
278=head1 Deprecations
279
2c8edc25
S
280=head2 String delimiters that aren't stand-alone graphemes are now deprecated
281
282In order for Perl to eventually allow string delimiters to be Unicode
283grapheme clusters (which look like a single character, but may be
284a sequence of several ones), we have to stop allowing a single char
285delimiter that isn't a grapheme by itself. These are unlikely to exist
286in actual code, as they would typically display as attached to the
287character in front of them.
288
289=head1 Performance Enhancements
a049258c 290
2c8edc25 291=over 4
a049258c 292
2c8edc25 293=item *
a049258c 294
2c8edc25 295A hash in boolean context is now sometimes faster, e.g.
a049258c 296
2c8edc25 297 if (!%h) { ... }
a049258c 298
2c8edc25
S
299This was already special-cased, but some cases were missed, and even the
300ones which weren't have been improved.
a049258c 301
2c8edc25 302=item *
a049258c 303
2c8edc25 304Several other ops may now also be faster in boolean context.
a049258c 305
2c8edc25 306=item * New Faster Hash Function on 64 bit builds
a049258c 307
2c8edc25
S
308We use a different hash function for short and long keys. This should
309improve performance and security, especially for long keys.
a049258c 310
2c8edc25 311=item * readline is faster
a049258c 312
2c8edc25
S
313Reading from a file line-by-line with C<readline()> or C<< E<lt>E<gt> >> should
314now typically be faster due to a better implementation of the code that
315searches for the next newline character.
316
317=item *
a049258c 318
2c8edc25 319Reduce cost of SvVALID().
a049258c 320
2c8edc25 321=item *
ad5c8857 322
2c8edc25 323C<$ref1 = $ref2> has been optimized.
5e50eae4 324
4b99a68c 325=item *
f4b40f11 326
2c8edc25 327Array and hash assignment are now faster, e.g.
ec34c8a4 328
2c8edc25
S
329 (..., @a) = (...);
330 (..., %h) = (...);
f4b40f11 331
2c8edc25 332especially when the RHS is empty.
ec34c8a4 333
2c8edc25 334=item *
a049258c 335
2c8edc25 336Reduce the number of odd special cases for the C<SvSCREAM> flag.
e770df11 337
2c8edc25 338=item *
a049258c 339
2c8edc25
S
340Avoid sv_catpvn() in do_vop() when unneeded.
341
342=item *
343
344Enhancements in Regex concat COW implementation.
345
346=item *
347
d053832c
AB
348Clearing hashes and arrays has been made slightly faster. Now code
349like this is around 5% faster:
350
351 my @a;
352 for my $i (1..3_000_000) {
353 @a = (1,2,3);
354 @a = ();
355 }
356
357and this code around 3% faster:
358
359 my %h;
360 for my $i (1..3_000_000) {
361 %h = qw(a 1 b 2);
362 %h = ();
363 }
2c8edc25
S
364
365=item *
366
367Better optimise array and hash assignment
368
369=item *
370
371Converting a single-digit string to a number is now substantially faster.
372
373=item *
374
375The internal op implementing the C<split> builtin has been simplified and
376sped up. Firstly, it no longer requires a subsidiary internal C<pushre> op
377to do its work. Secondly, code of the form C<my @x = split(...)> is now
378optimised in the same way as C<@x = split(...)>, and is therefore a few
379percent faster.
380
381=item *
382
383The rather slow implementation for the experimental subroutine signatures
384feature has been made much faster; it is now comparable in speed with the
385old-style C<my ($a, $b, @c) = @_>.
7ca0bfc4 386
fbe3f407
S
387=item *
388
2c8edc25
S
389Bareword constant strings are now permitted to take part in constant
390folding. They were originally exempted from constant folding in August 1999,
391during the development of Perl 5.6, to ensure that C<use strict "subs">
392would still apply to bareword constants. That has now been accomplished a
393different way, so barewords, like other constants, now gain the performance
394benefits of constant folding.
395
396This also means that void-context warnings on constant expressions of
397barewords now report the folded constant operand, rather than the operation;
398this matches the behaviour for non-bareword constants.
a049258c
S
399
400=back
401
2c8edc25
S
402=head1 Modules and Pragmata
403
a049258c
S
404=head2 Updated Modules and Pragmata
405
406=over 4
fbe3f407 407
759020c9 408=item *
7ca0bfc4 409
0cc8c746
S
410L<Archive::Tar> has been upgraded from version 2.04 to 2.24.
411
412=item *
413
414L<arybase> has been upgraded from version 0.11 to 0.12.
415
416=item *
417
418L<attributes> has been upgraded from version 0.27 to 0.29.
a049258c 419
2c8edc25
S
420The deprecation message for the C<:unique> and C<:locked> attributes
421now mention they will disappear in Perl 5.28.
a049258c 422
2c8edc25 423=item *
a049258c 424
0cc8c746
S
425L<B> has been upgraded from version 1.62 to 1.68.
426
427=item *
428
429L<B::Concise> has been upgraded from version 0.996 to 0.999.
2c8edc25
S
430
431Its output is now more descriptive for C<op_private> flags.
d5c7a4fc 432
759020c9
S
433=item *
434
0cc8c746
S
435L<B::Debug> has been upgraded from version 1.23 to 1.24.
436
437=item *
438
439L<B::Deparse> has been upgraded from version 1.37 to 1.40.
440
441=item *
442
2c8edc25 443L<B::Xref> has been upgraded from version 1.05 to 1.06.
a049258c 444
2c8edc25 445It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
a049258c 446
2c8edc25 447=item *
a049258c 448
0cc8c746
S
449L<base> has been upgraded from version 2.23 to 2.25.
450
451=item *
452
453L<bignum> has been upgraded from version 0.42 to 0.47.
454
455=item *
456
457L<Carp> has been upgraded from version 1.40 to 1.42.
458
459=item *
460
461L<charnames> has been upgraded from version 1.43 to 1.44.
462
463=item *
464
465L<Compress::Raw::Bzip2> has been upgraded from version 2.069 to 2.074.
466
467=item *
468
469L<Compress::Raw::Zlib> has been upgraded from version 2.069 to 2.074.
470
471=item *
472
473L<Config::Perl::V> has been upgraded from version 0.25 to 0.28.
474
475=item *
476
477L<CPAN> has been upgraded from version 2.11 to 2.18.
478
479=item *
480
481L<CPAN::Meta> has been upgraded from version 2.150005 to 2.150010.
482
483=item *
484
485L<Data::Dumper> has been upgraded from version 2.160 to 2.167.
a049258c 486
2c8edc25 487The XS implementation now supports Deparse.
a049258c 488
2c8edc25 489This fixes a stack management bug. [perl #130487].
a049258c 490
2c8edc25 491=item *
a049258c 492
0cc8c746
S
493L<DB_File> has been upgraded from version 1.835 to 1.840.
494
495=item *
496
497L<Devel::Peek> has been upgraded from version 1.23 to 1.26.
498
499=item *
500
501L<Devel::PPPort> has been upgraded from version 3.32 to 3.35.
502
503=item *
504
2c8edc25 505L<Devel::SelfStubber> has been upgraded from version 1.05 to 1.06.
a049258c 506
2c8edc25 507It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
a049258c 508
2c8edc25 509=item *
a049258c 510
0cc8c746 511L<diagnostics> has been upgraded from version 1.34 to 1.36.
a049258c 512
2c8edc25 513It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
7ca0bfc4 514
ad5c8857 515=item *
7ca0bfc4 516
0cc8c746
S
517L<Digest> has been upgraded from version 1.17 to 1.17_01.
518
519=item *
520
521L<Digest::MD5> has been upgraded from version 2.54 to 2.55.
522
523=item *
524
525L<Digest::SHA> has been upgraded from version 5.95 to 5.96.
526
527=item *
528
529L<DynaLoader> has been upgraded from version 1.38 to 1.42.
530
531=item *
532
533L<Encode> has been upgraded from version 2.80 to 2.88.
534
535=item *
536
537L<encoding> has been upgraded from version 2.17 to 2.19.
8f7edc68 538
2c8edc25
S
539This module's default mode is no longer supported as of Perl 5.25.3. It now
540dies when imported, unless the C<Filter> option is being used.
d5c7a4fc 541
2c8edc25 542=item *
d5c7a4fc 543
2c8edc25 544L<encoding::warnings> has been upgraded from version 0.12 to 0.13.
a049258c 545
2c8edc25
S
546This module is no longer supported as of Perl 5.25.3. It emits a warning to
547that effect and then does nothing.
a049258c 548
2c8edc25 549=item *
d5c7a4fc 550
0cc8c746 551L<Errno> has been upgraded from version 1.25 to 1.28.
a049258c 552
2c8edc25 553Document that using C<%!> loads Errno for you.
d5c7a4fc 554
2c8edc25 555It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
3abe9611 556
c714fb1f 557=item *
3ce6a296 558
2c8edc25 559L<ExtUtils::Embed> has been upgraded from version 1.33 to 1.34.
a049258c 560
2c8edc25 561It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
a049258c 562
2c8edc25 563=item *
a049258c 564
0cc8c746
S
565L<ExtUtils::MakeMaker> has been upgraded from version 7.10_01 to 7.24.
566
567=item *
568
569L<ExtUtils::Miniperl> has been upgraded from version 1.05 to 1.06.
570
571=item *
572
573L<ExtUtils::ParseXS> has been upgraded from version 3.31 to 3.34.
574
575=item *
576
577L<ExtUtils::Typemaps> has been upgraded from version 3.31 to 3.34.
578
579=item *
580
581L<feature> has been upgraded from version 1.42 to 1.47.
2c8edc25
S
582
583Fixes the Unicode Bug in the range operator.
a049258c
S
584
585=item *
5c92a635 586
0cc8c746
S
587L<File::Copy> has been upgraded from version 2.31 to 2.32.
588
589=item *
590
591L<File::Fetch> has been upgraded from version 0.48 to 0.52.
592
593=item *
594
595L<File::Glob> has been upgraded from version 1.26 to 1.28.
d5c7a4fc 596
2c8edc25 597Issue a deprecation message for C<File::Glob::glob()>.
d5c7a4fc 598
2c8edc25 599=item *
d5c7a4fc 600
0cc8c746
S
601L<File::Spec> has been upgraded from version 3.63 to 3.67.
602
603=item *
604
605L<FileHandle> has been upgraded from version 2.02 to 2.03.
606
607=item *
608
2c8edc25 609L<Filter::Simple> has been upgraded from version 0.92 to 0.93.
a049258c 610
2c8edc25
S
611It no longer treats C<no MyFilter> immediately following C<use MyFilter> as
612end-of-file. [perl #107726]
64afbd29
DM
613
614=item *
615
0cc8c746
S
616L<Getopt::Long> has been upgraded from version 2.48 to 2.49.
617
618=item *
619
620L<Getopt::Std> has been upgraded from version 1.11 to 1.12.
621
622=item *
623
624L<Hash::Util> has been upgraded from version 0.19 to 0.22.
625
626=item *
627
628L<HTTP::Tiny> has been upgraded from version 0.056 to 0.070.
a049258c 629
2c8edc25 630Internal 599-series errors now include the redirect history.
a049258c 631
2c8edc25 632=item *
a049258c 633
0cc8c746 634L<I18N::LangTags> has been upgraded from version 0.40 to 0.42.
a049258c 635
2c8edc25 636It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
a049258c 637
2c8edc25 638=item *
a049258c 639
0cc8c746
S
640L<IO> has been upgraded from version 1.36 to 1.38.
641
642=item *
643
601d9a87 644IO-Compress has been upgraded from version 2.069 to 2.074.
0cc8c746
S
645
646=item *
647
648L<IO::Socket::IP> has been upgraded from version 0.37 to 0.38.
649
650=item *
651
652L<IPC::Cmd> has been upgraded from version 0.92 to 0.96.
653
654=item *
655
656L<IPC::SysV> has been upgraded from version 2.06_01 to 2.07.
657
658=item *
659
660L<JSON::PP> has been upgraded from version 2.27300 to 2.27400_02.
661
662=item *
663
2c8edc25
S
664L<lib> has been upgraded from version 0.63 to 0.64.
665
666It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
faab9793 667
c714fb1f 668=item *
ad5c8857 669
0cc8c746
S
670L<List::Util> has been upgraded from version 1.42_02 to 1.46_02.
671
672=item *
673
674L<Locale::Codes> has been upgraded from version 3.37 to 3.42.
675
676=item *
677
678L<Locale::Maketext> has been upgraded from version 1.26 to 1.28.
679
680=item *
681
682L<Locale::Maketext::Simple> has been upgraded from version 0.21 to 0.21_01.
683
684=item *
685
686L<Math::BigInt> has been upgraded from version 1.999715 to 1.999806.
ad5c8857 687
2c8edc25 688There have also been some core customizations.
ad5c8857 689
2c8edc25 690=item *
2e0dcc12 691
0cc8c746
S
692L<Math::BigInt::FastCalc> has been upgraded from version 0.40 to 0.5005.
693
694=item *
695
696L<Math::BigRat> has been upgraded from version 0.260802 to 0.2611.
697
698=item *
699
700L<Math::Complex> has been upgraded from version 1.59 to 1.5901.
701
702=item *
703
704L<Memoize> has been upgraded from version 1.03 to 1.03_01.
705
706=item *
707
708L<Module::CoreList> has been upgraded from version 5.20170420 to 5.20170520.
709
710=item *
711
712L<Module::Load::Conditional> has been upgraded from version 0.64 to 0.68.
713
714=item *
715
716L<Module::Metadata> has been upgraded from version 1.000031 to 1.000033.
717
718=item *
719
720L<mro> has been upgraded from version 1.18 to 1.20.
721
722=item *
723
724L<Net::Ping> has been upgraded from version 2.43 to 2.55.
d5c7a4fc 725
2c8edc25
S
726IPv6 addresses and C<AF_INET6> sockets are now supported, along with several
727other enhancements.
d5c7a4fc 728
2c8edc25
S
729Remove sudo from 500_ping_icmp.t.
730
731Avoid stderr noise in tests
732
733Check for echo in new Net::Ping tests.
d5c7a4fc 734
a049258c 735=item *
d5c7a4fc 736
0cc8c746
S
737L<NEXT> has been upgraded from version 0.65 to 0.67.
738
739=item *
740
741L<Opcode> has been upgraded from version 1.34 to 1.39.
742
743=item *
744
745L<open> has been upgraded from version 1.10 to 1.11.
746
747=item *
748
2c8edc25 749L<OS2::Process> has been upgraded from version 1.11 to 1.12.
a049258c 750
2c8edc25 751It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
a049258c 752
2c8edc25 753=item *
a049258c 754
2c8edc25 755L<overload> has been upgraded from version 1.26 to 1.28.
a049258c 756
2c8edc25 757Its compilation speed has been improved slightly.
a049258c 758
2c8edc25
S
759=item *
760
0cc8c746
S
761L<parent> has been upgraded from version 0.234 to 0.236.
762
763=item *
764
2c8edc25
S
765L<perl5db.pl> has been upgraded from version 1.50 to 1.51.
766
767Ignore F</dev/tty> on non-Unix systems. [perl #113960]
768
769=item *
770
0cc8c746
S
771L<Perl::OSType> has been upgraded from version 1.009 to 1.010.
772
773=item *
774
775L<perlfaq> has been upgraded from version 5.021010 to 5.021011.
776
777=item *
778
779L<PerlIO> has been upgraded from version 1.09 to 1.10.
780
781=item *
782
783L<PerlIO::encoding> has been upgraded from version 0.24 to 0.25.
784
785=item *
786
787L<PerlIO::scalar> has been upgraded from version 0.24 to 0.26.
788
789=item *
790
791L<Pod::Checker> has been upgraded from version 1.60 to 1.73.
792
793=item *
794
795L<Pod::Functions> has been upgraded from version 1.10 to 1.11.
796
797=item *
798
799L<Pod::Html> has been upgraded from version 1.22 to 1.2202.
800
801=item *
802
803L<Pod::Perldoc> has been upgraded from version 3.25_02 to 3.28.
804
805=item *
806
807L<Pod::Simple> has been upgraded from version 3.32 to 3.35.
808
809=item *
810
811L<Pod::Usage> has been upgraded from version 1.68 to 1.69.
812
813=item *
814
815L<POSIX> has been upgraded from version 1.65 to 1.76. This remedies several
2c8edc25
S
816defects in making its symbols exportable. [perl #127821]
817The C<POSIX::tmpnam()> interface has been removed,
818see L</"POSIX::tmpnam() has been removed">.
819Trying to import POSIX subs that have no real implementations
820(like C<POSIX::atend()>) now fails at import time, instead of
821waiting until runtime.
822
823=item *
824
0cc8c746 825L<re> has been upgraded from version 0.32 to 0.34
2c8edc25
S
826
827This adds support for the new L<C<E<47>xx>|perlre/E<sol>x and E<sol>xx>
828regular expression pattern modifier, and a change to the L<S<C<use re
829'strict'>>|re/'strict' mode> experimental feature. When S<C<re
830'strict'>> is enabled, a warning now will be generated for all
831unescaped uses of the two characters C<}> and C<]> in regular
832expression patterns (outside bracketed character classes) that are taken
833literally. This brings them more in line with the C<)> character which
834is always a metacharacter unless escaped. Being a metacharacter only
835sometimes, depending on action at a distance, can lead to silently
836having the pattern mean something quite different than was intended,
837which the S<C<re 'strict'>> mode is intended to minimize.
838
839=item *
840
0cc8c746
S
841L<Safe> has been upgraded from version 2.39 to 2.40.
842
843=item *
844
845L<Scalar::Util> has been upgraded from version 1.42_02 to 1.46_02.
846
847=item *
848
849L<Storable> has been upgraded from version 2.56 to 2.62.
2c8edc25
S
850
851Fixes [perl #130098].
852
853=item *
854
0cc8c746
S
855L<Symbol> has been upgraded from version 1.07 to 1.08.
856
857=item *
858
859L<Sys::Syslog> has been upgraded from version 0.33 to 0.35.
860
861=item *
862
863L<Term::ANSIColor> has been upgraded from version 4.04 to 4.06.
864
865=item *
866
2c8edc25
S
867L<Term::ReadLine> has been upgraded from version 1.15 to 1.16.
868
869It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
870
871=item *
872
0cc8c746 873L<Test> has been upgraded from version 1.28 to 1.30.
2c8edc25
S
874
875It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
876
877=item *
878
0cc8c746
S
879L<Test::Harness> has been upgraded from version 3.36 to 3.38.
880
881=item *
882
883L<Test::Simple> has been upgraded from version 1.001014 to 1.302073.
884
885=item *
886
887L<Thread::Queue> has been upgraded from version 3.09 to 3.12.
888
889=item *
890
2c8edc25
S
891L<Thread::Semaphore> has been upgraded from 2.12 to 2.13.
892
893Added the C<down_timed> method.
894
895=item *
896
0cc8c746 897L<threads> has been upgraded from version 2.07 to 2.15.
2c8edc25
S
898
899Compatibility with 5.8 has been restored.
900
901Fixes [perl #130469].
902
903=item *
904
0cc8c746 905L<threads::shared> has been upgraded from version 1.51 to 1.56.
2c8edc25
S
906
907This fixes [cpan #119529], [perl #130457]
908
909=item *
910
0cc8c746
S
911L<Tie::Hash::NamedCapture> has been upgraded from version 0.09 to 0.10.
912
913=item *
914
915L<Time::HiRes> has been upgraded from version 1.9733 to 1.9741.
2c8edc25
S
916
917It now builds on systems with C++11 compilers (such as G++ 6 and Clang++
9183.9).
919
920Now uses C<clockid_t>.
921
922=item *
923
0cc8c746
S
924L<Time::Local> has been upgraded from version 1.2300 to 1.25.
925
926=item *
927
928L<Unicode::Collate> has been upgraded from version 1.14 to 1.19.
929
930=item *
931
932L<Unicode::UCD> has been upgraded from version 0.64 to 0.68.
2c8edc25
S
933
934It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
935
936=item *
937
0cc8c746
S
938L<version> has been upgraded from version 0.9916 to 0.9917.
939
940=item *
941
942L<VMS::DCLsym> has been upgraded from version 1.06 to 1.08.
2c8edc25
S
943
944It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
a049258c
S
945
946=item *
947
0cc8c746
S
948L<warnings> has been upgraded from version 1.36 to 1.37.
949
950=item *
951
952L<XS::Typemap> has been upgraded from version 0.14 to 0.15.
953
954=item *
955
956L<XSLoader> has been upgraded from version 0.21 to 0.27.
2c8edc25
S
957
958Fixed a security hole in which binary files could be loaded from a path
959outside of L<C<@INC>|perlvar/@INC>.
960
961It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
a049258c
S
962
963=back
964
2c8edc25
S
965=head1 Documentation
966
967=head2 New Documentation
a049258c 968
2c8edc25 969=head3 L<perldeprecation>
a049258c 970
2c8edc25
S
971This file documents all upcoming deprecations, and some of the deprecations
972which already have been removed. The purpose of this documentation is
973two-fold: document what will disappear, and by which version, and serve
974as a guide for people dealing with code which has features that no longer
975work after an upgrade of their perl.
a049258c 976
2c8edc25 977=head2 Changes to Existing Documentation
a049258c 978
2c8edc25 979=head3 L<perlcall>
a049258c
S
980
981=over 4
982
2c8edc25
S
983=item *
984
985Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl 5.30
a049258c 986
2c8edc25
S
987This was changed to drop a leading C<v> in C<v5.30>, so it uses the same
988style as other deprecation messages.
a049258c 989
2c8edc25
S
990=item *
991
992"\c%c" is more clearly written simply as "%s".
993
994It was decided to undeprecate the use of C<\c%c>, see L<http://www.nntp.perl.org/group/perl.perl5.porters/2017/02/msg242944.html>
995
996=item *
997
998Removed redundant C<dSP> from an example.
a049258c 999
2c8edc25 1000=back
a049258c 1001
2c8edc25 1002=head3 L<perlcommunity>
a049258c
S
1003
1004=over 4
1005
2c8edc25 1006=item *
a049258c 1007
2c8edc25 1008All references to Usenet have been removed.
a049258c
S
1009
1010=back
1011
2c8edc25
S
1012=head3 L<perldata>
1013
1014=over 4
1015
1016=item *
1017
1018Updated documentation of C<scalar(%hash)>. See L</scalar(%hash) return
1019signature changed> above.
1020
1021=item *
a049258c 1022
2c8edc25
S
1023Use of single character variables, with the variable name a non printable
1024character in the range C<\x80>-C<\xFF> is no longer allowed. Update the docs to
1025reflect this.
1026
1027=back
1028
1029=head3 L<perldelta>
a049258c
S
1030
1031=over 4
1032
2c8edc25 1033=item *
a049258c 1034
2c8edc25 1035All references to Usenet have been removed.
a049258c
S
1036
1037=back
1038
2c8edc25
S
1039=head3 L<perldiag>
1040
1041=over 4
1042
1043=item *
1044
1045Deprecations are to be marked with a D.
1046C<"%s() is deprecated on :utf8 handles"> use a deprecation message, and as
1047such, such be marked C<"(D deprecated)"> and not C<"(W deprecated)">.
a049258c 1048
2c8edc25 1049=back
a049258c 1050
2c8edc25 1051=head3 L<perlexperiment>
a049258c
S
1052
1053=over 4
1054
1055=item *
1056
2c8edc25 1057Documented new feature: See L</Declaring a reference to a variable> above.
a049258c
S
1058
1059=back
1060
2c8edc25
S
1061=head3 L<perlfunc>
1062
1063=over 4
1064
1065=item *
1066
1067Defined on aggregates is no longer allowed. Perlfunc was still reporting it as
1068deprecated, and that it will be deleted in the future.
1069
1070=item *
1071
1072Clarified documentation of L<C<seek()>|perlfunc/seek>,
1073L<C<tell()>|perlfunc/tell> and L<C<sysseek()>|perlfunc/sysseek>.
1074L<[perl #128607]|https://rt.perl.org/Public/Bug/Display.html?id=128607>
a049258c 1075
2c8edc25
S
1076=item *
1077
1078Removed obsolete documentation of L<C<study()>|perlfunc/study>.
1079
1080=back
a049258c 1081
2c8edc25 1082=head3 L<perlguts>
a049258c
S
1083
1084=over 4
1085
1086=item *
1087
2c8edc25 1088Add C<pTHX_> to magic method examples.
a049258c
S
1089
1090=back
1091
2c8edc25
S
1092=head3 L<perlhack>
1093
1094=over 4
1095
1096=item *
1097
1098Document Tab VS Space.
a049258c 1099
2c8edc25 1100=back
a049258c 1101
2c8edc25 1102=head3 L<perlinterp>
a049258c
S
1103
1104=over 4
1105
1106=item *
1107
2c8edc25
S
1108L<perlinterp> has been expanded to give a more detailed example of how to
1109hunt around in the parser for how a given operator is handled.
a049258c
S
1110
1111=back
1112
2c8edc25 1113=head3 L<perllocale>
a049258c
S
1114
1115=over 4
1116
1117=item *
1118
2c8edc25
S
1119Document C<NUL> collation handling.
1120
1121=item *
1122
1123Some locales aren't compatible with Perl. Note the potential bad
1124consequences of using them.
a049258c
S
1125
1126=back
1127
2c8edc25
S
1128=head3 L<perlmodinstall>
1129
1130=over 4
1131
1132=item *
1133
1134All references to Usenet have been removed.
1135
1136=back
1137
1138=head3 L<perlmodlib>
1139
1140=over 4
1141
1142=item *
1143
1144Updated the mirror list.
1145
1146=item *
1147
1148All references to Usenet have been removed.
1149
1150=back
1151
1152=head3 L<perlnewmod>
1153
1154=over 4
1155
1156=item *
1157
1158All references to Usenet have been removed.
1159
1160=back
1161
1162=head3 L<perlobj>
1163
1164=over 4
1165
1166=item *
1167
1168Added a section on calling methods using their fully qualified names.
1169
1170=item *
1171
1172Do not discourage manual @ISA.
1173
1174=back
1175
1176=head3 L<perlootut>
1177
1178=over 4
1179
1180=item *
1181
1182Tidy the document.
1183
1184=item *
1185
1186Mention C<Moo> more.
1187
1188=back
1189
1190=head3 L<perlop>
1191
1192=over 4
1193
1194=item *
1195
1196Clarify behavior single quote regexps.
1197
1198=back
1199
1200=head3 L<perlre>
1201
1202=over 4
1203
1204=item *
1205
1206Several minor enhancements to the documentation.
1207
1208=back
1209
1210=head3 L<perlsec>
1211
1212=over 4
1213
1214=item *
1215
1216Fixed link to Crosby paper on hash complexity attack.
1217
1218=back
1219
1220=head3 L<perlref>
1221
1222=over 4
1223
1224=item *
1225
1226Documented new feature: See L</Declaring a reference to a variable> above.
1227
1228=back
1229
1230=head3 L<perltie>
1231
1232=over 4
1233
1234=item *
1235
1236Updated documentation of C<scalar(%hash)>. See L</scalar(%hash) return
1237signature changed> above.
1238
1239=back
1240
1241=head3 L<perlunicode>
1242
1243=over 4
1244
1245=item *
1246
1247Documented change to C<\p{I<script>}> to now use the improved Script_Extensions
1248property. See L</Use of \p{script} uses the improved Script_Extensions
1249property> above.
1250
1251=item *
1252
1253Updated the text to correspond with changes in Unicode UTS#18, concerning
1254regular expressions, and Perl compatibility with what it says.
1255
1256=back
1257
1258=head3 L<perlvar>
1259
1260=over 4
1261
1262=item *
1263
1264Removed obsolete documentation of C<${^ENCODING}>. See L</${^ENCODING} has
1265been removed> above.
1266
1267=item *
1268
1269Document C<@ISA>. Was documented other places, not not in L<perlvar>.
1270
1271=back
1272
1273=head1 Diagnostics
1274
1275=head2 New Diagnostics
1276
1277=head3 New Errors
1278
1279=over 4
1280
1281=item *
1282
1283Since C<.> is now removed from C<@INC> by default, C<do> will now trigger
1284a warning recommending to fix the C<do> statement:
1285
1286L<do "%s" failed, '.' is no longer in @INC|perldiag/do "%s" failed, '.' is no longer in @INC; did you mean do ".E<sol>%s"?>
1287
1288=item *
1289
1290Using the empty pattern (which re-executes the last successfully-matched
1291pattern) inside a code block in another regex, as in C</(?{ s!!new! })/>, has
4f73c567
S
1292always previously yielded a segfault. It now produces an error:
1293L<Infinite recursion in regex|perldiag/"Infinite recursion in regex">.
2c8edc25
S
1294
1295=item *
1296
1297L<The experimental declared_refs feature is not enabled|perldiag/"The experimental declared_refs feature is not enabled">
1298
1299(F) To declare references to variables, as in C<my \%x>, you must first enable
1300the feature:
1301
1302 no warnings "experimental::declared_refs";
1303 use feature "declared_refs";
1304
1305=item *
1306
1307L<Version control conflict marker|perldiag/"Version control conflict marker">
1308
e6abae1c 1309(F) The parser found a line starting with C<E<lt>E<lt>E<lt>E<lt>E<lt>E<lt>E<lt>>,
2c8edc25
S
1310C<E<gt>E<gt>E<gt>E<gt>E<gt>E<gt>E<gt>>, or C<=======>. These may be left by a
1311version control system to mark conflicts after a failed merge operation.
1312
1313=item *
1314
1315L<%s: command not found|perldiag/"%s: command not found">
1316
1317(A) You've accidentally run your script through B<bash> or another shell
1318instead of Perl. Check the #! line, or manually feed your script into
1319Perl yourself. The #! line at the top of your file could look like:
1320
1321 #!/usr/bin/perl
1322
1323=item *
1324
1325L<%s: command not found: %s|perldiag/"%s: command not found: %s">
1326
1327(A) You've accidentally run your script through B<zsh> or another shell
1328instead of Perl. Check the #! line, or manually feed your script into
1329Perl yourself. The #! line at the top of your file could look like:
1330
1331 #!/usr/bin/perl
1332
1333=item *
1334
e6abae1c 1335L<Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by S<E<lt>-- HERE> in mE<sol>%sE<sol>|perldiag/"Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by S<<-- HERE> in m/%s/">
2c8edc25
S
1336
1337Unescaped left braces are already illegal in some contexts in regular
1338expression patterns, but, due to an oversight, no deprecation warning
1339was raised in other contexts where they are intended to become illegal.
1340This warning is now raised in these contexts.
1341
1342=item *
1343
1344L<Bareword in require contains "%s"|perldiag/"Bareword in require contains "%s"">
1345
1346=item *
1347
1348L<Bareword in require maps to empty filename|perldiag/"Bareword in require maps to empty filename">
1349
1350=item *
1351
1352L<Bareword in require maps to disallowed filename "%s"|perldiag/"Bareword in require maps to disallowed filename "%s"">
1353
1354=item *
1355
1356L<Bareword in require must not start with a double-colon: "%s"|perldiag/"Bareword in require must not start with a double-colon: "%s"">
1357
1358=back
1359
1360=head3 New Warnings
1361
1362=over 4
1363
1364=item *
1365
4f73c567 1366L<Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl 5.30|perldiag/"Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl 5.30">
2c8edc25
S
1367
1368See L</Deprecations>
1369
1370=item *
1371
1372L<Declaring references is experimental|perldiag/"Declaring references is experimental">
1373
1374(S experimental::declared_refs) This warning is emitted if you use a reference
1375constructor on the right-hand side of C<my()>, C<state()>, C<our()>, or
1376C<local()>. Simply suppress the warning if you want to use the feature, but
1377know that in doing so you are taking the risk of using an experimental feature
1378which may change or be removed in a future Perl version:
1379
1380 no warnings "experimental::declared_refs";
1381 use feature "declared_refs";
1382 $fooref = my \$foo;
1383
1384=item *
1385
4f73c567 1386L<C<${^ENCODING}> is no longer supported. Its use will be fatal in Perl 5.28|perldiag/"${^ENCODING} is no longer supported. Its use will be fatal in Perl 5.28">
2c8edc25
S
1387
1388(D deprecated) The special variable C<${^ENCODING}>, formerly used to implement
1389the C<encoding> pragma, is no longer supported as of Perl 5.26.0.
1390
1391=back
1392
1393=head2 Changes to Existing Diagnostics
1394
1395=over 4
1396
1397=item *
1398
1399When a C<require> fails, we now do not provide C<@INC> when the C<require>
1400is for a file instead of a module.
1401
1402=item *
1403
1404When C<@INC> is not scanned for a C<require> call, we no longer display
1405C<@INC> to avoid confusion.
1406
1407=item *
1408
1409Attribute "locked" is deprecated, and will disappear in Perl 5.28
1410
1411=item *
1412
1413Attribute "unique" is deprecated, and will disappear in Perl 5.28
1414
1415=item *
1416
1417Constants from lexical variables potentially modified elsewhere are
1418deprecated. This will not be allowed in Perl 5.32
1419
1420=item *
1421
1422Deprecated use of my() in false conditional. This will be a fatal error
1423in Perl 5.30
1424
1425=item *
1426
1427dump() better written as CORE::dump(). dump() will no longer be available
1428in Perl 5.30
1429
1430=item *
1431
1432${^ENCODING} is no longer supported. Its use will be fatal in Perl 5.28
1433
1434=item *
1435
1436File::Glob::glob() will disappear in perl 5.30. Use File::Glob::bsd_glob()
1437instead.
1438
1439=item *
1440
1441%s() is deprecated on :utf8 handles. This will be a fatal error in Perl 5.30
1442
1443=item *
1444
1445$* is no longer supported. Its use will be fatal in Perl 5.30
1446
1447=item *
1448
1449$* is no longer supported. Its use will be fatal in Perl 5.30
1450
1451=item *
1452
1453Opening dirhandle %s also as a file. This will be a fatal error in Perl 5.28
1454
1455=item *
1456
1457Opening filehandle %s also as a directory. This will be a fatal
1458error in Perl 5.28
1459
1460=item *
1461
1462Setting $/ to a reference to %s as a form of slurp is deprecated,
1463treating as undef. This will be fatal in Perl 5.28
1464
1465=item *
1466
1467Unescaped left brace in regex is deprecated here (and will be fatal
1468in Perl 5.30), passed through in regex; marked by S<< E<lt>-- HERE >> in m/%s/
1469
1470=item *
1471
1472Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28
1473
1474=item *
1475
1476Use of bare E<lt>E<lt> to mean E<lt>E<lt>"" is deprecated. Its use will be fatal in Perl 5.28
1477
1478=item *
1479
1480Use of code point 0x%s is deprecated; the permissible max is 0x%s.
1481This will be fatal in Perl 5.28
1482
1483=item *
1484
1485Use of comma-less variable list is deprecated. Its use will be fatal
1486in Perl 5.28
1487
1488=item *
1489
1490Use of inherited AUTOLOAD for non-method %s() is deprecated. This
1491will be fatal in Perl 5.28
1492
1493=item *
1494
1495Use of strings with code points over 0xFF as arguments to %s operator
1496is deprecated. This will be a fatal error in Perl 5.28
1497
1498=item *
1499
1500Improve error for missing tie() package/method. This brings the error messages
1501in line with the ones used for normal method calls, despite not using
1502call_method().
1503
1504=item *
1505
1506Make the sysread()/syswrite/() etc :utf8 handle warnings default. These
1507warnings were under 'deprecated' previously.
1508
1509=item *
1510
1511'do' errors now refer to 'do' (not 'require').
1512
1513=item *
1514
1515Details as to the exact problem have been added to the diagnostics that
1516occur when malformed UTF-8 is encountered when trying to convert to a
1517code point.
1518
1519=item *
1520
1521Executing C<undef $x> where C<$x> is tied or magical no longer incorrectly
1522blames the variable for an uninitialized-value warning encountered by the
1523tied/magical code.
1524
1525=item *
1526
e6abae1c 1527L<Unescaped left brace in regex is illegal here in regex; marked by S<E<lt>-- HERE> in mE<sol>%sE<sol>|perldiag/"Unescaped left brace in regex is illegal here in regex; marked by S<<-- HERE> in m/%s/">
2c8edc25
S
1528
1529The word "here" has been added to the message that was raised in
1530v5.25.1. This is to indicate that there are contexts in which unescaped
1531left braces are not (yet) illegal.
1532
1533=item *
1534
1535Code like C<$x = $x . "a"> was incorrectly failing to yield a
1536L<use of uninitialized value|perldiag/"Use of uninitialized value%s">
1537warning when C<$x> was a lexical variable with an undefined value. That has
1538now been fixed. [perl #127877]
1539
1540=item *
1541
1542When the error "Experimental push on scalar is now forbidden" is raised for
1543the hash functions C<keys>, C<each>, and C<values>, it is now followed by
1544the more helpful message, "Type of arg 1 to whatever must be hash or
1545array". [perl #127976]
1546
1547=item *
1548
1549C<undef *_; shift> or C<undef *_; pop> inside a subroutine, with no
1550argument to C<shift> or C<pop>, began crashing in Perl 5.14.0, but has now
1551been fixed.
1552
1553=item *
1554
1555C<< "string$scalar-E<gt>$*" >> now correctly prefers concat overloading to
1556string overloading if C<< $scalar-E<gt>$* >> returns an overloaded object,
1557bringing it into consistency with C<$$scalar>.
1558
1559=item *
1560
1561C<< /@0{0*-E<gt>@*/*0 >> and similar contortions used to crash, but no longer
1562do, but merely produce a syntax error. [perl #128171]
1563
1564=item *
1565
1566C<do> or C<require> with a reference or typeglob which, when stringified,
1567contains a null character started crashing in Perl 5.20.0, but has now been
1568fixed. [perl #128182]
1569
1570=back
1571
1572=head1 Utility Changes
1573
1574=head2 F<c2ph> and F<pstruct>
1575
1576=over 4
1577
1578=item *
1579
1580These old utilities have long since superceded by L<h2xs>, and are
1581now gone from the distribution.
1582
1583=back
1584
1585=head2 F<Porting/pod_lib.pl>
1586
1587=over 4
1588
1589=item *
1590
1591Removed spurious executable bit.
1592
1593=item *
1594
1595Account for possibility of DOS file endings.
1596
1597=back
1598
1599=head2 F<Porting/sync-with-cpan>
1600
1601=over 4
1602
1603=item *
1604
1605Many improvements
1606
1607=back
1608
1609=head2 F<perf/benchmarks>
1610
1611=over 4
1612
1613=item *
1614
1615Tidy file, rename some symbols.
1616
1617=back
1618
1619=head2 F<Porting/checkAUTHORS.pl>
1620
1621=over 4
1622
1623=item *
1624
1625Replace obscure character range with \w.
1626
1627=back
1628
1629=head2 F<t/porting/regen.t>
1630
1631=over 4
1632
1633=item *
1634
1635try to be more helpful when tests fail.
1636
1637=back
1638
1639=head2 F<utils/h2xs.PL>
1640
1641=over 4
1642
1643=item *
1644
1645Avoid infinite loop for enums.
1646
1647=back
1648
1649=head2 L<perlbug>
1650
1651=over 4
1652
1653=item *
1654
1655Long lines in the message body are now wrapped at 900 characters, to stay
1656well within the 1000-character limit imposed by SMTP mail transfer agents.
1657This is particularly likely to be important for the list of arguments to
1658C<Configure>, which can readily exceed the limit if, for example, it names
1659several non-default installation paths. This change also adds the first unit
1660tests for perlbug. [perl #128020]
1661
1662=back
1663
1664=head1 Configuration and Compilation
1665
1666=over 4
1667
1668=item *
1669
90ed3b64 1670C<-Ddefault_inc_excludes_dot> has been turned on as default.
2c8edc25
S
1671
1672=item *
1673
1674The C<dtrace> build process has further changes:
1675
1676=over
1677
1678=item *
1679
1680If the C<-xnolibs> is available, use that so a F<dtrace> perl can be
1681built within a FreeBSD jail.
1682
1683=item *
1684
1685On systems that build a dtrace object file (FreeBSD, Solaris and
1686SystemTap's dtrace emulation), copy the input objects to a separate
1687directory and process them there, and use those objects in the link,
1688since C<dtrace -G> also modifies these objects.
1689
1690=item *
1691
1692Add libelf to the build on FreeBSD 10.x, since dtrace adds references
1693to libelf symbols.
1694
1695=item *
1696
1697Generate a dummy dtrace_main.o if C<dtrace -G> fails to build it. A
1698default build on Solaris generates probes from the unused inline
1699functions, while they don't on FreeBSD, which causes C<dtrace -G> to
1700fail.
1701
1702=back
1703
1704[perl #130108]
1705
1706=item *
1707
1708You can now disable perl's use of the PERL_HASH_SEED and
1709PERL_PERTURB_KEYS environment variables by configuring perl with
1710C<-Accflags=NO_PERL_HASH_ENV>.
1711
1712=item *
1713
1714You can now disable perl's use of the PERL_HASH_SEED_DEBUG environment
1715variable by configuring perl with
1716C<-Accflags=-DNO_PERL_HASH_SEED_DEBUG>.
1717
1718=item *
1719
1720Zero out the alignment bytes when calculating the bytes for 80-bit C<NaN>
1721and C<Inf> to make builds more reproducible. [perl #130133]
1722
1723=item *
1724
1725Since 5.18 for testing purposes we have included support for
1726building perl with a variety of non-standard, and non-recommended
1727hash functions. Since we do not recommend the use of these functions
1728we have removed them and their corresponding build options. Specifically
1729this includes the following build options:
1730
1731 PERL_HASH_FUNC_SDBM
1732 PERL_HASH_FUNC_DJB2
1733 PERL_HASH_FUNC_SUPERFAST
1734 PERL_HASH_FUNC_MURMUR3
1735 PERL_HASH_FUNC_ONE_AT_A_TIME
1736 PERL_HASH_FUNC_ONE_AT_A_TIME_OLD
1737 PERL_HASH_FUNC_MURMUR_HASH_64A
1738 PERL_HASH_FUNC_MURMUR_HASH_64B
1739
1740=item *
1741
1742Remove "Warning: perl appears in your path"
1743
1744This install warning is more or less obsolete, since most platforms already
1745*will* have a /usr/bin/perl or similar provided by the OS.
1746
1747=item *
1748
1749Reduce verbosity of "make install.man"
1750
1751Previously, two progress messages were emitted for each manpage: one by
1752installman itself, and one by the function in install_lib.pl that it calls to
1753actually install the file. Disabling the second of those in each case saves
1754over 750 lines of unhelpful output.
1755
1756=item *
1757
1758Cleanup for clang -Weverything support. [perl 129961]
1759
1760=item *
1761
1762Configure: signbit scan was assuming too much, stop assuming negative 0.
1763
1764=item *
1765
1766Various compiler warnings have been silenced.
1767
1768=item *
1769
1770Several smaller changes have been made to remove impediments to compiling under
1771C++11.
1772
1773=item *
1774
1775Builds using C<USE_PAD_RESET> now work again; this configuration had
1776bit-rotted.
1777
1778=item *
1779
1780A probe for C<gai_strerror> was added to F<Configure> that checks if the
1781the gai_strerror() routine is available and can be used to
1782translate error codes returned by getaddrinfo() into human
1783readable strings.
1784
1785=item *
1786
1787F<Configure> now aborts if both "-Duselongdouble" and "-Dusequadmath" are
1788requested.
1789L<[perl #126203]|https://rt.perl.org/Public/Bug/Display.html?id=126203>
1790
1791=item *
1792
1793Fixed a bug in which F<Configure> could append "-quadmath" to the archname even
1794if it was already present.
1795L<[perl #128538]|https://rt.perl.org/Public/Bug/Display.html?id=128538>
1796
1797=item *
1798
1799Clang builds with "-DPERL_GLOBAL_STRUCT" or "-DPERL_GLOBAL_STRUCT_PRIVATE" have
1800been fixed (by disabling Thread Safety Analysis for these configurations).
1801
1802=item *
1803
1804F<make_ext.pl> no longer updates a module's F<pm_to_blib> file when no
1805files require updates. This could cause dependencies, F<perlmain.c>
1806in particular, to be rebuilt unnecessarily. [perl #126710]
1807
1808=item *
1809
1810The output of C<perl -V> has been reformatted so that each configuration
1811and compile-time option is now listed one per line, to improve
1812readability.
1813
1814=item *
1815
1816C<Configure> now builds C<miniperl> and C<generate_uudmap> if you
1817invoke it with C<-Dusecrosscompiler> but not C<-Dtargethost=somehost>.
1818This means you can supply your target platform C<config.sh>, generate
1819the headers and proceed to build your cross-target perl. [perl #127234]
1820
1821=item *
1822
1823Builds with C<-Accflags=-DPERL_TRACE_OPS> now only dump the operator
1824counts when the environment variable C<PERL_TRACE_OPS> to be set to a
1825non-zero integer. This allows C<make test> to pass on such a build.
1826
1827=item *
1828
1829When building with GCC 6 and link-time optimization (the C<-flto> option to
1830C<gcc>), C<Configure> was treating all probed symbols as present on the
1831system, regardless of whether they actually exist. This has been fixed.
1832[perl #128131]
1833
1834=item *
1835
1836The F<t/test.pl> library is used for internal testing of Perl itself, and
1837also copied by several CPAN modules. Some of those modules must work on
1838older versions of Perl, so F<t/test.pl> must in turn avoid newer Perl
1839features. Compatibility with Perl 5.8 was inadvertently removed some time
1840ago; it has now been restored. [perl #128052]
1841
1842=item *
1843
1844The build process no longer emits an extra blank line before building each
1845"simple" extension (those with only F<*.pm> and F<*.pod> files).
1846
1847=back
1848
1849=head1 Testing
1850
1851=over 4
1852
1853=item *
1854
1855F<XS-APItest/t/utf8.t>: Several small fixes and enhancements.
1856
1857=item *
1858
1859Tests for locales were erroneously using locales incompatible with Perl.
1860
1861=item *
1862
1863Some parts of the test suite that try to exhaustively test edge cases in the
1864regex implementation have been restricted to running for a maximum of five
1865minutes. On slow systems they could otherwise take several hours, without
1866significantly improving our understanding of the correctness of the code
1867under test.
1868
1869In addition, some of those test cases have been split into more files, to
1870allow them to be run in parallel on suitable systems.
1871
1872=item *
1873
1874A new internal facility allows analysing the time taken by the individual
1875tests in Perl's own test suite; see F<Porting/harness-timer-report.pl>.
1876
1877=item *
1878
1879F<t/re/regexp_nonull.t> has been added to test that the regular expression
1880engine can handle scalars that do not have a null byte just past the end of
1881the string.
1882
1883=item *
1884
1885A new test script, F<t/op/decl-refs.t>, has been added to test the new feature,
1886"Declaring a reference to a variable".
1887
1888=item *
1889
1890A new test script, F<t/re/anyof.t>, has been added to test that the ANYOF nodes
1891generated by bracketed character classes are as expected.
1892
1893=item *
1894
1895F<t/harness> now tries really hard not to run tests outside of the Perl
1896source tree. [perl #124050]
1897
1898=back
1899
1900=head1 Platform Support
1901
1902=head2 New Platforms
1903
1904=over 4
1905
1906=item NetBSD/VAX
1907
1908Perl now compiles under NetBSD on VAX machines. However, it's not
1909possible for that platform to implement floating-point infinities and
1910NaNs compatibly with most modern systems, which implement the IEEE-754
1911floating point standard. The hexadecimal floating point (C<0x...p[+-]n>
1912literals, C<printf %a>) is not implemented, either.
1913The C<make test> passes 98% of tests.
1914
1915=over 4
1916
1917=item *
1918
1919Test fixes and minor updates.
1920
1921=item *
1922
1923Account for lack of C<inf>, C<nan>, and C<-0.0> support.
1924
1925=back
1926
1927=back
1928
1929=head2 Platform-Specific Notes
1930
1931=over 4
1932
1933=item Darwin
1934
1935don't treat -Dprefix=/usr as special, instead require an extra option
1936-Ddarwin_distribution to produce the same results.
1937
1938=item POSIX
1939
1940Finish removing POSIX deprecated functions.
1941
1942=item OS X
1943
1944OS X El Capitan doesn't implement the clock_gettime() or clock_getres() APIs,
1945emulate them as necessary.
1946
1947=item macOS
1948
1949Deprecated syscall(2) on macOS 10.12.
1950
1951=item EBCDIC
1952
1953Several tests have been updated to work (or be skipped) on EBCDIC platforms.
1954
1955=item HP-UX
1956
1957L<Net::Ping> UDP test is skipped on HP-UX.
1958
1959=item Hurd
1960
1961The hints for Hurd have been improved enabling malloc wrap and reporting the
1962GNU libc used (previously it was an empty string when reported).
1963
1964=item VAX
1965
1966VAX floating point formats are now supported.
1967
1968=item VMS
1969
1970=over 4
1971
1972=item *
1973
1974The path separator for the C<PERL5LIB> and C<PERLLIB> environment entries is
1975now a colon (C<:>) when running under a Unix shell. There is no change when
1976running under DCL (it's still C<|>).
1977
1978=item *
1979
1980Remove some VMS-specific hacks from C<showlex.t>. These were added 15 years
1981ago, and are no longer necessary for any VMS version now supported.
1982
1983=item *
1984
1985Move C<_pDEPTH> and C<_aDEPTH> after F<config.h> otherwise DEBUGGING
1986may not be defined yet.
1987
1988=item *
1989
1990VAXC has not been a possibility for a good long while, and the versions of the
1991DEC/Compaq/HP/VSI C compiler that report themselves as "DEC" in a listing file
1992are 15 years or more out-of-date and can be safely desupported.
1993
1994=back
1995
1996=item Windows
1997
1998=over 4
1999
2000=item *
2001
2002Support for compiling perl on Windows using Microsoft Visual Studio 2015
2003(containing Visual C++ 14.0) has been added.
2004
2005This version of VC++ includes a completely rewritten C run-time library, some
2006of the changes in which mean that work done to resolve a socket close() bug in
2007perl #120091 and perl #118059 is not workable in its current state with this
2008version of VC++. Therefore, we have effectively reverted that bug fix for
2009VS2015 onwards on the basis that being able to build with VS2015 onwards is
2010more important than keeping the bug fix. We may revisit this in the future to
2011attempt to fix the bug again in a way that is compatible with VS2015.
2012
2013These changes do not affect compilation with GCC or with Visual Studio versions
2014up to and including VS2013, i.e. the bug fix is retained (unchanged) for those
2015compilers.
2016
2017Note that you may experience compatibility problems if you mix a perl built
2018with GCC or VS E<lt>= VS2013 with XS modules built with VS2015, or if you mix a
2019perl built with VS2015 with XS modules built with GCC or VS E<lt>= VS2013.
2020Some incompatibility may arise because of the bug fix that has been reverted
2021for VS2015 builds of perl, but there may well be incompatibility anyway because
2022of the rewritten CRT in VS2015 (e.g. see discussion at
2023http://stackoverflow.com/questions/30412951).
2024
2025=back
2026
2027=item Win32
2028
2029=over 4
2030
2031=item *
2032
2033Tweaks for Win32 VC vs GCC detection makefile code. This fixes issue that CCHOME
2034depends on CCTYPE, which in auto detect mode is set after CCHOME, so CCHOME uses
2035the uninit CCTYPE var. Also fix else vs .ELSE in makefile.mk
2036
2037=item *
2038
2039fp definitions have been updated.
2040
2041=back
2042
2043=item VMS And Win32
2044
2045Fix some breakage, add 'undef' value for default_inc_excludes_dot in build
2046scripts.
2047
2048=item Linux
2049
2050Drop support for Linux a.out Linux has used ELF for over twenty years.
2051
2052=item OpenBSD 6
2053
2054OpenBSD 6 still does not support returning pid, gid or uid with SA_SIGINFO.
2055Make sure this is accounted for.
2056
2057=item FreeBSD
2058
2059t/uni/overload.t: Skip hanging test on FreeBSD.
2060
2061=back
2062
2063=head1 Internal Changes
2064
2065=over 4
2066
2067=item *
2068
2069The C<op_class()> API function has been added. This is like the existing
2070C<OP_CLASS()> macro, but can more accurately determine what struct an op
2071has been allocated as. For example C<OP_CLASS()> might return
2072C<OA_BASEOP_OR_UNOP> indicating that ops of this type are usually
2073allocated as an C<OP> or C<UNOP>; while C<op_class()> will return
2074C<OPclass_BASEOP> or C<OPclass_UNOP> as appropriate.
2075
2076=item *
2077
2078The output format of the C<op_dump()> function (as used by C<perl -Dx>)
2079has changed: it now displays an "ASCII-art" tree structure, and shows more
2080low-level details about each op, such as its address and class.
2081
2082=item *
2083
2084New versions of macros like C<isALPHA_utf8> and C<toLOWER_utf8> have
2085been added, each with the
2086suffix C<_safe>, like C<isSPACE_utf8_safe>. These take an extra
2087parameter, giving an upper limit of how far into the string it is safe
2088to read. Using the old versions could cause attempts to read beyond the
2089end of the input buffer if the UTF-8 is not well-formed, and their use
2090now raises a deprecation warning. Details are at
2091L<perlapi/Character classification>.
2092
2093=item *
2094
2095Calling macros like C<isALPHA_utf8> on malformed UTF-8 have issued a
2096deprecation warning since Perl v5.18. They now die.
2097Similarly, macros like C<toLOWER_utf8> on malformed UTF-8 now die.
2098
2099=item *
2100
2101Calling the functions C<utf8n_to_uvchr> and its derivatives, while
2102passing a string length of 0 is now asserted against in DEBUGGING
2103builds, and otherwise returns the Unicode REPLACEMENT CHARACTER. If
2104you have nothing to decode, you shouldn't call the decode function.
2105
2106=item *
2107
2108The functions C<utf8n_to_uvchr> and its derivatives now return the
2109Unicode REPLACEMENT CHARACTER if called with UTF-8 that has the overlong
2110malformation, and that malformation is allowed by the input parameters.
2111This malformation is where the UTF-8 looks valid syntactically, but
2112there is a shorter sequence that yields the same code point. This has
2113been forbidden since Unicode version 3.1.
2114
2115=item *
2116
2117The functions C<utf8n_to_uvchr> and its derivatives now accept an input
2118flag to allow the overflow malformation. This malformation is when the
2119UTF-8 may be syntactically valid, but the code point it represents is
2120not capable of being represented in the word length on the platform.
2121What "allowed" means in this case is that the function doesn't return an
2122error, and advances the parse pointer to beyond the UTF-8 in question,
2123but it returns the Unicode REPLACEMENT CHARACTER as the value of the
2124code point (since the real value is not representable).
2125
2126=item *
2127
2128The C<PADOFFSET> type has changed from being unsigned to signed, and
2129several pad-related variables such as C<PL_padix> have changed from being
2130of type C<I32> to type C<PADOFFSET>.
2131
2132=item *
2133
2134The function C<L<perlapi/utf8n_to_uvchr>> has been changed to not
2135abandon searching for other malformations when the first one is
2136encountered. A call to it thus can generate multiple diagnostics,
2137instead of just one.
2138
2139=item *
2140
2141A new function, C<L<perlapi/utf8n_to_uvchr_error>>, has been added for
2142use by modules that need to know the details of UTF-8 malformations
2143beyond pass/fail. Previously, the only ways to know why a sequence was
2144ill-formed was to capture and parse the generated diagnostics, or to do
2145your own analysis.
2146
2147=item *
2148
2149Several new functions for handling Unicode have been added to the API:
2150C<L<perlapi/is_strict_utf8_string>>,
2151C<L<perlapi/is_c9strict_utf8_string>>,
2152C<L<perlapi/is_utf8_string_flags>>,
2153C<L<perlapi/is_strict_utf8_string_loc>>,
2154C<L<perlapi/is_strict_utf8_string_loclen>>,
2155C<L<perlapi/is_c9strict_utf8_string_loc>>,
2156C<L<perlapi/is_c9strict_utf8_string_loclen>>,
2157C<L<perlapi/is_utf8_string_loc_flags>>,
2158C<L<perlapi/is_utf8_string_loclen_flags>>,
2159C<L<perlapi/is_utf8_fixed_width_buf_flags>>,
2160C<L<perlapi/is_utf8_fixed_width_buf_loc_flags>>,
2161C<L<perlapi/is_utf8_fixed_width_buf_loclen_flags>>.
2162
2163These functions are all extensions of the C<is_utf8_string_*()> functions,
2164that apply various restrictions to the UTF-8 recognized as valid.
2165
2166=item *
2167
2168A new API function C<sv_setvpv_bufsize()> allows simultaneously setting the
2169length and allocated size of the buffer in an C<SV>, growing the buffer if
2170necessary.
2171
2172=item *
2173
2174A new API macro C<SvPVCLEAR()> sets its C<SV> argument to an empty string,
2175like Perl-space C<$x = ''>, but with several optimisations.
2176
2177=item *
2178
2179All parts of the internals now agree that the C<sassign> op is a C<BINOP>;
2180previously it was listed as a C<BASEOP> in F<regen/opcodes>, which meant
2181that several parts of the internals had to be special-cased to accommodate
2182it. This oddity's original motivation was to handle code like C<$x ||= 1>;
2183that is now handled in a simpler way.
2184
2185=item *
2186
2187Several new internal C macros have been added that take a string literal as
2188arguments, alongside existing routines that take the equivalent value as two
2189arguments, a character pointer and a length. The advantage of this is that
2190the length of the string is calculated automatically, rather than having to
2191be done manually. These routines are now used where appropriate across the
2192entire codebase.
2193
2194=item *
2195
2196The code in F<gv.c> that determines whether a variable has a special meaning
2197to Perl has been simplified.
2198
2199=item *
2200
2201The C<DEBUGGING>-mode output for regex compilation and execution has been
2202enhanced.
2203
2204=item *
2205
2206Several macros and functions have been added to the public API for
2207dealing with Unicode and UTF-8-encoded strings. See
2208L<perlapi/Unicode Support>.
2209
2210=item *
2211
2212Use C<my_strlcat()> in C<locale.c>. While C<strcat()> is safe in this context,
2213some compilers were optimizing this to C<strcpy()> causing a porting test to
2214fail that looks for unsafe code. Rather than fighting this, we just use
2215C<my_strlcat()> instead.
2216
2217=item *
2218
2219Three new ops, C<OP_ARGELEM>, C<OP_ARGDEFELEM> and C<OP_ARGCHECK> have
2220been added. These are intended principally to implement the individual
2221elements of a subroutine signature, plus any overall checking required.
2222
2223=item *
2224
2225Perl no longer panics when switching into some locales on machines with
2226buggy C<strxfrm()> implementations in their libc. [perl #121734]
2227
2228=item *
2229
2230Perl is now built with the C<PERL_OP_PARENT> compiler define enabled by
2231default. To disable it, use the C<PERL_NO_OP_PARENT> compiler define.
2232This flag alters how the C<op_sibling> field is used in C<OP> structures,
2233and has been available optionally since perl 5.22.0.
2234
2235See L<perl5220delta/"Internal Changes"> for more details of what this
2236build option does.
2237
2238=item *
2239
2240The meanings of some internal SV flags have been changed
2241
2242OPpRUNTIME, SVpbm_VALID, SVpbm_TAIL, SvTAIL_on, SvTAIL_off, SVrepl_EVAL,
2243SvEVALED
2244
2245=item *
2246
2247Change C<hv_fetch(…, "…", …, …)> to C<hv_fetchs(…, "…", …)>
2248
2249The dual-life dists all use Devel::PPPort, so they can use this function even
2250though it was only added in 5.10.
2251
2252=back
2253
2254=head1 Selected Bug Fixes
2255
2256=over 4
2257
2258=item *
2259
2260C< $-{$name} > would leak an C<AV> on each access if the regular
2261expression had no named captures. The same applies to access to any
2262hash tied with L<Tie::Hash::NamedCapture> and C<< all =E<gt> 1 >>. [perl
2263#130822]
2264
2265=item *
2266
2267Attempting to use the deprecated variable C<$#> as the object in an
2268indirect object method call could cause a heap use after free or
2269buffer overflow. [perl #129274]
2270
2271=item *
2272
2273When checking for an indirect object method call in some rare cases
2274the parser could reallocate the line buffer but then continue to use
2275pointers to the old buffer. [perl #129190]
2276
2277=item *
2278
2279Supplying a glob as the format argument to L<perlfunc/formline> would
2280cause an assertion failure. [perl #130722]
2281
2282=item *
2283
2284Code like C< $value1 =~ qr/.../ ~~ $value2 > would have the match
2285converted into a qr// operator, leaving extra elements on the stack to
2286confuse any surrounding expression. [perl #130705]
2287
2288=item *
2289
2290Since 5.24.0 in some obscure cases, a regex which included code blocks
2291from multiple sources (e.g. via embedded via qr// objects) could end up
2292with the wrong current pad and crash or give weird results. [perl #129881]
2293
2294=item *
2295
2296Occasionally C<local()>s in a code block within a patterns weren't being
2297undone when the pattern matching backtracked over the code block.
2298[perl #126697]
2299
2300=item *
2301
2302Using C<substr()> to modify a magic variable could access freed memory
2303in some cases. [perl #129340]
2304
2305=item *
2306
2307Perl 5.25.9 was fixed so that under C<use utf8>, the entire Perl program
2308is checked that the UTF-8 is wellformed. It turns out that several edge
2309cases were missed, and are now fixed. [perl #126310] was the original
2310ticket.
2311
2312=item *
2313
2314Under C<use utf8>, the entire Perl program is now checked that the UTF-8
2315is wellformed. This resolves [perl #126310].
2316
2317=item *
2318
2319The range operator C<..> on strings now handles its arguments correctly when in
2320the scope of the L<< C<unicode_strings>|feature/"The 'unicode_strings' feature" >>
2321feature. The previous behaviour was sufficiently unexpected that we believe no
2322correct program could have made use of it.
2323
2324=item *
2325
2326The S<split> operator did not ensure enough space was allocated for
2327its return value in scalar context. It could then write a single
2328pointer immediately beyond the end of the memory block allocated for
2329the stack. [perl #130262]
2330
2331=item *
2332
2333Using a large code point with the C<W> pack template character with
2334the current output position aligned at just the right point could
2335cause a write a single zero byte immediately beyond the end of an
2336allocated buffer. [perl #129149]
2337
2338=item *
2339
2340Supplying the form picture argument as part of the form argument list
2341where the picture specifies modifying the argument could cause an
2342access to the new freed compiled form. [perl #129125]
2343
2344=item *
2345
2346Fix a problem with sort's build-in compare, where it would not sort
2347correctly with 64-bit integers, and non-long doubles. [perl #130335]
2348
2349=item *
2350
2351Fix issues with /(?{ ... E<lt>E<lt>EOF })/ that broke Method-Signatures. [perl #130398]
2352
2353=item *
2354
2355Fix a macro which caused syntax error on an EBCDIC build.
2356
2357=item *
2358
2359Prevent tests from getting hung up on 'NonStop' option. [perl #130445]
2360
2361=item *
2362
2363Fixed an assertion failure with C<chop> and C<chomp>, which
2364could be triggered by C<chop(@x =~ tr/1/1/)>. [perl #130198].
2365
2366=item *
2367
2368Fixed a comment skipping error under C</x>; it could stop skipping a
2369byte early, which could be in the middle of a UTF-8 character.
2370[perl #130495].
2371
2372=item *
2373
2374F<perldb> now ignores F</dev/tty> on non-Unix systems. [perl #113960];
2375
2376=item *
2377
2378Fix assertion failure for C<{}-E<gt>$x> when C<$x> isn't defined. [perl #130496].
2379
2380=item *
2381
2382DragonFly BSD now has support for setproctitle(). [perl #130068].
2383
2384=item *
2385
2386Fix an assertion error which could be triggered when lookahead string
2387in patterns exceeded a minimum length. [perl #130522].
2388
2389=item *
2390
2391Only warn once per literal about a misplaced C<_>. [perl #70878].
2392
2393=item *
2394
2395Ensure range-start is set after error in C<tr///>. [perl #129342].
2396
2397=item *
2398
2399Don't read past start of string for unmatched backref; otherwise,
2400we may have heap buffer overflow. [perl #129377].
2401
2402=item *
2403
2404Properly recognize mathematical digit ranges starting at U+1D7E.
2405C<use re 'strict'> is supposed to warn if you use a range whose start
2406and end digit aren't from the same group of 10. It didn't do that
2407for five groups of mathematical digits starting at U+1D7E.
2408
2409=item *
2410
2411A sub containing a "forward" declaration with the same name (e.g.,
2412C<sub c { sub c; }>) could sometimes crash or loop infinitely. [perl
2413#129090]
2414
2415=item *
2416
2417A crash in executing a regex with a floating UTF-8 substring against a
2418target string that also used UTF-8 has been fixed. [perl #129350]
2419
2420=item *
2421
2422Previously, a shebang line like C<#!perl -i u> could be erroneously
2423interpreted as requesting the C<-u> option. This has been fixed. [perl
2424#129336]
2425
2426=item *
2427
2428The regex engine was previously producing incorrect results in some rare
2429situations when backtracking past a trie that matches only one thing; this
2430showed up as capture buffers (C<$1>, C<$2>, etc) erroneously containing data
2431from regex execution paths that weren't actually executed for the final
2432match. [perl #129897]
2433
2434=item *
2435
2436Certain regexes making use of the experimental C<regex_sets> feature could
2437trigger an assertion failure. This has been fixed. [perl #129322]
2438
2439=item *
2440
2441Invalid assignments to a reference constructor (e.g., C<\eval=time>) could
2442sometimes crash in addition to giving a syntax error. [perl #125679]
2443
2444=item *
2445
2446The parser could sometimes crash if a bareword came after C<evalbytes>.
2447[perl #129196]
2448
2449=item *
2450
2451Autoloading via a method call would warn erroneously ("Use of inherited
2452AUTOLOAD for non-method") if there was a stub present in the package into
2453which the invocant had been blessed. The warning is no longer emitted in
2454such circumstances. [perl #47047]
2455
2456=item *
2457
2458A sub containing with a "forward" declaration with the same name (e.g.,
2459C<sub c { sub c; }>) could sometimes crash or loop infinitely. [perl
2460#129090]
2461
2462=item *
2463
2464The use of C<splice> on arrays with nonexistent elements could cause other
2465operators to crash. [perl #129164]
2466
2467=item *
2468
2469Fixed case where C<re_untuit_start> will overshoot the length of a utf8
2470string. [perl #129012]
2471
2472=item *
2473
2474Handle C<CXt_SUBST> better in C<Perl_deb_stack_all>, previously it wasn't
2475checking that the I<current> C<cx> is the right type, and instead was always
2476checking the base C<cx> (effectively a noop). [perl #129029]
2477
2478=item *
2479
2480Fixed two possible use-after-free bugs in C<Perl_yylex>. C<Perl_yylex>
2481maintains up to two pointers into the parser buffer, one of which can
2482become stale under the right conditions. [perl #129069]
2483
2484=item *
2485
2486Fixed a crash with C<s///l> where it thought it was dealing with UTF-8
2487when it wasn't. [perl #129038]
2488
2489=item *
2490
2491Fixed place where regex was not setting the syntax error correctly.
2492[perl #129122]
2493
2494=item *
2495
2496The C<&.> operator (and the C<&> operator, when it treats its arguments as
2497strings) were failing to append a trailing null byte if at least one string
2498was marked as utf8 internally. Many code paths (system calls, regexp
2499compilation) still expect there to be a null byte in the string buffer
2500just past the end of the logical string. An assertion failure was the
2501result. [perl #129287]
2502
2503=item *
2504
2505Check C<pack_sockaddr_un()>'s return value because C<pack_sockaddr_un()>
2506silently truncates the supplied path if it won't fit into the C<sun_path>
2507member of C<sockaddr_un>. This may change in the future, but for now
2508check the path in theC<sockaddr> matches the desired path, and skip if
2509it doesn't. [perl #128095]
2510
2511=item *
2512
2513Make sure C<PL_oldoldbufptr> is preserved in C<scan_heredoc()>. In some
2514cases this is used in building error messages. [perl #128988]
2515
2516=item *
2517
2518Check for null PL_curcop in IN_LC() [perl #129106]
2519
2520=item *
2521
2522Fixed the parser error handling for an 'C<:attr(foo>' that does not have
2523an ending 'C<)>'.
2524
2525=item *
2526
2527Fix C<Perl_delimcpy()> to handle a backslash as last char, this
2528actually fixed two bugs, [perl #129064] and [perl #129176].
2529
2530=item *
2531
2532[perl #129267] rework gv_fetchmethod_pvn_flags separator parsing to
2533prevent possible string overrun with invalid len in gv.c
2534
2535=item *
2536
2537Problems with in-place array sorts: code like C<@a = sort { ... } @a>,
2538where the source and destination of the sort are the same plain array, are
2539optimised to do less copying around. Two side-effects of this optimisation
2540were that the contents of C<@a> as visible to to sort routine were
2541partially sorted, and under some circumstances accessing C<@a> during the
2542sort could crash the interpreter. Both these issues have been fixed, and
2543Sort functions see the original value of C<@a>.
2544
2545=item *
2546
2547Non-ASCII string delimiters are now reported correctly in error messages
2548for unterminated strings. [perl #128701]
2549
2550=item *
2551
2552C<pack("p", ...)> used to emit its warning ("Attempt to pack pointer to
2553temporary value") erroneously in some cases, but has been fixed.
2554
2555=item *
2556
2557C<@DB::args> is now exempt from "used once" warnings. The warnings only
2558occurred under B<-w>, because F<warnings.pm> itself uses C<@DB::args>
2559multiple times.
2560
2561=item *
2562
2563The use of built-in arrays or hash slices in a double-quoted string no
2564longer issues a warning ("Possible unintended interpolation...") if the
2565variable has not been mentioned before. This affected code like
2566C<qq|@DB::args|> and C<qq|@SIG{'CHLD', 'HUP'}|>. (The special variables
2567C<@-> and C<@+> were already exempt from the warning.)
2568
2569=item *
2570
2571C<gethostent> and similar functions now perform a null check internally, to
2572avoid crashing with torsocks. This was a regression from 5.22. [perl
2573#128740]
2574
2575=item *
2576
2577C<defined *{'!'}>, C<defined *{'['}>, and C<defined *{'-'}> no longer leak
2578memory if the typeglob in question has never been accessed before.
2579
2580=item *
2581
2582In 5.25.4 fchown() was changed not to accept negative one as an argument
2583because in some platforms that is an error. However, in some other platforms
2584that is an acceptable argument. This change has been reverted [perl #128967].
2585
2586=item *
2587
2588Mentioning the same constant twice in a row (which is a syntax error) no
2589longer fails an assertion under debugging builds. This was a regression
2590from 5.20. [perl #126482]
2591
2592=item *
2593
2594Many issues relating to C<printf "%a"> of hexadecimal floating point
2595were fixed. In addition, the "subnormals" (formerly known as "denormals")
2596floating point anumbers are now supported both with the plain IEEE 754
2597floating point numbers (64-bit or 128-bit) and the x86 80-bit
2598"extended precision". Note that subnormal hexadecimal floating
2599point literals will give a warning about "exponent underflow".
2600[perl #128843, #128889, #128890, #128893, #128909, #128919]
2601
2602=item *
2603
2604A regression in 5.24 with C<tr/\N{U+...}/foo/> when the code point was between
2605128 and 255 has been fixed. [perl #128734].
2606
2607=item *
2608
2609A regression from the previous development release, 5.23.3, where
2610compiling a regular expression could crash the interpreter has been
2611fixed. [perl #128686].
2612
2613=item *
2614
2615Use of a string delimiter whose code point is above 2**31 now works
2616correctly on platforms that allow this. Previously, certain characters,
2617due to truncation, would be confused with other delimiter characters
2618with special meaning (such as C<?> in C<m?...?>), resulting
2619in inconsistent behaviour. Note that this is non-portable,
2620and is based on Perl's extension to UTF-8, and is probably not
2621displayable nor enterable by any editor. [perl #128738]
2622
2623=item *
2624
2625C<@{x> followed by a newline where C<x> represents a control or non-ASCII
2626character no longer produces a garbled syntax error message or a crash.
2627[perl #128951]
2628
2629=item *
2630
2631An assertion failure with C<%: = 0> has been fixed.
2632L<[perl #128238]|https://rt.perl.org/Public/Bug/Display.html?id=128238>
2633
2634=item *
2635
2636In Perl 5.18, the parsing of C<"$foo::$bar"> was accidentally changed, such
2637that it would be treated as C<$foo."::".$bar>. The previous behavior, which
2638was to parse it as C<$foo:: . $bar>, has been restored.
2639L<[perl #128478]|https://rt.perl.org/Public/Bug/Display.html?id=128478>
2640
2641=item *
2642
2643Since Perl 5.20, line numbers have been off by one when perl is invoked with
2644the B<-x> switch. This has been fixed.
2645L<[perl #128508]|https://rt.perl.org/Public/Bug/Display.html?id=128508>
2646
2647=item *
2648
2649Vivifying a subroutine stub in a deleted stash (e.g., C<delete $My::{"Foo::"};
2650\&My::Foo::foo>) no longer crashes. It had begun crashing in Perl 5.18.
2651L<[perl #128532]|https://rt.perl.org/Public/Bug/Display.html?id=128532>
2652
2653=item *
2654
2655Some obscure cases of subroutines and file handles being freed at the same time
2656could result in crashes, but have been fixed. The crash was introduced in Perl
26575.22.
2658L<[perl #128597]|https://rt.perl.org/Public/Bug/Display.html?id=128597>
2659
2660=item *
2661
2662Code that looks for a variable name associated with an uninitialized value
2663could cause an assertion in cases where magic is involved, such as
2664C<$ISA[0][0]>. This has now been fixed.
2665L<[perl #128253]|https://rt.perl.org/Public/Bug/Display.html?id=128253>
2666
2667=item *
2668
2669A crash caused by code generating the warning "Subroutine STASH::NAME
2670redefined" in cases such as C<sub P::f{} undef *P::; *P::f =sub{};> has been
2671fixed. In these cases, where the STASH is missing, the warning will now appear
2672as "Subroutine NAME redefined".
2673L<[perl #128257]|https://rt.perl.org/Public/Bug/Display.html?id=128257>
2674
2675=item *
2676
2677Fixed an assertion triggered by some code that handles deprecated behavior in
2678formats, e.g. in cases like this:
2679
2680 format STDOUT =
2681 @
2682 0"$x"
2683
2684L<[perl #128255]|https://rt.perl.org/Public/Bug/Display.html?id=128255>
2685
2686=item *
2687
2688A possible divide by zero in string transformation code on Windows has been
2689avoided, fixing a crash when collating an empty string.
2690L<[perl #128618]|https://rt.perl.org/Public/Bug/Display.html?id=128618>
2691
2692=item *
2693
2694Some regular expression parsing glitches could lead to assertion failures with
e6abae1c 2695regular expressions such as C</(?E<lt>=/> and C</(?E<lt>!/>. This has now been fixed.
2c8edc25
S
2696L<[perl #128170]|https://rt.perl.org/Public/Bug/Display.html?id=128170>
2697
2698=item *
2699
2700C< until ($x = 1) { ... } > and C< ... until $x = 1 > now properly
2701warn when syntax warnings are enabled. [perl #127333]
2702
2703=item *
2704
2705socket() now leaves the error code returned by the system in C<$!> on
2706failure. [perl #128316]
2707
2708=item *
2709
2710Assignment variants of any bitwise ops under the C<bitwise> feature would
2711crash if the left-hand side was an array or hash. [perl #128204]
2712
2713=item *
2714
2715C<require> followed by a single colon (as in C<foo() ? require : ...> is
2716now parsed correctly as C<require> with implicit $_, rather than
2717C<require "">. [perl #128307]
2718
2719=item *
2720
2721Scalar C<keys %hash> can now be assigned to consistently in all scalar
2722lvalue contexts. Previously it worked for some contexts but not others.
2723
2724=item *
2725
2726List assignment to C<vec> or C<substr> with an array or hash for its first
2727argument used to result in crashes or "Can't coerce" error messages at run
2728time, unlike scalar assignment, which would give an error at compile time.
2729List assignment now gives a compile-time error, too. [perl #128260]
2730
2731=item *
2732
2733Expressions containing an C<&&> or C<||> operator (or their synonyms C<and>
2734and C<or>) were being compiled incorrectly in some cases. If the left-hand
2735side consisted of either a negated bareword constant or a negated C<do {}>
2736block containing a constant expression, and the right-hand side consisted of
2737a negated non-foldable expression, one of the negations was effectively
2738ignored. The same was true of C<if> and C<unless> statement modifiers,
2739though with the left-hand and right-hand sides swapped. This long-standing
2740bug has now been fixed. [perl #127952]
2741
2742=item *
2743
2744C<reset> with an argument no longer crashes when encountering stash entries
2745other than globs. [perl #128106]
2746
2747=item *
2748
2749Assignment of hashes to, and deletion of, typeglobs named C<*::::::> no
2750longer causes crashes. [perl #128086]
2751
2752=item *
2753
2754Handle SvIMMORTALs in LHS of list assign. [perl #129991]
2755
2756=item *
2757
2758[perl #130010] a5540cf breaks texinfo
2759
2760This involved user-defined Unicode properties.
2761
2762=item *
2763
2764Fix error message for unclosed C<\N{> in regcomp.
2765
2766An unclosed C<\N{> could give the wrong error message
2767C<"\N{NAME} must be resolved by the lexer">.
2768
2769=item *
2770
2771List assignment in list context where the LHS contained aggregates and
2772where there were not enough RHS elements, used to skip scalar lvalues.
2773Previously, C<(($a,$b,@c,$d) = (1))> in list context returned C<($a)>; now
2774it returns C<($a,$b,$d)>. C<(($a,$b,$c) = (1))> is unchanged: it still
2775returns C<($a,$b,$c)>. This can be seen in the following:
2776
2777 sub inc { $_++ for @_ }
2778 inc(($a,$b,@c,$d) = (10))
2779
2780Formerly, the values of C<($a,$b,$d)> would be left as C<(11,undef,undef)>;
2781now they are C<(11,1,1)>.
2782
2783=item *
2784
2785[perl 129903]
2786
2787The basic problem is that code like this: /(?{ s!!! })/ can trigger infinite
2788recursion on the C stack (not the normal perl stack) when the last successful
2789pattern in scope is itself. Since the C stack overflows this manifests as an
2790untrappable error/segfault, which then kills perl.
2791
2792We avoid the segfault by simply forbidding the use of the empty pattern when it
2793would resolve to the currently executing pattern.
2794
2795=item *
2796
2797[perl 128997] Avoid reading beyond the end of the line buffer when there's a
2798short UTF-8 character at the end.
2799
2800=item *
2801
2802[perl 129950] fix firstchar bitmap under utf8 with prefix optimisation.
2803
2804=item *
2805
2806[perl 129954] Carp/t/arg_string.t: be liberal in f/p formats.
2807
2808=item *
2809
2810[perl 129928] make do "a\0b" fail silently instead of throwing.
2811
2812=item *
2813
2814[perl 129130] make chdir allocate the stack it needs.
2815
2816=back
2817
2818=head1 Known Problems
2819
2820=over 4
2821
2822=item *
2823
2824Some modules have been broken by the L<context stack rework|/Internal Changes>.
2825These modules were relying on non-guaranteed implementation details in perl.
2826Their maintainers have been informed, and should contact perl5-porters for
2827advice if needed. Below is a subset of these modules:
2828
2829=over 4
2830
2831=item * L<Algorithm::Permute>
2832
2833=item * L<Coro>
2834
2835L<Coro> and perl v5.22.0 were already incompatible due to a change in the perl,
2836and the reworking on the perl context stack creates a further incompatibility.
2837perl5-porters has L<discussed the issue on the mailing
2838list|http://www.nntp.perl.org/group/perl.perl5.porters/2016/05/msg236174.html>.
2839
2840=item * L<Data::Alias>
2841
2842=item * L<RPerl>
2843
2844=item * L<Scope::Upper>
2845
2846=item * L<TryCatch>
2847
2848=back
2849
2850=item *
2851
2852The module L<lexical::underscore> no longer works on perl v5.24.0, because perl
2853no longer has a lexical C<$_>!
2854
2855=item *
2856
2857C<mod_perl> has been patched for compatibility for v5.22.0 and later but no
2858release has been made. The relevant patch (and other changes) can be found in
2859their source code repository, L<mirrored at
2860GitHub|https://github.com/apache/mod_perl/commit/82827132efd3c2e25cc413c85af61bb63375da6e>.
2861
2862=back
2863
2864=head1 Errata From Previous Releases
2865
2866=over 4
2867
2868=item *
2869
2870Parsing bad POSIX charclasses no longer leaks memory. This was fixed in Perl
28715.25.2
2872L<[perl #128313]|https://rt.perl.org/Public/Bug/Display.html?id=128313>
2873
2874=item *
2875
2876Fixed issues with recursive regexes. The behavior was fixed in Perl 5.24.0.
2877L<[perl #126182]|https://rt.perl.org/Public/Bug/Display.html?id=126182>
2878
2879=back
2880
2881=head1 Obituary
2882
2883Jon Portnoy (AVENJ), a prolific Perl author and admired Gentoo community
2884member, has passed away on August 10, 2016. He will be remembered and
2885missed by all those with which he came in contact and enriched with his
2886intellect, wit, and spirit.
2887
2888It is with great sadness we also note Kip Hampton's passing.. Probably
2889best known as the author of the Perl & XML column on XML.com, he was a
2890core contributor to AxKit, an XML server platform that became an Apache
2891Foundation project. He was a frequent speaker in the early days at
2892OSCON, and most recently at YAPC::NA in Madison. He was frequently on
2893irc.perl.org as `ubu`, generally in the #axkit-dahut community, the
2894group responsible for YAPC::NA Asheville in 2011.
a049258c 2895
2c8edc25
S
2896Kip and his constant contributions to the community will be greatly
2897missed.
a049258c
S
2898
2899=head1 Acknowledgements
2e0dcc12 2900
0cc8c746 2901Perl 5.26.0 represents approximately 12 months of development since Perl 5.24.0
c2948ced 2902and contains approximately 370,000 lines of changes across 2,600 files from 86
0cc8c746
S
2903authors.
2904
2905Excluding auto-generated files, documentation and release tools, there were
2906approximately 230,000 lines of changes to 1,800 .pm, .t, .c and .h files.
2907
2908Perl continues to flourish into its third decade thanks to a vibrant community
2909of users and developers. The following people are known to have contributed the
2910improvements that became Perl 5.24.1:
2911
2912Aaron Crane, Abigail, Ævar Arnfjörð Bjarmason, Alex Vandiver, Andreas
2913König, Andreas Voegele, Andrew Fresh, Andy Lester, Aristotle Pagaltzis, Chad
2914Granum, Chase Whitener, Chris 'BinGOs' Williams, Chris Lamb, Christian Hansen,
2915Christian Millour, Colin Newell, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan
c2948ced
S
2916Collins, Daniel Dragan, Dave Cross, Dave Rolsky, David Golden, David H.
2917Gutteridge, David Mitchell, Dominic Hargreaves, Doug Bell, E. Choroba, Ed Avis,
2918Father Chrysostomos, François Perrad, Hauke D, H.Merijn Brand, Hugo van der
2919Sanden, Ivan Pozdeev, James E Keenan, James Raspass, Jarkko Hietaniemi, Jerry
2920D. Hedden, Jim Cromie, J. Nick Koston, John Lightsey, Karen Etheridge, Karl
2921Williamson, Leon Timmermans, Lukas Mai, Matthew Horsfall, Maxwell Carey, Misty
2922De Meo, Neil Bowers, Nicholas Clark, Nicolas R., Niko Tyni, Pali, Paul
2923Marquess, Peter Avalos, Petr Písař, Pino Toscano, Rafael Garcia-Suarez, Reini
2924Urban, Renee Baecker, Ricardo Signes, Richard Levitte, Rick Delaney, Salvador
2925Fandiño, Samuel Thibault, Sawyer X, Sébastien Aperghis-Tramoni, Sergey
2926Aleynikov, Shlomi Fish, Smylers, Stefan Seifert, Steffen Müller, Stevan
2927Little, Steve Hay, Steven Humphrey, Sullivan Beck, Theo Buehler, Thomas Sibley,
2928Todd Rinaldo, Tomasz Konojacki, Tony Cook, Unicode Consortium, Yaroslav Kuzmin,
2929Yves Orton, Zefram.
0cc8c746
S
2930
2931The list above is almost certainly incomplete as it is automatically generated
2932from version control history. In particular, it does not include the names of
2933the (very much appreciated) contributors who reported issues to the Perl bug
2934tracker.
2935
2936Many of the changes included in this version originated in the CPAN modules
2937included in Perl's core. We're grateful to the entire CPAN community for
2938helping Perl to flourish.
2939
2940For a more complete list of all of Perl's historical contributors, please see
2941the F<AUTHORS> file in the Perl source distribution.
f5b73711 2942
44691e6f
AB
2943=head1 Reporting Bugs
2944
2c8edc25
S
2945If you find what you think is a bug, you might check the articles recently
2946posted to the comp.lang.perl.misc newsgroup and the perl bug database at
2947L<https://rt.perl.org/> . There may also be information at
4b8803f0 2948L<http://www.perl.org/> , the Perl Home Page.
44691e6f 2949
e08634c5
SH
2950If you believe you have an unreported bug, please run the L<perlbug> program
2951included with your release. Be sure to trim your bug down to a tiny but
2952sufficient test case. Your bug report, along with the output of C<perl -V>,
2953will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f 2954
87c118b9
DM
2955If the bug you are reporting has security implications which make it
2956inappropriate to send to a publicly archived mailing list, then see
c0ea3294
SH
2957L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
2958for details of how to report the issue.
44691e6f
AB
2959
2960=head1 SEE ALSO
2961
e08634c5
SH
2962The F<Changes> file for an explanation of how to view exhaustive details on
2963what changed.
44691e6f
AB
2964
2965The F<INSTALL> file for how to build Perl.
2966
2967The F<README> file for general stuff.
2968
2969The F<Artistic> and F<Copying> files for copyright information.
2970
2971=cut