This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
For the generated XSLoader.pm, avoid a runtime lexical which is constant.
[perl5.git] / pod / perl5135delta.pod
CommitLineData
4c793fe3
FR
1=encoding utf8
2
8ebb9810
FR
3=for release_engineer
4* changelogged up to 137127d
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
66XXX For a release on a stable branch, this section aspires to be:
67
68 There are no changes intentionally incompatible with 5.XXX.XXX. If any
69 exist, they are bugs and reports are welcome.
70
71[ List each incompatible change as a =head2 entry ]
72
73=head1 Deprecations
74
75XXX Any deprecated features, syntax, modules etc. should be listed here.
76In particular, deprecated modules should be listed here even if they are
77listed as an updated module in the L</Modules and Pragmata> section.
78
79[ List each deprecation as a =head2 entry ]
80
81=head1 Performance Enhancements
82
83XXX Changes which enhance performance without changing behaviour go here. There
84may well be none in a stable release.
85
86[ List each enhancement as a =item entry ]
87
88=over 4
89
90=item *
91
0c692eed
FR
92Scalars containing regular expressions now only allocate the part of the C<SV>
93body they actually use, saving some space.
4c793fe3
FR
94
95=back
96
97=head1 Modules and Pragmata
98
99XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
100go here. If Module::CoreList is updated, generate an initial draft of the
101following sections using F<Porting/corelist-perldelta.pl>, which prints stub
102entries to STDOUT. Results can be pasted in place of the '=head2' entries
103below. A paragraph summary for important changes should then be added by hand.
104In an ideal world, dual-life modules would have a F<Changes> file that could be
105cribbed.
106
107[ Within each section, list entries as a =item entry ]
108
109=head2 New Modules and Pragmata
110
111=over 4
112
113=item *
114
115XXX
116
117=back
118
119=head2 Updated Modules and Pragmata
120
121=over 4
122
123=item *
124
8ebb9810
FR
125C<blib> has been upgraded from version 1.05 to 1.06.
126
127=item *
128
0c692eed
FR
129C<ExtUtils::MakeMaker> has been upgraded from version 6.56 to 6.57_01.
130
131=item *
132
c9a84c8b
NC
133C<Tie::Hash> has been upgraded from version 1.03 to 1.04.
134
135Calling C<Tie::Hash->TIEHASH()> used to loop forever. Now it C<croak>s.
136
137=item *
138
0c692eed 139C<Unicode::Collate> has been upgraded from version 0.56 to 0.58.
4c793fe3
FR
140
141=back
142
143=head2 Removed Modules and Pragmata
144
145=over 4
146
147=item *
148
149XXX
150
151=back
152
153=head1 Documentation
154
155XXX Changes to files in F<pod/> go here. Consider grouping entries by
156file and be sure to link to the appropriate page, e.g. L<perlfunc>.
157
158=head2 New Documentation
159
160XXX Changes which create B<new> files in F<pod/> go here.
161
162=head3 L<XXX>
163
164XXX Description of the purpose of the new file here
165
166=head2 Changes to Existing Documentation
167
168XXX Changes which significantly change existing files in F<pod/> go here.
169However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
170section.
171
0c692eed 172=head3 L<perlapi>
4c793fe3
FR
173
174=over 4
175
176=item *
177
0c692eed 178Many of the optree construction functions are now documented.
4c793fe3
FR
179
180=back
181
182=head1 Diagnostics
183
184The following additions or changes have been made to diagnostic output,
185including warnings and fatal error messages. For the complete list of
186diagnostic messages, see L<perldiag>.
187
188XXX New or changed warnings emitted by the core's C<C> code go here. Also
189include any changes in L<perldiag> that reconcile it to the C<C> code.
190
191[ Within each section, list entries as a =item entry ]
192
193=head2 New Diagnostics
194
195XXX Newly added diagnostic messages go here
196
197=over 4
198
199=item *
200
201XXX
202
203=back
204
205=head2 Changes to Existing Diagnostics
206
207XXX Changes (i.e. rewording) of diagnostic messages go here
208
209=over 4
210
211=item *
212
213XXX
214
215=back
216
217=head1 Utility Changes
218
219XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
220here. Most of these are built within the directories F<utils> and F<x2p>.
221
222[ List utility changes as a =head3 entry for each utility and =item
223entries for each change
224Use L<XXX> with program names to get proper documentation linking. ]
225
226=head3 L<XXX>
227
228=over 4
229
230=item *
231
232XXX
233
234=back
235
236=head1 Configuration and Compilation
237
238XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
239go here. Any other changes to the Perl build process should be listed here.
240However, any platform-specific changes should be listed in the
241L</Platform Support> section, instead.
242
243[ List changes as a =item entry ].
244
245=over 4
246
247=item *
248
249XXX
250
251=back
252
253=head1 Testing
254
255XXX Any significant changes to the testing of a freshly built perl should be
256listed here. Changes which create B<new> files in F<t/> go here as do any
257large changes to the testing harness (e.g. when parallel testing was added).
258Changes to existing files in F<t/> aren't worth summarising, although the bugs
259that they represent may be covered elsewhere.
260
261[ List each test improvement as a =item entry ]
262
263=over 4
264
265=item *
266
0c692eed
FR
267A rare race condition in F<t/op/while_readdir.t> has been fixed, stopping it
268from failing randomly when running tests in parallel.
4c793fe3
FR
269
270=back
271
272=head1 Platform Support
273
274XXX Any changes to platform support should be listed in the sections below.
275
276[ Within the sections, list each platform as a =item entry with specific
277changes as paragraphs below it. ]
278
279=head2 New Platforms
280
281XXX List any platforms that this version of perl compiles on, that previous
282versions did not. These will either be enabled by new files in the F<hints/>
283directories, or new subdirectories and F<README> files at the top level of the
284source tree.
285
286=over 4
287
288=item XXX-some-platform
289
290XXX
291
292=back
293
294=head2 Discontinued Platforms
295
296XXX List any platforms that this version of perl no longer compiles on.
297
298=over 4
299
300=item XXX-some-platform
301
302XXX
303
304=back
305
306=head2 Platform-Specific Notes
307
308XXX List any changes for specific platforms. This could include configuration
309and compilation changes or changes in portability/compatibility. However,
310changes within modules for platforms should generally be listed in the
311L</Modules and Pragmata> section.
312
313=over 4
314
0c692eed 315=item VMS
4c793fe3 316
0c692eed
FR
317=over 4
318
319=item *
320
321Make PerlIOUnix_open honor default permissions on VMS.
322
323When perlio became the default and unixio became the default bottom layer, the
324most common path for creating files from Perl became C<PerlIOUnix_open>, which
325has always explicitly used C<0666> as the permission mask.
326
327To avoid this, C<0777> is now passed as the permissions to C<open()>. In the VMS
328CRTL, C<0777> has a special meaning over and above intersecting with the current
329umask; specifically, it allows Unix syscalls to preserve native default
330permissions.
331
332=back
4c793fe3
FR
333
334=back
335
336=head1 Internal Changes
337
338XXX Changes which affect the interface available to C<XS> code go here.
339Other significant internal changes for future core maintainers should
340be noted as well.
341
342[ List each test improvement as a =item entry ]
343
344=over 4
345
346=item *
347
0c692eed
FR
348C<CALL_FPTR> and C<CPERLscope> have been removed deprecated.
349
350Those are left from an old implementation of C<MULTIPLICITY> using C++ objects,
351which has been removed in 5.8. Nowadays these macros do exactly nothing, so they
352shouldn't be used anymore.
353
354For compatibility, they are still defined for external C<XS> code. Only
355extensions defining C<PERL_CORE> must be updated now.
356
357=item *
358
359C<lex_stuff_pvs()> has been added as a convenience macro wrapping
360C<lex_stuff_pvn()> for literal strings.
361
362=item *
363
364The recursive part of the peephole optimizer is how hookable.
365
366In addition to C<PL_peepp>, for hooking into the toplevel peephole optimizer, a
367C<PL_rpeepp> is now available to hook into the optimizer recursing into
368side-chains of the optree.
4c793fe3
FR
369
370=back
371
372=head1 Selected Bug Fixes
373
374XXX Important bug fixes in the core language are summarised here.
375Bug fixes in files in F<ext/> and F<lib/> are best summarised in
376L</Modules and Pragmata>.
377
378[ List each fix as a =item entry ]
379
380=over 4
381
382=item *
383
0c692eed
FR
384A regression introduced in perl 5.10.0, making
385C<< my $x = 3; $x = length(undef) >> result in C<$x> set to C<3> has been
386fixed. C<$x> will now be C<undef>.
387
388=item *
389
390A fatal error in regular expressions when processing UTF-8 data has been fixed
391(RT#75680).
392
393=item *
394
395An erroneous regular expression engine optimization, that caused regex verbs
396like C<*COMMIT> to sometimes be ignored, has been removed.
397
398=item *
399
400The perl debugger now also works in taint mode (RT#76872).
4c793fe3 401
8ebb9810
FR
402=item *
403
404Several memory leaks in cloning and freeing threaded perl interpreters have been
405fixed (RT#77352).
406
4c793fe3
FR
407=back
408
409=head1 Known Problems
410
411XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
412tests that had to be C<TODO>ed for the release would be noted here, unless
413they were specific to a particular platform (see below).
414
415This is a list of some significant unfixed bugs, which are regressions
416from either 5.XXX.XXX or 5.XXX.XXX.
417
418[ List each fix as a =item entry ]
419
420=over 4
421
422=item *
423
424XXX
425
426=back
427
428=head1 Obituary
429
430XXX If any significant core contributor has died, we've added a short obituary
431here.
432
433=head1 Acknowledgements
434
435XXX The list of people to thank goes here.
436
437=head1 Reporting Bugs
438
439If you find what you think is a bug, you might check the articles
440recently posted to the comp.lang.perl.misc newsgroup and the perl
441bug database at http://rt.perl.org/perlbug/ . There may also be
442information at http://www.perl.org/ , the Perl Home Page.
443
444If you believe you have an unreported bug, please run the B<perlbug>
445program included with your release. Be sure to trim your bug down
446to a tiny but sufficient test case. Your bug report, along with the
447output of C<perl -V>, will be sent off to perlbug@perl.org to be
448analysed by the Perl porting team.
449
450If the bug you are reporting has security implications, which make it
451inappropriate to send to a publicly archived mailing list, then please send
452it to perl5-security-report@perl.org. This points to a closed subscription
453unarchived mailing list, which includes all the core committers, who be able
454to help assess the impact of issues, figure out a resolution, and help
455co-ordinate the release of patches to mitigate or fix the problem across all
456platforms on which Perl is supported. Please only use this address for
457security issues in the Perl core, not for modules independently
458distributed on CPAN.
459
460=head1 SEE ALSO
461
462The F<Changes> file for an explanation of how to view exhaustive details
463on what changed.
464
465The F<INSTALL> file for how to build Perl.
466
467The F<README> file for general stuff.
468
469The F<Artistic> and F<Copying> files for copyright information.
470
471=cut