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