This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
++substr $mro'VERSION, -1
[perl5.git] / pod / perldelta.pod
CommitLineData
3a5c9134
CBW
1=encoding utf8
2
59773fc7 3=for comment
085d0904
FC
4This has been completed up to 779bcb7d, except for:
51b9f127-fad448f (Karl Williamson says he will do this)
6ad9e76a8629ed1ac483f0a7ed0e4da40ac5a1a00
59773fc7 7
3a5c9134
CBW
8=head1 NAME
9
10[ this is a template for a new perldelta file. Any text flagged as
11XXX needs to be processed before release. ]
12
13perldelta - what is new for perl v5.13.8
14
15=head1 DESCRIPTION
16
17This document describes differences between the 5.13.8 release and
18the 5.13.7 release.
19
dbbe2d83 20If you are upgrading from an earlier release such as 5.13.6, first read
3a5c9134
CBW
21L<perl5137delta>, which describes differences between 5.13.6 and
225.13.7.
23
24=head1 Notice
25
26XXX Any important notices here
27
28=head1 Core Enhancements
29
30XXX New core language features go here. Summarise user-visible core language
31enhancements. Particularly prominent performance optimisations could go
32here, but most should go in the L</Performance Enhancements> section.
33
34[ List each enhancement as a =head2 entry ]
35
b19934fb
NC
36=head2 C<-d:-foo> calls C<Devel::foo::unimport>
37
38The syntax C<-dI<B<:>foo>> was extended in 5.6.1 to make C<-dI<:fooB<=bar>>>
6a8c8694
FC
39equivalent to C<-MDevel::foo=bar>, which expands
40internally to C<use Devel::foo 'bar';>.
b19934fb
NC
41F<perl> now allows prefixing the module name with C<->, with the same
42semantics as C<-M>, I<i.e.>
43
44=over 4
45
46=item C<-d:-foo>
47
6a8c8694
FC
48Equivalent to C<-M-Devel::foo>, expands to
49C<no Devel::foo;>, calls C<< Devel::foo->unimport() >>
b19934fb
NC
50if the method exists.
51
52=item C<-d:-foo=bar>
53
6a8c8694
FC
54Equivalent to C<-M-Devel::foo=bar>, expands to C<no Devel::foo 'bar';>,
55calls C<< Devel::foo->unimport('bar') >> if the method exists.
b19934fb
NC
56
57=back
58
59This is particularly useful to suppresses the default actions of a
60C<Devel::*> module's C<import> method whilst still loading it for debugging.
61
15e6cdd9
DG
62=head2 Filehandle method calls load IO::File on demand
63
64When a method call on a filehandle would die because the method can not
65be resolved and L<IO::File> has not been loaded, Perl now loads IO::File
66via C<require> and attempts method resolution again:
67
68 open my $fh, ">", $file;
69 $fh->binmode(":raw"); # loads IO::File and succeeds
70
71This also works for globs like STDOUT, STDERR and STDIN:
72
73 STDOUT->autoflush(1);
74
75Because this on-demand load only happens if method resolution fails, the
76legacy approach of manually loading an IO::File parent class for partial
77method support still works as expected:
78
79 use IO::Handle;
80 open my $fh, ">", $file;
81 $fh->autoflush(1); # IO::File not loaded
82
3a5c9134
CBW
83=head1 Security
84
85XXX Any security-related notices go here. In particular, any security
86vulnerabilities closed should be noted here rather than in the
87L</Selected Bug Fixes> section.
88
89[ List each security issue as a =head2 entry ]
90
91=head1 Incompatible Changes
92
2dc78664 93=head2 Attempting to use C<:=> as an empty attribute list is now a syntax error
3a5c9134 94
2dc78664
NC
95Previously C<my $pi := 4;> was exactly equivalent to C<my $pi : = 4;>,
96with the C<:> being treated as the start of an attribute list, ending before
97the C<=>. The use of C<:=> to mean C<: => was deprecated in 5.12.0, and is now
98a syntax error. This will allow the future use of C<:=> as a new token.
3a5c9134 99
2dc78664
NC
100We find no Perl 5 code on CPAN using this construction, outside the core's
101tests for it, so we believe that this change will have very little impact on
102real-world codebases.
103
104If it is absolutely necessary to have empty attribute lists (for example,
baed7a72
NC
105because of a code generator) then avoid the error by adding a space before
106the C<=>.
3a5c9134
CBW
107
108=head1 Deprecations
109
110XXX Any deprecated features, syntax, modules etc. should be listed here.
111In particular, deprecated modules should be listed here even if they are
112listed as an updated module in the L</Modules and Pragmata> section.
113
114[ List each deprecation as a =head2 entry ]
115
59773fc7
FC
116=head2 C<?PATTERN?> is deprecated
117
118C<?PATTERN?> (without the initial m) has been deprecated and now produces
119a warning.
120
d59a8b3e
NC
121=head2 C<sv_compile_2op> is now deprecated
122
123The C<sv_compile_2op> is now deprecated, and will be removed. Searches suggest
124that nothing on CPAN is using it, so this should have zero impact.
125
126It attempted to provide an API to compile code down to an optree, but failed
127to bind correctly to lexicals in the enclosing scope. It's not possible to
128fix this problem within the constraints of its parameters and return value.
129
3a5c9134
CBW
130=head1 Performance Enhancements
131
132XXX Changes which enhance performance without changing behaviour go here. There
133may well be none in a stable release.
134
135[ List each enhancement as a =item entry ]
136
137=over 4
138
139=item *
140
141XXX
142
143=back
144
145=head1 Modules and Pragmata
146
147XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
148go here. If Module::CoreList is updated, generate an initial draft of the
149following sections using F<Porting/corelist-perldelta.pl>, which prints stub
150entries to STDOUT. Results can be pasted in place of the '=head2' entries
151below. A paragraph summary for important changes should then be added by hand.
152In an ideal world, dual-life modules would have a F<Changes> file that could be
153cribbed.
154
155[ Within each section, list entries as a =item entry ]
156
157=head2 New Modules and Pragmata
158
159=over 4
160
161=item *
162
163XXX
164
165=back
166
167=head2 Updated Modules and Pragmata
168
169=over 4
170
171=item *
172
39b09a1b
CBW
173C<IPC::Cmd> has been upgraded from 0.64 to 0.66
174
175Resolves an issue with splitting Win32 command lines
176and documentation enhancements.
177
178=item *
179
28502098
FR
180C<Memoize> has been upgraded from version 1.01_03 to 1.02.
181
182=item *
183
37fa6334 184C<MIME::Base64> has been upgraded from 3.10 to 3.13
2456140e
CBW
185
186Now provides encode_base64url and decode_base64url functions to process
187the base64 scheme for "URL applications".
188
189=item *
190
2638c0ff
FC
191C<overload> has been upgraded from 1.11 to 1.12.
192
193=item *
194
195C<PerlIO::scalar> has been upgraded from 0.10 to 0.11.
196
197A C<read> after a C<seek> beyond the end of the string no longer thinks it
198has data to read
199L<[perl #78716]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78716>.
200
201=item *
202
f295f417
FC
203C<re> has been upgraded from 0.14 to 0.15.
204
205=item *
206
5ebfb99c 207C<Socket> has been upgraded from 1.91 to 1.92.
b373eab8
FC
208
209It has several new functions for handling IPv6 addresses.
210
211=item *
212
d4238815
FC
213C<Time::HiRes> has been upgraded from 1.9721 to 1.9721_01.
214
215=item *
216
68adb2b0
CBW
217C<Unicode::Collate> has been upgraded from 0.67 to 0.68
218
219=item *
220
59773fc7 221C<Unicode::UCD> has been upgraded from 0.29 to 0.30.
3a5c9134 222
c2e0289e
FC
223=item *
224
225C<version> has been upgraded from 0.82 to 0.86.
226
3a5c9134
CBW
227=back
228
229=head2 Removed Modules and Pragmata
230
231=over 4
232
233=item *
234
235XXX
236
237=back
238
239=head1 Documentation
240
241XXX Changes to files in F<pod/> go here. Consider grouping entries by
242file and be sure to link to the appropriate page, e.g. L<perlfunc>.
243
244=head2 New Documentation
245
246XXX Changes which create B<new> files in F<pod/> go here.
247
248=head3 L<XXX>
249
250XXX Description of the purpose of the new file here
251
252=head2 Changes to Existing Documentation
253
254XXX Changes which significantly change existing files in F<pod/> go here.
255However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
256section.
257
258=head3 L<XXX>
259
260=over 4
261
262=item *
263
264XXX Description of the change here
265
266=back
267
268=head1 Diagnostics
269
270The following additions or changes have been made to diagnostic output,
271including warnings and fatal error messages. For the complete list of
272diagnostic messages, see L<perldiag>.
273
274XXX New or changed warnings emitted by the core's C<C> code go here. Also
275include any changes in L<perldiag> that reconcile it to the C<C> code.
276
277[ Within each section, list entries as a =item entry ]
278
279=head2 New Diagnostics
280
281XXX Newly added diagnostic messages go here
282
283=over 4
284
285=item *
286
4d4ca6a5 287There is a new "Closure prototype called" error.
3a5c9134
CBW
288
289=back
290
291=head2 Changes to Existing Diagnostics
292
293XXX Changes (i.e. rewording) of diagnostic messages go here
294
295=over 4
296
297=item *
298
299XXX
300
301=back
302
303=head1 Utility Changes
304
305XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
306here. Most of these are built within the directories F<utils> and F<x2p>.
307
308[ List utility changes as a =head3 entry for each utility and =item
309entries for each change
310Use L<XXX> with program names to get proper documentation linking. ]
311
312=head3 L<XXX>
313
314=over 4
315
316=item *
317
318XXX
319
320=back
321
322=head1 Configuration and Compilation
323
324XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
325go here. Any other changes to the Perl build process should be listed here.
326However, any platform-specific changes should be listed in the
327L</Platform Support> section, instead.
328
329[ List changes as a =item entry ].
330
331=over 4
332
333=item *
334
335XXX
336
337=back
338
339=head1 Testing
340
341XXX Any significant changes to the testing of a freshly built perl should be
342listed here. Changes which create B<new> files in F<t/> go here as do any
343large changes to the testing harness (e.g. when parallel testing was added).
344Changes to existing files in F<t/> aren't worth summarising, although the bugs
345that they represent may be covered elsewhere.
346
347[ List each test improvement as a =item entry ]
348
349=over 4
350
351=item *
352
353XXX
354
355=back
356
357=head1 Platform Support
358
359XXX Any changes to platform support should be listed in the sections below.
360
361[ Within the sections, list each platform as a =item entry with specific
362changes as paragraphs below it. ]
363
364=head2 New Platforms
365
366XXX List any platforms that this version of perl compiles on, that previous
367versions did not. These will either be enabled by new files in the F<hints/>
368directories, or new subdirectories and F<README> files at the top level of the
369source tree.
370
371=over 4
372
373=item XXX-some-platform
374
375XXX
376
377=back
378
379=head2 Discontinued Platforms
380
381XXX List any platforms that this version of perl no longer compiles on.
382
383=over 4
384
385=item XXX-some-platform
386
387XXX
388
389=back
390
391=head2 Platform-Specific Notes
392
393XXX List any changes for specific platforms. This could include configuration
394and compilation changes or changes in portability/compatibility. However,
395changes within modules for platforms should generally be listed in the
396L</Modules and Pragmata> section.
397
398=over 4
399
085d0904 400=item NetBSD
3a5c9134 401
085d0904
FC
402The NetBSD hints file has been changed to make the system's malloc the
403default.
3a5c9134
CBW
404
405=back
406
407=head1 Internal Changes
408
409XXX Changes which affect the interface available to C<XS> code go here.
410Other significant internal changes for future core maintainers should
411be noted as well.
412
413[ List each test improvement as a =item entry ]
414
415=over 4
416
417=item *
418
833f1b93
FR
419C<mg_findext> and C<sv_unmagicext> have been added.
420
421These new functions allow extension authors to find and remove magic attached to
422scalars based on both the magic type and the magic virtual table, similar to how
423C<sv_magicext> attaches magic of a certain type and with a given virtual table
424to a scalar. This eliminates the need for extensions to walk the list of
425C<MAGIC> pointers of an C<SV> to find the magic that belongs to them.
3a5c9134
CBW
426
427=back
428
429=head1 Selected Bug Fixes
430
431XXX Important bug fixes in the core language are summarised here.
432Bug fixes in files in F<ext/> and F<lib/> are best summarised in
433L</Modules and Pragmata>.
434
435[ List each fix as a =item entry ]
436
437=over 4
438
439=item *
440
88e9444c
NC
441C<BEGIN {require 5.12.0}> now behaves as documented, rather than behaving
442identically to C<use 5.12.0;>. Previously, C<require> in a C<BEGIN> block
443was erroneously executing the C<use feature ':5.12.0'> and
444C<use strict; use warnings;> behaviour, which only C<use> was documented to
b373eab8
FC
445provide
446L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>.
447
448=item *
449
450C<use 5.42>
451L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>,
452C<use 6> and C<no 5> no longer leak memory.
453
454=item *
455
456C<eval "BEGIN{die}"> no longer leaks memory on non-threaded builds.
3a5c9134 457
1428a560
FC
458=item *
459
460PerlIO no longer crashes when called recursively, e.g., from a signal
461handler. Now it just leaks memory
462L<[perl #75556]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75556>.
463
11cd2234
FC
464=item *
465
466Defining a constant with the same name as one of perl's special blocks
467(e.g., INIT) stopped working in 5.12.0, but has now been fixed
468L<[perl #78634]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78634>.
469
e3ef43a5
FC
470=item *
471
472A reference to a literal value used as a hash key (C<$hash{\"foo"}>) used
473to be stringified, even if the hash was tied
474L<[perl #79178]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79178>.
475
3ad6135d
FC
476=item *
477
478A number of bugs with regular expression bracketed character classes
479have been fixed, mostly having to do with matching characters in the
480non-ASCII Latin-1 range.
481
482=item *
483
484A closure containing an C<if> statement followed by a constant or variable
485is no longer treated as a constant
486L<[perl #63540]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=63540>.
487
4d4ca6a5
FC
488=item *
489
490Calling a closure prototype (what is passed to an attribute handler for a
491closure) now results in a "Closure prototype called" error message
492L<[perl #68560]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68560>.
493
085d0904
FC
494=item *
495
496A regular expression optimisation would sometimes cause a match with a
497C<{n,m}> quantifier to fail when it should match
498L<[perl #79152]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79152>.
499
3a5c9134
CBW
500=back
501
502=head1 Known Problems
503
504XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
505tests that had to be C<TODO>ed for the release would be noted here, unless
506they were specific to a particular platform (see below).
507
508This is a list of some significant unfixed bugs, which are regressions
509from either 5.XXX.XXX or 5.XXX.XXX.
510
511[ List each fix as a =item entry ]
512
513=over 4
514
515=item *
516
3ad6135d 517XXX
3a5c9134
CBW
518
519=back
520
521=head1 Obituary
522
523XXX If any significant core contributor has died, we've added a short obituary
524here.
525
526=head1 Acknowledgements
527
528XXX The list of people to thank goes here.
529
530=head1 Reporting Bugs
531
532If you find what you think is a bug, you might check the articles
533recently posted to the comp.lang.perl.misc newsgroup and the perl
534bug database at http://rt.perl.org/perlbug/ . There may also be
535information at http://www.perl.org/ , the Perl Home Page.
536
537If you believe you have an unreported bug, please run the L<perlbug>
538program included with your release. Be sure to trim your bug down
539to a tiny but sufficient test case. Your bug report, along with the
540output of C<perl -V>, will be sent off to perlbug@perl.org to be
541analysed by the Perl porting team.
542
543If the bug you are reporting has security implications, which make it
544inappropriate to send to a publicly archived mailing list, then please send
545it to perl5-security-report@perl.org. This points to a closed subscription
546unarchived mailing list, which includes all the core committers, who be able
547to help assess the impact of issues, figure out a resolution, and help
548co-ordinate the release of patches to mitigate or fix the problem across all
549platforms on which Perl is supported. Please only use this address for
550security issues in the Perl core, not for modules independently
551distributed on CPAN.
552
553=head1 SEE ALSO
554
555The F<Changes> file for an explanation of how to view exhaustive details
556on what changed.
557
558The F<INSTALL> file for how to build Perl.
559
560The F<README> file for general stuff.
561
562The F<Artistic> and F<Copying> files for copyright information.
563
564=cut