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