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