This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Get rid of PERL_MSVCRT_READFIX
[perl5.git] / pod / perldelta.pod
... / ...
CommitLineData
1=encoding utf8
2
3=for comment
4This has been completed up to 7c7df81, except for:
5d9a4b459f94297889956ac3adc42707365f274c2
6
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
19If you are upgrading from an earlier release such as 5.13.6, first read
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
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>>>
38equivalent to C<-MDevel::foo=bar>, which expands
39internally to C<use Devel::foo 'bar';>.
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
47Equivalent to C<-M-Devel::foo>, expands to
48C<no Devel::foo;>, calls C<< Devel::foo->unimport() >>
49if the method exists.
50
51=item C<-d:-foo=bar>
52
53Equivalent to C<-M-Devel::foo=bar>, expands to C<no Devel::foo 'bar';>,
54calls C<< Devel::foo->unimport('bar') >> if the method exists.
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
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
82=head2 Full functionality for C<use feature 'unicode_strings'>
83
84This release provides full functionality for C<use feature
85'unicode_strings'>. Under its scope, all string operations executed and
86regular expressions compiled (even if executed outside its scope) have
87Unicode semantics. See L<feature>.
88
89This feature avoids the "Unicode Bug" (See
90L<perlunicode/The "Unicode Bug"> for details.) If their is a
91possibility that your code will process Unicode strings, you are
92B<strongly> encouraged to use this subpragma to avoid nasty surprises.
93
94=head1 Security
95
96XXX Any security-related notices go here. In particular, any security
97vulnerabilities closed should be noted here rather than in the
98L</Selected Bug Fixes> section.
99
100[ List each security issue as a =head2 entry ]
101
102=head1 Incompatible Changes
103
104=head2 Attempting to use C<:=> as an empty attribute list is now a syntax error
105
106Previously C<my $pi := 4;> was exactly equivalent to C<my $pi : = 4;>,
107with the C<:> being treated as the start of an attribute list, ending before
108the C<=>. The use of C<:=> to mean C<: => was deprecated in 5.12.0, and is now
109a syntax error. This will allow the future use of C<:=> as a new token.
110
111We find no Perl 5 code on CPAN using this construction, outside the core's
112tests for it, so we believe that this change will have very little impact on
113real-world codebases.
114
115If it is absolutely necessary to have empty attribute lists (for example,
116because of a code generator) then avoid the error by adding a space before
117the C<=>.
118
119=head1 Deprecations
120
121XXX Any deprecated features, syntax, modules etc. should be listed here.
122In particular, deprecated modules should be listed here even if they are
123listed as an updated module in the L</Modules and Pragmata> section.
124
125[ List each deprecation as a =head2 entry ]
126
127=head2 C<?PATTERN?> is deprecated
128
129C<?PATTERN?> (without the initial m) has been deprecated and now produces
130a warning.
131
132=head2 C<sv_compile_2op> is now deprecated
133
134The C<sv_compile_2op> is now deprecated, and will be removed. Searches suggest
135that nothing on CPAN is using it, so this should have zero impact.
136
137It attempted to provide an API to compile code down to an optree, but failed
138to bind correctly to lexicals in the enclosing scope. It's not possible to
139fix this problem within the constraints of its parameters and return value.
140
141=head2 Tie functions on scalars holding typeglobs
142
143Calling a tie function (C<tie>, C<tied>, C<untie>) with a scalar argument
144acts on a file handle if the scalar happens to hold a typeglob.
145
146This is a long-standing bug that will be removed in Perl 5.16, as
147there is currently no way to tie the scalar itself when it holds
148a typeglob, and no way to untie a scalar that has had a typeglob
149assigned to it.
150
151This bug was fixed in 5.13.7 but, because of the breakage it caused, the
152fix has been reverted. Now there is a deprecation warning whenever a tie
153function is used on a handle without an explicit C<*>.
154
155=head1 Performance Enhancements
156
157XXX Changes which enhance performance without changing behaviour go here. There
158may well be none in a stable release.
159
160[ List each enhancement as a =item entry ]
161
162=over 4
163
164=item *
165
166XXX
167
168=back
169
170=head1 Modules and Pragmata
171
172XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
173go here. If Module::CoreList is updated, generate an initial draft of the
174following sections using F<Porting/corelist-perldelta.pl>, which prints stub
175entries to STDOUT. Results can be pasted in place of the '=head2' entries
176below. A paragraph summary for important changes should then be added by hand.
177In an ideal world, dual-life modules would have a F<Changes> file that could be
178cribbed.
179
180[ Within each section, list entries as a =item entry ]
181
182=head2 New Modules and Pragmata
183
184=over 4
185
186=item *
187
188XXX
189
190=back
191
192=head2 Updated Modules and Pragmata
193
194=over 4
195
196=item *
197
198C<if> has been upgraded from 0.06 to 0.0601.
199
200=item *
201
202C<IPC::Cmd> has been upgraded from 0.64 to 0.66
203
204Resolves an issue with splitting Win32 command lines
205and documentation enhancements.
206
207=item *
208
209C<Locale::Codes> has been upgraded from version 3.14 to 3.15
210
211=item *
212
213C<Memoize> has been upgraded from version 1.01_03 to 1.02.
214
215=item *
216
217C<MIME::Base64> has been upgraded from 3.10 to 3.13
218
219Now provides encode_base64url and decode_base64url functions to process
220the base64 scheme for "URL applications".
221
222=item *
223
224C<mro> has been upgraded from version 1.05 to 1.06.
225
226C<next::method> I<et al.> now take into account that every class inherits
227from UNIVERSAL
228L<[perl #68654]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68654>.
229
230=item *
231
232C<overload> has been upgraded from 1.11 to 1.12.
233
234=item *
235
236C<PerlIO::scalar> has been upgraded from 0.10 to 0.11.
237
238A C<read> after a C<seek> beyond the end of the string no longer thinks it
239has data to read
240L<[perl #78716]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78716>.
241
242=item *
243
244C<re> has been upgraded from 0.14 to 0.15.
245
246=item *
247
248C<Socket> has been upgraded from 1.91 to 1.92.
249
250It has several new functions for handling IPv6 addresses.
251
252=item *
253
254C<Storable> has been upgraded from 2.24 to 2.25.
255
256This adds support for serialising code references that contain UTF-8 strings
257correctly. The Storable minor version number changed as a result -- this means
258Storable users that set C<$Storable::accept_future_minor> to a C<FALSE> value
259will see errors (see L<Storable/FORWARD COMPATIBILITY> for more details).
260
261=item *
262
263C<Time::HiRes> has been upgraded from 1.9721 to 1.9721_01.
264
265=item *
266
267C<Unicode::Collate> has been upgraded from 0.67 to 0.68
268
269=item *
270
271C<Unicode::UCD> has been upgraded from 0.29 to 0.30.
272
273=item *
274
275C<version> has been upgraded from 0.82 to 0.86.
276
277=back
278
279=head2 Removed Modules and Pragmata
280
281=over 4
282
283=item *
284
285XXX
286
287=back
288
289=head1 Documentation
290
291XXX Changes to files in F<pod/> go here. Consider grouping entries by
292file and be sure to link to the appropriate page, e.g. L<perlfunc>.
293
294=head2 New Documentation
295
296XXX Changes which create B<new> files in F<pod/> go here.
297
298=head3 L<XXX>
299
300XXX Description of the purpose of the new file here
301
302=head2 Changes to Existing Documentation
303
304XXX Changes which significantly change existing files in F<pod/> go here.
305However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
306section.
307
308=head3 L<XXX>
309
310=over 4
311
312=item *
313
314XXX Description of the change here
315
316=back
317
318=head1 Diagnostics
319
320The following additions or changes have been made to diagnostic output,
321including warnings and fatal error messages. For the complete list of
322diagnostic messages, see L<perldiag>.
323
324XXX New or changed warnings emitted by the core's C<C> code go here. Also
325include any changes in L<perldiag> that reconcile it to the C<C> code.
326
327[ Within each section, list entries as a =item entry ]
328
329=head2 New Diagnostics
330
331XXX Newly added diagnostic messages go here
332
333=over 4
334
335=item *
336
337There is a new "Closure prototype called" error.
338
339=back
340
341=head2 Changes to Existing Diagnostics
342
343XXX Changes (i.e. rewording) of diagnostic messages go here
344
345=over 4
346
347=item *
348
349The "Found = in conditional" warning that is emitted when a constant is
350assigned to a variable in a condition is now withheld if the constant is
351actually a subroutine or one generated by C<use constant>, since the value
352of the constant may not be known at the time the program is written
353L<[perl #77762]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77762>.
354
355=back
356
357=head1 Utility Changes
358
359XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
360here. Most of these are built within the directories F<utils> and F<x2p>.
361
362[ List utility changes as a =head3 entry for each utility and =item
363entries for each change
364Use L<XXX> with program names to get proper documentation linking. ]
365
366=head3 L<XXX>
367
368=over 4
369
370=item *
371
372XXX
373
374=back
375
376=head1 Configuration and Compilation
377
378XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
379go here. Any other changes to the Perl build process should be listed here.
380However, any platform-specific changes should be listed in the
381L</Platform Support> section, instead.
382
383[ List changes as a =item entry ].
384
385=over 4
386
387=item *
388
389XXX
390
391=back
392
393=head1 Testing
394
395XXX Any significant changes to the testing of a freshly built perl should be
396listed here. Changes which create B<new> files in F<t/> go here as do any
397large changes to the testing harness (e.g. when parallel testing was added).
398Changes to existing files in F<t/> aren't worth summarising, although the bugs
399that they represent may be covered elsewhere.
400
401[ List each test improvement as a =item entry ]
402
403=over 4
404
405=item *
406
407XXX
408
409=back
410
411=head1 Platform Support
412
413XXX Any changes to platform support should be listed in the sections below.
414
415[ Within the sections, list each platform as a =item entry with specific
416changes as paragraphs below it. ]
417
418=head2 New Platforms
419
420XXX List any platforms that this version of perl compiles on, that previous
421versions did not. These will either be enabled by new files in the F<hints/>
422directories, or new subdirectories and F<README> files at the top level of the
423source tree.
424
425=over 4
426
427=item XXX-some-platform
428
429XXX
430
431=back
432
433=head2 Discontinued Platforms
434
435XXX List any platforms that this version of perl no longer compiles on.
436
437=over 4
438
439=item XXX-some-platform
440
441XXX
442
443=back
444
445=head2 Platform-Specific Notes
446
447XXX List any changes for specific platforms. This could include configuration
448and compilation changes or changes in portability/compatibility. However,
449changes within modules for platforms should generally be listed in the
450L</Modules and Pragmata> section.
451
452=over 4
453
454=item NetBSD
455
456The NetBSD hints file has been changed to make the system's malloc the
457default.
458
459=back
460
461=head1 Internal Changes
462
463XXX Changes which affect the interface available to C<XS> code go here.
464Other significant internal changes for future core maintainers should
465be noted as well.
466
467[ List each test improvement as a =item entry ]
468
469=over 4
470
471=item *
472
473C<mg_findext> and C<sv_unmagicext> have been added.
474
475These new functions allow extension authors to find and remove magic attached to
476scalars based on both the magic type and the magic virtual table, similar to how
477C<sv_magicext> attaches magic of a certain type and with a given virtual table
478to a scalar. This eliminates the need for extensions to walk the list of
479C<MAGIC> pointers of an C<SV> to find the magic that belongs to them.
480
481=back
482
483=head1 Selected Bug Fixes
484
485XXX Important bug fixes in the core language are summarised here.
486Bug fixes in files in F<ext/> and F<lib/> are best summarised in
487L</Modules and Pragmata>.
488
489[ List each fix as a =item entry ]
490
491=over 4
492
493=item *
494
495C<BEGIN {require 5.12.0}> now behaves as documented, rather than behaving
496identically to C<use 5.12.0;>. Previously, C<require> in a C<BEGIN> block
497was erroneously executing the C<use feature ':5.12.0'> and
498C<use strict; use warnings;> behaviour, which only C<use> was documented to
499provide
500L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>.
501
502=item *
503
504C<use 5.42>
505L<[perl #69050]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=69050>,
506C<use 6> and C<no 5> no longer leak memory.
507
508=item *
509
510C<eval "BEGIN{die}"> no longer leaks memory on non-threaded builds.
511
512=item *
513
514PerlIO no longer crashes when called recursively, e.g., from a signal
515handler. Now it just leaks memory
516L<[perl #75556]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75556>.
517
518=item *
519
520Defining a constant with the same name as one of perl's special blocks
521(e.g., INIT) stopped working in 5.12.0, but has now been fixed
522L<[perl #78634]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78634>.
523
524=item *
525
526A reference to a literal value used as a hash key (C<$hash{\"foo"}>) used
527to be stringified, even if the hash was tied
528L<[perl #79178]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79178>.
529
530=item *
531
532A closure containing an C<if> statement followed by a constant or variable
533is no longer treated as a constant
534L<[perl #63540]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=63540>.
535
536=item *
537
538Calling a closure prototype (what is passed to an attribute handler for a
539closure) now results in a "Closure prototype called" error message
540L<[perl #68560]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=68560>.
541
542=item *
543
544A regular expression optimisation would sometimes cause a match with a
545C<{n,m}> quantifier to fail when it should match
546L<[perl #79152]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=79152>.
547
548=item *
549
550What has become known as the "Unicode Bug" is resolved in this release.
551Under C<use feature 'unicode_strings'>, the internal storage format of a
552string no longer affects the external semantics. There are two known
553exceptions. User-defined case changing functions, which are planned to
554be deprecated in 5.14, require utf8-encoded strings to function; and the
555character C<LATIN SMALL LETTER SHARP S> in regular expression
556case-insensitive matching has a somewhat different set of bugs depending
557on the internal storage format. Case-insensitive matching of all
558characters that have multi-character matches, as this one does, is
559problematical in Perl.
560L<[perl #58182]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=58182>.
561
562=back
563
564=head1 Known Problems
565
566XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
567tests that had to be C<TODO>ed for the release would be noted here, unless
568they were specific to a particular platform (see below).
569
570This is a list of some significant unfixed bugs, which are regressions
571from either 5.XXX.XXX or 5.XXX.XXX.
572
573[ List each fix as a =item entry ]
574
575=over 4
576
577=item *
578
579XXX
580
581=back
582
583=head1 Obituary
584
585XXX If any significant core contributor has died, we've added a short obituary
586here.
587
588=head1 Acknowledgements
589
590XXX The list of people to thank goes here.
591
592=head1 Reporting Bugs
593
594If you find what you think is a bug, you might check the articles
595recently posted to the comp.lang.perl.misc newsgroup and the perl
596bug database at http://rt.perl.org/perlbug/ . There may also be
597information at http://www.perl.org/ , the Perl Home Page.
598
599If you believe you have an unreported bug, please run the L<perlbug>
600program included with your release. Be sure to trim your bug down
601to a tiny but sufficient test case. Your bug report, along with the
602output of C<perl -V>, will be sent off to perlbug@perl.org to be
603analysed by the Perl porting team.
604
605If the bug you are reporting has security implications, which make it
606inappropriate to send to a publicly archived mailing list, then please send
607it to perl5-security-report@perl.org. This points to a closed subscription
608unarchived mailing list, which includes all the core committers, who be able
609to help assess the impact of issues, figure out a resolution, and help
610co-ordinate the release of patches to mitigate or fix the problem across all
611platforms on which Perl is supported. Please only use this address for
612security issues in the Perl core, not for modules independently
613distributed on CPAN.
614
615=head1 SEE ALSO
616
617The F<Changes> file for an explanation of how to view exhaustive details
618on what changed.
619
620The F<INSTALL> file for how to build Perl.
621
622The F<README> file for general stuff.
623
624The F<Artistic> and F<Copying> files for copyright information.
625
626=cut