This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
a2da79decfd2391dbb6185009ee6b87230835f90
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for release_engineer
4 * changelogged up to be34c38
5 * the mauve module will not be part of the release, so it's not changelogged
6 yet. it also added some new api functions. those aren't covered either, as they
7 might go away again in case mauve gets rolled back for 5.13.5.
8
9 =head1 NAME
10
11 [ this is a template for a new perldelta file. Any text flagged as
12 XXX needs to be processed before release. ]
13
14 perldelta - what is new for perl v5.13.5
15
16 =head1 DESCRIPTION
17
18 This document describes differences between the 5.13.4 release and
19 the 5.13.5 release.
20
21 If you are upgrading from an earlier release such as 5.13.3, first read
22 L<perl5134delta>, which describes differences between 5.13.3 and
23 5.13.4.
24
25 =head1 Notice
26
27 XXX Any important notices here
28
29 =head1 Core Enhancements
30
31 XXX New core language features go here. Summarise user-visible core language
32 enhancements. Particularly prominent performance optimisations could go
33 here, but most should go in the L</Performance Enhancements> section.
34
35 =head2 Adjacent pairs of nextstate opcodes are now optimized away
36
37 Previously, in code such as
38
39     use constant DEBUG => 0;
40
41     sub GAK {
42         warn if DEBUG;
43         print "stuff\n";
44     }
45
46 the ops for C<warn if DEBUG;> would be folded to a C<null> op (C<ex-const>), but
47 the C<nextstate> op would remain, resulting in a runtime op dispatch of
48 C<nextstate>, C<nextstate>, ...
49
50 The execution of a sequence of C<nexstate> ops is indistinguishable from just
51 the last C<nextstate> op, so teach the peephole optimiser to eliminate the first
52 of a pair of C<nextstate> ops. (Except where the first carries a label, as
53 labels mustn't be eliminated by the optimiser, and label usage isn't
54 conclusively known at compile time.)
55
56 =head1 Security
57
58 XXX Any security-related notices go here.  In particular, any security
59 vulnerabilities closed should be noted here rather than in the
60 L</Selected Bug Fixes> section.
61
62 [ List each security issue as a =head2 entry ]
63
64 =head1 Incompatible Changes
65
66 =head2 Magic Variables Outside the Main Package
67
68 In previous versions of perl, magic variables like C<$!>, C<%SIG>, etc.  would
69 'leak' into other packages. So C<%foo::SIG> could be used to access signals,
70 C<${"foo::!"}> (with strict mode off) to access C's C<errno>, etc.
71
72 This was a bug, or an 'unintentional' feature, which caused various ill
73 effects, such as signal handlers being wiped when modules were loaded, etc.
74
75 This has been fixed (or the feature has been removed, depending on how you
76 see it).
77
78 =head2 C API changes
79
80 The first argument of the C API function C<Perl_fetch_cop_label> has changed
81 from C<struct refcounted he *> to C<COP *>, to better insulate the user from
82 implementation details.
83
84 This API function was marked as "may change", and likely isn't in use outside
85 the core. (Neither an unpacked CPAN, nor Google's codesearch, finds any other
86 references to it.)
87
88 =head1 Deprecations
89
90 XXX Any deprecated features, syntax, modules etc. should be listed here.
91 In particular, deprecated modules should be listed here even if they are
92 listed as an updated module in the L</Modules and Pragmata> section.
93
94 [ List each deprecation as a =head2 entry ]
95
96 =head1 Performance Enhancements
97
98 XXX Changes which enhance performance without changing behaviour go here. There
99 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 Scalars containing regular expressions now only allocate the part of the C<SV>
108 body they actually use, saving some space.
109
110 =back
111
112 =head1 Modules and Pragmata
113
114 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
115 go here.  If Module::CoreList is updated, generate an initial draft of the
116 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
117 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
118 below.  A paragraph summary for important changes should then be added by hand.
119 In an ideal world, dual-life modules would have a F<Changes> file that could be
120 cribbed.
121
122 [ Within each section, list entries as a =item entry ]
123
124 =head2 New Modules and Pragmata
125
126 =over 4
127
128 =item *
129
130 XXX
131
132 =back
133
134 =head2 Updated Modules and Pragmata
135
136 =over 4
137
138 =item *
139
140 C<blib> has been upgraded from version 1.05 to 1.06.
141
142 =item *
143
144 C<bignum>, C<bigint>, and C<bigrat> have been upgraded from version 0.23 to
145 0.24.
146
147 =item *
148
149 C<Errno> has been upgraded from version 1.12 to 1.13.
150
151 On some platforms with unusual header files, like Win32/gcc using mingw64
152 headers, some constants which weren't actually error numbers have been exposed
153 by C<Errno>. This has been fixed (RT#77416).
154
155 =item *
156
157 C<ExtUtils::MakeMaker> has been upgraded from version 6.56 to 6.57_01.
158
159 =item *
160
161 C<Filter::Simple> has been upgraded from version 0.84 to 0.85.
162
163 =item *
164
165 C<Math::BigInt> has been upgraded from version 1.89_01 to 1.90.
166 C<Math::BigInt::Calc> has been upgraded from version 0.52 to 0.53.
167
168 This fixes incorrect results when computing binomial coefficients (RT#77640).
169
170 =item *
171
172 C<Math::BigInt::FastCalc> has been upgraded from version 0.19 to 0.21.
173
174 =item *
175
176 C<Tie::Hash> has been upgraded from version 1.03 to 1.04.
177
178 Calling C<< Tie::Hash->TIEHASH() >> used to loop forever. Now it C<croak>s.
179
180 =item *
181
182 C<Unicode::Collate> has been upgraded from version 0.56 to 0.58.
183
184 =item *
185
186 C<XSLoader> has been upgraded from version 0.10 to 0.11.
187
188 =back
189
190 =head2 Removed Modules and Pragmata
191
192 =over 4
193
194 =item *
195
196 XXX
197
198 =back
199
200 =head1 Documentation
201
202 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
203 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
204
205 =head2 New Documentation
206
207 XXX Changes which create B<new> files in F<pod/> go here.
208
209 =head3 L<XXX>
210
211 XXX Description of the purpose of the new file here
212
213 =head2 Changes to Existing Documentation
214
215 XXX Changes which significantly change existing files in F<pod/> go here.
216 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
217 section.
218
219 =head3 L<perlapi>
220
221 =over 4
222
223 =item *
224
225 Many of the optree construction functions are now documented.
226
227 =back
228
229 =head1 Diagnostics
230
231 The following additions or changes have been made to diagnostic output,
232 including warnings and fatal error messages.  For the complete list of
233 diagnostic messages, see L<perldiag>.
234
235 XXX New or changed warnings emitted by the core's C<C> code go here. Also
236 include any changes in L<perldiag> that reconcile it to the C<C> code.
237
238 [ Within each section, list entries as a =item entry ]
239
240 =head2 New Diagnostics
241
242 XXX Newly added diagnostic messages go here
243
244 =over 4
245
246 =item *
247
248 XXX
249
250 =back
251
252 =head2 Changes to Existing Diagnostics
253
254 XXX Changes (i.e. rewording) of diagnostic messages go here
255
256 =over 4
257
258 =item *
259
260 XXX
261
262 =back
263
264 =head1 Utility Changes
265
266 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
267 here. Most of these are built within the directories F<utils> and F<x2p>.
268
269 [ List utility changes as a =head3 entry for each utility and =item
270 entries for each change
271 Use L<XXX> with program names to get proper documentation linking. ]
272
273 =head3 L<h2ph>
274
275 =over 4
276
277 =item *
278
279 The use of a deprecated C<goto> construct has been removed (RT#74404).
280
281 =back
282
283 =head1 Configuration and Compilation
284
285 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
286 go here.  Any other changes to the Perl build process should be listed here.
287 However, any platform-specific changes should be listed in the
288 L</Platform Support> section, instead.
289
290 [ List changes as a =item entry ].
291
292 =over 4
293
294 =item *
295
296 XXX
297
298 =back
299
300 =head1 Testing
301
302 XXX Any significant changes to the testing of a freshly built perl should be
303 listed here.  Changes which create B<new> files in F<t/> go here as do any
304 large changes to the testing harness (e.g. when parallel testing was added).
305 Changes to existing files in F<t/> aren't worth summarising, although the bugs
306 that they represent may be covered elsewhere.
307
308 [ List each test improvement as a =item entry ]
309
310 =over 4
311
312 =item *
313
314 A rare race condition in F<t/op/while_readdir.t> has been fixed, stopping it
315 from failing randomly when running tests in parallel.
316
317 =item *
318
319 The new F<t/op/leaky-magic.t> script tests that magic applied to variables in
320 the main packages does not affect other packages.
321
322 =back
323
324 =head1 Platform Support
325
326 XXX Any changes to platform support should be listed in the sections below.
327
328 [ Within the sections, list each platform as a =item entry with specific
329 changes as paragraphs below it. ]
330
331 =head2 New Platforms
332
333 XXX List any platforms that this version of perl compiles on, that previous
334 versions did not. These will either be enabled by new files in the F<hints/>
335 directories, or new subdirectories and F<README> files at the top level of the
336 source tree.
337
338 =over 4
339
340 =item XXX-some-platform
341
342 XXX
343
344 =back
345
346 =head2 Discontinued Platforms
347
348 XXX List any platforms that this version of perl no longer compiles on.
349
350 =over 4
351
352 =item XXX-some-platform
353
354 XXX
355
356 =back
357
358 =head2 Platform-Specific Notes
359
360 XXX List any changes for specific platforms. This could include configuration
361 and compilation changes or changes in portability/compatibility.  However,
362 changes within modules for platforms should generally be listed in the
363 L</Modules and Pragmata> section.
364
365 =over 4
366
367 =item VMS
368
369 =over 4
370
371 =item *
372
373 Make PerlIOUnix_open honor default permissions on VMS.
374
375 When perlio became the default and unixio became the default bottom layer, the
376 most common path for creating files from Perl became C<PerlIOUnix_open>, which
377 has always explicitly used C<0666> as the permission mask.
378
379 To avoid this, C<0777> is now passed as the permissions to C<open()>. In the VMS
380 CRTL, C<0777> has a special meaning over and above intersecting with the current
381 umask; specifically, it allows Unix syscalls to preserve native default
382 permissions.
383
384 =back
385
386 =back
387
388 =head1 Internal Changes
389
390 XXX Changes which affect the interface available to C<XS> code go here.
391 Other significant internal changes for future core maintainers should
392 be noted as well.
393
394 [ List each test improvement as a =item entry ]
395
396 =over 4
397
398 =item *
399
400 C<CALL_FPTR> and C<CPERLscope> have been removed deprecated.
401
402 Those are left from an old implementation of C<MULTIPLICITY> using C++ objects,
403 which has been removed in 5.8. Nowadays these macros do exactly nothing, so they
404 shouldn't be used anymore.
405
406 For compatibility, they are still defined for external C<XS> code. Only
407 extensions defining C<PERL_CORE> must be updated now.
408
409 =item *
410
411 C<lex_stuff_pvs()> has been added as a convenience macro wrapping
412 C<lex_stuff_pvn()> for literal strings.
413
414 =item *
415
416 The recursive part of the peephole optimizer is how hookable.
417
418 In addition to C<PL_peepp>, for hooking into the toplevel peephole optimizer, a
419 C<PL_rpeepp> is now available to hook into the optimizer recursing into
420 side-chains of the optree.
421
422 =back
423
424 =head1 Selected Bug Fixes
425
426 XXX Important bug fixes in the core language are summarised here.
427 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
428 L</Modules and Pragmata>.
429
430 [ List each fix as a =item entry ]
431
432 =over 4
433
434 =item *
435
436 A regression introduced in perl 5.10.0, making
437 C<< my $x = 3; $x = length(undef) >> result in C<$x> set to C<3> has been
438 fixed. C<$x> will now be C<undef>.
439
440 =item *
441
442 A fatal error in regular expressions when processing UTF-8 data has been fixed
443 (RT#75680).
444
445 =item *
446
447 An erroneous regular expression engine optimization, that caused regex verbs
448 like C<*COMMIT> to sometimes be ignored, has been removed.
449
450 =item *
451
452 The perl debugger now also works in taint mode (RT#76872).
453
454 =item *
455
456 Several memory leaks in cloning and freeing threaded perl interpreters have been
457 fixed (RT#77352).
458
459 =item *
460
461 A possible string corruption when doing regular expression matches on overloaded
462 objects has been fixed (RT#77084).
463
464 =item *
465
466 Magic applied to variables in the main package no longer affects other
467 packages. See L</Magic Variables Outside the Main Package>, above [perl #76138].
468
469 =back
470
471 =head1 Known Problems
472
473 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
474 tests that had to be C<TODO>ed for the release would be noted here, unless
475 they were specific to a particular platform (see below).
476
477 This is a list of some significant unfixed bugs, which are regressions
478 from either 5.XXX.XXX or 5.XXX.XXX.
479
480 [ List each fix as a =item entry ]
481
482 =over 4
483
484 =item *
485
486 XXX
487
488 =back
489
490 =head1 Obituary
491
492 XXX If any significant core contributor has died, we've added a short obituary
493 here.
494
495 =head1 Acknowledgements
496
497 XXX The list of people to thank goes here.
498
499 =head1 Reporting Bugs
500
501 If you find what you think is a bug, you might check the articles
502 recently posted to the comp.lang.perl.misc newsgroup and the perl
503 bug database at http://rt.perl.org/perlbug/ .  There may also be
504 information at http://www.perl.org/ , the Perl Home Page.
505
506 If you believe you have an unreported bug, please run the B<perlbug>
507 program included with your release.  Be sure to trim your bug down
508 to a tiny but sufficient test case.  Your bug report, along with the
509 output of C<perl -V>, will be sent off to perlbug@perl.org to be
510 analysed by the Perl porting team.
511
512 If the bug you are reporting has security implications, which make it
513 inappropriate to send to a publicly archived mailing list, then please send
514 it to perl5-security-report@perl.org. This points to a closed subscription
515 unarchived mailing list, which includes all the core committers, who be able
516 to help assess the impact of issues, figure out a resolution, and help
517 co-ordinate the release of patches to mitigate or fix the problem across all
518 platforms on which Perl is supported. Please only use this address for
519 security issues in the Perl core, not for modules independently
520 distributed on CPAN.
521
522 =head1 SEE ALSO
523
524 The F<Changes> file for an explanation of how to view exhaustive details
525 on what changed.
526
527 The F<INSTALL> file for how to build Perl.
528
529 The F<README> file for general stuff.
530
531 The F<Artistic> and F<Copying> files for copyright information.
532
533 =cut