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