Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
4380f76d | 5 | perldelta - what is new for perl v5.29.6 |
e4c43fa1 | 6 | |
4026b091 S |
7 | =head1 DESCRIPTION |
8 | ||
4380f76d | 9 | This document describes differences between the 5.29.5 release and the 5.29.6 |
4026b091 S |
10 | release. |
11 | ||
4380f76d KE |
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 | ||
cc27c3b3 KW |
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 | ||
4380f76d | 28 | =head1 Security |
4234ac96 | 29 | |
0ce66d44 A |
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 | |
3c1b037f A |
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). | |
0ce66d44 A |
35 | |
36 | L<[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 |
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>. | |
21d34e95 | 63 | |
4380f76d KE |
64 | =back |
65 | ||
66 | =head1 Modules and Pragmata | |
21d34e95 | 67 | |
4380f76d KE |
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. | |
21d34e95 | 73 | |
4380f76d KE |
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.) | |
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 | 88 | XXX 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 |
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 | ||
fdfb42a0 JH |
104 | L<threads::shared> has been upgraded from version 1.58 to 1.59. |
105 | ||
106 | =item * | |
107 | ||
11d2c931 JK |
108 | L<Test::Simple> has been upgraded from version 1.302140 to 1.302141. |
109 | ||
110 | =item * | |
111 | ||
e116fd3c TC |
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 | ||
4380f76d | 117 | L<XXX> has been upgraded from version A.xx to B.yy. |
4234ac96 | 118 | |
4380f76d KE |
119 | If 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 | 129 | XXX |
4234ac96 AC |
130 | |
131 | =back | |
132 | ||
15f62f05 | 133 | =head1 Documentation |
4234ac96 | 134 | |
15f62f05 | 135 | =head2 Changes to Existing Documentation |
4234ac96 | 136 | |
15f62f05 KE |
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>. | |
4234ac96 | 140 | |
15f62f05 KE |
141 | Additionally, the following selected changes have been made: |
142 | ||
0ce66d44 A |
143 | =head3 L<perlfunc> |
144 | ||
145 | =over 4 | |
146 | ||
0deccbc4 A |
147 | =item * |
148 | ||
149 | Clarification 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 | 159 | Clarification 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 | ||
169 | We no longer have null (empty line) here doc terminators, so | |
170 | L<perlop> should not refer to them. | |
4380f76d KE |
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 | ||
4380f76d KE |
180 | =head2 Changes to Existing Diagnostics |
181 | ||
4380f76d KE |
182 | =over 4 |
183 | ||
184 | =item * | |
185 | ||
0ce66d44 A |
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. | |
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 |
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 | ||
4234ac96 AC |
206 | =back |
207 | ||
208 | =head1 Testing | |
209 | ||
4380f76d KE |
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 | ||
4380f76d KE |
214 | =over 4 |
215 | ||
216 | =item * | |
217 | ||
0deccbc4 | 218 | Some tests in F<< t/io/eintr.t >> caused the process to hang on |
0ce66d44 | 219 | pre-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 |
231 | Cygwin doesn't make C<< cuserid >> visible. |
232 | ||
233 | =item Win32 Mingw | |
234 | ||
235 | C99 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 |
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 | ||
0ce66d44 A |
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. | |
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 |
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 | ||
0ce66d44 A |
278 | will not. Partly resolves |
279 | L<[perl #133659]|https://rt.perl.org/Ticket/Display.html?id=133659>. | |
280 | ||
281 | =item * | |
282 | ||
b20a43d7 LT |
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 | ||
0ce66d44 A |
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 | ||
0deccbc4 | 303 | Prevent the tests in F<< ext/B/t/strict.t >> from being skipped. |
0ce66d44 A |
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 >>. | |
ea89b333 | 313 | |
4380f76d | 314 | =back |
ea89b333 | 315 | |
4380f76d | 316 | =head1 Acknowledgements |
c4070876 | 317 | |
4380f76d | 318 | XXX 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 | 324 | If you find what you think is a bug, you might check the perl bug database |
15f62f05 KE |
325 | at L<https://rt.perl.org/>. There may also be information at |
326 | L<http://www.perl.org/>, the Perl Home Page. | |
44691e6f | 327 | |
e08634c5 SH |
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>, | |
b5cbfe35 | 331 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. |
44691e6f | 332 | |
87c118b9 DM |
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 | |
373fec1e SH |
335 | L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> |
336 | for details of how to report the issue. | |
44691e6f | 337 | |
390ae6f9 S |
338 | =head1 Give Thanks |
339 | ||
373fec1e SH |
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: | |
390ae6f9 S |
342 | |
343 | perlthanks | |
344 | ||
345 | This 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 |
349 | The F<Changes> file for an explanation of how to view exhaustive details on |
350 | what changed. | |
44691e6f AB |
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 |