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