This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: more to-do items
[perl5.git] / pod / perldelta.pod
... / ...
CommitLineData
1=encoding utf8
2
3=for comment
4Stuff that needs to be done still:
5e82485c [MERGE] refactor pp_match(), pp_subst(), regexec()
66136213 [perl #52000] Warn/abort on attempted perl exit
7cccbbce Reap child in case where exception has been thrown
8
9=head1 NAME
10
11[ this is a template for a new perldelta file. Any text flagged as XXX needs
12to be processed before release. ]
13
14perldelta - what is new for perl v5.19.3
15
16=head1 DESCRIPTION
17
18This document describes differences between the 5.19.2 release and the 5.19.3
19release.
20
21If you are upgrading from an earlier release such as 5.19.1, first read
22L<perl5192delta>, which describes differences between 5.19.1 and 5.19.2.
23
24=head1 Notice
25
26XXX Any important notices here
27
28=head1 Core Enhancements
29
30XXX New core language features go here. Summarize 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
36=head2 B<-F> now implies B<-a> and B<-a> implies B<-n>
37
38Previously B<-F> without B<-a> was a no-op, and B<-a> without B<-n> or
39B<-p> was a no-op, with this change, if you supply B<-F> then both
40B<-a> and B<-n> are implied and if you supply B<-a> then B<-n> is implied.
41
42You can still use B<-p> for its extra behaviour. [perl #116190]
43
44=head1 Security
45
46XXX Any security-related notices go here. In particular, any security
47vulnerabilities closed should be noted here rather than in the
48L</Selected Bug Fixes> section.
49
50[ List each security issue as a =head2 entry ]
51
52=head1 Incompatible Changes
53
54XXX For a release on a stable branch, this section aspires to be:
55
56 There are no changes intentionally incompatible with 5.XXX.XXX
57 If any exist, they are bugs, and we request that you submit a
58 report. See L</Reporting Bugs> below.
59
60[ List each incompatible change as a =head2 entry ]
61
62=head1 Deprecations
63
64XXX Any deprecated features, syntax, modules etc. should be listed here.
65
66=head2 Module removals
67
68XXX Remove this section if inapplicable.
69
70The following modules will be removed from the core distribution in a
71future release, and will at that time need to be installed from CPAN.
72Distributions on CPAN which require these modules will need to list them as
73prerequisites.
74
75The core versions of these modules will now issue C<"deprecated">-category
76warnings to alert you to this fact. To silence these deprecation warnings,
77install the modules in question from CPAN.
78
79Note that these are (with rare exceptions) fine modules that you are encouraged
80to continue to use. Their disinclusion from core primarily hinges on their
81necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
82not usually on concerns over their design.
83
84=over
85
86XXX Note that deprecated modules should be listed here even if they are listed
87as an updated module in the L</Modules and Pragmata> section.
88
89=back
90
91[ List each other deprecation as a =head2 entry ]
92
93=head1 Performance Enhancements
94
95XXX Changes which enhance performance without changing behaviour go here.
96There may well be none in a stable release.
97
98[ List each enhancement as a =item entry ]
99
100=over 4
101
102=item *
103
104XXX
105
106=back
107
108=head1 Modules and Pragmata
109
110XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
111go here. If Module::CoreList is updated, generate an initial draft of the
112following sections using F<Porting/corelist-perldelta.pl>, which prints stub
113entries to STDOUT. Results can be pasted in place of the '=head2' entries
114below. A paragraph summary for important changes should then be added by hand.
115In an ideal world, dual-life modules would have a F<Changes> file that could be
116cribbed.
117
118[ Within each section, list entries as a =item entry ]
119
120=head2 New Modules and Pragmata
121
122=over 4
123
124=item *
125
126XXX
127
128=back
129
130=head2 Updated Modules and Pragmata
131
132=over 4
133
134=item *
135
136L<B> has been upgraded from version 1.44 to 1.45.
137
138Calling the C<GV> method on C<B::CV> objects created from a lexical
139sub would return nonsense, possibly crashing perl. C<GV> now returns
140C<undef> for lexical subs. [perl #118525]
141
142Added the C<NAME_HEK> method to return the name of a lexical sub.
143
144=item *
145
146L<bignum> has been upgraded from version 0.35 to 0.36.
147
148L<bigrat> wasn't correctly updating an internal variable when C<use>d
149with a C<lib> option.
150
151L<Carp> has been upgraded from 1.30 to 1.31
152
153L<Carp> now handles objects with string overloads. It also allows objects
154to specify how they appear in the stack dump with a C<CARP_TRACE> method,
155and also allows the user to specify their own formatter for objects without
156C<CARP_TRACE> as well as other references. [perl #92446]
157
158=item *
159
160L<Compress::Raw::Bzip2> has been upgraded from 2.061 to 2.062.
161
162=item *
163
164L<Compress::Raw::Zlib> has been upgraded from 2.061 to 2.062.
165
166=item *
167
168L<Config::Perl::V> has been upgraded from version 0.18 to 0.19.
169
170=item *
171
172L<Data::Dumper> has been upgraded from version 2.147 to 2.148.
173
174The compatbility of the XS implementation with the pure perl version
175under C<Useqq> has been improved. [perl #118933]
176
177=item *
178
179L<Devel::Peek> has been upgraded from version 1.12 to 1.13.
180
181The C<SvREFCNT_inc()> and C<SvREFCNT_dec()> functions have been
182removed and C<SvREFCNT()> will now work on non-scalars. [perl #117793]
183
184=item *
185
186L<Exporter> has been upgraded from version 5.68 to 5.69.
187
188L<Exporter> would ignore custom C<$SIG{__WARN__}> handlers in
189C<Exporter::Heavy>. [perl #39739]
190
191=item *
192
193The IO-Compress module collection has been upgraded from 2.061 to 2.062.
194
195=item *
196
197L<IPC::Cmd> has been upgraded from version 0.82 to 0.84.
198
199C<run_forked> has various fixes/improvements, L<Socket> is only used where
200needed and a regression introduced in 0.78 has been fixed.
201
202=item *
203
204The libnet module collection has been upgraded from version 1.22 to 1.23.
205
206=item *
207
208L<List::Util> has been upgraded from version 1.27 to 1.30
209
210L<List::Util> now includes C<pairgrep>, C<pairmap>, C<pairs>, C<pairkeys>,
211C<pairvalues> and C<pairfirst> functions that operate on even-sized lists of
212pairs.
213
214=item *
215
216L<parent> has been upgraded from version 0.225 to 0.226.
217
218=item *
219
220L<Socket> has been upgraded from version 2.010 to 2.011.
221
222Handle FreeBSD (or other platforms) returning shorter AF_UNIX sockaddr
223structures due to embedded sun_len. [cpan #86613]
224
225=item *
226
227L<Storable> has been upgraded from version 2.45 to 2.46.
228
229Avoid creating temporary objects for STORABLE_attach when they aren't
230required. [perl #118907]
231
232=item *
233
234L<Time::Piece> has been upgraded from version 1.21 to 1.22.
235
236=back
237
238=head2 Removed Modules and Pragmata
239
240=over 4
241
242=item *
243
244XXX
245
246=back
247
248=head1 Documentation
249
250XXX Changes to files in F<pod/> go here. Consider grouping entries by
251file and be sure to link to the appropriate page, e.g. L<perlfunc>.
252
253=head2 New Documentation
254
255XXX Changes which create B<new> files in F<pod/> go here.
256
257=head3 L<XXX>
258
259XXX Description of the purpose of the new file here
260
261=head2 Changes to Existing Documentation
262
263XXX Changes which significantly change existing files in F<pod/> go here.
264However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
265section.
266
267=head3 L<perlopentut>
268
269=over 4
270
271=item *
272
273The C<open> tutorial has been completely rewriten by Tom Christiansen, and now
274focuses on covering only the basics, rather than providing a comprehensive
275reference to all things openable. This rewrite came as the result of a
276vigorous discussion on perl5-porters kicked off by a set of improvements
277written by Alexander Hartmaier to the existing C<perlopentut>. A "more than
278you ever wanted to know about C<open>" document may follow in subsequent
279versions of perl.
280
281=back
282
283=head1 Diagnostics
284
285The following additions or changes have been made to diagnostic output,
286including warnings and fatal error messages. For the complete list of
287diagnostic messages, see L<perldiag>.
288
289XXX New or changed warnings emitted by the core's C<C> code go here. Also
290include any changes in L<perldiag> that reconcile it to the C<C> code.
291
292=head2 New Diagnostics
293
294XXX Newly added diagnostic messages go under here, separated into New Errors
295and New Warnings
296
297=head3 New Errors
298
299=over 4
300
301=item *
302
303XXX L<message|perldiag/"message">
304
305=back
306
307=head3 New Warnings
308
309=over 4
310
311=item *
312
313XXX L<message|perldiag/"message">
314
315=back
316
317=head2 Changes to Existing Diagnostics
318
319XXX Changes (i.e. rewording) of diagnostic messages go here
320
321=over 4
322
323=item *
324
325XXX Describe change here
326
327=back
328
329=head1 Utility Changes
330
331XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
332Most of these are built within the directories F<utils> and F<x2p>.
333
334[ List utility changes as a =head3 entry for each utility and =item
335entries for each change
336Use L<XXX> with program names to get proper documentation linking. ]
337
338=head3 L<XXX>
339
340=over 4
341
342=item *
343
344XXX
345
346=back
347
348=head1 Configuration and Compilation
349
350XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
351go here. Any other changes to the Perl build process should be listed here.
352However, any platform-specific changes should be listed in the
353L</Platform Support> section, instead.
354
355[ List changes as a =item entry ].
356
357=over 4
358
359=item *
360
361XXX
362
363=back
364
365=head1 Testing
366
367XXX Any significant changes to the testing of a freshly built perl should be
368listed here. Changes which create B<new> files in F<t/> go here as do any
369large changes to the testing harness (e.g. when parallel testing was added).
370Changes to existing files in F<t/> aren't worth summarizing, although the bugs
371that they represent may be covered elsewhere.
372
373[ List each test improvement as a =item entry ]
374
375=over 4
376
377=item *
378
379XXX
380
381=back
382
383=head1 Platform Support
384
385XXX Any changes to platform support should be listed in the sections below.
386
387[ Within the sections, list each platform as a =item entry with specific
388changes as paragraphs below it. ]
389
390=head2 New Platforms
391
392XXX List any platforms that this version of perl compiles on, that previous
393versions did not. These will either be enabled by new files in the F<hints/>
394directories, or new subdirectories and F<README> files at the top level of the
395source tree.
396
397=over 4
398
399=item XXX-some-platform
400
401XXX
402
403=back
404
405=head2 Discontinued Platforms
406
407XXX List any platforms that this version of perl no longer compiles on.
408
409=over 4
410
411=item XXX-some-platform
412
413XXX
414
415=back
416
417=head2 Platform-Specific Notes
418
419XXX List any changes for specific platforms. This could include configuration
420and compilation changes or changes in portability/compatibility. However,
421changes within modules for platforms should generally be listed in the
422L</Modules and Pragmata> section.
423
424=over 4
425
426=item XXX-some-platform
427
428XXX
429
430=back
431
432=head1 Internal Changes
433
434XXX Changes which affect the interface available to C<XS> code go here. Other
435significant internal changes for future core maintainers should be noted as
436well.
437
438[ List each change as a =item entry ]
439
440=over 4
441
442=item *
443
444C<sv_pos_b2u_flags> has been added to the API. It is similar to
445C<sv_pos_b2u>, but supports long strings on 64-bit platforms.
446
447=back
448
449=head1 Selected Bug Fixes
450
451XXX Important bug fixes in the core language are summarized here. Bug fixes in
452files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
453
454[ List each fix as a =item entry ]
455
456=over 4
457
458=item *
459
460Autovivifying a subroutine stub via C<\&$glob> started causing crashes in
461Perl 5.18.0 if the $glob was merely a copy of a real glob, i.e., a scalar
462that had had a glob assigned to it. This has been fixed [perl #119051].
463
464=item *
465
466On 64-bit platforms C<pos> can now be set to a value higher than 2**31-1
467[perl #72766].
468
469=item *
470
471Perl used to leak an implementation detail when it came to referencing the
472return values of certain operators. C<for ($a+$b) { warn \$_; warn \$_ }>
473used to display two different memory addresses, because the C<\> operator
474was copying the variable. Under threaded builds, it would also happen for
475constants (C<for(1) { ... }>). This has been fixed [perl #21979, #78194,
476#89188, #109746, #114838, #115388].
477
478=item *
479
480The range operator C<..> was returning the same modifiable scalars with
481each call, unless it was the only thing in a C<foreach> loop header. This
482meant that changes to values within the list returned would be visible the
483next time the operator was executed [perl #3105].
484
485=item *
486
487Constant folding and subroutine inlining no longer cause operations that
488would normally return new modifiable scalars to return read-only values
489instead.
490
491=item *
492
493Closures of the form C<sub () { $some_variable }> are no longer inlined,
494causing changes to the variable to be ignored by callers of the subroutine
495[perl #79908].
496
497=item *
498
499Return values of certain operators such as C<ref> would sometimes be shared
500between recursive calls to the same subroutine, causing the inner call to
501modify the value returned by C<ref> in the outer call. This has been
502fixed.
503
504=item *
505
506C<__PACKAGE__> and constants returning a package name or hash key are now
507consistently read-only. In various previous Perl releases, they have
508become mutable under certain circumstances.
509
510=back
511
512=head1 Known Problems
513
514XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
515tests that had to be C<TODO>ed for the release would be noted here. Unfixed
516platform specific bugs also go here.
517
518[ List each fix as a =item entry ]
519
520=over 4
521
522=item *
523
524XXX
525
526=back
527
528=head1 Obituary
529
530XXX If any significant core contributor has died, we've added a short obituary
531here.
532
533=head1 Acknowledgements
534
535XXX Generate this with:
536
537 perl Porting/acknowledgements.pl v5.19.2..HEAD
538
539=head1 Reporting Bugs
540
541If you find what you think is a bug, you might check the articles recently
542posted to the comp.lang.perl.misc newsgroup and the perl bug database at
543http://rt.perl.org/perlbug/ . There may also be information at
544http://www.perl.org/ , the Perl Home Page.
545
546If you believe you have an unreported bug, please run the L<perlbug> program
547included with your release. Be sure to trim your bug down to a tiny but
548sufficient test case. Your bug report, along with the output of C<perl -V>,
549will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
550
551If the bug you are reporting has security implications, which make it
552inappropriate to send to a publicly archived mailing list, then please send it
553to perl5-security-report@perl.org. This points to a closed subscription
554unarchived mailing list, which includes all the core committers, who will be
555able to help assess the impact of issues, figure out a resolution, and help
556co-ordinate the release of patches to mitigate or fix the problem across all
557platforms on which Perl is supported. Please only use this address for
558security issues in the Perl core, not for modules independently distributed on
559CPAN.
560
561=head1 SEE ALSO
562
563The F<Changes> file for an explanation of how to view exhaustive details on
564what changed.
565
566The F<INSTALL> file for how to build Perl.
567
568The F<README> file for general stuff.
569
570The F<Artistic> and F<Copying> files for copyright information.
571
572=cut