5 [ this is a template for a new perldelta file. Any text flagged as XXX needs
6 to be processed before release. ]
8 perldelta - what is new for perl v5.27.1
12 This document describes differences between the 5.27.0 release and the 5.27.1
15 If you are upgrading from an earlier release such as 5.26.0, first read
16 L<perl5270delta>, which describes differences between 5.26.0 and 5.27.0.
20 XXX Any important notices here
22 =head1 Core Enhancements
24 XXX New core language features go here. Summarize user-visible core language
25 enhancements. Particularly prominent performance optimisations could go
26 here, but most should go in the L</Performance Enhancements> section.
28 [ List each enhancement as a =head2 entry ]
30 =head2 L<C<delete>|perlfunc/delete EXPR> on key/value slices
32 L<C<delete>|perlfunc/delete EXPR> can now be used on key/value slices,
33 returning the keys along with the deleted values.
34 L<[perl #131328]|https://rt.perl.org/Ticket/Display.html?id=131328>
38 XXX Any security-related notices go here. In particular, any security
39 vulnerabilities closed should be noted here rather than in the
40 L</Selected Bug Fixes> section.
42 =head2 Default Hash Function Change
44 Perl 5.27.0 retires various older hash functions which are not viewed as
45 sufficiently secure for use in Perl. We now support four general purpose
46 hash functions, Siphash (2-4 and 1-3 variants), and Zaphod32, and StadtX
47 hash. In addition we support SBOX32 (a form of tabular hashing) for hashing
48 short strings, in conjunction with any of the other hash functions provided.
50 By default Perl is configured to support SBOX hashing of strings up to 24
51 characters, in conjunction with StadtX hashing on 64 bit builds, and
52 Zaphod32 hashing for 32 bit builds.
54 You may control these settings with the following options to Configure:
56 -DPERL_HASH_FUNC_SIPHASH
57 -DPERL_HASH_FUNC_SIPHASH13
58 -DPERL_HASH_FUNC_STADTX
59 -DPERL_HASH_FUNC_ZAPHOD32
61 To disable SBOX hashing you can use
63 -DPERL_HASH_USE_SBOX32_ALSO=0
65 And to set the maximum length to use SBOX32 hashing on with:
69 The maximum length allowed is 256. There probably isn't much point
70 in setting it higher than the default.
72 =head1 Incompatible Changes
74 XXX For a release on a stable branch, this section aspires to be:
76 There are no changes intentionally incompatible with 5.XXX.XXX
77 If any exist, they are bugs, and we request that you submit a
78 report. See L</Reporting Bugs> below.
80 [ List each incompatible change as a =head2 entry ]
82 =head2 Comma-less variable lists in formats are no longer allowed
84 Omitting the commas between variables passed to formats is no longer
85 allowed. This has been deprecated since Perl 5.000.
87 =head2 The C<:locked> and C<:unique> attributes have been removed
89 These have been no-ops and deprecated since Perl 5.12 and 5.10,
92 =head2 C<\N{}> with nothing between the braces is now illegal.
94 This has been deprecated since Perl 5.24.
96 =head2 Opening the same symbol as both a file and directory handle is no longer allowed
98 Using open() and opendir() to associate both a filehandle and a dirhandle
99 to the same symbol (glob or scalar) has been deprecated since Perl 5.10.
101 =head2 Use of bare C<< << >> to mean C<< <<"" >> is no longer allowed
103 Use of a bare terminator has been deprecated since Perl 5.000.
105 =head2 Setting $/ to a reference to a non-positive integer no longer allowed
107 This used to work like setting it to C<undef>, but has been deprecated
110 =head2 Unicode code points with values exceeding C<IV_MAX> are now fatal.
112 This was deprecated since Perl 5.24.
114 =head2 C<B::OP::terse> no longer exists.
116 Use C<B::Concise::b_terse> instead.
118 =head2 Use of inherited AUTOLOAD for non-methods is no longer allowed.
120 This was deprecated in Perl 5.004.
122 =head2 Use of strings with code points over 0xFF is not allowed for
123 bitwise string operators
125 Code points over 0xFF do not make sense for bitwise operators.
127 =head2 Setting C<${^ENCODING}> to a defined value is now illegal
129 This has been deprecated since Perl 5.22 and a no-op since Perl 5.26.
131 =head2 Backslash no longer escapes colon in PATH for the -S switch
133 Previously the C<-S> switch incorrectly treated backslash ("\") as an
134 escape for colon when traversing the C<PATH> environment variable.
139 XXX Any deprecated features, syntax, modules etc. should be listed here.
141 =head2 Use of L<C<vec>|perlfunc/vec EXPR,OFFSET,BITS> on strings with code
142 points above 0xFF is deprecated.
144 Use of these is nonsensical, as C<vec> is a bit-oriented operation,
145 which operates on the underlying UTF-8 representation these strings must
146 be in, and will likely give unexpected results.
148 =head2 Some uses of unescaped C<"{"> are no longer fatal
150 Perl 5.26.0 fatalized some uses of an unescaped left brace, but an
151 exception was made at the last minute, specifically crafted to be a
152 minimal change to allow GNU Autoconf to work. This code is heavily
153 depended upon, and continues to use the deprecated usage. Its use of an
154 unescaped left brace is one where we have no intention of repurposing
155 C<"{"> to be something other than itself.
157 That exception is now generalized to include various other such cases
158 where the C<"{"> will not be repurposed. This is to get real experience
159 with this more complicated change now, in case we need to issue a dot
160 release if we find other things like Autoconf that are important to work
163 Note that these uses continue to raise a deprecation message.
165 =head2 Module removals
167 XXX Remove this section if inapplicable.
169 The following modules will be removed from the core distribution in a
170 future release, and will at that time need to be installed from CPAN.
171 Distributions on CPAN which require these modules will need to list them as
174 The core versions of these modules will now issue C<"deprecated">-category
175 warnings to alert you to this fact. To silence these deprecation warnings,
176 install the modules in question from CPAN.
178 Note that these are (with rare exceptions) fine modules that you are encouraged
179 to continue to use. Their disinclusion from core primarily hinges on their
180 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
181 not usually on concerns over their design.
187 XXX Note that deprecated modules should be listed here even if they are listed
188 as an updated module in the L</Modules and Pragmata> section.
192 [ List each other deprecation as a =head2 entry ]
194 =head1 Performance Enhancements
196 XXX Changes which enhance performance without changing behaviour go here.
197 There may well be none in a stable release.
199 [ List each enhancement as a =item entry ]
205 File::Glob has been modified to remove unnecessary backtracking and
206 recursion, thanks to Russ Cox. See L<https://research.swtch.com/glob>
211 =head1 Modules and Pragmata
213 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
214 go here. If Module::CoreList is updated, generate an initial draft of the
215 following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
216 for important changes should then be added by hand. In an ideal world,
217 dual-life modules would have a F<Changes> file that could be cribbed.
219 [ Within each section, list entries as a =item entry ]
221 =head2 New Modules and Pragmata
231 =head2 Updated Modules and Pragmata
237 L<XXX> has been upgraded from version A.xx to B.yy.
241 =head2 Removed Modules and Pragmata
253 XXX Changes to files in F<pod/> go here. Consider grouping entries by
254 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
256 =head2 New Documentation
258 XXX Changes which create B<new> files in F<pod/> go here.
262 XXX Description of the purpose of the new file here
264 =head2 Changes to Existing Documentation
266 We have attempted to update the documentation to reflect the changes
267 listed in this document. If you find any we have missed, send email
268 to L<perlbug@perl.org|mailto:perlbug@perl.org>.
270 XXX Changes which significantly change existing files in F<pod/> go here.
271 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
280 XXX Description of the change here
286 The following additions or changes have been made to diagnostic output,
287 including warnings and fatal error messages. For the complete list of
288 diagnostic messages, see L<perldiag>.
290 XXX New or changed warnings emitted by the core's C<C> code go here. Also
291 include any changes in L<perldiag> that reconcile it to the C<C> code.
293 =head2 New Diagnostics
295 XXX Newly added diagnostic messages go under here, separated into New Errors
304 XXX L<message|perldiag/"message">
314 XXX L<message|perldiag/"message">
318 =head2 Changes to Existing Diagnostics
320 XXX Changes (i.e. rewording) of diagnostic messages go here
326 XXX Describe change here
330 =head1 Utility Changes
332 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
333 Most of these are built within the directory F<utils>.
335 [ List utility changes as a =head2 entry for each utility and =item
336 entries for each change
337 Use L<XXX> with program names to get proper documentation linking. ]
349 =head1 Configuration and Compilation
351 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
352 go here. Any other changes to the Perl build process should be listed here.
353 However, any platform-specific changes should be listed in the
354 L</Platform Support> section, instead.
356 [ List changes as a =item entry ].
368 Tests were added and changed to reflect the other additions and
369 changes in this release. Furthermore, these significant changes were
376 Testing of the XS-APItest directory is now done in parallel, where
381 Perl now includes a default F<.travis.yml> file for Travis CI testing
382 on github mirrors. [perl #123981]
386 =head1 Platform Support
388 XXX Any changes to platform support should be listed in the sections below.
390 [ Within the sections, list each platform as a =item entry with specific
391 changes as paragraphs below it. ]
395 XXX List any platforms that this version of perl compiles on, that previous
396 versions did not. These will either be enabled by new files in the F<hints/>
397 directories, or new subdirectories and F<README> files at the top level of the
402 =item XXX-some-platform
408 =head2 Discontinued Platforms
410 XXX List any platforms that this version of perl no longer compiles on.
414 =item XXX-some-platform
420 =head2 Platform-Specific Notes
422 XXX List any changes for specific platforms. This could include configuration
423 and compilation changes or changes in portability/compatibility. However,
424 changes within modules for platforms should generally be listed in the
425 L</Modules and Pragmata> section.
429 =item XXX-some-platform
435 =head1 Internal Changes
437 XXX Changes which affect the interface available to C<XS> code go here. Other
438 significant internal changes for future core maintainers should be noted as
441 [ List each change as a =item entry ]
447 The C<PL_statbuf> interpreter variable has been removed.
451 The deprecated function C<to_utf8_case()>, accessible from XS code, has
457 L<C<is_utf8_invariant_string_loc()>|perlapi/is_utf8_invariant_string_loc>
458 has been added that is like
459 L<C<is_utf8_invariant_string()>|perlapi/is_utf8_invariant_string>
460 but takes an extra pointer parameter into which is stored the location
461 of the first variant character, if any are found.
465 =head1 Selected Bug Fixes
467 XXX Important bug fixes in the core language are summarized here. Bug fixes in
468 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
470 [ List each fix as a =item entry ]
476 Fetching the name of a glob that was previously UTF-8 but wasn't any
477 longer would return that name flagged as UTF-8. [perl #131263]
481 =head1 Known Problems
483 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
484 tests that had to be C<TODO>ed for the release would be noted here. Unfixed
485 platform specific bugs also go here.
487 [ List each fix as a =item entry ]
497 =head1 Errata From Previous Releases
503 XXX Add anything here that we forgot to add, or were mistaken about, in
504 the perldelta of a previous release.
510 XXX If any significant core contributor has died, we've added a short obituary
513 =head1 Acknowledgements
515 XXX Generate this with:
517 perl Porting/acknowledgements.pl v5.25.5..HEAD
519 =head1 Reporting Bugs
521 If you find what you think is a bug, you might check the perl bug database
522 at L<https://rt.perl.org/> . There may also be information at
523 L<http://www.perl.org/> , the Perl Home Page.
525 If you believe you have an unreported bug, please run the L<perlbug> program
526 included with your release. Be sure to trim your bug down to a tiny but
527 sufficient test case. Your bug report, along with the output of C<perl -V>,
528 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
530 If the bug you are reporting has security implications which make it
531 inappropriate to send to a publicly archived mailing list, then see
532 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
533 for details of how to report the issue.
537 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
538 you can do so by running the C<perlthanks> program:
542 This will send an email to the Perl 5 Porters list with your show of thanks.
546 The F<Changes> file for an explanation of how to view exhaustive details on
549 The F<INSTALL> file for how to build Perl.
551 The F<README> file for general stuff.
553 The F<Artistic> and F<Copying> files for copyright information.