This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: quadmath
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perldelta - what is new for perl v5.21.4
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.21.3 release and the 5.21.4
10 release.
11
12 If you are upgrading from an earlier release such as 5.21.2, first read
13 L<perl5213delta>, which describes differences between 5.21.2 and 5.21.3.
14
15 =head1 Core Enhancements
16
17 =head2 Infinity and NaN (not-a-number) handling improved
18
19 Floating point values are able to hold the special values infinity (also
20 -infinity), and NaN (not-a-number).  Now we more robustly recognize and
21 propagate the value in computations, and on output normalize them to C<Inf> and
22 C<NaN>.
23
24 See also the L<POSIX> enhancements.
25
26 =head1 Incompatible Changes
27
28 =head2 Changes to the C<*> prototype
29
30 The C<*> character in a subroutine's prototype used to allow barewords to take
31 precedence over most, but not all subroutines.  It was never consistent and
32 exhibited buggy behaviour.
33
34 Now it has been changed, so subroutines always take precedence over barewords,
35 which brings it into conformity with similarly prototyped built-in functions:
36
37     sub splat($) { ... }
38     sub foo { ... }
39     splat(foo); # now always splat(foo())
40     splat(bar); # still splat('bar') as before
41     close(foo); # close(foo())
42     close(bar); # close('bar')
43
44 =head1 Performance Enhancements
45
46 =over 4
47
48 =item *
49
50 Subroutines with an empty prototype and bodies containing just C<undef> are now
51 eligible for inlining.
52 L<[perl #122728]|https://rt.perl.org/Ticket/Display.html?id=122728>
53
54 =item *
55
56 Subroutines in packages no longer need to carry typeglobs around with them.
57 Declaring a subroutine will now put a simple sub reference in the stash if
58 possible, saving memory.  The typeglobs still notionally exist, so accessing
59 them will cause the subroutine reference to be upgraded to a typeglob.  This
60 optimization does not currently apply to XSUBs or exported subroutines, and
61 method calls will undo it, since they cache things in typeglobs.
62 L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
63
64 =back
65
66 =head1 Modules and Pragmata
67
68 =head2 New Modules and Pragmata
69
70 =over 4
71
72 =item *
73
74 L<B::Op_private> provides detailed information about the flags used in the
75 C<op_private> field of perl opcodes.
76
77 =back
78
79 =head2 Updated Modules and Pragmata
80
81 =over 4
82
83 =item *
84
85 L<Archive::Tar> has been upgraded from version 2.00 to 2.02.
86
87 Tests can now be run in parallel.
88
89 =item *
90
91 L<Attribute::Handlers> has been upgraded from version 0.96 to 0.97.
92
93 Internal changes to account for the fact that subroutines in packages no longer
94 need to carry typeglobs around with them (see under L</Performance
95 Enhancements>).
96
97 =item *
98
99 L<attributes> has been upgraded from version 0.22 to 0.23.
100
101 The usage of C<memEQs> in the XS has been corrected.
102 L<[perl #122701]|https://rt.perl.org/Ticket/Display.html?id=122701>
103
104 =item *
105
106 L<B> has been upgraded from version 1.50 to 1.51.
107
108 It provides a new C<B::safename> function, based on the existing
109 C<< B::GV->SAFENAME >>, that converts "\cOPEN" to "^OPEN".
110
111 =item *
112
113 L<B::Concise> has been upgraded from version 0.992 to 0.993.
114
115 Internal changes to account for the fact that the defines and labels for the
116 flags in the C<op_private> field of OPs are now auto-generated (see under
117 L</Internal Changes>).
118
119 =item *
120
121 L<B::Deparse> has been upgraded from version 1.27 to 1.28.
122
123 It now deparses C<our(I<LIST>)> and typed lexical (C<my Dog $spot>) correctly.
124
125 =item *
126
127 L<bignum> has been upgraded from version 0.37 to 0.38.
128
129 An C<eval BLOCK> rather than an C<eval EXPR> is now used to see if we can find
130 Math::BigInt::Lite.
131
132 =item *
133
134 L<constant> has been upgraded from version 1.31 to 1.32.
135
136 It now accepts fully-qualified constant names, allowing constants to be defined
137 in packages other than the caller.
138
139 =item *
140
141 L<CPAN::Meta::Requirements> has been upgraded from version 2.126 to 2.128.
142
143 Works around limitations in version::vpp detecting v-string magic and adds
144 support for forthcoming L<ExtUtils::MakeMaker> bootstrap F<version.pm> for
145 Perls older than 5.10.0.
146
147 =item *
148
149 L<Data::Dumper> has been upgraded from version 2.152 to 2.154.
150
151 Fixes CVE-2014-4330 by adding a configuration variable/option to limit
152 recursion when dumping deep data structures.
153
154 =item *
155
156 L<experimental> has been upgraded from version 0.008 to 0.010.
157
158 Hardcodes features for Perls older than 5.15.7.
159
160 =item *
161
162 L<ExtUtils::CBuilder> has been upgraded from version 0.280217 to 0.280219.
163
164 Fixes a regression on Android.
165 L<[perl #122675]|https://rt.perl.org/Ticket/Display.html?id=122675>
166
167 =item *
168
169 L<ExtUtils::Install> has been upgraded from version 1.68 to 2.04.
170
171 No changes to installed files other than version bumps.
172
173 =item *
174
175 L<ExtUtils::Manifest> has been upgraded from version 1.65 to 1.68.
176
177 Fixes a bug with C<maniread()>'s handling of quoted filenames and improves
178 C<manifind()> to follow symlinks.
179 L<[perl #122415]|https://rt.perl.org/Ticket/Display.html?id=122415>
180
181 =item *
182
183 L<File::Find> has been upgraded from version 1.27 to 1.28.
184
185 C<find()> and C<finddepth()> will now warn if passed inappropriate or
186 misspelled options.
187
188 =item *
189
190 L<Getopt::Std> has been upgraded from version 1.10 to 1.11.
191
192 Corrects a typo in the documentation.
193
194 =item *
195
196 L<HTTP::Tiny> has been upgraded from version 0.047 to 0.049.
197
198 C<keep_alive> is now fork-safe and thread-safe.
199
200 =item *
201
202 L<IO> has been upgraded from version 1.33 to 1.34.
203
204 The XS implementation has been fixed for the sake of older Perls.
205
206 =item *
207
208 L<IO::Socket::IP> has been upgraded from version 0.31 to 0.32.
209
210 Implements Timeout for C<connect()>.
211 L<[cpan #92075]|https://rt.cpan.org/Ticket/Display.html?id=92075>
212
213 =item *
214
215 L<Locale::Codes> has been upgraded from version 3.31 to 3.32.
216
217 New codes have been added.
218
219 =item *
220
221 L<Math::BigInt> has been upgraded from version 1.9996 to 1.9997.
222
223 The documentation now gives test examples using L<Test::More> rather than
224 L<Test>.
225
226 =item *
227
228 L<Module::CoreList> has been upgraded from version 5.021003 to 5.20140915.
229
230 Updated to cover the latest releases of Perl.
231
232 =item *
233
234 L<overload> has been upgraded from version 1.22 to 1.23.
235
236 A redundant C<ref $sub> check has been removed.
237
238 =item *
239
240 PathTools has been upgraded from version 3.49 to 3.50.
241
242 A warning from the B<gcc> compiler is now avoided when building the XS.
243
244 =item *
245
246 L<Pod::Perldoc> has been upgraded from version 3.23 to 3.24.
247
248 Filehandles opened for reading or writing now have C<:encoding(UTF-8)> set.
249 L<[cpan #98019]|https://rt.cpan.org/Ticket/Display.html?id=98019>
250
251 =item *
252
253 L<POSIX> has been upgraded from version 1.42 to 1.43.
254
255 The C99 math functions and constants (for example acosh, isinf, isnan, round,
256 trunc; M_E, M_SQRT2, M_PI) have been added.
257
258 =item *
259
260 Scalar-List-Utils has been upgraded from version 1.39 to 1.41.
261
262 A new module, L<Sub::Util>, has been added, containing functions related to
263 CODE refs, including C<subname> (inspired by Sub::Identity) and C<set_subname>
264 (copied and renamed from Sub::Name).
265
266 The use of C<GetMagic> in C<List::Util::reduce()> has also been fixed.
267 L<[cpan #63211]|https://rt.cpan.org/Ticket/Display.html?id=63211>
268
269 =item *
270
271 L<Term::ReadLine> has been upgraded from version 1.14 to 1.15.
272
273 Faster checks are now made first in some if-statements.
274
275 =item *
276
277 L<Test::Harness> has been upgraded from version 3.32 to 3.33.
278
279 Various documentation fixes.
280
281 =item *
282
283 L<Test::Simple> has been upgraded from version 1.001003 to 1.001006.
284
285 Various documentation fixes.
286
287 =item *
288
289 L<threads> has been upgraded from version 1.95 to 1.96.
290
291 No changes to installed files other than version bumps.
292
293 =item *
294
295 L<Time::Piece> has been upgraded from version 1.27 to 1.29.
296
297 When pretty printing negative Time::Seconds, the "minus" is no longer lost.
298
299 =item *
300
301 L<version> has been upgraded from version 0.9908 to 0.9909.
302
303 Numerous changes.  See the F<Changes> file in the CPAN distribution for
304 details.
305
306 =back
307
308 =head1 Documentation
309
310 =head2 Changes to Existing Documentation
311
312 =head3 L<perlfunc>
313
314 =over 4
315
316 =item *
317
318 Calling C<delete> or C<exists> on array values is now described as "strongly
319 discouraged" rather than "deprecated".
320
321 =back
322
323 =head3 L<perlpolicy>
324
325 =over 4
326
327 =item *
328
329 The conditions for marking an experimental feature as non-experimental are now
330 set out.
331
332 =back
333
334 =head3 L<perlrecharclass>
335
336 =over 4
337
338 =item *
339
340 The documentation of Bracketed Character Classes has been expanded to cover the
341 improvements in C<qr/[\N{named sequence}]/> (see under L</Selected Bug Fixes>).
342
343 =back
344
345 =head3 L<perlsyn>
346
347 =over 4
348
349 =item *
350
351 An ambiguity in the documentation of the Ellipsis statement has been corrected.
352 L<[perl #122661]|https://rt.perl.org/Ticket/Display.html?id=122661>
353
354 =back
355
356 =head3 L<perlxs>
357
358 =over 4
359
360 =item *
361
362 Added a discussion of locale issues in XS code.
363
364 =back
365
366 =head1 Diagnostics
367
368 The following additions or changes have been made to diagnostic output,
369 including warnings and fatal error messages.  For the complete list of
370 diagnostic messages, see L<perldiag>.
371
372 =head2 New Diagnostics
373
374 =head3 New Warnings
375
376 =over 4
377
378 =item *
379
380 L<Character in 'C' format overflow in pack|perldiag/"Character in 'C' format overflow in pack">
381
382 (W pack) You tried converting an infinity or not-a-number to an unsigned
383 character, which makes no sense.  Perl behaved as if you tried to pack 0xFF.
384
385 =item *
386
387 L<Character in 'c' format overflow in pack|perldiag/"Character in 'c' format overflow in pack">
388
389 (W pack) You tried converting an infinity or not-a-number to a signed
390 character, which makes no sense.  Perl behaved as if you tried to pack 0xFF.
391
392 =item *
393
394 L<Invalid number (%f) in chr|perldiag/"Invalid number (%f) in chr">
395
396 (W utf8) You passed an invalid number (like an infinity or not-a-number) to
397 C<chr>.  Those are not valid character numbers, so it returned the Unicode
398 replacement character (U+FFFD).
399
400 =back
401
402 =head2 Changes to Existing Diagnostics
403
404 =over 4
405
406 =item *
407
408 L<Global symbol "%s" requires explicit package name|perldiag/"Global symbol "%s" requires explicit package name (did you forget to declare "my %s"?)">
409
410 This message has had '(did you forget to declare "my %s"?)' appended to it, to
411 make it more helpful to new Perl programmers.
412 L<[perl #121638]|https://rt.perl.org/Ticket/Display.html?id=121638>
413
414 =item *
415
416 L<\N{} in character class restricted to one character in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"\N{} in inverted character class or as a range end-point is restricted to one character in regex; marked by S<<-- HERE> in m/%s/">
417
418 This message has had 'character class' changed to 'inverted character class or
419 as a range end-point is' to reflect improvements in C<qr/[\N{named sequence}]/>
420 (see under L</Selected Bug Fixes>).
421
422 =item *
423
424 L<panic: frexp|perldiag/"panic: frexp: %f">
425
426 This message has had ': %f' appended to it, to show what the offending floating
427 point number is.
428
429 =back
430
431 =head2 Diagnostic Removals
432
433 =over 4
434
435 =item *
436
437 "Constant is not a FOO reference"
438
439 Compile-time checking of constant dereferencing (e.g., C<< my_constant->() >>)
440 has been removed, since it was not taking overloading into account.
441 L<[perl #69456]|https://rt.perl.org/Ticket/Display.html?id=69456>
442 L<[perl #122607]|https://rt.perl.org/Ticket/Display.html?id=122607>
443
444 =item *
445
446 "Ambiguous use of -foo resolved as -&foo()"
447
448 There is actually no ambiguity here, and this impedes the use of negated
449 constants; e.g., C<-Inf>.
450
451 =back
452
453 =head1 Configuration and Compilation
454
455 For long doubles (to get more precision and range for floating point
456 numbers) one can now use the GCC quadmath library which implements
457 the quadruple precision floating point numbers in x86 and ia64 platforms.
458 See INSTALL for details.
459
460 =head1 Testing
461
462 =over 4
463
464 =item *
465
466 A new test script, F<op/infnan.t>, has been added to test if Inf and NaN are
467 working correctly.  See L</Infinity and NaN (not-a-number) handling improved>.
468
469 =item *
470
471 A new test script, F<re/rt122747.t>, has been added to test that the fix for
472 L<perl #122747|https://rt.perl.org/Ticket/Display.html?id=122747> is working.
473
474 =back
475
476 =head1 Internal Changes
477
478 =over 4
479
480 =item *
481
482 C<save_re_context> no longer does anything and has been moved to F<mathoms.c>.
483
484 =item *
485
486 C<cv_name> is a new API function that can be passed a CV or GV.  It returns an
487 SV containing the name of the subroutine for use in diagnostics.
488 L<[perl #116735]|https://rt.perl.org/Ticket/Display.html?id=116735>
489 L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
490
491 =item *
492
493 C<cv_set_call_checker_flags> is a new API function that works like
494 C<cv_set_call_checker>, except that it allows the caller to specify whether the
495 call checker requires a full GV for reporting the subroutine's name, or whether
496 it could be passed a CV instead.  Whatever value is passed will be acceptable
497 to C<cv_name>.  C<cv_set_call_checker> guarantees there will be a GV, but it
498 may have to create one on the fly, which is inefficient.
499 L<[perl #116735]|https://rt.perl.org/Ticket/Display.html?id=116735>
500
501 =item *
502
503 C<CvGV> (which is not part of the API) is now a more complex macro, which may
504 call a function and reify a GV.  For those cases where is has been used as a
505 boolean, C<CvHASGV> has been added, which will return true for CVs that
506 notionally have GVs, but without reifying the GV.  C<CvGV> also returns a GV
507 now for lexical subs.
508 L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
509
510 =item *
511
512 Added L<perlapi/sync_locale>.  Changing the program's locale should be avoided
513 by XS code.  Nevertheless, certain non-Perl libraries called from XS, such as
514 C<Gtk> do so.  When this happens, Perl needs to be told that the locale has
515 changed.  Use this function to do so, before returning to Perl.
516
517 =item *
518
519 The defines and labels for the flags in the C<op_private> field of OPs are now
520 auto-generated from data in F<regen/op_private>.  The noticeable effect of this
521 is that some of the flag output of C<Concise> might differ slightly, and the
522 flag output of C<perl -Dx> may differ considerably (they both use the same set
523 of labels now).  Also in debugging builds, there is a new assert in
524 C<op_free()> that checks that the op doesn't have any unrecognized flags set in
525 C<op_private>.
526
527 =back
528
529 =head1 Selected Bug Fixes
530
531 =over 4
532
533 =item *
534
535 Constant dereferencing now works correctly for typeglob constants.  Previously
536 the glob was stringified and its name looked up.  Now the glob itself is used.
537 L<[perl #69456]|https://rt.perl.org/Ticket/Display.html?id=69456>
538
539 =item *
540
541 When parsing a funny character ($ @ % &) followed by braces, the parser no
542 longer tries to guess whether it is a block or a hash constructor (causing a
543 syntax error when it guesses the latter), since it can only be a block.
544
545 =item *
546
547 C<undef $reference> now frees the referent immediately, instead of hanging on
548 to it until the next statement.
549 L<[perl #122556]|https://rt.perl.org/Ticket/Display.html?id=122556>
550
551 =item *
552
553 Various cases where the name of a sub is used (autoload, overloading, error
554 messages) used to crash for lexical subs, but have been fixed.
555
556 =item *
557
558 Bareword lookup now tries to avoid vivifying packages if it turns out the
559 bareword is not going to be a subroutine name.
560
561 =item *
562
563 Compilation of anonymous constants (e.g., C<sub () { 3 }>) no longer deletes
564 any subroutine named C<__ANON__> in the current package.  Not only was
565 C<*__ANON__{CODE}> cleared, but there was a memory leak, too.  This bug goes
566 back to Perl 5.8.0.
567
568 =item *
569
570 Stub declarations like C<sub f;> and C<sub f ();> no longer wipe out constants
571 of the same name declared by C<use constant>.  This bug was introduced in Perl
572 5.10.0.
573
574 =item *
575
576 Under some conditions a warning raised in compilation of regular expression
577 patterns could be displayed multiple times.  This is now fixed.
578
579 =item *
580
581 C<qr/[\N{named sequence}]/> now works properly in many instances.  Some names
582 known to C<\N{...}> refer to a sequence of multiple characters, instead of the
583 usual single character.  Bracketed character classes generally only match
584 single characters, but now special handling has been added so that they can
585 match named sequences, but not if the class is inverted or the sequence is
586 specified as the beginning or end of a range.  In these cases, the only
587 behavior change from before is a slight rewording of the fatal error message
588 given when this class is part of a C<?[...])> construct.  When the C<[...]>
589 stands alone, the same non-fatal warning as before is raised, and only the
590 first character in the sequence is used, again just as before.
591
592 =item *
593
594 Tainted constants evaluated at compile time no longer cause unrelated
595 statements to become tainted.
596 L<[perl #122669]|https://rt.perl.org/Ticket/Display.html?id=122669>
597
598 =item *
599
600 C<open $$fh, ...>, which vivifies a handle with a name like "main::_GEN_0", was
601 not giving the handle the right reference count, so a double free could happen.
602
603 =item *
604
605 When deciding that a bareword was a method name, the parser would get confused
606 if an "our" sub with the same name existed, and look up the method in the
607 package of the "our" sub, instead of the package of the invocant.
608
609 =item *
610
611 The parser no longer gets confused by C<\U=> within a double-quoted string.  It
612 used to produce a syntax error, but now compiles it correctly.
613 L<[perl #80368]|https://rt.perl.org/Ticket/Display.html?id=80368>
614
615 =item *
616
617 It has always been the intention for the C<-B> and C<-T> file test operators to
618 treat UTF-8 encoded files as text.  (L<perlfunc|perlfunc/-X FILEHANDLE> has
619 been updated to say this.)  Previously, it was possible for some files to be
620 considered UTF-8 that actually weren't valid UTF-8.  This is now fixed.  The
621 operators now work on EBCDIC platforms as well.
622
623 =item *
624
625 Under some conditions warning messages raised during regular expression pattern
626 compilation were being output more than once.  This has now been fixed.
627
628 =item *
629
630 A regression has been fixed that was introduced in Perl 5.20.0 (fixed in Perl
631 5.20.1 as well as here) in which a UTF-8 encoded regular expression pattern
632 that contains a single ASCII lowercase letter does not match its uppercase
633 counterpart.
634 L<[perl #122655]|https://rt.perl.org/Ticket/Display.html?id=122655>
635
636 =item *
637
638 Constant folding could incorrectly suppress warnings if lexical warnings (C<use
639 warnings> or C<no warnings>) were not in effect and C<$^W> were false at
640 compile time and true at run time.
641
642 =item *
643
644 Loading UTF8 tables during a regular expression match could cause assertion
645 failures under debugging builds if the previous match used the very same
646 regular expression.
647 L<[perl #122747]|https://rt.perl.org/Ticket/Display.html?id=122747>
648
649 =item *
650
651 Thread cloning used to work incorrectly for lexical subs, possibly causing
652 crashes or double frees on exit.
653
654 =item *
655
656 Since Perl 5.14.0, deleting C<$SomePackage::{__ANON__}> and then undefining an
657 anonymous subroutine could corrupt things internally, resulting in
658 L<Devel::Peek> crashing or L<B.pm|B> giving nonsensical data.  This has been
659 fixed.
660
661 =item *
662
663 C<(caller $n)[3]> now reports names of lexical subs, instead of treating them
664 as "(unknown)".
665
666 =item *
667
668 C<sort subname LIST> now supports lexical subs for the comparison routine.
669
670 =item *
671
672 Aliasing (e.g., via C<*x = *y>) could confuse list assignments that mention the
673 two names for the same variable on either side, causing wrong values to be
674 assigned.
675 L<[perl #15667]|https://rt.perl.org/Ticket/Display.html?id=15667>
676
677 =item *
678
679 Long here-doc terminators could cause a bad read on short lines of input.  This
680 has been fixed.  It is doubtful that any crash could have occurred.  This bug
681 goes back to when here-docs were introduced in Perl 3.000 twenty-five years
682 ago.
683
684 =item *
685
686 An optimization in C<split> to treat C<split/^/> like C<split/^/m> had the
687 unfortunate side-effect of also treating C<split/\A/> like C<split/^/m>, which
688 it should not.  This has been fixed.  (Note, however, that C<split/^x/> does
689 not behave like C<split/^x/m>, which is also considered to be a bug and will be
690 fixed in a future version.)
691 L<[perl #122761]|https://rt.perl.org/Ticket/Display.html?id=122761>
692
693 =item *
694
695 The little-known C<my Class $var> syntax (see L<fields> and L<attributes>)
696 could get confused in the scope of C<use utf8> if C<Class> were a constant
697 whose value contained Latin-1 characters.
698
699 =back
700
701 =head1 Acknowledgements
702
703 XXX Generate this with:
704
705   perl Porting/acknowledgements.pl v5.21.3..HEAD
706
707 =head1 Reporting Bugs
708
709 If you find what you think is a bug, you might check the articles recently
710 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
711 https://rt.perl.org/ .  There may also be information at
712 http://www.perl.org/ , the Perl Home Page.
713
714 If you believe you have an unreported bug, please run the L<perlbug> program
715 included with your release.  Be sure to trim your bug down to a tiny but
716 sufficient test case.  Your bug report, along with the output of C<perl -V>,
717 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
718
719 If the bug you are reporting has security implications, which make it
720 inappropriate to send to a publicly archived mailing list, then please send it
721 to perl5-security-report@perl.org.  This points to a closed subscription
722 unarchived mailing list, which includes all the core committers, who will be
723 able to help assess the impact of issues, figure out a resolution, and help
724 co-ordinate the release of patches to mitigate or fix the problem across all
725 platforms on which Perl is supported.  Please only use this address for
726 security issues in the Perl core, not for modules independently distributed on
727 CPAN.
728
729 =head1 SEE ALSO
730
731 The F<Changes> file for an explanation of how to view exhaustive details on
732 what changed.
733
734 The F<INSTALL> file for how to build Perl.
735
736 The F<README> file for general stuff.
737
738 The F<Artistic> and F<Copying> files for copyright information.
739
740 =cut