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