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