5 perl5198delta - what is new for perl v5.19.8
9 This document describes differences between the 5.19.7 release and the 5.19.8
12 If you are upgrading from an earlier release such as 5.19.6, first read
13 L<perl5197delta>, which describes differences between 5.19.6 and 5.19.7.
15 =head1 Core Enhancements
17 =head2 New C<\p{Unicode}> regular expression pattern property
19 This is a synonym for C<\p{Any}> and matches the set of Unicode-defined
20 code points 0 - 0x10FFFF.
22 =head1 Incompatible Changes
24 =head2 C<do> can no longer be used to call subroutines
26 The C<do SUBROUTINE(LIST)> form has resulted in a deprecation warning
27 since Perl v5.0.0, and is now a syntax error.
29 =head2 C<\p{}>, C<\P{}> matching has changed for non-Unicode code
32 C<\p{}> and C<\P{}> are defined by Unicode only on Unicode-defined code
33 points (C<U+0000> through C<U+10FFFF>). Their behavior on matching
34 these legal Unicode code points is unchanged, but there are changes for
35 code points C<0x110000> and above. Previously, Perl treated the result
36 of matching C<\p{}> and C<\P{}> against these as C<undef>, which
37 translates into "false". For C<\P{}>, this was then complemented into
38 "true". A warning was supposed to be raised when this happened.
39 However, various optimizations could prevent the warning, and the
40 results were often counter-intuitive, with both a match and its seeming
41 complement being false. Now all non-Unicode code points are treated as
42 typical unassigned Unicode code points. This generally is more
43 Do-What-I-Mean. A warning is raised only if the results are arguably
44 different from a strict Unicode approach, and from what Perl used to do.
45 Code that needs to be strictly Unicode compliant can make this warning
46 fatal, and then Perl always raises the warning.
48 Details are in L<perlunicode/Beyond Unicode code points>.
50 =head2 C<\p{All}> has been expanded to match all possible code points
52 The Perl-defined regular expression pattern element C<\p{All}>, unused
53 on CPAN, used to match just the Unicode code points; now it matches all
54 possible code points; that is, it is equivalent to C<qr/./s>. Thus
55 C<\p{All}> is no longer synonymous with C<\p{Any}>, which continues to
56 match just the Unicode code points, as Unicode says it should.
60 XXX Any deprecated features, syntax, modules etc. should be listed here.
62 =head2 Module removals
64 XXX Remove this section if inapplicable.
66 The following modules will be removed from the core distribution in a
67 future release, and will at that time need to be installed from CPAN.
68 Distributions on CPAN which require these modules will need to list them as
71 The core versions of these modules will now issue C<"deprecated">-category
72 warnings to alert you to this fact. To silence these deprecation warnings,
73 install the modules in question from CPAN.
75 Note that these are (with rare exceptions) fine modules that you are encouraged
76 to continue to use. Their disinclusion from core primarily hinges on their
77 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
78 not usually on concerns over their design.
82 XXX Note that deprecated modules should be listed here even if they are listed
83 as an updated module in the L</Modules and Pragmata> section.
87 =head1 Modules and Pragmata
89 =head2 New Modules and Pragmata
95 L<IO::Socket::IP> has been (tentatively) added to core at version 0.26.
99 =head2 Updated Modules and Pragmata
105 L<perl5db.pl> has been upgraded from version 1.42 to 1.43
107 Fix a crash in tab completion, where available. [perl #120827]
109 The debugger tests no longer open two handles to the same output file,
110 making them more robust. [perl #118817]
114 L<base> has been upgraded from version 2.20 to 2.21.
116 The stricter load failure tests added in 2.20 now allow for
117 C<${^LAST_FH}> being set.
121 L<constant> has been upgraded from version 1.30 to 1.31.
125 L<DynaLoader> has been upgraded from version 1.22 to 1.24.
129 L<Encode> has been upgraded from version 2.55 to 2.57.
131 UTF-8 is no longer used in the C source (which some compilers didn't like), and
132 some POD errors have been fixed in the documentation.
136 L<Errno> has been upgraded from version 1.20_01 to 1.20_02.
140 L<ExtUtils::CBuilder> has been upgraded from version 0.280212 to 0.280213.
144 L<ExtUtils::MakeMaker> has been upgraded from version 6.84 to 6.86.
148 L<File::Copy> has been upgraded from version 2.28 to 2.29.
152 L<Hash::Util::FieldHash> has been upgraded from version 1.13 to 1.14.
156 L<inc::latest> has been upgraded from version 0.4203 to 0.4204.
157 NOTE: L<inc::latest> is deprecated and may be removed from a future version of
162 L<IO::Socket::UNIX> has been upgraded from version 1.25 to 1.26.
164 Removed a warning about an ancient behaviour change and filled out the
165 SYNOPSIS. [perl #120981]
169 The libnet module collection has been upgraded from version 1.23 to 1.24.
171 The handling of CRLF characters in L<Net::FTP> has been fixed.
175 L<List::Util> has been upgraded from version 1.35 to 1.36.
179 L<Module::Build> has been upgraded from version 0.4203 to 0.4204.
180 NOTE: L<Module::Build> is deprecated and may be removed from a future version
185 L<Module::CoreList> has been upgraded from version 3.02 to 3.04.
189 L<Module::Load> has been upgraded from version 0.24 to 0.28.
193 L<Module::Load::Conditional> has been upgraded from version 0.58 to 0.60.
197 L<Perl::OSType> has been upgraded from version 1.006 to 1.007.
201 L<PerlIO::encoding> has been upgraded from version 0.17 to 0.18.
205 L<Pod::Perldoc> has been upgraded from version 3.20 to 3.21.
209 L<POSIX> has been upgraded from version 1.37 to 1.38_01.
213 L<Scalar::Util> has been upgraded from version 1.35 to 1.36.
217 L<threads::shared> has been upgraded from version 1.45 to 1.46.
221 L<Time::Piece> has been upgraded from version 1.24 to 1.27.
225 L<Unicode::UCD> has been upgraded from version 0.55 to 0.57.
229 L<version> has been upgraded from version 0.9904 to 0.9907.
233 L<warnings> has been upgraded from version 1.20 to 1.21.
237 L<XSLoader> has been upgraded from version 0.16 to 0.17.
243 =head2 Changes to Existing Documentation
249 L<perlunicode> has been updated to reflect C<Bidi_Class> changes in Unicode
256 The following additions or changes have been made to diagnostic output,
257 including warnings and fatal error messages. For the complete list of
258 diagnostic messages, see L<perldiag>.
266 %s on a reference is now experimental
268 The "auto-deref" feature is now experimental.
270 Starting in v5.14.0, it was possible to use push, pop, keys, and other
271 built-in functions not only on aggregate types, but on references to
272 them. The feature was not deployed to its original intended
273 specification, and now may become redundant to postfix dereferencing.
274 It has always been categorized as an experimental feature, and in
275 v5.20.0 is carries a warning as such.
277 Warnings will now be issued at compile time when these operations are
280 no if $] >= 5.01908, warnings => "experimental::autoderef";
282 Consider, though, replacing the use of these features, as they may
283 change behavior again before becoming stable.
287 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">.
288 This replaces the message "Code point 0x%X is not Unicode, all \p{}
289 matches fail; all \P{} matches succeed".
293 =head1 Utility Changes
301 F<perlbug> now has a C<-p> option for attaching patches with a bug report.
305 F<perlbug> now does input in the encoding of the current locale and
310 =head1 Configuration and Compilation
316 Distinct library basenames with C<d_libname_unique>.
318 When compiling perl with this option, the library files for XS modules are
319 named something "unique" -- for example, Hash/Util/Util.so becomes
320 Hash/Util/PL_Hash__Util.so. This behavior is similar to what currently
321 happens on VMS, and serves as groundwork for the Android port.
325 C<sysroot> option to indicate the logical root directory under gcc and clang.
327 When building with this option set, both Configure and the compilers search
328 for all headers and libraries under this new sysroot, instead of /.
330 This is a huge time saver if cross-compiling, but can also help
331 on native builds if your toolchain's files have non-standard locations.
335 =head1 Platform Support
341 Code related to supporting C<sfio> has been removed.
343 Perl 5.004 added support to use the native API of C<sfio>, AT&T's Safe/Fast
344 I/O library. This code still built with v5.8.0, albeit with many regression
345 tests failing, but was inadvertently broken before the v5.8.1 release,
346 meaning that it has not worked on any version of Perl released since then.
347 In over a decade we have received no bug reports about this, hence it is clear
348 that no-one is using this functionality on any version of Perl that is still
349 supported to any degree.
353 =head2 Platform-Specific Notes
359 recv() on a connected handle would populate the returned sender
360 address with whatever happened to be in the working buffer. recv()
361 now uses a workaround similar to the Win32 recv() wrapper and returns
362 an empty string when recvfrom(2) doesn't modify the supplied address
363 length. [perl #118843]
367 =head1 Internal Changes
371 =item newATTRSUB is now a macro
373 The public API newATTRSUB was previously a macro to the private
374 function Perl_newATTRSUB. Function Perl_newATTRSUB has been removed. newATTRSUB
375 is now macro to a different internal function.
377 =item Changes in warnings raised by C<utf8n_to_uvchr()>
379 This bottom level function decodes the first character of a UTF-8 string
380 into a code point. It is accessible to C<XS> level code, but it's
381 discouraged from using it directly. There are higher level functions
382 that call this that should be used instead, such as
383 L<perlapi/utf8_to_uvchr_buf>. For completeness though, this documents
384 some changes to it. Now, tests for malformations are done before any
385 tests for other potential issues. One of those issues involves code
386 points so large that they have never appeared in any official standard
387 (the current standard has scaled back the highest acceptable code point
388 from earlier versions). It is possible (though not done in CPAN) to
389 warn and/or forbid these code points, while accepting smaller code
390 points that are still above the legal Unicode maximum. The warning
391 message for this now includes the code point if representable on the
392 machine. Previously it always displayed raw bytes, which is what it
393 still does for non-representable code points.
397 =head1 Selected Bug Fixes
403 In v5.19.6, C<do CORE()> was inadvertently changed from being interpreted
404 as do-file (i.e., C<do +CORE()>) to do-sub (i.e., C<&CORE()>). It has now
409 v5.19.7 inadvertently caused freed scalars to be passed to subroutines in
410 @INC if it contained multiple subs. This has been fixed. [perl #120657]
414 Individually-tied elements of @INC (as in C<tie $INC[0]...>) are now
415 handled correctly. Formerly, whether a sub returned by such a tied element
416 would be treated as a sub depended on whether a FETCH had occurred
421 C<getc> on a byte-sized handle after the same C<getc> operator had been
422 used on a utf8 handle used to treat the bytes as utf8, resulting in erratic
423 behavior (e.g., malformed UTF-8 warnings).
427 An initial C<{> at the beginning of a format argument line was always
428 interpreted as the beginning of a block prior to v5.18. In Perl v5.18, it
429 started being treated as an ambiguous token. The parser would guess
430 whether it was supposed to be an anonymous hash constructor or a block
431 based on the contents. Now the previous behavious has been restored.
436 In Perl v5.18 C<undef *_; goto &sub> and C<local *_; goto &sub> started
437 crashing. This has been fixed. [perl #119949]
441 =head1 Acknowledgements
443 Perl 5.19.8 represents approximately 4 weeks of development since Perl 5.19.7
444 and contains approximately 38,000 lines of changes across 420 files from 26
447 Perl continues to flourish into its third decade thanks to a vibrant community
448 of users and developers. The following people are known to have contributed the
449 improvements that became Perl 5.19.8:
451 Abigail, Alan Hourihane, Brian Fraser, Brian Gottreu, Chris 'BinGOs' Williams,
452 Christian Millour, Craig A. Berry, Dagfinn Ilmari Mannsåker, Daniel Dragan,
453 David Mitchell, Dominic Hargreaves, Father Chrysostomos, H.Merijn Brand, James
454 E Keenan, Jess Robinson, John Peacock, Karl Williamson, Martin McGrath, Matthew
455 Horsfall, Nicholas Clark, Ricardo Signes, Shlomi Fish, Steve Hay, Tobias Leich,
456 Tony Cook, Ævar Arnfjörð Bjarmason.
458 The list above is almost certainly incomplete as it is automatically generated
459 from version control history. In particular, it does not include the names of
460 the (very much appreciated) contributors who reported issues to the Perl bug
463 Many of the changes included in this version originated in the CPAN modules
464 included in Perl's core. We're grateful to the entire CPAN community for
465 helping Perl to flourish.
467 For a more complete list of all of Perl's historical contributors, please see
468 the F<AUTHORS> file in the Perl source distribution.
470 =head1 Reporting Bugs
472 If you find what you think is a bug, you might check the articles recently
473 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
474 https://rt.perl.org/ . There may also be information at
475 http://www.perl.org/ , the Perl Home Page.
477 If you believe you have an unreported bug, please run the L<perlbug> program
478 included with your release. Be sure to trim your bug down to a tiny but
479 sufficient test case. Your bug report, along with the output of C<perl -V>,
480 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
482 If the bug you are reporting has security implications, which make it
483 inappropriate to send to a publicly archived mailing list, then please send it
484 to perl5-security-report@perl.org. This points to a closed subscription
485 unarchived mailing list, which includes all the core committers, who will be
486 able to help assess the impact of issues, figure out a resolution, and help
487 co-ordinate the release of patches to mitigate or fix the problem across all
488 platforms on which Perl is supported. Please only use this address for
489 security issues in the Perl core, not for modules independently distributed on
494 The F<Changes> file for an explanation of how to view exhaustive details on
497 The F<INSTALL> file for how to build Perl.
499 The F<README> file for general stuff.
501 The F<Artistic> and F<Copying> files for copyright information.