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