This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 821956c
[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 =back
139
140 =head1 Modules and Pragmata
141
142 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
143 go here.  If Module::CoreList is updated, generate an initial draft of the
144 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
145 for important changes should then be added by hand.  In an ideal world,
146 dual-life modules would have a F<Changes> file that could be cribbed.
147
148 [ Within each section, list entries as a =item entry ]
149
150 =head2 New Modules and Pragmata
151
152 =over 4
153
154 =item *
155
156 XXX
157
158 =back
159
160 =head2 Updated Modules and Pragmata
161
162 =over 4
163
164 =item *
165
166 L<attributes> has been upgraded from version 0.23 to 0.24.
167
168 Avoid reading beyond the end of a buffer. [perl #122629]
169
170 =item *
171
172 L<B::Deparse> has been upgraded from version 1.28 to 1.29.
173
174 Parenthesised arrays in lists passed to C<\> are now correctly deparsed
175 with parentheses (e.g., C<\(@a, (@b), @c)> now retains the parentheses
176 around @b), this preserving the flattening behaviour of referenced
177 parenthesised arrays.  Formerly, it only worked for one array: C<\(@a)>.
178
179 C<local our> is now deparsed correctly, with the C<our> included.
180
181 C<for($foo; !$bar; $baz) {...}> was deparsed without the C<!> (or C<not>).
182 This has been fixed.
183
184 Core keywords that conflict with lexical subroutines are now deparsed with
185 the C<CORE::> prefix.
186
187 C<foreach state $x (...) {...}> now deparses correctly with C<state> and
188 not C<my>.
189
190 C<our @array = split(...)> now deparses correctly with C<our> in those
191 cases where the assignment is optimised away.
192
193 =item *
194
195 L<DynaLoader> has been upgraded from version 1.26 to 1.27.
196
197 Remove dl_nonlazy global if unused in Dynaloader. [perl #122926]
198
199 =item *
200
201 L<Fcntl> has been upgraded from version 1.12 to 1.13.
202
203 Add support for the Linux pipe buffer size fcntl() commands.
204
205 =item *
206
207 L<Module::CoreList> has been upgraded from version 5.20140920 to 5.20141020.
208
209 Updated to cover the latest releases of Perl.
210
211 =item *
212
213 L<XSLoader> has been upgraded from version 0.17 to 0.18.
214
215 Allow XSLoader to load modules from a different namespace.
216 [perl #122455]
217
218 =back
219
220 =head2 Removed Modules and Pragmata
221
222 =over 4
223
224 =item *
225
226 XXX
227
228 =back
229
230 =head1 Documentation
231
232 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
233 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
234
235 =head2 New Documentation
236
237 XXX Changes which create B<new> files in F<pod/> go here.
238
239 =head3 L<XXX>
240
241 XXX Description of the purpose of the new file here
242
243 =head2 Changes to Existing Documentation
244
245 XXX Changes which significantly change existing files in F<pod/> go here.
246 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
247 section.
248
249 =head3 L<XXX>
250
251 =over 4
252
253 =item *
254
255 Clarifications have been added to L<perlrecharclass/Character Ranges>
256 to the effect that Perl guarantees that C<[A-Z]>, C<[a-z]>, C<[0-9]> and
257 any subranges thereof in regular expression bracketed character classes
258 are guaranteed to match exactly what a naive English speaker would
259 expect them to match, even on platforms (such as EBCDIC) where special
260 handling is required to accomplish this.
261
262 =back
263
264 =head1 Diagnostics
265
266 The following additions or changes have been made to diagnostic output,
267 including warnings and fatal error messages.  For the complete list of
268 diagnostic messages, see L<perldiag>.
269
270 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
271 include any changes in L<perldiag> that reconcile it to the C<C> code.
272
273 =head2 New Diagnostics
274
275 XXX Newly added diagnostic messages go under here, separated into New Errors
276 and New Warnings
277
278 =head3 New Errors
279
280 =over 4
281
282 =item *
283
284 XXX L<message|perldiag/"message">
285
286 =back
287
288 =head3 New Warnings
289
290 =over 4
291
292 =item *
293
294 XXX L<message|perldiag/"message">
295
296 =back
297
298 =head2 Changes to Existing Diagnostics
299
300 XXX Changes (i.e. rewording) of diagnostic messages go here
301
302 =over 4
303
304 =item *
305
306 '"my" variable &foo::bar can't be in a package' has been reworded to say
307 'subroutine' instead of 'variable'.
308
309 =back
310
311 =head1 Utility Changes
312
313 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
314 Most of these are built within the directory F<utils>.
315
316 [ List utility changes as a =head2 entry for each utility and =item
317 entries for each change
318 Use L<XXX> with program names to get proper documentation linking. ]
319
320 =head2 L<XXX>
321
322 =over 4
323
324 =item *
325
326 XXX
327
328 =back
329
330 =head1 Configuration and Compilation
331
332 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
333 go here.  Any other changes to the Perl build process should be listed here.
334 However, any platform-specific changes should be listed in the
335 L</Platform Support> section, instead.
336
337 [ List changes as a =item entry ].
338
339 =over 4
340
341 =item *
342
343 XXX
344
345 =back
346
347 =head1 Testing
348
349 XXX Any significant changes to the testing of a freshly built perl should be
350 listed here.  Changes which create B<new> files in F<t/> go here as do any
351 large changes to the testing harness (e.g. when parallel testing was added).
352 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
353 that they represent may be covered elsewhere.
354
355 [ List each test improvement as a =item entry ]
356
357 =over 4
358
359 =item *
360
361 XXX
362
363 =back
364
365 =head1 Platform Support
366
367 XXX Any changes to platform support should be listed in the sections below.
368
369 [ Within the sections, list each platform as a =item entry with specific
370 changes as paragraphs below it. ]
371
372 =head2 New Platforms
373
374 XXX List any platforms that this version of perl compiles on, that previous
375 versions did not.  These will either be enabled by new files in the F<hints/>
376 directories, or new subdirectories and F<README> files at the top level of the
377 source tree.
378
379 =over 4
380
381 =item XXX-some-platform
382
383 XXX
384
385 =back
386
387 =head2 Discontinued Platforms
388
389 XXX List any platforms that this version of perl no longer compiles on.
390
391 =over 4
392
393 =item XXX-some-platform
394
395 XXX
396
397 =back
398
399 =head2 Platform-Specific Notes
400
401 XXX List any changes for specific platforms.  This could include configuration
402 and compilation changes or changes in portability/compatibility.  However,
403 changes within modules for platforms should generally be listed in the
404 L</Modules and Pragmata> section.
405
406 =over 4
407
408 =item EBCDIC
409
410 Special handling is required on EBCDIC platforms to get C<qr/[i-j]/> to
411 match only C<"i"> and C<"j">, since there are 7 characters between the
412 code points for C<"i"> and C<"j">.  This special handling had only been
413 invoked when both ends of the range are literals.  Now it is also
414 invoked if any of the C<\N{...}> forms for specifying a character by
415 name or Unicode code point is used instead of a literal.  See
416 L<perlrecharclass/Character Ranges>.
417
418 =back
419
420 =head1 Internal Changes
421
422 XXX Changes which affect the interface available to C<XS> code go here.  Other
423 significant internal changes for future core maintainers should be noted as
424 well.
425
426 [ List each change as a =item entry ]
427
428 =over 4
429
430 =item *
431
432 SVs of type SVt_NV are now bodyless when a build configure and platform allow
433 it, specifically C<sizeof(NV) <= sizeof(IV)>. The bodyless trick is the same one
434 as for IVs since 5.9.2, but for NVs, unlike IVs, is not guarenteed on all
435 platforms and build configurations.
436
437 =item *
438
439 The C<$DB::single>, C<$DB::signal> and C<$DB::trace> now have set and
440 get magic that stores their values as IVs and those IVs are used when
441 testing their values in C<pp_dbstate>.  This prevents perl from
442 recursing infinity if an overloaded object is assigned to any of those
443 variables. [perl #122445]
444
445 =item *
446
447 C<Perl_tmps_grow> which is marked as public API but undocumented has been
448 removed from public API. If you use C<EXTEND_MORTAL> macro in your XS code to
449 preextend the mortal stack, you are unaffected by this change.
450
451 =item *
452
453 C<cv_name>, which was introduced in 5.21.4, has been changed incompatibly.
454 It now has a flags field that allows the caller to specify whether the name
455 should be fully qualified.  See L<perlapi/cv_name>.
456
457 =item *
458
459 Internally Perl no longer uses the C<SVs_PADMY> flag.  C<SvPADMY()> now
460 returns a true value for anything not marked PADTMP.  C<SVs_PADMY> is now
461 defined as 0.
462
463 =back
464
465 =head1 Selected Bug Fixes
466
467 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
468 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
469
470 [ List each fix as a =item entry ]
471
472 =over 4
473
474 =item *
475
476 Locking and unlocking values via L<Hash::Util> or C<Internals::SvREADONLY>
477 no longer has any affect on values that are read-only to begin.  Unlocking
478 such values could result in crashes, hangs or other erratic behaviour.
479
480 =item *
481
482 The internal C<looks_like_number> function (which L<Scalar::Util> provides
483 access to) began erroneously to return true for "-e1" in 5.21.4, affecting
484 also C<-'-e1'>.  This has been fixed.
485
486 =item *
487
488 The flip-flop operator (C<..> in scalar context) would return the same
489 scalar each time, unles the containing subroutine was called recursively.
490 Now it always returns a new scalar.  [perl #122829]
491
492 =item *
493
494 Some unterminated C<(?(...)...)> constructs in regular expressions would
495 either crash or give erroneous error messages.  C</(?(1)/> is one such
496 example.
497
498 =item *
499
500 C<pack "w", $tied> no longer calls FETCH twice.
501
502 =item *
503
504 List assignments like C<($x, $z) = (1, $y)> now work correctly if $x and $y
505 have been aliased by C<foreach>.
506
507 =item *
508
509 Some patterns including code blocks with syntax errors, such as
510 C</ (?{(^{})/>, would hang or fail assertions on debugging builds.  Now
511 they produce errors.
512
513 =item *
514
515 An assertion failure when parsing C<sort> with debugging enabled has been
516 fixed.  [perl #122771]
517
518 =item *
519
520 C<*a = *b; @a = split //, $b[1]> could do a bad read and produce junk
521 results.
522
523 =back
524
525 =head1 Known Problems
526
527 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
528 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
529 platform specific bugs also go here.
530
531 [ List each fix as a =item entry ]
532
533 =over 4
534
535 =item *
536
537 XXX
538
539 =back
540
541 =head1 Errata From Previous Releases
542
543 =over 4
544
545 =item *
546
547 XXX Add anything here that we forgot to add, or were mistaken about, in
548 the perldelta of a previous release.
549
550 =back
551
552 =head1 Obituary
553
554 XXX If any significant core contributor has died, we've added a short obituary
555 here.
556
557 =head1 Acknowledgements
558
559 XXX Generate this with:
560
561   perl Porting/acknowledgements.pl v5.21.4..HEAD
562
563 =head1 Reporting Bugs
564
565 If you find what you think is a bug, you might check the articles recently
566 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
567 https://rt.perl.org/ .  There may also be information at
568 http://www.perl.org/ , the Perl Home Page.
569
570 If you believe you have an unreported bug, please run the L<perlbug> program
571 included with your release.  Be sure to trim your bug down to a tiny but
572 sufficient test case.  Your bug report, along with the output of C<perl -V>,
573 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
574
575 If the bug you are reporting has security implications, which make it
576 inappropriate to send to a publicly archived mailing list, then please send it
577 to perl5-security-report@perl.org.  This points to a closed subscription
578 unarchived mailing list, which includes all the core committers, who will be
579 able to help assess the impact of issues, figure out a resolution, and help
580 co-ordinate the release of patches to mitigate or fix the problem across all
581 platforms on which Perl is supported.  Please only use this address for
582 security issues in the Perl core, not for modules independently distributed on
583 CPAN.
584
585 =head1 SEE ALSO
586
587 The F<Changes> file for an explanation of how to view exhaustive details on
588 what changed.
589
590 The F<INSTALL> file for how to build Perl.
591
592 The F<README> file for general stuff.
593
594 The F<Artistic> and F<Copying> files for copyright information.
595
596 =cut