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