perldelta notes for Storable, EU::PXS, and sort the modules.
[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<ExtUtils::ParseXS> has been upgraded from version 3.39 to 3.40.
105 C<OUTLIST> parameters are no longer incorrectly included in the
106 automatically generated function prototype.  [perl #133654]
107
108 =item *
109
110 L<File::Find> has been upgraded from version 1.34 to 1.35.
111 C<$File::Find::dont_use_nlink> now defaults to 1 on all
112 platforms. [perl #133673]
113
114 =item *
115
116 L<Storable> has been upgraded from version 3.13 to 3.14.
117
118 Storable no longer probes for recursion limits at build time.  [perl
119 #133708] and others.
120
121 Metasploit exploit code was included to test for CVE-2015-1992
122 detection, this caused anti-virus detections on at least one AV suite.
123 The exploit code has been removed and replaced with a simple
124 functional test.  [perl #133706]
125
126 =item *
127
128 L<Test::Simple> has been upgraded from version 1.302140 to 1.302141.
129
130 =item *
131
132 L<threads::shared> has been upgraded from version 1.58 to 1.59.
133
134 =item *
135
136 L<XXX> has been upgraded from version A.xx to B.yy.
137
138 If there was something important to note about this change, include that here.
139
140 =back
141
142 =head2 Removed Modules and Pragmata
143
144 =over 4
145
146 =item *
147
148 XXX
149
150 =back
151
152 =head1 Documentation
153
154 =head2 Changes to Existing Documentation
155
156 We have attempted to update the documentation to reflect the changes
157 listed in this document.  If you find any we have missed, send email
158 to L<perlbug@perl.org|mailto:perlbug@perl.org>.
159
160 Additionally, the following selected changes have been made:
161
162 =head3 L<perlfunc>
163
164 =over 4
165
166 =item *
167
168 Clarification of behaviour of C<reset EXPR>.
169
170 =back
171
172 =head3 L<perlreref>
173
174 =over 4
175
176 =item *
177
178 Clarification of the syntax of /(?(cond)yes)/.
179
180 =back
181
182 =head3 L<perlop>
183
184 =over
185
186 =item *
187
188 We no longer have null (empty line) here doc terminators, so 
189 L<perlop> should not refer to them.
190
191 =back
192
193 =head1 Diagnostics
194
195 The following additions or changes have been made to diagnostic output,
196 including warnings and fatal error messages.  For the complete list of
197 diagnostic messages, see L<perldiag>.
198
199 =head2 Changes to Existing Diagnostics
200
201 =over 4
202
203 =item *
204
205 Under C<< -Dr >> (or C<< use re 'Debug' >>) the compiled regex engine
206 program is displayed. It used two different spellings for I<< infinity >>,
207 C<< INFINITY >>, and C<< INFTY >>. It now uses the latter exclusively,
208 as that spelling has been around the longest.
209
210 =back
211
212 =head1 Utility Changes
213
214 =head2 L<xsubpp>
215
216 =over 4
217
218 =item *
219
220 The generated prototype (with C<< PROTOTYPES: ENABLE >>) would include
221 C<< OUTLIST >> parameters, but these aren't arguments to the perl function.
222 This has been rectified.
223 L<[perl #133654]|https://rt.perl.org/Ticket/Display.html?id=133654>.
224
225 =back
226
227 =head1 Testing
228
229 Tests were added and changed to reflect the other additions and
230 changes in this release.  Furthermore, these significant changes were
231 made:
232
233 =over 4
234
235 =item *
236
237 Some tests in F<< t/io/eintr.t >> caused the process to hang on
238 pre-16 Darwin. These tests are skipped for those version of Darwin.
239
240 =back
241
242 =head1 Platform Support
243
244 =head2 Platform-Specific Notes
245
246 =over 4
247
248 =item Cygwin
249
250 Cygwin doesn't make C<< cuserid >> visible.
251
252 =item Win32 Mingw
253
254 C99 math functions are now available.
255
256 =back
257
258 =head1 Internal Changes
259
260 =over 4
261
262 =item *
263
264 Two new regnodes have been introduced C<< EXACT_ONLY8 >>, and
265 C<< EXACTFU_ONLY8 >>. They're equivalent to C<< EXACT >> and C<< EXACTFU >>,
266 except that they contain a code point which requires UTF-8 to
267 represent/match. Hence, if the target string isn't UTF-8, we know
268 it can't possibly match, without needing to try.
269
270 =item *
271
272 C<< print_bytes_for_locale() >> is now defined if C<< DEBUGGING >>,
273 Prior, it didn't get defined unless C<< LC_COLLATE >> was defined
274 on the platform.
275
276 =back
277
278 =head1 Selected Bug Fixes
279
280 =over 4
281
282 =item *
283
284 If an in-place edit is still in progress during global destruction and
285 the process exit code (as stored in C<$?>) is zero, perl will now
286 treat the in-place edit as successful, replacing the input file with
287 any output produced.
288
289 This allows code like:
290
291   perl -i -ne 'print "Foo"; last'
292
293 to replace the input file, while code like:
294
295   perl -i -ne 'print "Foo"; die'
296
297 will not.  Partly resolves
298 L<[perl #133659]|https://rt.perl.org/Ticket/Display.html?id=133659>.
299
300 =item *
301
302 A regression in 5.28 caused the following code to fail
303
304  close(STDIN); open(CHILD, "|wc -l")'
305
306 because the child's stdin would be closed on exec. This has now been fixed.
307
308 =item *
309
310 Fixed an issue where compiling a regexp containing both compile-time
311 and run-time code blocks could lead to trying to compile something
312 which is invalid syntax.
313
314 =item *
315
316 Fixed build failures with C<< -DNO_LOCALE_NUMERIC >> and
317 C<< -DNO_LOCALE_COLLATE >>.
318 L<[perl #133696]|https://rt.perl.org/Ticket/Display.html?id=133696>.
319
320 =item *
321
322 Prevent the tests in F<< ext/B/t/strict.t >> from being skipped.
323 L<[perl #133713]|https://rt.perl.org/Ticket/Display.html?id=133713>.
324
325 =item *
326
327 C<< /di >> nodes ending or beginning in I<s> are now C<< EXACTF >>. We do not
328 want two C<< EXACTFU >> to be joined together during optimization,
329 and to form a C<< ss >>, C<< sS >>, C<< Ss >> or C<< SS >> sequence;
330 they are the only multi-character sequences which may match differently
331 under C<< /ui >> and C<< /di >>. 
332
333 =back
334
335 =head1 Acknowledgements
336
337 XXX Generate this with:
338
339   perl Porting/acknowledgements.pl v5.29.5..HEAD
340
341 =head1 Reporting Bugs
342
343 If you find what you think is a bug, you might check the perl bug database
344 at L<https://rt.perl.org/>.  There may also be information at
345 L<http://www.perl.org/>, the Perl Home Page.
346
347 If you believe you have an unreported bug, please run the L<perlbug> program
348 included with your release.  Be sure to trim your bug down to a tiny but
349 sufficient test case.  Your bug report, along with the output of C<perl -V>,
350 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
351
352 If the bug you are reporting has security implications which make it
353 inappropriate to send to a publicly archived mailing list, then see
354 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
355 for details of how to report the issue.
356
357 =head1 Give Thanks
358
359 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
360 you can do so by running the C<perlthanks> program:
361
362     perlthanks
363
364 This will send an email to the Perl 5 Porters list with your show of thanks.
365
366 =head1 SEE ALSO
367
368 The F<Changes> file for an explanation of how to view exhaustive details on
369 what changed.
370
371 The F<INSTALL> file for how to build Perl.
372
373 The F<README> file for general stuff.
374
375 The F<Artistic> and F<Copying> files for copyright information.
376
377 =cut