This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Increase Hash::Util::FieldHash’s version
[perl5.git] / pod / perldelta.pod
CommitLineData
4c793fe3
FR
1=encoding utf8
2
c39f7439 3=for comment
a638ba6f 4This has been completed up to 2acc3314e31, except for:
48ea5431
FC
504777d295957ad270188e4debf51b523e07cc5b0
6c565ab54dc649bb62cd4d57149d7b2abb21df5f3
a5e71717 71c8d11ca3d0ce8bc11562f159b94c2c7e62dea6c
c39f7439 8
4c793fe3
FR
9=head1 NAME
10
8f97a47a
TM
11[ this is a template for a new perldelta file. Any text flagged as
12XXX needs to be processed before release. ]
4c793fe3 13
8f97a47a 14perldelta - what is new for perl v5.13.7
a12cf05f 15
8f97a47a 16=head1 DESCRIPTION
fb121860 17
8f97a47a
TM
18This document describes differences between the 5.13.6 release and
19the 5.13.7 release.
eb32ee41 20
8f97a47a
TM
21If you are upgrading from an earlier release such as 5.13.5, first read
22L<perl5136delta>, which describes differences between 5.13.5 and
235.13.6.
eb32ee41 24
8f97a47a 25=head1 Notice
eb32ee41 26
8f97a47a 27XXX Any important notices here
5e26bbbe 28
8f97a47a 29=head1 Core Enhancements
5e26bbbe 30
8f97a47a
TM
31XXX New core language features go here. Summarise user-visible core language
32enhancements. Particularly prominent performance optimisations could go
33here, but most should go in the L</Performance Enhancements> section.
5e26bbbe 34
8f97a47a 35[ List each enhancement as a =head2 entry ]
4f65bc30 36
c035a075
DG
37=head2 Single term prototype
38
39The C<+> prototype is a special alternative to C<$> that will act like
40C<\[@%]> when given a literal array or hash variable, but will otherwise
41force scalar context on the argument. This is useful for functions which
42should accept either a literal array or an array reference as the argument:
43
44 sub smartpush (+@) {
45 my $aref = shift;
46 die "Not an array or arrayref" unless ref $aref eq 'ARRAY';
47 push @$aref, @_;
48 }
49
50When using the C<+> prototype, your function must check that the argument
51is of an acceptable type.
52
b7bd32cc
FC
53=head2 C<use re '/flags';>
54
55The C<re> pragma now has the ability to turn on regular expression flags
56till the end of the lexical scope:
57
58 use re '/x';
59 "foo" =~ / (.+) /; # /x implied
60
61See L<re/'/flags' mode> for details.
62
a5e71717
FC
63=head2 Statement labels can appear in more places
64
65Statement labels can now occur before any type of statement or declaration,
66such as C<package>.
67
8f97a47a 68=head1 Security
4f65bc30 69
8f97a47a
TM
70XXX Any security-related notices go here. In particular, any security
71vulnerabilities closed should be noted here rather than in the
72L</Selected Bug Fixes> section.
0eec0a4c 73
8f97a47a 74[ List each security issue as a =head2 entry ]
0eec0a4c 75
4c793fe3
FR
76=head1 Incompatible Changes
77
8f97a47a 78XXX For a release on a stable branch, this section aspires to be:
9de15fec 79
8f97a47a
TM
80 There are no changes intentionally incompatible with 5.XXX.XXX. If any
81 exist, they are bugs and reports are welcome.
9de15fec 82
8f97a47a 83[ List each incompatible change as a =head2 entry ]
9de15fec 84
a638ba6f
FC
85=head2 Dereferencing typeglobs
86
87If you assign a typeglob to a scalar variable:
88
89 $glob = *foo;
90
91the glob that is copied to C<$glob> is marked with a special flag
92indicating that the glob is just a copy. This allows subsequent assignments
93to C<$glob> to overwrite the glob. The original glob, however, is
94immutable.
95
96Many Perl operators did not distinguish between these two types of globs.
97This would result in strange behaviour in edge cases: C<untie $scalar>
98would do nothing if the last thing assigned to the scalar was a glob
99(because it treated it as C<untie *$scalar>, which unties a handle).
0b6a3b5a 100Assignment to a glob slot (e.g., C<(*$glob) = \@some_array>) would simply
a638ba6f
FC
101assign C<\@some_array> to C<$glob>.
102
103To fix this, the C<*{}> operator (including the C<*foo> and C<*$foo> forms)
104has been modified to make a new immutable glob if its operand is a glob
105copy. Various operators that make a distinction between globs and scalars
106have been modified to treat only immutable globs as globs.
107
108This causes an incompatible change in code that assigns a glob to the
109return value of C<*{}> when that operator was passed a glob copy. Take the
110following code, for instance:
111
112 $glob = *foo;
113 *$glob = *bar;
114
115The C<*$glob> on the second line returns a new immutable glob. That new
116glob is made an alias to C<*bar>. Then it is discarded.
117
118The upside to this incompatible change is that bugs
119L<[perl #77496]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77496>,
120L<[perl #77502]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77502>,
121L<[perl #77508]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77508>,
122L<[perl #77688]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77688>,
123and
124L<[perl #77812]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77812>,
125and maybe others, too, have been fixed.
126
0b6a3b5a
FC
127See L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=77810> for even
128more detail.
a638ba6f 129
8f97a47a 130=head1 Deprecations
6904a83f 131
8f97a47a
TM
132XXX Any deprecated features, syntax, modules etc. should be listed here.
133In particular, deprecated modules should be listed here even if they are
134listed as an updated module in the L</Modules and Pragmata> section.
6904a83f 135
8f97a47a 136[ List each deprecation as a =head2 entry ]
afa74577 137
4c793fe3
FR
138=head1 Performance Enhancements
139
8f97a47a
TM
140XXX Changes which enhance performance without changing behaviour go here. There
141may well be none in a stable release.
4c793fe3 142
8f97a47a 143[ List each enhancement as a =item entry ]
e2babdfb 144
8f97a47a 145=over 4
e2babdfb 146
b141c43c
FR
147=item *
148
8f97a47a 149XXX
b141c43c 150
4c793fe3
FR
151=back
152
153=head1 Modules and Pragmata
154
8f97a47a
TM
155XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
156go here. If Module::CoreList is updated, generate an initial draft of the
157following sections using F<Porting/corelist-perldelta.pl>, which prints stub
158entries to STDOUT. Results can be pasted in place of the '=head2' entries
159below. A paragraph summary for important changes should then be added by hand.
160In an ideal world, dual-life modules would have a F<Changes> file that could be
161cribbed.
e2941eb0 162
8f97a47a 163[ Within each section, list entries as a =item entry ]
e2941eb0 164
8f97a47a 165=head2 New Modules and Pragmata
25e68b8b 166
8f97a47a 167=over 4
463da0ac
CBW
168
169=item *
170
8f97a47a 171XXX
6481ebaf 172
8f97a47a 173=back
6481ebaf 174
8f97a47a 175=head2 Updated Modules and Pragmata
6481ebaf 176
8f97a47a 177=over 4
ac4c9720
CBW
178
179=item *
180
9f1eb87f
CBW
181C<Archive::Extract> has been upgraded from 0.44 to 0.46
182
183Resolves an issue with NetBSD-current and its new unzip
184executable.
185
186=item *
187
a5e71717
FC
188C<B> has been upgraded from 1.24 to 1.25.
189
190=item *
191
b7bd32cc
FC
192XXX What should the version be?
193
194C<B::Deparse> has been upgraded from 0.99 to ???.
195
196It fixes deparsing of C<our> followed by a variable with funny characters
197(as permitted under the C<utf8> pragma)
198L<[perl #33752]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=33752>.
199
200=item *
201
07be2ace
CBW
202C<CPAN> has been upgraded from 1.94_61 to 1.94_62
203
204=item *
205
48ea5431
FC
206C<ExtUtils::Constant> has been upgraded from 0.22 to 0.23.
207
208=item *
209
210C<Fcntl> has been upgraded from 1.09 to 1.10.
211
212=item *
213
214C<File::Glob> has been upgraded from 1.09 to 1.10.
215
216=item *
217
c39f7439
FC
218C<GDBM_File> has been upgraded from 1.11 to 1.12.
219
220This fixes a memory leak when DBM filters are used.
221
222=item *
223
48ea5431
FC
224C<Hash::Util> has been upgraded from 0.09 to 0.10.
225
226This fixes a memory leak when DBM filters are used.
227
228=item *
229
230C<I18N::Langinfo> has been upgraded from 0.06 to 0.07.
231
232=item *
233
e1be28b4
TR
234C<Locale::Maketext> has been upgraded from 1.16 to 1.17
235
236=item *
237
c39f7439
FC
238C<NDBM_File> has been upgraded from 1.09 to 1.10.
239
240This fixes a memory leak when DBM filters are used.
241
242=item *
243
244C<ODBM_File> has been upgraded from 1.08 to 1.09.
245
246This fixes a memory leak when DBM filters are used.
247
248=item *
249
48ea5431
FC
250C<POSIX> has been upgraded from 1.21 to 1.22.
251
252=item *
253
b7bd32cc
FC
254C<re> has been upgraded from 0.13 to 0.14, for the sake of the new
255C<use re "/flags"> pragma.
dfa4c013 256
48ea5431
FC
257=item *
258
259C<SDBM_File> has been upgraded from 1.07 to 1.08.
260
261=item *
262
a5e71717
FC
263C<SelfLoader> has been upgraded from 1.17 to 1.18.
264
265It now works in taint mode
266L<[perl #72062]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=72062>.
267
268=item *
269
48ea5431
FC
270C<Socket> has been upgraded from 1.90 to 1.91.
271
a5e71717
FC
272=item *
273
274C<Sys::Hostname> has been upgraded from 1.13 to 1.14.
275
8f97a47a 276=back
dfa4c013 277
8f97a47a 278=head2 Removed Modules and Pragmata
c02ee425 279
8f97a47a 280=over 4
1393fe00
CBW
281
282=item *
283
8f97a47a 284XXX
c9a84c8b 285
8f97a47a 286=back
918184d1 287
8f97a47a 288=head1 Documentation
918184d1 289
8f97a47a
TM
290XXX Changes to files in F<pod/> go here. Consider grouping entries by
291file and be sure to link to the appropriate page, e.g. L<perlfunc>.
918184d1 292
8f97a47a 293=head2 New Documentation
dca41e57 294
8f97a47a 295XXX Changes which create B<new> files in F<pod/> go here.
dca41e57 296
8f97a47a 297=head3 L<XXX>
c9a84c8b 298
8f97a47a 299XXX Description of the purpose of the new file here
4c793fe3 300
ee0887a9 301=head2 Changes to Existing Documentation
fc1418b7 302
8f97a47a
TM
303XXX Changes which significantly change existing files in F<pod/> go here.
304However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
305section.
306
7eb82171
DG
307=over
308
48ea5431
FC
309=item *
310
a5e71717 311Array and hash slices in scalar context are now documented in L<perldata>.
48ea5431 312
7eb82171
DG
313=back
314
8f97a47a 315=head3 L<XXX>
e2babdfb 316
7bc3efda
SH
317=over 4
318
319=item *
320
8f97a47a 321XXX Description of the change here
7bc3efda
SH
322
323=back
e2babdfb 324
4c793fe3
FR
325=head1 Diagnostics
326
327The following additions or changes have been made to diagnostic output,
328including warnings and fatal error messages. For the complete list of
329diagnostic messages, see L<perldiag>.
330
8f97a47a
TM
331XXX New or changed warnings emitted by the core's C<C> code go here. Also
332include any changes in L<perldiag> that reconcile it to the C<C> code.
4c793fe3 333
8f97a47a 334[ Within each section, list entries as a =item entry ]
4c793fe3 335
8f97a47a 336=head2 New Diagnostics
4c793fe3 337
8f97a47a 338XXX Newly added diagnostic messages go here
dc08898c
FC
339
340=over 4
341
342=item *
343
8f97a47a 344XXX
dc08898c
FC
345
346=back
347
8f97a47a 348=head2 Changes to Existing Diagnostics
4c793fe3 349
8f97a47a 350XXX Changes (i.e. rewording) of diagnostic messages go here
0c692eed 351
ee0887a9 352=over 4
0c692eed
FR
353
354=item *
355
8f97a47a 356XXX
4c793fe3
FR
357
358=back
359
8f97a47a 360=head1 Utility Changes
810f3b7c 361
8f97a47a
TM
362XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
363here. Most of these are built within the directories F<utils> and F<x2p>.
a9e68e41 364
8f97a47a
TM
365[ List utility changes as a =head3 entry for each utility and =item
366entries for each change
367Use L<XXX> with program names to get proper documentation linking. ]
a9e68e41 368
8f97a47a 369=head3 L<XXX>
85318b69 370
ee0887a9 371=over 4
80b6a949 372
e2babdfb
FR
373=item *
374
8f97a47a 375XXX
9ae8c3d9 376
ee0887a9 377=back
e2babdfb 378
8f97a47a 379=head1 Configuration and Compilation
e2babdfb 380
8f97a47a
TM
381XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
382go here. Any other changes to the Perl build process should be listed here.
383However, any platform-specific changes should be listed in the
384L</Platform Support> section, instead.
346e4e56 385
8f97a47a 386[ List changes as a =item entry ].
78846812 387
8f97a47a 388=over 4
e54f3f30
FC
389
390=item *
391
8f97a47a 392XXX
e54f3f30 393
8f97a47a 394=back
a5763045 395
8f97a47a 396=head1 Testing
5a9a79a4 397
8f97a47a
TM
398XXX Any significant changes to the testing of a freshly built perl should be
399listed here. Changes which create B<new> files in F<t/> go here as do any
400large changes to the testing harness (e.g. when parallel testing was added).
401Changes to existing files in F<t/> aren't worth summarising, although the bugs
402that they represent may be covered elsewhere.
5a9a79a4 403
8f97a47a 404[ List each test improvement as a =item entry ]
a7e93501 405
8f97a47a 406=over 4
a7e93501
FC
407
408=item *
409
8f97a47a 410XXX
a7e93501 411
8f97a47a 412=back
a7e93501 413
8f97a47a 414=head1 Platform Support
a7e93501 415
8f97a47a 416XXX Any changes to platform support should be listed in the sections below.
a7e93501 417
8f97a47a
TM
418[ Within the sections, list each platform as a =item entry with specific
419changes as paragraphs below it. ]
a7e93501 420
8f97a47a 421=head2 New Platforms
d4a59e54 422
8f97a47a
TM
423XXX List any platforms that this version of perl compiles on, that previous
424versions did not. These will either be enabled by new files in the F<hints/>
425directories, or new subdirectories and F<README> files at the top level of the
426source tree.
d4a59e54 427
8f97a47a 428=over 4
dc08898c 429
8f97a47a 430=item XXX-some-platform
dc08898c 431
8f97a47a 432XXX
dc08898c 433
8f97a47a 434=back
6904a83f 435
8f97a47a 436=head2 Discontinued Platforms
6904a83f 437
8f97a47a 438XXX List any platforms that this version of perl no longer compiles on.
6904a83f 439
8f97a47a 440=over 4
cffb3698 441
8f97a47a 442=item XXX-some-platform
ab4c2c27 443
8f97a47a 444XXX
ab4c2c27 445
8f97a47a 446=back
be1cc451 447
8f97a47a 448=head2 Platform-Specific Notes
be1cc451 449
8f97a47a
TM
450XXX List any changes for specific platforms. This could include configuration
451and compilation changes or changes in portability/compatibility. However,
452changes within modules for platforms should generally be listed in the
453L</Modules and Pragmata> section.
b20c4ee1 454
8f97a47a 455=over 4
b20c4ee1 456
8f97a47a 457=item XXX-some-platform
afa74577 458
8f97a47a 459XXX
afa74577 460
8f97a47a 461=back
c8bbf675 462
8f97a47a 463=head1 Internal Changes
c8bbf675 464
8f97a47a
TM
465XXX Changes which affect the interface available to C<XS> code go here.
466Other significant internal changes for future core maintainers should
467be noted as well.
07d5f7aa 468
8f97a47a 469[ List each test improvement as a =item entry ]
07d5f7aa 470
8f97a47a 471=over 4
07d5f7aa 472
9ae8c3d9
FC
473=item *
474
b7bd32cc
FC
475C<lex_start> has been added to the API, but is considered experimental.
476
477=item *
478
479A new C<parse_block> function has been added to the API
480L<[perl #78222]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78222>.
481
482=item *
483
c678e617 484A new, experimental API has been added for accessing the internal
b7bd32cc
FC
485structure that Perl uses for C<%^H>. See the functions beginning with
486C<cophh_> in L<perlapi>.
9ae8c3d9 487
a5e71717
FC
488=item *
489
490A stash can now have a list of effective names in addition to its usual
491name. These can be added and deleted via C<hv_ename_add> and
492C<hv_ename_delete>. The first effective name can be accessed via the
493C<HvENAME*> macros defined in F<hv.h>. These new functions and macros are
494I<not> part of the API.
495
8f97a47a 496=back
825563b9 497
8f97a47a 498=head1 Selected Bug Fixes
825563b9 499
8f97a47a
TM
500XXX Important bug fixes in the core language are summarised here.
501Bug fixes in files in F<ext/> and F<lib/> are best summarised in
502L</Modules and Pragmata>.
825563b9 503
8f97a47a 504[ List each fix as a =item entry ]
825563b9 505
8f97a47a 506=over 4
825563b9 507
020fe755
AB
508=item *
509
b7bd32cc
FC
510The C<parse_stmt> C function added in earlier in the 5.13.x series has been
511fixed to work with statements ending with C<}>
512L<[perl #78222]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78222>.
513
514=item *
515
516The C<parse_fullstmt> C function added in 5.13.5 has been fixed to work
517when called while an expression is being parsed.
518
519=item *
520
521Characters in the Latin-1 non-ASCII range (0x80 to 0xFF) used not to match
522themselves if the string happened to be UTF8-encoded internally, the
523regular expression was not, and the character in the regular expression was
524inside a repeated group (e.g.,
c678e617 525C<Encode::decode_utf8("\303\200") =~ /(\xc0)+/>)
b7bd32cc
FC
526L<[perl #78464]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78464>.
527
528=item *
529
530The C<(?d)> regular expression construct now overrides a previous C<(?u)>
531or C<use feature "unicode_string">
532L<[perl #78508]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78508>.
533
534=item *
535
536A memory leak in C<do "file">, introduced in perl 5.13.6, has been fixed
537L<[perl #78488]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78488>.
020fe755 538
8f97a47a 539=back
020fe755 540
8f97a47a 541=head1 Known Problems
020fe755 542
8f97a47a
TM
543XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
544tests that had to be C<TODO>ed for the release would be noted here, unless
545they were specific to a particular platform (see below).
62ff64ce 546
8f97a47a
TM
547This is a list of some significant unfixed bugs, which are regressions
548from either 5.XXX.XXX or 5.XXX.XXX.
62ff64ce 549
8f97a47a 550[ List each fix as a =item entry ]
62ff64ce 551
8f97a47a 552=over 4
62ff64ce
FC
553
554=item *
555
8f97a47a 556XXX
62ff64ce 557
4c793fe3
FR
558=back
559
8f97a47a 560=head1 Obituary
405fd67e 561
8f97a47a
TM
562XXX If any significant core contributor has died, we've added a short obituary
563here.
405fd67e 564
ee0887a9 565=head1 Acknowledgements
0195fb5f 566
8f97a47a 567XXX The list of people to thank goes here.
4c793fe3
FR
568
569=head1 Reporting Bugs
570
571If you find what you think is a bug, you might check the articles
572recently posted to the comp.lang.perl.misc newsgroup and the perl
573bug database at http://rt.perl.org/perlbug/ . There may also be
574information at http://www.perl.org/ , the Perl Home Page.
575
576If you believe you have an unreported bug, please run the B<perlbug>
577program included with your release. Be sure to trim your bug down
578to a tiny but sufficient test case. Your bug report, along with the
579output of C<perl -V>, will be sent off to perlbug@perl.org to be
580analysed by the Perl porting team.
581
582If the bug you are reporting has security implications, which make it
583inappropriate to send to a publicly archived mailing list, then please send
ee0887a9 584it to perl5-security-report@perl.org. This points to a closed subscription
4c793fe3
FR
585unarchived mailing list, which includes all the core committers, who be able
586to help assess the impact of issues, figure out a resolution, and help
587co-ordinate the release of patches to mitigate or fix the problem across all
ee0887a9 588platforms on which Perl is supported. Please only use this address for
4c793fe3
FR
589security issues in the Perl core, not for modules independently
590distributed on CPAN.
591
592=head1 SEE ALSO
593
594The F<Changes> file for an explanation of how to view exhaustive details
595on what changed.
596
597The F<INSTALL> file for how to build Perl.
598
599The F<README> file for general stuff.
600
601The F<Artistic> and F<Copying> files for copyright information.
602
603=cut