This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for f75dfdbdb9d5
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
4380f76d 5perldelta - what is new for perl v5.29.6
e4c43fa1 6
4026b091
S
7=head1 DESCRIPTION
8
4380f76d 9This document describes differences between the 5.29.5 release and the 5.29.6
4026b091
S
10release.
11
4380f76d
KE
12If you are upgrading from an earlier release such as 5.29.4, first read
13L<perl5295delta>, which describes differences between 5.29.4 and 5.29.5.
14
cc27c3b3
KW
15=head1 Core Enhancements
16
17=head2 The upper limit C<"n"> specifiable in a regular expression
18quantifier of the form C<"{m,n}"> has been doubled to 65534
19
20The meaning of an unbounded upper quantifier C<"{m,}"> remains unchanged.
21It matches 2**31 - 1 times on most platforms, and more on ones where a C
22language short variable is more than 4 bytes long.
23
24The text above is what perl5294delta should have said. Instead it said
25"The maximum number of times a pattern can match has been doubled to 65535"
26That statement was wrong. Try to forget you ever saw it.
27
4380f76d 28=head1 Security
4234ac96 29
0ce66d44
A
30=head2 [CVE-2018-18312] Heap-buffer-overflow write in S_regatom (regcomp.c)
31
32A crafted regular expression could cause heap-buffer-overflow write during
3c1b037f
A
33compilation, potentially allowing arbitrary code execution. (This was
34actually fixed in 5.29.4, but not announced as a security fix at the time).
0ce66d44
A
35
36L<[perl #133423]|https://rt.perl.org/Ticket/Display.html?id=133423>
37
4380f76d
KE
38=head1 Performance Enhancements
39
21d34e95 40=over 4
928a385c
KE
41
42=item *
43
0ce66d44
A
44Optimization of C<IV> to C<UV> conversions.
45L<[perl #133677]|https://rt.perl.org/Ticket/Display.html?id=133677>.
46
47=item *
48
49Speed up of the integer stringification algorithm by processing
50two digits at a time instead of one.
51L<[perl #133691]|https://rt.perl.org/Ticket/Display.html?id=133691>.
52
53=item *
54
55Improvements based on LGTM analysis and recommendation.
56(L<https://lgtm.com/projects/g/Perl/perl5/alerts/?mode=tree>).
57L<[perl #133686]|https://rt.perl.org/Ticket/Display.html?id=133686>.
58L<[perl #133699]|https://rt.perl.org/Ticket/Display.html?id=133699>.
59
60=item *
61
62Code optimizations in F<regcomp.c>, F<regcomp.h>, F<regexec.c>.
21d34e95 63
4380f76d
KE
64=back
65
66=head1 Modules and Pragmata
21d34e95 67
4380f76d
KE
68XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
69go here. If Module::CoreList is updated, generate an initial draft of the
70following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
71for important changes should then be added by hand. In an ideal world,
72dual-life modules would have a F<Changes> file that could be cribbed.
21d34e95 73
4380f76d
KE
74The list of new and updated modules is modified automatically as part of
75preparing a Perl release, so the only reason to manually add entries here is if
76you're summarising the important changes in the module update. (Also, if the
77manually-added details don't match the automatically-generated ones, the
78release manager will have to investigate the situation carefully.)
21d34e95 79
4380f76d 80[ Within each section, list entries as an =item entry ]
21d34e95 81
4380f76d 82=head2 New Modules and Pragmata
21d34e95 83
4380f76d 84=over 4
4234ac96 85
15f62f05 86=item *
4234ac96 87
4380f76d 88XXX Remove this section if not applicable.
21d34e95 89
4380f76d
KE
90=back
91
92=head2 Updated Modules and Pragmata
21d34e95 93
4380f76d 94=over 4
4234ac96 95
15f62f05 96=item *
4234ac96 97
72b2b1d9
MB
98L<Config::Perl::V>. has been upgraded from version 0.30 to 0.31. This was due
99to a new configuration variable that has influence on binary compatibility:
100C<USE_THREAD_SAFE_LOCALE>.
101
102=item *
103
fdfb42a0
JH
104L<threads::shared> has been upgraded from version 1.58 to 1.59.
105
106=item *
107
11d2c931
JK
108L<Test::Simple> has been upgraded from version 1.302140 to 1.302141.
109
110=item *
111
e116fd3c
TC
112L<File::Find> has been upgraded from 1.34 to 1.35.
113C<$File::Find::dont_use_nlink> now defaults to 1 on all platforms.
114
115=item *
116
4380f76d 117L<XXX> has been upgraded from version A.xx to B.yy.
4234ac96 118
4380f76d
KE
119If there was something important to note about this change, include that here.
120
121=back
4234ac96 122
4380f76d
KE
123=head2 Removed Modules and Pragmata
124
125=over 4
21d34e95 126
8de8eb77 127=item *
21d34e95 128
4380f76d 129XXX
4234ac96
AC
130
131=back
132
15f62f05 133=head1 Documentation
4234ac96 134
15f62f05 135=head2 Changes to Existing Documentation
4234ac96 136
15f62f05
KE
137We have attempted to update the documentation to reflect the changes
138listed in this document. If you find any we have missed, send email
139to L<perlbug@perl.org|mailto:perlbug@perl.org>.
4234ac96 140
15f62f05
KE
141Additionally, the following selected changes have been made:
142
0ce66d44
A
143=head3 L<perlfunc>
144
145=over 4
146
0deccbc4
A
147=item *
148
149Clarification of behaviour of C<reset EXPR>.
150
151=back
0ce66d44
A
152
153=head3 L<perlreref>
4234ac96
AC
154
155=over 4
21d34e95 156
8de8eb77 157=item *
21d34e95 158
0deccbc4 159Clarification of the syntax of /(?(cond)yes)/.
0ce66d44
A
160
161=back
162
163=head3 L<perlop>
164
0deccbc4
A
165=over
166
0ce66d44
A
167=item *
168
169We no longer have null (empty line) here doc terminators, so
170L<perlop> should not refer to them.
4380f76d
KE
171
172=back
173
174=head1 Diagnostics
175
176The following additions or changes have been made to diagnostic output,
177including warnings and fatal error messages. For the complete list of
178diagnostic messages, see L<perldiag>.
179
4380f76d
KE
180=head2 Changes to Existing Diagnostics
181
4380f76d
KE
182=over 4
183
184=item *
185
0ce66d44
A
186Under C<< -Dr >> (or C<< use re 'Debug' >>) the compiled regex engine
187program is displayed. It used two different spellings for I<< infinity >>,
188C<< INFINITY >>, and C<< INFTY >>. It now uses the latter exclusively,
189as that spelling has been around the longest.
4380f76d
KE
190
191=back
192
193=head1 Utility Changes
194
0ce66d44 195=head2 L<xsubpp>
4380f76d
KE
196
197=over 4
198
199=item *
200
0ce66d44
A
201The generated prototype (with C<< PROTOTYPES: ENABLE >>) would include
202C<< OUTLIST >> parameters, but these aren't arguments to the perl function.
203This has been rectified.
204L<[perl #133654]|https://rt.perl.org/Ticket/Display.html?id=133654>.
205
4234ac96
AC
206=back
207
208=head1 Testing
209
4380f76d
KE
210Tests were added and changed to reflect the other additions and
211changes in this release. Furthermore, these significant changes were
212made:
213
4380f76d
KE
214=over 4
215
216=item *
217
0deccbc4 218Some tests in F<< t/io/eintr.t >> caused the process to hang on
0ce66d44 219pre-16 Darwin. These tests are skipped for those version of Darwin.
4380f76d
KE
220
221=back
222
4234ac96
AC
223=head1 Platform Support
224
4380f76d
KE
225=head2 Platform-Specific Notes
226
7a54f67e
CBW
227=over 4
228
0ce66d44 229=item Cygwin
4380f76d 230
0ce66d44
A
231Cygwin doesn't make C<< cuserid >> visible.
232
233=item Win32 Mingw
234
235C99 math functions are now available.
4380f76d
KE
236
237=back
238
239=head1 Internal Changes
240
4380f76d 241=over 4
21d34e95 242
10056dd2
TC
243=item *
244
0ce66d44
A
245Two new regnodes have been introduced C<< EXACT_ONLY8 >>, and
246C<< EXACTFU_ONLY8 >>. They're equivalent to C<< EXACT >> and C<< EXACTFU >>,
247except that they contain a code point which requires UTF-8 to
248represent/match. Hence, if the target string isn't UTF-8, we know
249it can't possibly match, without needing to try.
250
0ce66d44
A
251=item *
252
253C<< print_bytes_for_locale() >> is now defined if C<< DEBUGGING >>,
254Prior, it didn't get defined unless C<< LC_COLLATE >> was defined
255on the platform.
4380f76d
KE
256
257=back
258
259=head1 Selected Bug Fixes
260
4380f76d 261=over 4
10056dd2 262
ea89b333
DM
263=item *
264
20ccb10a
TC
265If an in-place edit is still in progress during global destruction and
266the process exit code (as stored in C<$?>) is zero, perl will now
267treat the in-place edit as successful, replacing the input file with
268any output produced.
269
270This allows code like:
271
272 perl -i -ne 'print "Foo"; last'
273
274to replace the input file, while code like:
275
276 perl -i -ne 'print "Foo"; die'
277
0ce66d44
A
278will not. Partly resolves
279L<[perl #133659]|https://rt.perl.org/Ticket/Display.html?id=133659>.
280
281=item *
282
b20a43d7
LT
283A regression in 5.28 caused the following code to fail
284
285 close(STDIN); open(CHILD, "|wc -l")'
286
287because the child's stdin would be closed on exec. This has now been fixed.
288
289=item *
290
0ce66d44
A
291Fixed an issue where compiling a regexp containing both compile-time
292and run-time code blocks could lead to trying to compile something
293which is invalid syntax.
294
295=item *
296
297Fixed build failures with C<< -DNO_LOCALE_NUMERIC >> and
298C<< -DNO_LOCALE_COLLATE >>.
299L<[perl #133696]|https://rt.perl.org/Ticket/Display.html?id=133696>.
300
301=item *
302
0deccbc4 303Prevent the tests in F<< ext/B/t/strict.t >> from being skipped.
0ce66d44
A
304L<[perl #133713]|https://rt.perl.org/Ticket/Display.html?id=133713>.
305
306=item *
307
308C<< /di >> nodes ending or beginning in I<s> are now C<< EXACTF >>. We do not
309want two C<< EXACTFU >> to be joined together during optimization,
310and to form a C<< ss >>, C<< sS >>, C<< Ss >> or C<< SS >> sequence;
311they are the only multi-character sequences which may match differently
312under C<< /ui >> and C<< /di >>.
ea89b333 313
4380f76d 314=back
ea89b333 315
4380f76d 316=head1 Acknowledgements
c4070876 317
4380f76d 318XXX Generate this with:
c4070876 319
4380f76d 320 perl Porting/acknowledgements.pl v5.29.5..HEAD
f5b73711 321
44691e6f
AB
322=head1 Reporting Bugs
323
373fec1e 324If you find what you think is a bug, you might check the perl bug database
15f62f05
KE
325at L<https://rt.perl.org/>. There may also be information at
326L<http://www.perl.org/>, the Perl Home Page.
44691e6f 327
e08634c5
SH
328If you believe you have an unreported bug, please run the L<perlbug> program
329included with your release. Be sure to trim your bug down to a tiny but
330sufficient test case. Your bug report, along with the output of C<perl -V>,
b5cbfe35 331will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f 332
87c118b9
DM
333If the bug you are reporting has security implications which make it
334inappropriate to send to a publicly archived mailing list, then see
373fec1e
SH
335L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
336for details of how to report the issue.
44691e6f 337
390ae6f9
S
338=head1 Give Thanks
339
373fec1e
SH
340If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
341you can do so by running the C<perlthanks> program:
390ae6f9
S
342
343 perlthanks
344
345This will send an email to the Perl 5 Porters list with your show of thanks.
346
44691e6f
AB
347=head1 SEE ALSO
348
e08634c5
SH
349The F<Changes> file for an explanation of how to view exhaustive details on
350what changed.
44691e6f
AB
351
352The F<INSTALL> file for how to build Perl.
353
354The F<README> file for general stuff.
355
356The F<Artistic> and F<Copying> files for copyright information.
357
358=cut