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