5 perl5259delta - what is new for perl v5.25.9
9 This document describes differences between the 5.25.8 release and the 5.25.9
12 If you are upgrading from an earlier release such as 5.25.7, first read
13 L<perl5258delta>, which describes differences between 5.25.7 and 5.25.8.
15 =head1 Core Enhancements
17 =head2 New regular expression modifier C</xx>
19 Specifying two C<x> characters to modify a regular expression pattern
20 does everything that a single one does, but additionally TAB and SPACE
21 characters within a bracketed character class are generally ignored and
22 can be added to improve readability, like
23 S<C</[ ^ A-Z d-f p-x ]/xx>>. Details are at
24 L<perlre/E<sol>x and E<sol>xx>.
28 =head2 String delimiters that aren't stand-alone graphemes are now deprecated
30 In order for Perl to eventually allow string delimiters to be Unicode
31 grapheme clusters (which look like a single character, but may be
32 a sequence of several ones), we have to stop allowing a single char
33 delimiter that isn't a grapheme by itself. These are unlikely to exist
34 in actual code, as they would typically display as attached to the
35 character in front of them.
37 =head1 Performance Enhancements
43 A hash in boolean context is now sometimes faster, e.g.
47 This was already special-cased, but some cases were missed, and even the
48 ones which weren't have been improved.
52 Several other ops may now also be faster in boolean context.
56 =head1 Modules and Pragmata
58 =head2 Updated Modules and Pragmata
64 L<attributes> has been upgraded from version 0.28 to 0.29.
66 The deprecation message for the C<:unique> and C<:locked> attributes
67 now mention they will disappear in Perl 5.28.
71 L<B::Deparse> has been upgraded from version 1.39 to 1.40.
75 L<B::Xref> has been upgraded from version 1.05 to 1.06.
77 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
81 L<Compress::Raw::Bzip2> has been upgraded from version 2.069 to 2.070.
85 L<Compress::Raw::Zlib> has been upgraded from version 2.069 to 2.070.
89 L<CPAN> has been upgraded from version 2.14_01 to 2.16.
93 L<Data::Dumper> was upgraded from version 2.166 to 2.167.
95 This fixes a stack management bug. [perl #130487].
99 L<DB_File> has been upgraded from version 1.838 to 1.840.
103 L<Devel::SelfStubber> has been upgraded from version 1.05 to 1.06.
105 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
109 L<diagnostics> has been upgraded from version 1.35 to 1.36.
111 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
115 L<DynaLoader> has been upgraded from version 1.40 to 1.41.
119 L<Errno> has been upgraded from version 1.27 to 1.28.
121 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
125 L<ExtUtils::Embed> has been upgraded from version 1.33 to 1.34.
127 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
131 L<feature> has been upgraded from version 1.45 to 1.46.
133 Fixes the Unicode Bug in the range operator.
137 L<File::Glob> has been upgraded from version 1.27 to 1.28.
139 Issue a deprecation message for C<File::Glob::glob()>.
143 L<I18N::LangTags> has been upgraded from version 0.41 to 0.42.
145 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
149 L<lib> has been upgraded from version 0.63 to 0.64.
151 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
155 L<Module::CoreList> has been upgraded from version 5.20161220 to 5.20170120.
159 L<OS2::Process> has been upgraded from version 1.11 to 1.12.
161 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
165 L<overload> has been upgraded from version 1.27 to 1.28.
169 L<perl5db.pl> has been upgraded from version 1.50 to 1.51.
171 Ignore F</dev/tty> on non-Unix systems. [perl #113960]
175 L<PerlIO::scalar> has been upgraded from version 0.25 to 0.26.
179 L<Pod::Html> has been upgraded from version 1.2201 to 1.2202.
183 L<re> has been upgraded from version 0.33 to 0.34
185 This adds support for the new L<C<E<47>xx>|perlre/E<sol>x and E<sol>xx>
186 regular expression pattern modifier, and a change to the L<S<C<use re
187 'strict'>>|re/'strict' mode> experimental feature. When S<C<re
188 'strict'>> is enabled, a warning now will be generated for all
189 unescaped uses of the two characters C<}> and C<]> in regular
190 expression patterns (outside bracketed character classes) that are taken
191 literally. This brings them more in line with the C<)> character which
192 is always a metacharacter unless escaped. Being a metacharacter only
193 sometimes, depending on action at a distance, can lead to silently
194 having the pattern mean something quite different than was intended,
195 which the S<C<re 'strict'>> mode is intended to minimize.
199 L<Storable> has been upgraded from version 2.59 to 2.61.
201 Fixes [perl #130098].
205 L<Symbol> has been upgraded from version 1.07 to 1.08.
209 L<Term::ReadLine> has been upgraded from version 1.15 to 1.16.
211 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
215 L<Test> has been upgraded from version 1.29 to 1.30.
217 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
221 L<threads> has been upgraded from version 2.10 to 2.12.
223 Fixes [perl #130469].
227 L<threads::shared> has been upgraded from version 1.52 to 1.54.
229 This fixes [cpan #119529], [perl #130457]
233 L<Unicode::UCD> has been upgraded from version 0.67 to 0.68.
235 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
239 L<VMS::DCLsym> has been upgraded from version 1.07 to 1.08.
241 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
245 L<XSLoader> has been upgraded from version 0.24 to 0.26.
247 It now uses 3-arg C<open()> instead of 2-arg C<open()>. [perl #130122]
253 =head2 New Documentation
255 =head3 L<perldeprecation>
257 This file documents all upcoming deprecations, and some of the deprecations
258 which already have been removed. The purpose of this documentation is
259 two-fold: document what will disappear, and by which version, and serve
260 as a guide for people dealing with code which has features that no longer
261 work after an upgrade of their perl.
265 The following additions or changes have been made to diagnostic output,
266 including warnings and fatal error messages. For the complete list of
267 diagnostic messages, see L<perldiag>.
269 =head2 New Diagnostics
277 L<Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl v5.30|perldiag/"Use of unassigned code point or non-standalone grapheme for a delimiter will be a fatal error starting in Perl v5.30">
283 =head2 Changes to Existing Diagnostics
285 As of Perl 5.25.9, all new deprecations will come with a version in
286 which the feature will disappear. And with a few exceptions, most
287 existing deprecations will state when they'll disappear. As such, most
288 deprecation messages have changed.
294 Attribute "locked" is deprecated, and will disappear in Perl 5.28
298 Attribute "unique" is deprecated, and will disappear in Perl 5.28
302 "\c%c" is more clearly written simply as "%s". This will be a fatal error
307 Constants from lexical variables potentially modified elsewhere are
308 deprecated. This will not be allowed in Perl 5.32
312 Deprecated use of my() in false conditional. This will be a fatal error
317 dump() better written as CORE::dump(). dump() will no longer be available
322 ${^ENCODING} is no longer supported. Its use will be fatal in Perl 5.28
326 File::Glob::glob() will disappear in perl 5.30. Use File::Glob::bsd_glob()
331 %s() is deprecated on :utf8 handles. This will be a fatal error in Perl 5.30
335 $* is no longer supported. Its use will be fatal in Perl 5.30
339 $* is no longer supported. Its use will be fatal in Perl 5.30
343 Opening dirhandle %s also as a file. This will be a fatal error in Perl 5.28
347 Opening filehandle %s also as a directory. This will be a fatal
352 Setting $/ to a reference to %s as a form of slurp is deprecated,
353 treating as undef. This will be fatal in Perl 5.28
357 Unescaped left brace in regex is deprecated here (and will be fatal
358 in Perl 5.30), passed through in regex; marked by S<< E<lt>-- HERE >> in m/%s/
362 Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28
366 Use of bare E<lt>E<lt> to mean E<lt>E<lt>"" is deprecated. Its use will be fatal in Perl 5.28
370 Use of code point 0x%s is deprecated; the permissible max is 0x%s.
371 This will be fatal in Perl 5.28
375 Use of comma-less variable list is deprecated. Its use will be fatal
380 Use of inherited AUTOLOAD for non-method %s() is deprecated. This
381 will be fatal in Perl 5.28
385 Use of strings with code points over 0xFF as arguments to %s operator
386 is deprecated. This will be a fatal error in Perl 5.28
390 =head1 Utility Changes
392 =head2 F<c2ph> and F<pstruct>
398 These old utilities have long since superceded by L<h2xs>, and are
399 now gone from the distribution.
403 =head2 F<Porting/sync-with-cpan>
414 =head1 Configuration and Compilation
420 The C<dtrace> build process has further changes:
426 If the C<-xnolibs> is available, use that so a F<dtrace> perl can be
427 built within a FreeBSD jail.
431 On systems that build a dtrace object file (FreeBSD, Solaris and
432 SystemTap's dtrace emulation), copy the input objects to a separate
433 directory and process them there, and use those objects in the link,
434 since C<dtrace -G> also modifies these objects.
438 Add libelf to the build on FreeBSD 10.x, since dtrace adds references
443 Generate a dummy dtrace_main.o if C<dtrace -G> fails to build it. A
444 default build on Solaris generates probes from the unused inline
445 functions, while they don't on FreeBSD, which causes C<dtrace -G> to
454 You can now disable perl's use of the PERL_HASH_SEED and
455 PERL_PERTURB_KEYS environment variables by configuring perl with
456 C<-Accflags=NO_PERL_HASH_ENV>.
460 You can now disable perl's use of the PERL_HASH_SEED_DEBUG environment
461 variable by configuring perl with
462 C<-Accflags=-DNO_PERL_HASH_SEED_DEBUG>.
466 =head1 Internal Changes
472 New versions of macros like C<isALPHA_utf8> and C<toLOWER_utf8> have
473 been added, each with the
474 suffix C<_safe>, like C<isSPACE_utf8_safe>. These take an extra
475 parameter, giving an upper limit of how far into the string it is safe
476 to read. Using the old versions could cause attempts to read beyond the
477 end of the input buffer if the UTF-8 is not well-formed, and their use
478 now raises a deprecation warning. Details are at
479 L<perlapi/Character classification>.
483 Calling macros like C<isALPHA_utf8> on malformed UTF-8 have issued a
484 deprecation warning since Perl v5.18. They now die.
485 Similarly, macros like C<toLOWER_utf8> on malformed UTF-8 now die.
489 Calling the functions C<utf8n_to_uvchr> and its derivatives, while
490 passing a string length of 0 is now asserted against in DEBUGGING
491 builds, and otherwise returns the Unicode REPLACEMENT CHARACTER. If
492 you have nothing to decode, you shouldn't call the decode function.
496 The functions C<utf8n_to_uvchr> and its derivatives now return the
497 Unicode REPLACEMENT CHARACTER if called with UTF-8 that has the overlong
498 malformation, and that malformation is allowed by the input parameters.
499 This malformation is where the UTF-8 looks valid syntactically, but
500 there is a shorter sequence that yields the same code point. This has
501 been forbidden since Unicode version 3.1.
505 The functions C<utf8n_to_uvchr> and its derivatives now accept an input
506 flag to allow the overflow malformation. This malformation is when the
507 UTF-8 may be syntactically valid, but the code point it represents is
508 not capable of being represented in the word length on the platform.
509 What "allowed" means in this case is that the function doesn't return an
510 error, and advances the parse pointer to beyond the UTF-8 in question,
511 but it returns the Unicode REPLACEMENT CHARACTER as the value of the
512 code point (since the real value is not representable).
516 =head1 Selected Bug Fixes
522 Under C<use utf8>, the entire Perl program is now checked that the UTF-8
523 is wellformed. This resolves [perl #126310].
527 The range operator C<..> on strings now handles its arguments correctly when in
528 the scope of the L<< C<unicode_strings>|feature/"The 'unicode_strings' feature" >>
529 feature. The previous behaviour was sufficiently unexpected that we believe no
530 correct program could have made use of it.
534 The S<split> operator did not ensure enough space was allocated for
535 its return value in scalar context. It could then write a single
536 pointer immediately beyond the end of the memory block allocated for
537 the stack. [perl #130262]
541 Using a large code point with the C<W> pack template character with
542 the current output position aligned at just the right point could
543 cause a write a single zero byte immediately beyond the end of an
544 allocated buffer. [perl #129149]
548 Supplying the form picture argument as part of the form argument list
549 where the picture specifies modifying the argument could cause an
550 access to the new freed compiled form. [perl #129125]
554 Fix a problem with sort's build-in compare, where it would not sort
555 correctly with 64-bit integers, and non-long doubles. [perl #130335]
559 Fix issues with /(?{ ... E<lt>E<lt>EOF })/ that broke Method-Signatures. [perl #130398]
563 Fix a macro which caused syntax error on an EBCDIC build.
567 Prevent tests from getting hung up on 'NonStop' option. [perl #130445]
571 Fixed an assertion failure with C<chop> and C<chomp>, which
572 could be triggered by C<chop(@x =~ tr/1/1/)>. [perl #130198].
576 Fixed a comment skipping error under C</x>; it could stop skipping a
577 byte early, which could be in the middle of a UTF-8 character.
582 F<perldb> now ignores F</dev/tty> on non-Unix systems. [perl #113960];
586 Fix assertion failure for C<{}-E<gt>$x> when C<$x> isn't defined. [perl #130496].
590 DragonFly BSD now has support for setproctitle(). [perl #130068].
594 Fix an assertion error which could be triggered when lookahead string
595 in patterns exceeded a minimum length. [perl #130522].
599 Only warn once per literal about a misplaced C<_>. [perl #70878].
603 Ensure range-start is set after error in C<tr///>. [perl #129342].
607 Don't read past start of string for unmatched backref; otherwise,
608 we may have heap buffer overflow. [perl #129377].
612 Properly recognize mathematical digit ranges starting at U+1D7E.
613 C<use re 'strict'> is supposed to warn if you use a range whose start
614 and end digit aren't from the same group of 10. It didn't do that
615 for five groups of mathematical digits starting at U+1D7E.
620 =head1 Acknowledgements
622 Perl 5.25.9 represents approximately 4 weeks of development since Perl 5.25.8
623 and contains approximately 24,000 lines of changes across 400 files from 23
626 Excluding auto-generated files, documentation and release tools, there were
627 approximately 17,000 lines of changes to 220 .pm, .t, .c and .h files.
629 Perl continues to flourish into its third decade thanks to a vibrant community
630 of users and developers. The following people are known to have contributed the
631 improvements that became Perl 5.25.9:
633 Aaron Crane, Abigail, Andreas König, Andy Lester, Aristotle Pagaltzis
634 Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Collins,
635 David Mitchell, Father Chrysostomos, Hugo van der Sanden, James E Keenan,
636 Jerry D. Hedden, John Lightsey, Karl Williamson, Paul Marquess, Peter Avalos,
637 Sawyer X, Steve Hay, Tomasz Konojacki, Tony Cook, Zefram.
639 The list above is almost certainly incomplete as it is automatically generated
640 from version control history. In particular, it does not include the names of
641 the (very much appreciated) contributors who reported issues to the Perl bug
644 Many of the changes included in this version originated in the CPAN modules
645 included in Perl's core. We're grateful to the entire CPAN community for
646 helping Perl to flourish.
648 For a more complete list of all of Perl's historical contributors, please see
649 the F<AUTHORS> file in the Perl source distribution.
651 =head1 Reporting Bugs
653 If you find what you think is a bug, you might check the perl bug database
654 at L<https://rt.perl.org/> . There may also be information at
655 L<http://www.perl.org/> , the Perl Home Page.
657 If you believe you have an unreported bug, please run the L<perlbug> program
658 included with your release. Be sure to trim your bug down to a tiny but
659 sufficient test case. Your bug report, along with the output of C<perl -V>,
660 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
662 If the bug you are reporting has security implications which make it
663 inappropriate to send to a publicly archived mailing list, then see
664 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
665 for details of how to report the issue.
669 The F<Changes> file for an explanation of how to view exhaustive details on
672 The F<INSTALL> file for how to build Perl.
674 The F<README> file for general stuff.
676 The F<Artistic> and F<Copying> files for copyright information.