This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for cae71c5daa29
[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
0561e60b
TC
245L<POSIX> has been upgraded from version 1.44 to 1.45.
246
247POSIX::tmpnam() now produces a deprecation warning. [perl #122005]
248
249=item *
250
4cd408ba
TC
251L<XSLoader> has been upgraded from version 0.17 to 0.18.
252
253Allow XSLoader to load modules from a different namespace.
254[perl #122455]
255
13900f93 256=back
aac7f82f 257
8c8d6154 258=head2 Removed Modules and Pragmata
aac7f82f 259
5cfa0642 260=over 4
6d9b7c7c 261
5cfa0642 262=item *
2a395b86 263
8c8d6154 264XXX
2a395b86 265
5cfa0642 266=back
2a395b86 267
8c8d6154 268=head1 Documentation
2a395b86 269
8c8d6154
SH
270XXX Changes to files in F<pod/> go here. Consider grouping entries by
271file and be sure to link to the appropriate page, e.g. L<perlfunc>.
5cfa0642 272
8c8d6154 273=head2 New Documentation
39c4a6cf 274
8c8d6154 275XXX Changes which create B<new> files in F<pod/> go here.
2a395b86 276
8c8d6154 277=head3 L<XXX>
2a395b86 278
8c8d6154 279XXX Description of the purpose of the new file here
2a395b86 280
8c8d6154 281=head2 Changes to Existing Documentation
8435afd1 282
8c8d6154
SH
283XXX Changes which significantly change existing files in F<pod/> go here.
284However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
285section.
8435afd1 286
8c8d6154 287=head3 L<XXX>
8435afd1
SH
288
289=over 4
2a395b86 290
12d22d1f
JK
291=item *
292
09e43397
KW
293Clarifications have been added to L<perlrecharclass/Character Ranges>
294to the effect that Perl guarantees that C<[A-Z]>, C<[a-z]>, C<[0-9]> and
295any subranges thereof in regular expression bracketed character classes
296are guaranteed to match exactly what a naive English speaker would
297expect them to match, even on platforms (such as EBCDIC) where special
298handling is required to accomplish this.
12d22d1f 299
2a395b86
PM
300=back
301
39c4a6cf 302=head1 Diagnostics
2a395b86 303
39c4a6cf
PM
304The following additions or changes have been made to diagnostic output,
305including warnings and fatal error messages. For the complete list of
306diagnostic messages, see L<perldiag>.
2a395b86 307
8c8d6154
SH
308XXX New or changed warnings emitted by the core's C<C> code go here. Also
309include any changes in L<perldiag> that reconcile it to the C<C> code.
2a395b86 310
8c8d6154 311=head2 New Diagnostics
2a395b86 312
8c8d6154
SH
313XXX Newly added diagnostic messages go under here, separated into New Errors
314and New Warnings
2a395b86 315
8c8d6154 316=head3 New Errors
5cfa0642 317
8c8d6154 318=over 4
2a395b86
PM
319
320=item *
321
8c8d6154 322XXX L<message|perldiag/"message">
2a395b86
PM
323
324=back
6d9b7c7c 325
8c8d6154 326=head3 New Warnings
39c4a6cf 327
13900f93 328=over 4
7f55cec0
SH
329
330=item *
331
8c8d6154 332XXX L<message|perldiag/"message">
623141a1 333
8c8d6154 334=back
aac7f82f 335
8c8d6154 336=head2 Changes to Existing Diagnostics
363d3025 337
8c8d6154 338XXX Changes (i.e. rewording) of diagnostic messages go here
334464b3 339
8c8d6154 340=over 4
334464b3
FC
341
342=item *
343
dbe3c929
FC
344'"my" variable &foo::bar can't be in a package' has been reworded to say
345'subroutine' instead of 'variable'.
ef5a9509 346
363d3025
FC
347=back
348
8c8d6154 349=head1 Utility Changes
4594cf53 350
8c8d6154
SH
351XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
352Most of these are built within the directory F<utils>.
96dcbc37 353
8c8d6154
SH
354[ List utility changes as a =head2 entry for each utility and =item
355entries for each change
356Use L<XXX> with program names to get proper documentation linking. ]
96dcbc37 357
8c8d6154 358=head2 L<XXX>
13900f93 359
8c8d6154 360=over 4
58f25ac1
MH
361
362=item *
363
8c8d6154 364XXX
a5873648 365
39c4a6cf 366=back
a5873648 367
55ba8847
JH
368=head1 Configuration and Compilation
369
8c8d6154
SH
370XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
371go here. Any other changes to the Perl build process should be listed here.
372However, any platform-specific changes should be listed in the
373L</Platform Support> section, instead.
55ba8847 374
8c8d6154 375[ List changes as a =item entry ].
a5873648 376
39c4a6cf 377=over 4
a5873648
PM
378
379=item *
380
8c8d6154 381XXX
7d0ccdba 382
7065301c
RS
383=back
384
8c8d6154 385=head1 Testing
d72cd2eb 386
8c8d6154
SH
387XXX Any significant changes to the testing of a freshly built perl should be
388listed here. Changes which create B<new> files in F<t/> go here as do any
389large changes to the testing harness (e.g. when parallel testing was added).
390Changes to existing files in F<t/> aren't worth summarizing, although the bugs
391that they represent may be covered elsewhere.
c1284011 392
8c8d6154 393[ List each test improvement as a =item entry ]
375f5f06 394
0346c3a9 395=over 4
375f5f06 396
2884baee
MH
397=item *
398
8c8d6154 399XXX
6f1a844b 400
8c8d6154 401=back
549ea8d4 402
8c8d6154 403=head1 Platform Support
549ea8d4 404
8c8d6154 405XXX Any changes to platform support should be listed in the sections below.
be0006e0 406
8c8d6154
SH
407[ Within the sections, list each platform as a =item entry with specific
408changes as paragraphs below it. ]
be0006e0 409
8c8d6154 410=head2 New Platforms
1699f5c2 411
8c8d6154
SH
412XXX List any platforms that this version of perl compiles on, that previous
413versions did not. These will either be enabled by new files in the F<hints/>
414directories, or new subdirectories and F<README> files at the top level of the
415source tree.
1699f5c2 416
8c8d6154 417=over 4
7e8b2071 418
8c8d6154 419=item XXX-some-platform
7e8b2071 420
8c8d6154 421XXX
f9acf899 422
8c8d6154 423=back
f9acf899 424
8c8d6154 425=head2 Discontinued Platforms
fd26b6f0 426
8c8d6154 427XXX List any platforms that this version of perl no longer compiles on.
fd26b6f0 428
8c8d6154 429=over 4
499333dc 430
8c8d6154 431=item XXX-some-platform
499333dc 432
8c8d6154 433XXX
8f0cd35a 434
8c8d6154 435=back
8f0cd35a 436
8c8d6154 437=head2 Platform-Specific Notes
aa292ef2 438
8c8d6154
SH
439XXX List any changes for specific platforms. This could include configuration
440and compilation changes or changes in portability/compatibility. However,
441changes within modules for platforms should generally be listed in the
442L</Modules and Pragmata> section.
aa292ef2 443
8c8d6154 444=over 4
739e9bee 445
09e43397 446=item EBCDIC
739e9bee 447
09e43397
KW
448Special handling is required on EBCDIC platforms to get C<qr/[i-j]/> to
449match only C<"i"> and C<"j">, since there are 7 characters between the
450code points for C<"i"> and C<"j">. This special handling had only been
451invoked when both ends of the range are literals. Now it is also
452invoked if any of the C<\N{...}> forms for specifying a character by
453name or Unicode code point is used instead of a literal. See
454L<perlrecharclass/Character Ranges>.
b23b2fdb 455
8c8d6154 456=back
b23b2fdb 457
8c8d6154 458=head1 Internal Changes
7d15b1a8 459
8c8d6154
SH
460XXX Changes which affect the interface available to C<XS> code go here. Other
461significant internal changes for future core maintainers should be noted as
462well.
7d15b1a8 463
8c8d6154 464[ List each change as a =item entry ]
bbca64cf 465
8c8d6154 466=over 4
bbca64cf 467
0064f8cc
KW
468=item *
469
13203cef
FC
470SVs of type SVt_NV are now bodyless when a build configure and platform allow
471it, specifically C<sizeof(NV) <= sizeof(IV)>. The bodyless trick is the same one
472as for IVs since 5.9.2, but for NVs, unlike IVs, is not guarenteed on all
473platforms and build configurations.
6ff8f256 474
1b4c7150
TC
475=item *
476
477The C<$DB::single>, C<$DB::signal> and C<$DB::trace> now have set and
478get magic that stores their values as IVs and those IVs are used when
479testing their values in C<pp_dbstate>. This prevents perl from
480recursing infinity if an overloaded object is assigned to any of those
481variables. [perl #122445]
482
a953aca5
DD
483=item *
484
485C<Perl_tmps_grow> which is marked as public API but undocumented has been
486removed from public API. If you use C<EXTEND_MORTAL> macro in your XS code to
487preextend the mortal stack, you are unaffected by this change.
488
8405c65d
FC
489=item *
490
491C<cv_name>, which was introduced in 5.21.4, has been changed incompatibly.
492It now has a flags field that allows the caller to specify whether the name
493should be fully qualified. See L<perlapi/cv_name>.
494
8e2708f3
FC
495=item *
496
497Internally Perl no longer uses the C<SVs_PADMY> flag. C<SvPADMY()> now
498returns a true value for anything not marked PADTMP. C<SVs_PADMY> is now
499defined as 0.
500
8c8d6154 501=back
6ff8f256 502
8c8d6154 503=head1 Selected Bug Fixes
80cc3290 504
8c8d6154
SH
505XXX Important bug fixes in the core language are summarized here. Bug fixes in
506files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
80cc3290 507
8c8d6154 508[ List each fix as a =item entry ]
13dd5671 509
8c8d6154 510=over 4
13dd5671 511
bdab7676
FC
512=item *
513
227d08c8
FC
514Locking and unlocking values via L<Hash::Util> or C<Internals::SvREADONLY>
515no longer has any affect on values that are read-only to begin. Unlocking
516such values could result in crashes, hangs or other erratic behaviour.
bdab7676 517
94959c63
FC
518=item *
519
520The internal C<looks_like_number> function (which L<Scalar::Util> provides
521access to) began erroneously to return true for "-e1" in 5.21.4, affecting
522also C<-'-e1'>. This has been fixed.
523
24d3d8cd
FC
524=item *
525
526The flip-flop operator (C<..> in scalar context) would return the same
527scalar each time, unles the containing subroutine was called recursively.
528Now it always returns a new scalar. [perl #122829]
529
02dde543
FC
530=item *
531
532Some unterminated C<(?(...)...)> constructs in regular expressions would
533either crash or give erroneous error messages. C</(?(1)/> is one such
534example.
535
5058ae74
FC
536=item *
537
538C<pack "w", $tied> no longer calls FETCH twice.
539
14937635
FC
540=item *
541
542List assignments like C<($x, $z) = (1, $y)> now work correctly if $x and $y
543have been aliased by C<foreach>.
544
325f4225
FC
545=item *
546
547Some patterns including code blocks with syntax errors, such as
548C</ (?{(^{})/>, would hang or fail assertions on debugging builds. Now
549they produce errors.
550
c1662923
FC
551=item *
552
553An assertion failure when parsing C<sort> with debugging enabled has been
554fixed. [perl #122771]
555
7646b3d5
FC
556=item *
557
558C<*a = *b; @a = split //, $b[1]> could do a bad read and produce junk
559results.
560
db98db4e
FC
561=item *
562
563In C<() = @array = split>, the C<() => at the beginning no longer confuses
564the optimiser, making it assume a limit of 1.
565
8c8d6154 566=back
3a085d00 567
8c8d6154 568=head1 Known Problems
caa66803 569
8c8d6154
SH
570XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
571tests that had to be C<TODO>ed for the release would be noted here. Unfixed
572platform specific bugs also go here.
caa66803 573
8c8d6154 574[ List each fix as a =item entry ]
91766151 575
8c8d6154 576=over 4
91766151 577
dd593f1d
FC
578=item *
579
8c8d6154 580XXX
fb3b7425 581
8c8d6154 582=back
fb3b7425 583
8c8d6154 584=head1 Errata From Previous Releases
b245455d 585
8c8d6154 586=over 4
b245455d 587
26dd5fd6
PM
588=item *
589
8c8d6154
SH
590XXX Add anything here that we forgot to add, or were mistaken about, in
591the perldelta of a previous release.
ff433f2d 592
39c4a6cf
PM
593=back
594
8c8d6154 595=head1 Obituary
c0c55a9b 596
8c8d6154
SH
597XXX If any significant core contributor has died, we've added a short obituary
598here.
c0c55a9b 599
8c8d6154 600=head1 Acknowledgements
c0c55a9b 601
8c8d6154 602XXX Generate this with:
e831f11a 603
8c8d6154 604 perl Porting/acknowledgements.pl v5.21.4..HEAD
f5b73711 605
44691e6f
AB
606=head1 Reporting Bugs
607
e08634c5
SH
608If you find what you think is a bug, you might check the articles recently
609posted to the comp.lang.perl.misc newsgroup and the perl bug database at
238894db 610https://rt.perl.org/ . There may also be information at
7ef8b31d 611http://www.perl.org/ , the Perl Home Page.
44691e6f 612
e08634c5
SH
613If you believe you have an unreported bug, please run the L<perlbug> program
614included with your release. Be sure to trim your bug down to a tiny but
615sufficient test case. Your bug report, along with the output of C<perl -V>,
616will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
617
618If the bug you are reporting has security implications, which make it
e08634c5
SH
619inappropriate to send to a publicly archived mailing list, then please send it
620to perl5-security-report@perl.org. This points to a closed subscription
621unarchived mailing list, which includes all the core committers, who will be
622able to help assess the impact of issues, figure out a resolution, and help
f9001595 623co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
624platforms on which Perl is supported. Please only use this address for
625security issues in the Perl core, not for modules independently distributed on
626CPAN.
44691e6f
AB
627
628=head1 SEE ALSO
629
e08634c5
SH
630The F<Changes> file for an explanation of how to view exhaustive details on
631what changed.
44691e6f
AB
632
633The F<INSTALL> file for how to build Perl.
634
635The F<README> file for general stuff.
636
637The F<Artistic> and F<Copying> files for copyright information.
638
639=cut