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