This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for two notable B::Concise changes
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
6 to be processed before release. ]
7
8 perldelta - what is new for perl v5.21.5
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.21.4 release and the 5.21.5
13 release.
14
15 If you are upgrading from an earlier release such as 5.21.3, first read
16 L<perl5214delta>, which describes differences between 5.21.3 and 5.21.4.
17
18 =head1 Notice
19
20 XXX Any important notices here
21
22 =head1 Core Enhancements
23
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.
27
28 [ List each enhancement as a =head2 entry ]
29
30 =head2 New double-diamond operator
31
32 C<<< <<>> >>> is like C<< <> >> but uses three-argument C<open> to open
33 each file in @ARGV.  So each element of @ARGV is an actual file name, and
34 "|foo" won't be treated as a pipe open.
35
36 =head2 Aliasing via reference
37
38 Variables and subroutines can now be aliased by assigning to a reference:
39
40     \$c = \$d;
41     \&x = \&y;
42
43 Or by using a backslash before a C<foreach> iterator variable, which is
44 perhaps the most useful idiom this feature provides:
45
46     foreach \%hash (@array_of_hash_refs) { ... }
47
48 This feature is experimental and must be enabled via C<use feature
49 'refaliasing'>.  It will warn unless the C<experimental::refaliasing>
50 warnings category is disabled.
51
52 See L<perlref/Assigning to References>.
53
54 =head2 Perl now supports POSIX 2008 locale currency additions.
55
56 On platforms that are able to handle POSIX.1-2008, the
57 hash returned by
58 L<C<POSIX::localeconv()>|perllocale/The localeconv function>
59 includes the international currency fields added by that version of the
60 POSIX standard.  These are
61 C<int_n_cs_precedes>,
62 C<int_n_sep_by_space>,
63 C<int_n_sign_posn>,
64 C<int_p_cs_precedes>,
65 C<int_p_sep_by_space>,
66 and
67 C<int_p_sign_posn>.
68
69 =head2 Packing infinity or not-a-number into a character is now fatal.
70
71 Before, when trying to pack infinity or not-a-number into a
72 (signed) character, Perl would warn, and assumed you tried to
73 pack C<< 0xFF >>; if you gave it as an argument to C<< chr >>,
74 C<< U+FFFD >> was returned. 
75
76 But now, all such actions (C<< pack >>, C<< chr >>, and C<< print '%c' >>)
77 result in a fatal error.
78
79 =head1 Security
80
81 =head2 Perl is now compiled with -fstack-protector-strong if available
82
83 Perl has been compiled with the anti-stack-smashing option
84 C<-fstack-protector> since 5.10.1.  Now Perl uses the newer variant
85 called C<-fstack-protector-strong>, if available.  (This was added
86 already in 5.21.4.)
87
88 [ List each security issue as a =head2 entry ]
89
90 =head1 Incompatible Changes
91
92 XXX For a release on a stable branch, this section aspires to be:
93
94     There are no changes intentionally incompatible with 5.XXX.XXX
95     If any exist, they are bugs, and we request that you submit a
96     report.  See L</Reporting Bugs> below.
97
98 [ List each incompatible change as a =head2 entry ]
99
100 =head1 Deprecations
101
102 XXX Any deprecated features, syntax, modules etc. should be listed here.
103
104 =head2 Module removals
105
106 XXX Remove this section if inapplicable.
107
108 The following modules will be removed from the core distribution in a
109 future release, and will at that time need to be installed from CPAN.
110 Distributions on CPAN which require these modules will need to list them as
111 prerequisites.
112
113 The core versions of these modules will now issue C<"deprecated">-category
114 warnings to alert you to this fact.  To silence these deprecation warnings,
115 install the modules in question from CPAN.
116
117 Note that these are (with rare exceptions) fine modules that you are encouraged
118 to continue to use.  Their disinclusion from core primarily hinges on their
119 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
120 not usually on concerns over their design.
121
122 =over
123
124 =item XXX
125
126 XXX Note that deprecated modules should be listed here even if they are listed
127 as an updated module in the L</Modules and Pragmata> section.
128
129 =back
130
131 =head2 Use of multiple /x regexp modifiers
132
133 It is now deprecated to say something like any of the following:
134
135     qr/foo/xx;
136     /(?xax:foo)/;
137     use re qw(/amxx);
138
139 That is, now C<x> should only occur once in any string of contiguous
140 regular expression pattern modifiers.  We do not believe there are any
141 occurrences of this in all of CPAN.  This is in preparation for a future
142 Perl release having C</xx> mean to allow white-space for readability in
143 bracketed character classes (those enclosed in square brackets:
144 C<[...]>).
145
146 =head1 Performance Enhancements
147
148 XXX Changes which enhance performance without changing behaviour go here.
149 There may well be none in a stable release.
150
151 [ List each enhancement as a =item entry ]
152
153 =over 4
154
155 =item *
156
157 C<length> is up to 20% faster for non-magical/non-tied scalars containing a
158 string if it is a non-utf8 string or if C<use bytes;> is in scope.
159
160 =item *
161
162 Non-magical/non-tied scalars that contain only a floating point value and are
163 on most Perl builds with 64 bit integers now use 8-32 less bytes of memory
164 depending on OS.
165
166 =item *
167
168 In C<@array = split>, the assigment can be optimised away with C<split>
169 writing directly to the array.  This optimisation was happening only for
170 package arrays other than @_ and only
171 sometimes.  Now this optimisation happens
172 almost all the time.
173
174 =item *
175
176 C<join> is now subject to constant folding.  Moreover, C<join> with a
177 scalar or constant for the separator and a single-item list to join is
178 simplified to a stringification.  The separator doesn't even get evaluated.
179
180 =item *
181
182 C<qq(@array)> is implemented using two ops: a stringify op and a join op.
183 If the qq contains nothing but a single array, the stringification is
184 optimised away.
185
186 =item *
187
188 C<our $var> and C<our($s,@a,%h)> in void context are no longer evaluated at
189 run time.  Even a whole sequence of C<our $foo;> statements will simply be
190 skipped over.
191
192 =back
193
194 =head1 Modules and Pragmata
195
196 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
197 go here.  If Module::CoreList is updated, generate an initial draft of the
198 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
199 for important changes should then be added by hand.  In an ideal world,
200 dual-life modules would have a F<Changes> file that could be cribbed.
201
202 [ Within each section, list entries as a =item entry ]
203
204 =head2 New Modules and Pragmata
205
206 =over 4
207
208 =item *
209
210 XXX
211
212 =back
213
214 =head2 Updated Modules and Pragmata
215
216 =over 4
217
218 =item *
219
220 L<attributes> has been upgraded from version 0.23 to 0.24.
221
222 Avoid reading beyond the end of a buffer. [perl #122629]
223
224 =item *
225
226 L<B::Concise> has been upgraded from version 0.993 to 0.994.
227
228 Null ops that are part of the execution chain are now given sequence
229 numbers.
230
231 Private flags for nulled ops are now dumped with mnemonics as they would be
232 for the non-nulled counterparts.
233
234 L<B::Deparse> has been upgraded from version 1.28 to 1.29.
235
236 Parenthesised arrays in lists passed to C<\> are now correctly deparsed
237 with parentheses (e.g., C<\(@a, (@b), @c)> now retains the parentheses
238 around @b), this preserving the flattening behaviour of referenced
239 parenthesised arrays.  Formerly, it only worked for one array: C<\(@a)>.
240
241 C<local our> is now deparsed correctly, with the C<our> included.
242
243 C<for($foo; !$bar; $baz) {...}> was deparsed without the C<!> (or C<not>).
244 This has been fixed.
245
246 Core keywords that conflict with lexical subroutines are now deparsed with
247 the C<CORE::> prefix.
248
249 C<foreach state $x (...) {...}> now deparses correctly with C<state> and
250 not C<my>.
251
252 C<our @array = split(...)> now deparses correctly with C<our> in those
253 cases where the assignment is optimised away.
254
255 =item *
256
257 L<DynaLoader> has been upgraded from version 1.26 to 1.27.
258
259 Remove dl_nonlazy global if unused in Dynaloader. [perl #122926]
260
261 =item *
262
263 L<Fcntl> has been upgraded from version 1.12 to 1.13.
264
265 Add support for the Linux pipe buffer size fcntl() commands.
266
267 =item *
268
269 L<File::Find> has been upgraded from version 1.28 to 1.29.
270
271 Slightly faster module loading time.
272
273 =item *
274
275 L<Module::CoreList> has been upgraded from version 5.20140920 to 5.20141020.
276
277 Updated to cover the latest releases of Perl.
278
279 =item *
280
281 The PathTools module collection has been upgraded from version 3.50 to 3.51.
282
283 Slightly faster module loading time.
284
285 =item *
286
287 L<POSIX> has been upgraded from version 1.44 to 1.45.
288
289 POSIX::tmpnam() now produces a deprecation warning.  [perl #122005]
290
291 =item *
292
293 L<XSLoader> has been upgraded from version 0.17 to 0.18.
294
295 Allow XSLoader to load modules from a different namespace.
296 [perl #122455]
297
298 =back
299
300 =head2 Removed Modules and Pragmata
301
302 =over 4
303
304 =item *
305
306 XXX
307
308 =back
309
310 =head1 Documentation
311
312 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
313 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
314
315 =head2 New Documentation
316
317 XXX Changes which create B<new> files in F<pod/> go here.
318
319 =head3 L<XXX>
320
321 XXX Description of the purpose of the new file here
322
323 =head2 Changes to Existing Documentation
324
325 XXX Changes which significantly change existing files in F<pod/> go here.
326 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
327 section.
328
329 =head3 L<XXX>
330
331 =over 4
332
333 =item *
334
335 Clarifications have been added to L<perlrecharclass/Character Ranges>
336 to the effect that Perl guarantees that C<[A-Z]>, C<[a-z]>, C<[0-9]> and
337 any subranges thereof in regular expression bracketed character classes
338 are guaranteed to match exactly what a naive English speaker would
339 expect them to match, even on platforms (such as EBCDIC) where special
340 handling is required to accomplish this.
341
342 =back
343
344 =head1 Diagnostics
345
346 The following additions or changes have been made to diagnostic output,
347 including warnings and fatal error messages.  For the complete list of
348 diagnostic messages, see L<perldiag>.
349
350 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
351 include any changes in L<perldiag> that reconcile it to the C<C> code.
352
353 =head2 New Diagnostics
354
355 XXX Newly added diagnostic messages go under here, separated into New Errors
356 and New Warnings
357
358 =head3 New Errors
359
360 =over 4
361
362 =item *
363
364 L<message|perldiag/"Cannot chr %f">
365
366 =item *
367
368 L<message|perldiag/"Cannot compress %f in pack">
369
370 =item *
371
372 L<message|perldiag/"Cannot pack %f with '%c'">
373
374 =item *
375
376 L<message|perldiag/"Cannot printf %f with '%c'">
377
378 =back
379
380 =head3 New Warnings
381
382 =over 4
383
384 =item *
385
386 XXX L<message|perldiag/"message">
387
388 =back
389
390 =head2 Changes to Existing Diagnostics
391
392 XXX Changes (i.e. rewording) of diagnostic messages go here
393
394 =over 4
395
396 =item *
397
398 '"my" variable &foo::bar can't be in a package' has been reworded to say
399 'subroutine' instead of 'variable'.
400
401 =back
402
403 =head1 Utility Changes
404
405 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
406 Most of these are built within the directory F<utils>.
407
408 [ List utility changes as a =head2 entry for each utility and =item
409 entries for each change
410 Use L<XXX> with program names to get proper documentation linking. ]
411
412 =head2 L<XXX>
413
414 =over 4
415
416 =item *
417
418 XXX
419
420 =back
421
422 =head1 Configuration and Compilation
423
424 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
425 go here.  Any other changes to the Perl build process should be listed here.
426 However, any platform-specific changes should be listed in the
427 L</Platform Support> section, instead.
428
429 [ List changes as a =item entry ].
430
431 =over 4
432
433 =item *
434
435 XXX
436
437 =back
438
439 =head1 Testing
440
441 XXX Any significant changes to the testing of a freshly built perl should be
442 listed here.  Changes which create B<new> files in F<t/> go here as do any
443 large changes to the testing harness (e.g. when parallel testing was added).
444 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
445 that they represent may be covered elsewhere.
446
447 [ List each test improvement as a =item entry ]
448
449 =over 4
450
451 =item *
452
453 Some regular expression tests are written in such a way that they will
454 run very slowly if certain optimizations break. These tests have been
455 moved into new files, F<< t/re/speed.t >> and F<< t/re/speed_thr.t >>,
456 and are run with a C<< watchdog() >>.
457
458 =back
459
460 =head1 Platform Support
461
462 XXX Any changes to platform support should be listed in the sections below.
463
464 [ Within the sections, list each platform as a =item entry with specific
465 changes as paragraphs below it. ]
466
467 =head2 New Platforms
468
469 XXX List any platforms that this version of perl compiles on, that previous
470 versions did not.  These will either be enabled by new files in the F<hints/>
471 directories, or new subdirectories and F<README> files at the top level of the
472 source tree.
473
474 =over 4
475
476 =item XXX-some-platform
477
478 XXX
479
480 =back
481
482 =head2 Discontinued Platforms
483
484 XXX List any platforms that this version of perl no longer compiles on.
485
486 =over 4
487
488 =item XXX-some-platform
489
490 XXX
491
492 =back
493
494 =head2 Platform-Specific Notes
495
496 XXX List any changes for specific platforms.  This could include configuration
497 and compilation changes or changes in portability/compatibility.  However,
498 changes within modules for platforms should generally be listed in the
499 L</Modules and Pragmata> section.
500
501 =over 4
502
503 =item EBCDIC
504
505 Special handling is required on EBCDIC platforms to get C<qr/[i-j]/> to
506 match only C<"i"> and C<"j">, since there are 7 characters between the
507 code points for C<"i"> and C<"j">.  This special handling had only been
508 invoked when both ends of the range are literals.  Now it is also
509 invoked if any of the C<\N{...}> forms for specifying a character by
510 name or Unicode code point is used instead of a literal.  See
511 L<perlrecharclass/Character Ranges>.
512
513 =back
514
515 =head1 Internal Changes
516
517 XXX Changes which affect the interface available to C<XS> code go here.  Other
518 significant internal changes for future core maintainers should be noted as
519 well.
520
521 [ List each change as a =item entry ]
522
523 =over 4
524
525 =item *
526
527 SVs of type SVt_NV are now bodyless when a build configure and platform allow
528 it, specifically C<sizeof(NV) <= sizeof(IV)>. The bodyless trick is the same one
529 as for IVs since 5.9.2, but for NVs, unlike IVs, is not guarenteed on all
530 platforms and build configurations.
531
532 =item *
533
534 The C<$DB::single>, C<$DB::signal> and C<$DB::trace> now have set and
535 get magic that stores their values as IVs and those IVs are used when
536 testing their values in C<pp_dbstate>.  This prevents perl from
537 recursing infinity if an overloaded object is assigned to any of those
538 variables. [perl #122445]
539
540 =item *
541
542 C<Perl_tmps_grow> which is marked as public API but undocumented has been
543 removed from public API. If you use C<EXTEND_MORTAL> macro in your XS code to
544 preextend the mortal stack, you are unaffected by this change.
545
546 =item *
547
548 C<cv_name>, which was introduced in 5.21.4, has been changed incompatibly.
549 It now has a flags field that allows the caller to specify whether the name
550 should be fully qualified.  See L<perlapi/cv_name>.
551
552 =item *
553
554 Internally Perl no longer uses the C<SVs_PADMY> flag.  C<SvPADMY()> now
555 returns a true value for anything not marked PADTMP.  C<SVs_PADMY> is now
556 defined as 0.
557
558 =item *
559
560 The macros SETsv and SETsvUN have been removed. They were no longer used
561 in the core since commit 6f1401dc2a, and have not been found present on
562 CPAN.
563
564 =item *
565
566 The C<< SvFAKE >> bit (unused on HVs) got informally reserved by
567 David Mitchell for future work on vtables.
568
569 =item *
570 The C<sv_catpvn_flags> function accepts C<SV_CATBYTES> and C<SV_CATUTF8>
571 flags, which specify whether the appended string is bytes or utf8,
572 respectively.
573
574 =back
575
576 =head1 Selected Bug Fixes
577
578 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
579 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
580
581 [ List each fix as a =item entry ]
582
583 =over 4
584
585 =item *
586
587 Locking and unlocking values via L<Hash::Util> or C<Internals::SvREADONLY>
588 no longer has any affect on values that are read-only to begin.  Unlocking
589 such values could result in crashes, hangs or other erratic behaviour.
590
591 =item *
592
593 The internal C<looks_like_number> function (which L<Scalar::Util> provides
594 access to) began erroneously to return true for "-e1" in 5.21.4, affecting
595 also C<-'-e1'>.  This has been fixed.
596
597 =item *
598
599 The flip-flop operator (C<..> in scalar context) would return the same
600 scalar each time, unless the containing subroutine was called recursively.
601 Now it always returns a new scalar.  [perl #122829]
602
603 =item *
604
605 Some unterminated C<(?(...)...)> constructs in regular expressions would
606 either crash or give erroneous error messages.  C</(?(1)/> is one such
607 example.
608
609 =item *
610
611 C<pack "w", $tied> no longer calls FETCH twice.
612
613 =item *
614
615 List assignments like C<($x, $z) = (1, $y)> now work correctly if $x and $y
616 have been aliased by C<foreach>.
617
618 =item *
619
620 Some patterns including code blocks with syntax errors, such as
621 C</ (?{(^{})/>, would hang or fail assertions on debugging builds.  Now
622 they produce errors.
623
624 =item *
625
626 An assertion failure when parsing C<sort> with debugging enabled has been
627 fixed.  [perl #122771]
628
629 =item *
630
631 C<*a = *b; @a = split //, $b[1]> could do a bad read and produce junk
632 results.
633
634 =item *
635
636 In C<() = @array = split>, the C<() => at the beginning no longer confuses
637 the optimiser, making it assume a limit of 1.
638
639 =item *
640
641 Fatal warnings no longer prevent the output of syntax errors.
642 [perl #122966]
643
644 =item *
645
646 Fixed a NaN double to long double conversion error on VMS. For quiet NaNs
647 (and only on Itanium, not Alpha) negative infinity instead of NaN was
648 produced. 
649
650 =item *
651
652 Fixed the issue that caused C<< make distclean >> to leave files behind
653 that shouldn't. [perl #122820]
654
655 =item *
656
657 AIX now sets the length in C<< getsockopt >> correctly. [perl #120835],
658 [rt #91183], [rt #85570].
659
660 =back
661
662 =head1 Known Problems
663
664 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
665 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
666 platform specific bugs also go here.
667
668 [ List each fix as a =item entry ]
669
670 =over 4
671
672 =item *
673
674 XXX
675
676 =back
677
678 =head1 Errata From Previous Releases
679
680 =over 4
681
682 =item *
683
684 XXX Add anything here that we forgot to add, or were mistaken about, in
685 the perldelta of a previous release.
686
687 =back
688
689 =head1 Obituary
690
691 XXX If any significant core contributor has died, we've added a short obituary
692 here.
693
694 =head1 Acknowledgements
695
696 XXX Generate this with:
697
698   perl Porting/acknowledgements.pl v5.21.4..HEAD
699
700 =head1 Reporting Bugs
701
702 If you find what you think is a bug, you might check the articles recently
703 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
704 https://rt.perl.org/ .  There may also be information at
705 http://www.perl.org/ , the Perl Home Page.
706
707 If you believe you have an unreported bug, please run the L<perlbug> program
708 included with your release.  Be sure to trim your bug down to a tiny but
709 sufficient test case.  Your bug report, along with the output of C<perl -V>,
710 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
711
712 If the bug you are reporting has security implications, which make it
713 inappropriate to send to a publicly archived mailing list, then please send it
714 to perl5-security-report@perl.org.  This points to a closed subscription
715 unarchived mailing list, which includes all the core committers, who will be
716 able to help assess the impact of issues, figure out a resolution, and help
717 co-ordinate the release of patches to mitigate or fix the problem across all
718 platforms on which Perl is supported.  Please only use this address for
719 security issues in the Perl core, not for modules independently distributed on
720 CPAN.
721
722 =head1 SEE ALSO
723
724 The F<Changes> file for an explanation of how to view exhaustive details on
725 what changed.
726
727 The F<INSTALL> file for how to build Perl.
728
729 The F<README> file for general stuff.
730
731 The F<Artistic> and F<Copying> files for copyright information.
732
733 =cut