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.19.8
12 This document describes differences between the 5.19.7 release and the 5.19.8
15 If you are upgrading from an earlier release such as 5.19.6, first read
16 L<perl5197delta>, which describes differences between 5.19.6 and 5.19.7.
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 =head2 New C<\p{Unicode}> regular expression pattern property
30 This is a synonym for C<\p{Any}> and matches the set of Unicode-defined
31 code points 0 - 0x10FFFF.
35 XXX Any security-related notices go here. In particular, any security
36 vulnerabilities closed should be noted here rather than in the
37 L</Selected Bug Fixes> section.
39 [ List each security issue as a =head2 entry ]
41 =head1 Incompatible Changes
43 =head2 C<do> can no longer be used to call subroutines
45 The C<do SUBROUTINE(LIST)> form has resulted in a deprecation warning
46 since Perl v5.0.0, and is now a syntax error.
48 =head2 C<\p{}>, C<\P{}> matching has changed for non-Unicode code
51 C<\p{}> and C<\P{}> are defined by Unicode only on Unicode-defined code
52 points (C<U+0000> through C<U+10FFFF>). Their behavior on matching
53 these legal Unicode code points is unchanged, but there are changes for
54 code points C<0x110000> and above. Previously, Perl treated the result
55 of matching C<\p{}> and C<\P{}> against these as C<undef>, which
56 translates into "false". For C<\P{}>, this was then complemented into
57 "true". A warning was supposed to be raised when this happened.
58 However, various optimizations could prevent the warning, and the
59 results were often counter-intuitive, with both a match and its seeming
60 complement being false. Now all non-Unicode code points are treated as
61 typical unassigned Unicode code points. This generally is more
62 Do-What-I-Mean. A warning is raised only if the results are arguably
63 different from a strict Unicode approach, and from what Perl used to do.
64 Code that needs to be strictly Unicode compliant can make this warning
65 fatal, and then Perl always raises the warning.
67 Details are in L<perlunicode/Beyond Unicode code points>.
69 =head2 C<\p{All}> has been expanded to match all possible code points
71 The Perl-defined regular expression pattern element C<\p{All}>, unused
72 on CPAN, used to match just the Unicode code points; now it matches all
73 possible code points; that is, it is equivalent to C<qr/./s>. Thus
74 C<\p{All}> is no longer synonymous with C<\p{Any}>, which continues to
75 match just the Unicode code points, as Unicode says it should.
79 XXX Any deprecated features, syntax, modules etc. should be listed here.
81 =head2 Module removals
83 XXX Remove this section if inapplicable.
85 The following modules will be removed from the core distribution in a
86 future release, and will at that time need to be installed from CPAN.
87 Distributions on CPAN which require these modules will need to list them as
90 The core versions of these modules will now issue C<"deprecated">-category
91 warnings to alert you to this fact. To silence these deprecation warnings,
92 install the modules in question from CPAN.
94 Note that these are (with rare exceptions) fine modules that you are encouraged
95 to continue to use. Their disinclusion from core primarily hinges on their
96 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
97 not usually on concerns over their design.
101 XXX Note that deprecated modules should be listed here even if they are listed
102 as an updated module in the L</Modules and Pragmata> section.
106 [ List each other deprecation as a =head2 entry ]
108 =head1 Performance Enhancements
110 XXX Changes which enhance performance without changing behaviour go here.
111 There may well be none in a stable release.
113 [ List each enhancement as a =item entry ]
123 =head1 Modules and Pragmata
125 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
126 go here. If Module::CoreList is updated, generate an initial draft of the
127 following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
128 for important changes should then be added by hand. In an ideal world,
129 dual-life modules would have a F<Changes> file that could be cribbed.
131 [ Within each section, list entries as a =item entry ]
133 =head2 New Modules and Pragmata
143 =head2 Updated Modules and Pragmata
149 L<base> has been upgraded from version 2.20 to 2.21.
151 The stricter load failure tests added in 2.20 now allow for
152 C<${^LAST_FH}> being set.
156 L<Encode> has been upgraded from version 2.56 to 2.57.
158 UTF-8 is no longer used in the C source (which some compilers didn't like), and
159 some POD errors have been fixed in the documentation.
163 The libnet module collection has been upgraded from version 1.23 to 1.24.
165 The handling of CRLF characters in L<Net::FTP> has been fixed.
169 L<IO::Socket::UNIX> has been upgraded from version 1.25 to 1.26.
171 Removed a warning about an ancient behaviour change and filled out the
172 SYNOPSIS. [perl #120981]
176 L<perl5db.pl> has been upgraded from version 1.42 to 1.43
178 Fix a crash in tab completion, where available. [perl #120827]
180 The debugger tests no longer open two handles to the same output file,
181 making them more robust. [perl #118817]
185 =head2 Removed Modules and Pragmata
197 XXX Changes to files in F<pod/> go here. Consider grouping entries by
198 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
200 =head2 New Documentation
202 XXX Changes which create B<new> files in F<pod/> go here.
206 XXX Description of the purpose of the new file here
208 =head2 Changes to Existing Documentation
210 XXX Changes which significantly change existing files in F<pod/> go here.
211 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
220 XXX Description of the change here
226 The following additions or changes have been made to diagnostic output,
227 including warnings and fatal error messages. For the complete list of
228 diagnostic messages, see L<perldiag>.
230 XXX New or changed warnings emitted by the core's C<C> code go here. Also
231 include any changes in L<perldiag> that reconcile it to the C<C> code.
233 =head2 New Diagnostics
235 XXX Newly added diagnostic messages go under here, separated into New Errors
244 XXX L<message|perldiag/"message">
254 %s on a reference is now experimental
256 The "auto-deref" feature is now experimental.
258 Starting in v5.14.0, it was possible to use push, pop, keys, and other
259 built-in functions not only on aggregate types, but on references to
260 them. The feature was not deployed to its original intended
261 specification, and now may become redundant to postfix dereferencing.
262 It has always been categorized as an experimental feature, and in
263 v5.20.0 is carries a warning as such.
265 Warnings will now be issued at compile time when these operations are
268 no if $] >= 5.01908, warnings => "experimental::autoderef";
270 Consider, though, replacing the use of these features, as they may
271 change behavior again before becoming stable.
275 L<Matched non-Unicode code point 0x%X against Unicode property; may not be portable|perldiag/"Matched non-Unicode code point 0x%X against Unicode property; may not be portable">.
276 This replaces the message "Code point 0x%X is not Unicode, all \p{}
277 matches fail; all \P{} matches succeed".
281 =head2 Changes to Existing Diagnostics
283 XXX Changes (i.e. rewording) of diagnostic messages go here
289 XXX Describe change here
293 =head1 Utility Changes
295 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
296 Most of these are built within the directories F<utils> and F<x2p>.
298 [ List utility changes as a =head3 entry for each utility and =item
299 entries for each change
300 Use L<XXX> with program names to get proper documentation linking. ]
308 F<perlbug> now has a C<-p> option for attaching patches with a bug report.
312 F<perlbug> now does input in the encoding of the current locale and
317 =head1 Configuration and Compilation
319 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
320 go here. Any other changes to the Perl build process should be listed here.
321 However, any platform-specific changes should be listed in the
322 L</Platform Support> section, instead.
324 [ List changes as a =item entry ].
330 Distinct library basenames with C<d_libname_unique>.
332 When compiling perl with this option, the library files for XS modules are
333 named something "unique" -- for example, Hash/Util/Util.so becomes
334 Hash/Util/PL_Hash__Util.so. This behavior is similar to what currently
335 happens on VMS, and serves as groundwork for the Android port.
339 C<sysroot> option to indicate the logical root directory under gcc and clang.
341 When building with this option set, both Configure and the compilers search
342 for all headers and libraries under this new sysroot, instead of /.
344 This is a huge time saver if cross-compiling, but can also help
345 on native builds if your toolchain's files have non-standard locations.
351 XXX Any significant changes to the testing of a freshly built perl should be
352 listed here. Changes which create B<new> files in F<t/> go here as do any
353 large changes to the testing harness (e.g. when parallel testing was added).
354 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
355 that they represent may be covered elsewhere.
357 [ List each test improvement as a =item entry ]
367 =head1 Platform Support
369 XXX Any changes to platform support should be listed in the sections below.
371 [ Within the sections, list each platform as a =item entry with specific
372 changes as paragraphs below it. ]
378 Code related to supporting C<sfio> has been removed.
380 Perl 5.004 added support to use the native API of C<sfio>, AT&T's Safe/Fast
381 I/O library. This code still built with v5.8.0, albeit with many regression
382 tests failing, but was inadvertently broken before the v5.8.1 release,
383 meaning that it has not worked on any version of Perl released since then.
384 In over a decade we have received no bug reports about this, hence it is clear
385 that no-one is using this functionality on any version of Perl that is still
386 supported to any degree.
392 XXX List any platforms that this version of perl compiles on, that previous
393 versions did not. These will either be enabled by new files in the F<hints/>
394 directories, or new subdirectories and F<README> files at the top level of the
399 =item XXX-some-platform
405 =head2 Discontinued Platforms
407 XXX List any platforms that this version of perl no longer compiles on.
411 =item XXX-some-platform
417 =head2 Platform-Specific Notes
419 XXX List any changes for specific platforms. This could include configuration
420 and compilation changes or changes in portability/compatibility. However,
421 changes within modules for platforms should generally be listed in the
422 L</Modules and Pragmata> section.
428 recv() on a connected handle would populate the returned sender
429 address with whatever happened to be in the working buffer. recv()
430 now uses a workaround similar to the Win32 recv() wrapper and returns
431 an empty string when recvfrom(2) doesn't modify the supplied address
432 length. [perl #118843]
436 =head1 Internal Changes
438 XXX Changes which affect the interface available to C<XS> code go here. Other
439 significant internal changes for future core maintainers should be noted as
442 [ List each change as a =item entry ]
446 =item newATTRSUB is now a macro
448 The public API newATTRSUB was previously a macro to the private
449 function Perl_newATTRSUB. Function Perl_newATTRSUB has been removed. newATTRSUB
450 is now macro to a different internal function.
452 =item Changes in warnings raised by C<utf8n_to_uvchr()>
454 This bottom level function decodes the first character of a UTF-8 string
455 into a code point. It is accessible to C<XS> level code, but it's
456 discouraged from using it directly. There are higher level functions
457 that call this that should be used instead, such as
458 L<perlapi/utf8_to_uvchr_buf>. For completeness though, this documents
459 some changes to it. Now, tests for malformations are done before any
460 tests for other potential issues. One of those issues involves code
461 points so large that they have never appeared in any official standard
462 (the current standard has scaled back the highest acceptable code point
463 from earlier versions). It is possible (though not done in CPAN) to
464 warn and/or forbid these code points, while accepting smaller code
465 points that are still above the legal Unicode maximum. The warning
466 message for this now includes the code point if representable on the
467 machine. Previously it always displayed raw bytes, which is what it
468 still does for non-representable code points.
472 =head1 Selected Bug Fixes
474 XXX Important bug fixes in the core language are summarized here. Bug fixes in
475 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
477 [ List each fix as a =item entry ]
483 In v5.19.6, C<do CORE()> was inadvertently changed from being interpreted
484 as do-file (i.e., C<do +CORE()>) to do-sub (i.e., C<&CORE()>). It has now
489 v5.19.7 inadvertently caused freed scalars to be passed to subroutines in
490 @INC it contained multiple subs. This has been fixed. [perl #120657]
494 Individually-tied elements of @INC (as in C<tie $INC[0]...>) are now
495 handled correctly. Formerly, whether a sub returned by such a tied element
496 would be treated as a sub depended on whether a FETCH had occurred
501 C<getc> on a byte-sized handle after the same C<getc> operator had been
502 used on a utf8 handle used to treat the bytes as utf8, resulting in erratic
503 behavior (e.g., malformed UTF-8 warnings).
507 =head1 Known Problems
509 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
510 tests that had to be C<TODO>ed for the release would be noted here. Unfixed
511 platform specific bugs also go here.
513 [ List each fix as a =item entry ]
525 XXX If any significant core contributor has died, we've added a short obituary
528 =head1 Acknowledgements
530 XXX Generate this with:
532 perl Porting/acknowledgements.pl v5.19.7..HEAD
534 =head1 Reporting Bugs
536 If you find what you think is a bug, you might check the articles recently
537 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
538 https://rt.perl.org/ . There may also be information at
539 http://www.perl.org/ , the Perl Home Page.
541 If you believe you have an unreported bug, please run the L<perlbug> program
542 included with your release. Be sure to trim your bug down to a tiny but
543 sufficient test case. Your bug report, along with the output of C<perl -V>,
544 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
546 If the bug you are reporting has security implications, which make it
547 inappropriate to send to a publicly archived mailing list, then please send it
548 to perl5-security-report@perl.org. This points to a closed subscription
549 unarchived mailing list, which includes all the core committers, who will be
550 able to help assess the impact of issues, figure out a resolution, and help
551 co-ordinate the release of patches to mitigate or fix the problem across all
552 platforms on which Perl is supported. Please only use this address for
553 security issues in the Perl core, not for modules independently distributed on
558 The F<Changes> file for an explanation of how to view exhaustive details on
561 The F<INSTALL> file for how to build Perl.
563 The F<README> file for general stuff.
565 The F<Artistic> and F<Copying> files for copyright information.