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