This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 952ad5fef9, 6041797116, a93a1bfd14
[perl5.git] / pod / perldelta.pod
CommitLineData
4e9d771a
FC
1=for todo
2b47a847f62 win32/win32sck.c: dont close() a freed socket os handle
3
44691e6f
AB
4=encoding utf8
5
6=head1 NAME
7
28ee95bc
SH
8[ this is a template for a new perldelta file. Any text flagged as XXX needs
9to be processed before release. ]
10
11perldelta - what is new for perl v5.19.6
e128ab2c 12
4eabcf70 13=head1 DESCRIPTION
6db9054f 14
28ee95bc 15This document describes differences between the 5.19.5 release and the 5.19.6
e08634c5 16release.
6db9054f 17
28ee95bc
SH
18If you are upgrading from an earlier release such as 5.19.4, first read
19L<perl5195delta>, which describes differences between 5.19.4 and 5.19.5.
a9c9e371 20
28ee95bc 21=head1 Notice
12ea29d9 22
28ee95bc 23XXX Any important notices here
12ea29d9 24
28ee95bc 25=head1 Core Enhancements
12ea29d9 26
28ee95bc
SH
27XXX New core language features go here. Summarize user-visible core language
28enhancements. Particularly prominent performance optimisations could go
29here, but most should go in the L</Performance Enhancements> section.
12ea29d9 30
28ee95bc 31[ List each enhancement as a =head2 entry ]
12ea29d9 32
05d9825a
FC
33=head2 $a and $b warnings exemption
34
35The special variables $a and $b, used in C<sort>, are now exempt from "used
36once" warnings, even where C<sort> is not used. This makes it easier for
37CPAN modules to provide functions using $a and $b for similar purposes.
38[perl #120462]
39
28ee95bc 40=head1 Security
eedb00fa 41
28ee95bc
SH
42XXX Any security-related notices go here. In particular, any security
43vulnerabilities closed should be noted here rather than in the
44L</Selected Bug Fixes> section.
eedb00fa 45
28ee95bc 46[ List each security issue as a =head2 entry ]
eedb00fa 47
ba03bc34 48=head1 Incompatible Changes
a3fb66a4 49
28ee95bc 50XXX For a release on a stable branch, this section aspires to be:
29b43da2 51
28ee95bc
SH
52 There are no changes intentionally incompatible with 5.XXX.XXX
53 If any exist, they are bugs, and we request that you submit a
54 report. See L</Reporting Bugs> below.
8c24c1f7 55
28ee95bc 56[ List each incompatible change as a =head2 entry ]
6ffbec2c 57
28ee95bc 58=head1 Deprecations
6ffbec2c 59
28ee95bc 60XXX Any deprecated features, syntax, modules etc. should be listed here.
d5dcec3a 61
28ee95bc 62=head2 Module removals
6ffbec2c 63
28ee95bc 64XXX Remove this section if inapplicable.
5565c738 65
28ee95bc
SH
66The following modules will be removed from the core distribution in a
67future release, and will at that time need to be installed from CPAN.
68Distributions on CPAN which require these modules will need to list them as
69prerequisites.
1944fb52 70
28ee95bc
SH
71The core versions of these modules will now issue C<"deprecated">-category
72warnings to alert you to this fact. To silence these deprecation warnings,
73install the modules in question from CPAN.
1944fb52 74
28ee95bc
SH
75Note that these are (with rare exceptions) fine modules that you are encouraged
76to continue to use. Their disinclusion from core primarily hinges on their
77necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
78not usually on concerns over their design.
1944fb52 79
28ee95bc 80=over
1981f814 81
23b56f29 82=item L<Package::Constants>
1981f814 83
28ee95bc 84=back
229563a9 85
28ee95bc 86[ List each other deprecation as a =head2 entry ]
82107948 87
28ee95bc 88=head1 Performance Enhancements
f90332ac 89
28ee95bc
SH
90XXX Changes which enhance performance without changing behaviour go here.
91There may well be none in a stable release.
f90332ac 92
28ee95bc 93[ List each enhancement as a =item entry ]
f90332ac 94
28ee95bc 95=over 4
f90332ac
SH
96
97=item *
98
3a4b75f8
FC
99Constant hash key lookups (C<$hash{key}> as opposed to C<$hash{$key}>) have
100long had the internal hash value computed at compile time, to speed up
101lookup. This optimisation has only now been applied to hash slices as
102well.
f90332ac 103
28ee95bc 104=back
f90332ac 105
28ee95bc 106=head1 Modules and Pragmata
f90332ac 107
28ee95bc
SH
108XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
109go here. If Module::CoreList is updated, generate an initial draft of the
110following sections using F<Porting/corelist-perldelta.pl>, which prints stub
111entries to STDOUT. Results can be pasted in place of the '=head2' entries
112below. A paragraph summary for important changes should then be added by hand.
113In an ideal world, dual-life modules would have a F<Changes> file that could be
114cribbed.
f90332ac 115
28ee95bc 116[ Within each section, list entries as a =item entry ]
f90332ac 117
28ee95bc 118=head2 New Modules and Pragmata
f90332ac 119
28ee95bc 120=over 4
f90332ac
SH
121
122=item *
123
28ee95bc 124XXX
f90332ac 125
28ee95bc 126=back
f90332ac 127
28ee95bc 128=head2 Updated Modules and Pragmata
f90332ac 129
28ee95bc 130=over 4
f90332ac
SH
131
132=item *
133
033960a1
FC
134L<B> has been upgraded from version 1.46 to 1.47.
135
136C<< B::PMOP->precomp >> now preserves the internal UTF8 flag correctly, so
137chr 256 remains chr 256, instead of turning into "\xc4\x80". This allows
138L<B::Deparse> to deparse Unicode regular expression correctly.
139[perl #120182]
140
141=item *
142
23d5aa59
FC
143L<B::Concise> has been upgraded from version 0.99 to 0.991.
144
145B<-debug> output now includes C<op_other> pointers.
146
147=item *
148
3b5f976f
FC
149L<B::Deparse> has been upgraded from version 1.23 to 1.24.
150
151C<s//\(3)/e> is now deparsed in a way that does not issue warnings when
152parsed again. [perl #119807]
153
154=item *
155
494bd897
SH
156L<Module::CoreList> has been upgraded from version 3.00 to 3.01.
157
158The list of Perl versions covered has been updated.
f90332ac 159
22f9c36a
FC
160=item *
161
f63abf92
FC
162L<PerlIO::scalar> has been upgraded from version 0.17 to 0.18.
163
164A bug fix in 0.17 caused references to be stringified as soon as a handle
165to it was opened, even if it was opened only for reading. It also croaked
166on read-only references. This has been fixed. [perl #119529]
167
168=item *
169
22f9c36a
FC
170L<Tie::StdHandle> has been upgraded from version 4.3 to 4.4.
171
172It no longer prints C<$\> twice. [perl #120202]
173
e61cab1a
FC
174It no longer ignores the offset passed to C<syswrite>.
175
28ee95bc 176=back
f90332ac 177
28ee95bc 178=head2 Removed Modules and Pragmata
f90332ac 179
28ee95bc 180=over 4
f90332ac
SH
181
182=item *
183
28ee95bc 184XXX
f90332ac 185
28ee95bc 186=back
f90332ac 187
28ee95bc 188=head1 Documentation
f90332ac 189
28ee95bc
SH
190XXX Changes to files in F<pod/> go here. Consider grouping entries by
191file and be sure to link to the appropriate page, e.g. L<perlfunc>.
f90332ac 192
28ee95bc 193=head2 New Documentation
82107948 194
28ee95bc 195XXX Changes which create B<new> files in F<pod/> go here.
82107948 196
28ee95bc 197=head3 L<XXX>
d05bf821 198
28ee95bc 199XXX Description of the purpose of the new file here
d05bf821 200
28ee95bc 201=head2 Changes to Existing Documentation
be08498a 202
28ee95bc
SH
203XXX Changes which significantly change existing files in F<pod/> go here.
204However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
205section.
be08498a 206
28ee95bc 207=head3 L<XXX>
be08498a 208
28ee95bc 209=over 4
52102bb4
SH
210
211=item *
212
28ee95bc 213XXX Description of the change here
b7c730ff 214
28ee95bc 215=back
d477c82b 216
28ee95bc 217=head1 Diagnostics
d477c82b 218
28ee95bc
SH
219The following additions or changes have been made to diagnostic output,
220including warnings and fatal error messages. For the complete list of
221diagnostic messages, see L<perldiag>.
d477c82b 222
28ee95bc
SH
223XXX New or changed warnings emitted by the core's C<C> code go here. Also
224include any changes in L<perldiag> that reconcile it to the C<C> code.
f90332ac 225
28ee95bc 226=head2 New Diagnostics
f90332ac 227
28ee95bc
SH
228XXX Newly added diagnostic messages go under here, separated into New Errors
229and New Warnings
f90332ac 230
28ee95bc 231=head3 New Errors
f90332ac 232
28ee95bc 233=over 4
f90332ac
SH
234
235=item *
236
28ee95bc 237XXX L<message|perldiag/"message">
2e0c8515 238
28ee95bc 239=back
2e0c8515 240
28ee95bc 241=head3 New Warnings
b7c730ff 242
28ee95bc 243=over 4
b7c730ff 244
befb5359
SH
245=item *
246
28ee95bc 247XXX L<message|perldiag/"message">
befb5359 248
28ee95bc 249=back
befb5359 250
28ee95bc 251=head2 Changes to Existing Diagnostics
f90332ac 252
28ee95bc 253XXX Changes (i.e. rewording) of diagnostic messages go here
411e93ce 254
28ee95bc 255=over 4
411e93ce
SH
256
257=item *
258
28ee95bc 259XXX Describe change here
f90332ac 260
28ee95bc 261=back
f90332ac 262
28ee95bc 263=head1 Utility Changes
f90332ac 264
28ee95bc
SH
265XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
266Most of these are built within the directories F<utils> and F<x2p>.
f90332ac 267
28ee95bc
SH
268[ List utility changes as a =head3 entry for each utility and =item
269entries for each change
270Use L<XXX> with program names to get proper documentation linking. ]
f90332ac 271
28ee95bc 272=head3 L<XXX>
8adfd064 273
28ee95bc 274=over 4
8adfd064
SH
275
276=item *
277
28ee95bc 278XXX
f90332ac 279
2d8e8368
SH
280=back
281
28ee95bc 282=head1 Configuration and Compilation
1944fb52 283
28ee95bc
SH
284XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
285go here. Any other changes to the Perl build process should be listed here.
286However, any platform-specific changes should be listed in the
287L</Platform Support> section, instead.
a3fb66a4 288
28ee95bc 289[ List changes as a =item entry ].
7c90aec3
SH
290
291=over 4
292
293=item *
294
28ee95bc 295XXX
7c90aec3
SH
296
297=back
298
28ee95bc 299=head1 Testing
7c90aec3 300
28ee95bc
SH
301XXX Any significant changes to the testing of a freshly built perl should be
302listed here. Changes which create B<new> files in F<t/> go here as do any
303large changes to the testing harness (e.g. when parallel testing was added).
304Changes to existing files in F<t/> aren't worth summarizing, although the bugs
305that they represent may be covered elsewhere.
7c90aec3 306
28ee95bc 307[ List each test improvement as a =item entry ]
2d8e8368
SH
308
309=over 4
310
311=item *
312
28ee95bc 313XXX
2d8e8368
SH
314
315=back
316
28ee95bc 317=head1 Platform Support
1981f814 318
28ee95bc 319=head2 New Platforms
2b6950bd 320
28ee95bc 321=over 4
1981f814 322
79a18634 323=item Synology
1981f814 324
79a18634
MB
325Synology ships its NAS boxes with a lean Linux distribution (DSM) on relative
326cheap CPU's (like the Marvell Kirkwood mv6282 - ARMv5tel or Freescale QorIQ
327P1022 ppc - e500v2) not meant for workstations or development. These boxes
328should build now. The basic problems are the non-standard location for tools.
1981f814 329
12dcbffb 330=back
1310e590 331
28ee95bc 332=head2 Discontinued Platforms
a34da6c4 333
28ee95bc 334XXX List any platforms that this version of perl no longer compiles on.
ef947715 335
12dcbffb 336=over 4
21c01741 337
28ee95bc 338=item XXX-some-platform
467582e8 339
28ee95bc 340XXX
467582e8 341
ba03bc34 342=back
64da853d 343
28ee95bc 344=head2 Platform-Specific Notes
40d779aa 345
28ee95bc
SH
346XXX List any changes for specific platforms. This could include configuration
347and compilation changes or changes in portability/compatibility. However,
348changes within modules for platforms should generally be listed in the
349L</Modules and Pragmata> section.
40d779aa 350
28ee95bc 351=over 4
40d779aa 352
3e7c2d43
SH
353=item Windows
354
355Support for building with Visual C++ 2013 has been added. There are currently
356two possible test failures (see L<perlwin32/"Testing Perl on Windows">) which
357will hopefully be resolved soon.
358
f4a01e9c 359=item WinCE
40d779aa 360
f4a01e9c
SH
361Perl can now be built in one shot with no user intervention on WinCE by running
362C<nmake -f Makefile.ce all>.
363
364Support for building with EVC (Embedded Visual C++) 4 has been restored. Perl
365can also be built using Smart Devices for Visual C++ 2005 or 2008.
eaed284b 366
ba03bc34 367=back
0335212c 368
28ee95bc 369=head1 Internal Changes
0335212c 370
28ee95bc
SH
371XXX Changes which affect the interface available to C<XS> code go here. Other
372significant internal changes for future core maintainers should be noted as
373well.
374
375[ List each change as a =item entry ]
ee818f56 376
09f4604f 377=over 4
efcbb8b2 378
28ee95bc 379=item *
846aaad8 380
3895ffc7
FC
381Compiling with C<-Accflags=-PERL_BOOL_AS_CHAR> now allows C99 and C++
382compilers to emulate the aliasing of C<bool> to C<char> that perl does for
383C89 compilers. [perl #120314]
846aaad8 384
ba03bc34 385=back
efcbb8b2 386
ba03bc34 387=head1 Selected Bug Fixes
912a9a8f 388
28ee95bc
SH
389XXX Important bug fixes in the core language are summarized here. Bug fixes in
390files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
1144b44d 391
28ee95bc 392[ List each fix as a =item entry ]
1144b44d 393
28ee95bc 394=over 4
04380912
SH
395
396=item *
397
894b53fb
FC
398Perl 5.18.0 accidentally disallowed C<-bareword> under C<use strict> and
399C<use integer>. This has been fixed. [perl #120288]
508c1ff6 400
10513103
FC
401=item *
402
403C<-a> at the start of a line (or a hyphen with any single letter that is
404not a filetest operator) no longer produces an erroneous 'Use of "-a"
405without parentheses is ambiguous' warning. [perl #120288]
406
7269fba0
FC
407=item *
408
409Lvalue context is now properly propagated into bare blocks and C<if> and
410C<else> blocks in lvalue subroutines. Previously, arrays and hashes would
411sometimes incorrectly be flattened when returned in lvalue list context, or
412"Bizarre copy" errors could occur. [perl #119797]
413
9deee734
FC
414=item *
415
416Lvalue context is now propagated to the branches of C<||> and C<&&> (and
417their alphabetic equivalents, C<or> and C<and>). This means
418C<foreach (pos $x || pos $y) {...}> now allows C<pos> to be modified
419through $_.
420
9b3f1466
FC
421=item *
422
423C<*DB::DB = sub {} if 0> no longer stops Perl's debugging mode from finding
424C<DB::DB> subs declared thereafter.
425
fafe36c8
FC
426=item *
427
a766e67d
FC
428C<stat> and C<readline> remember the last handle used; the former
429for the special C<_> filehandle, the latter for C<${^LAST_FH}>.
430C<eval "*foo if 0"> where *foo was the last handle passed to C<stat>
431or C<readline> could cause that handle to be forgotten if the
fafe36c8
FC
432handle were not opened yet. This has been fixed.
433
326cf246
FC
434=item *
435
436Various cases of C<delete $::{a}>, C<delete $::{ENV}> etc. causing a crash
437have been fixed. [perl #54044]
438
336b9946
FC
439=item *
440
441Assigning another typeglob to C<*^R> no longer makes the regular expression
442engine crash.
443
e4e776a2
FC
444=item *
445
446C<%{'_<...'}> hashes now set breakpoints on the corresponding C<@{'_<...'}>
447rather than whichever array C<@DB::dbline> is aliased to. [perl #119799]
448
d4fec79a
FC
449=item *
450
451Setting C<$!> to EACCESS before calling C<require> could affect
452C<require>'s behaviour. This has been fixed.
453
b34b8721
FC
454=item *
455
456The "Can't use \1 to mean $1 in expression" warning message now only occurs
457on the right-hand (replacement) part of a substitution. Formerly it could
458happen in code embedded in the left-hand side, or in any other quote-like
459operator.
460
73f74d29
FC
461=item *
462
463The C<\N> regular expression escape, when used without the curly braces (to
464mean C<[^\n]>), was ignoring a following C<*> if followed by whitespace
465under /x. It had been this way since C<\N> to mean C<[^\n]> was introduced
466in 5.12.0.
467
49c74b45
FC
468=item *
469
470Blessing into a reference (C<bless $thisref, $thatref>) has long been
471disallowed, but magical scalars for the second like C<$/> and those tied
472were exempt. They no longer are. [perl #119809]
473
3db3aac2
FC
474=item *
475
476Blessing into a reference was accidentally allowed in 5.18 if the class
477argument were a blessed reference with stale method caches (i.e., whose
478class had had subs defined since the last method call). They are
479disallowed once more, as in 5.16.
480
1859dc90
FC
481=item *
482
483An undefined lexical sub used as an inherited method no longer crashes.
484
ed935cbf
FC
485=item *
486
487C<< $x->{key} >> where $x was declared as C<my Class $x> no longer crashes
488if a Class::FIELDS subroutine stub has been declared.
489
62ab5032
FC
490=item *
491
492C<@$obj{'key'}> and C<${$obj}{key}> used to be exempt from compile-time
493field checking ("No such class field"; see L<fields>) but no longer are.
494
ec52a187
FC
495=item *
496
497A nonexistent array element with a large index passed to a subroutine that
498ties the array and then tries to access the element no longer results in a
499crash.
500
d84b9c6a
FC
501=item *
502
503Declaring a subroutine stub named NEGATIVE_INDICES no longer makes negative
504array indices crash when the current package is a tied array class.
505
c9a5c63e
FC
506=item *
507
508Declaring a C<require>, C<glob>, or C<do> subroutine stub in the
509CORE::GLOBAL:: package no longer makes compilation of calls to the
510corresponding functions crash.
511
4105c9c0
FC
512=item *
513
514Aliasing CORE::GLOBAL:: functions to constants stopped working in Perl 5.10
515but has now been fixed.
516
28ee95bc 517=back
508c1ff6 518
28ee95bc 519=head1 Known Problems
7492c6c5 520
28ee95bc
SH
521XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
522tests that had to be C<TODO>ed for the release would be noted here. Unfixed
523platform specific bugs also go here.
254a1e67 524
28ee95bc 525[ List each fix as a =item entry ]
254a1e67 526
28ee95bc 527=over 4
254a1e67
SH
528
529=item *
530
894b53fb 531XXX
7492c6c5 532
09f4604f 533=back
cfbe45f9 534
28ee95bc 535=head1 Obituary
c84b5497 536
28ee95bc
SH
537XXX If any significant core contributor has died, we've added a short obituary
538here.
c84b5497 539
28ee95bc 540=head1 Acknowledgements
c84b5497 541
28ee95bc 542XXX Generate this with:
c84b5497 543
28ee95bc 544 perl Porting/acknowledgements.pl v5.19.5..HEAD
f5b73711 545
44691e6f
AB
546=head1 Reporting Bugs
547
e08634c5
SH
548If you find what you think is a bug, you might check the articles recently
549posted to the comp.lang.perl.misc newsgroup and the perl bug database at
550http://rt.perl.org/perlbug/ . There may also be information at
551http://www.perl.org/ , the Perl Home Page.
44691e6f 552
e08634c5
SH
553If you believe you have an unreported bug, please run the L<perlbug> program
554included with your release. Be sure to trim your bug down to a tiny but
555sufficient test case. Your bug report, along with the output of C<perl -V>,
556will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
557
558If the bug you are reporting has security implications, which make it
e08634c5
SH
559inappropriate to send to a publicly archived mailing list, then please send it
560to perl5-security-report@perl.org. This points to a closed subscription
561unarchived mailing list, which includes all the core committers, who will be
562able to help assess the impact of issues, figure out a resolution, and help
f9001595 563co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
564platforms on which Perl is supported. Please only use this address for
565security issues in the Perl core, not for modules independently distributed on
566CPAN.
44691e6f
AB
567
568=head1 SEE ALSO
569
e08634c5
SH
570The F<Changes> file for an explanation of how to view exhaustive details on
571what changed.
44691e6f
AB
572
573The F<INSTALL> file for how to build Perl.
574
575The F<README> file for general stuff.
576
577The F<Artistic> and F<Copying> files for copyright information.
578
579=cut