This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for previous commi
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perldelta - what is new for perl v5.29.8
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.29.7 release and the 5.29.8
10 release.
11
12 If you are upgrading from an earlier release such as 5.29.6, first read
13 L<perl5297delta>, which describes differences between 5.29.6 and 5.29.7.
14
15 =head1 Notice
16
17 sv_utf8_(downgrade|decode) are no longer marked as experimental [perl #133788]
18
19 =head1 Core Enhancements
20
21 =head2 Use faster method to convert to UTF-8
22
23 There is a special inline function that's used when converting a single
24 byte to UTF-8, that is faster than the more general one used prior to
25 this commit.
26
27 =head2 Turkic UTF-8 locales are now seamlessly supported
28
29 Turkic languages have different casing rules than other languages for
30 the characters C<"i"> and C<"I">.  The uppercase of C<"i"> is LATIN
31 CAPITAL LETTER I WITH DOT ABOVE (U+0130); and the lowercase of C<"I"> is LATIN
32 SMALL LETTER DOTLESS I (U+0131).  Unicode furnishes alternate casing
33 rules for use with Turkic languages.  Previously, Perl ignored these,
34 but now, it uses them when it detects that it is operating under a
35 Turkic UTF-8 locale.
36
37 =head2 Eliminate opASSIGN macro usage from core
38
39 This macro is still defined but no longer used in core
40
41 =head1 Incompatible Changes
42
43 =head2 JSON::PP enable allow_nonref by default
44
45 As JSON::XS 4.0 changed its policy and enabled allow_nonref
46 by default, JSON::PP also enabled allow_nonref by default.
47
48 =head1 Performance Enhancements
49
50 =over 4
51
52 Eliminate recursion from finalize_op() [perl #108276]
53
54 =back
55
56 =head1 Modules and Pragmata
57
58 =head2 Updated Modules and Pragmata
59
60 =over 4
61
62 =item *
63
64 L<B> has been upgraded from version 1.75 to 1.76.
65
66 =item *
67
68 L<Encode> has been upgraded from version 2.97 to 3.00.
69
70 =item *
71
72 L<JSON::PP> has been upgraded from version 2.97001 to 4.00.
73 JSON::PP as JSON::XS 4.0 enable allow_nonref by default
74
75 =item *
76
77 L<Module::CoreList> has been upgraded from version 5.20190120 to 5.20190220.
78
79 Changes to B::Op_private and Config
80
81 =item *
82
83 L<Module::Load> has been upgraded from version 0.32 to 0.34.
84
85 =item *
86
87 L<Net::Ping> has been upgraded from version 2.61 to 2.71.
88
89 =item *
90
91 L<perlfaq> has been upgraded from version 5.20180915 to 5.20190126.
92
93 =item *
94
95 L<Test::Simple> has been upgraded from version 1.302160 to 1.302162.
96
97 =item *
98
99 L<XS::APItest> has been upgraded from version 0.99 to 1.00.
100
101 =back
102
103 =head1 Documentation
104
105 =head2 Changes to Existing Documentation
106
107 We have attempted to update the documentation to reflect the changes
108 listed in this document.  If you find any we have missed, send email
109 to L<perlbug@perl.org|mailto:perlbug@perl.org>.
110
111 Additionally, the following selected changes have been made:
112
113 =head3 L<perlfunc>
114
115 =over 4
116
117 =item *
118
119 Try to clarify that C<< ref(qr/xx/) >> returns C<Regexp> rather than
120 C<REGEXP> and why.  [perl #133751]
121
122 =back
123
124 =head3 L<perllocale>
125
126 =over 4
127
128 =item *
129
130 There are actually two slightly different types of UTF-8 locales: one for Turkic
131 languages and one for everything else. Starting in Perl v5.30, Perl seamlessly 
132 handles both types.
133
134 =back
135
136 =head3 L<perlrecharclass>
137
138 =over 4
139
140 =item *
141
142 Add a note for the ::xdigit:: character class.
143
144 =back
145
146 =head1 Diagnostics
147
148 The following additions or changes have been made to diagnostic output,
149 including warnings and fatal error messages.  For the complete list of
150 diagnostic messages, see L<perldiag>.
151
152 =head2 Changes to Existing Diagnostics
153
154 =over 4
155
156 =item *
157
158 L<Type of arg %d to %s must be %s (not %s)|perldiag/"Type of arg %d to %s must be %s (not %s)">
159
160 Attempts to push, pop, etc on a hash or glob now produce this message
161 rather than complaining that they no longer work on scalars. [perl
162 #130367]
163
164 =back
165
166 =head1 Configuration and Compilation
167
168 =over 4
169
170 =item *
171
172 Improve detection of memrchr, strlcat, and strlcpy
173
174 =item *
175
176 Improve Configure detection of memmem() [perl #133760].
177
178 =back
179
180 =head1 Testing
181
182 XXX Any significant changes to the testing of a freshly built perl should be
183 listed here.  Changes which create B<new> files in F<t/> go here as do any
184 large changes to the testing harness (e.g. when parallel testing was added).
185 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
186 that they represent may be covered elsewhere.
187
188 XXX If there were no significant test changes, say this:
189
190 Tests were added and changed to reflect the other additions and changes
191 in this release.
192
193 XXX If instead there were significant changes, say this:
194
195 Tests were added and changed to reflect the other additions and
196 changes in this release.  Furthermore, these significant changes were
197 made:
198
199 [ List each test improvement as an =item entry ]
200
201 =over 4
202
203 =item *
204
205 t/lib/croak/op [perl #130367]
206
207 separate error for push etc on hash/glob
208
209 =item *
210
211 t/op/svleak.t [perl #133660]
212
213 add test for goto &sub in overload leaking
214
215 =item *
216
217 Split t/re/fold_grind.t into multiple test files
218
219 =back
220
221 =head1 Platform Support
222
223 XXX Any changes to platform support should be listed in the sections below.
224
225 [ Within the sections, list each platform as an =item entry with specific
226 changes as paragraphs below it. ]
227
228 =head2 New Platforms
229
230 XXX List any platforms that this version of perl compiles on, that previous
231 versions did not.  These will either be enabled by new files in the F<hints/>
232 directories, or new subdirectories and F<README> files at the top level of the
233 source tree.
234
235 =over 4
236
237 =item XXX-some-platform
238
239 XXX
240
241 =back
242
243 =head2 Discontinued Platforms
244
245 XXX List any platforms that this version of perl no longer compiles on.
246
247 =over 4
248
249 =item XXX-some-platform
250
251 XXX
252
253 =back
254
255 =head2 Platform-Specific Notes
256
257 XXX List any changes for specific platforms.  This could include configuration
258 and compilation changes or changes in portability/compatibility.  However,
259 changes within modules for platforms should generally be listed in the
260 L</Modules and Pragmata> section.
261
262 =over 4
263
264 =item XXX-some-platform
265
266 XXX
267
268 =back
269
270 =head1 Internal Changes
271
272 XXX Changes which affect the interface available to C<XS> code go here.  Other
273 significant internal changes for future core maintainers should be noted as
274 well.
275
276 [ List each change as an =item entry ]
277
278 =over 4
279
280 =item *
281
282 XXX
283
284 =back
285
286 =head1 Selected Bug Fixes
287
288 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
289 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
290
291 [ List each fix as an =item entry ]
292
293 =over 4
294
295 =item *
296
297 Regular expression matching no longer leaves stale UTF-8 length magic
298 when updating C<$^R>. This could result in C<length($^R)> returning
299 an incorrect value.
300
301 =item *
302
303 Fix a qr/[...]/ bug introduced in v5.29.7
304
305 Using /il should not result in looking for a [:posix:] class
306 that matches the code points given.
307
308 =item *
309
310 Reduce recursion on ops [perl #108276]
311
312 This can prevent stack overflow when processing extremely deep op
313 trees.
314
315 =item *
316
317 Avoid leak in multiconcat with overloading. [perl #133789]
318
319 =item *
320
321 The handling of user-defined C<\p{}> properties (see
322 L<perlunicode/User-Defined Character Properties>) has been rewritten to
323 be in C (instead of Perl).  This speeds things up, but in the process
324 several inconsistencies and bug fixes are made.
325
326 =over
327
328 =item 1
329
330 A few error messages have minor wording changes.  This is essentially
331 because the new way is integrated into the regex error handling
332 mechanism that marks the position in the input at which the error
333 occurred.  That was not possible previously.  The messages now also
334 contain additional back-trace-like information in case the error occurs
335 deep in nested calls.
336
337 =item 2
338
339 A user-defined property is implemented as a perl subroutine with certain
340 highly constrained naming conventions.  It was documented previously
341 that the sub would be in the current package if the package was
342 unspecified.  This turned out not to be true in all cases, but now it
343 is.
344
345 =item 3
346
347 All recursive calls are treated as infinite recursion.  Previously they
348 would cause the interpreter to panic.  Now, they cause the regex pattern
349 to fail to compile.
350
351 =item 4
352
353 Similarly, any other error likely would lead to a panic; now to just the
354 pattern failing to compile.
355
356 =item 5
357
358 The old mechanism did not detect illegal ranges in the definition of the
359 property.  Now, the range max must not be smaller than the range min.
360 Otherwise, the pattern fails to compile.
361
362 =item 6
363
364 The intention was to have each sub called only once during the lifetime
365 of the program, so that a property's definition is immutable.  This was
366 relaxed so that it could be called once for all /i compilations, and
367 potentially a second time for non-/i (the sub is passed a parameter
368 indicating which).  However, in practice there were instances when this
369 was broken, and multiple calls were possible.  Those have been fixed.
370 Now (besides the /i,non-/i cases) the only way a sub can be called
371 multiple times is if some component of it has not been defined yet.  For
372 example, suppose we have sub IsA() whose definition is known at compile
373 time, and it in turn calls isB() whose definition is not yet known.
374 isA() will be called each time a pattern it appears in is compiled.  If
375 isA() also calls isC() and that definition is known, isC() will be
376 called just once.
377
378 =item 7
379
380 There were some races and very long hangs should one thread be compiling
381 the same property as another simultaneously.  These have now been fixed.
382
383 =back
384
385 =item * Assertion failure in compiling invalid regex pattern [perl #133767]
386
387 This bug was introduced in the 5.29 series, so this should not be in the
388 perldelta for 5.30.
389
390 =item * Null pointer deref [perl #133770]
391
392 This bug was introduced in the 5.29 series, so this should not be in the
393 perldelta for 5.30.
394
395 =back
396
397 =head1 Acknowledgements
398
399 XXX Generate this with:
400
401   perl Porting/acknowledgements.pl v5.29.7..HEAD
402
403 =head1 Reporting Bugs
404
405 If you find what you think is a bug, you might check the perl bug database
406 at L<https://rt.perl.org/>.  There may also be information at
407 L<http://www.perl.org/>, the Perl Home Page.
408
409 If you believe you have an unreported bug, please run the L<perlbug> program
410 included with your release.  Be sure to trim your bug down to a tiny but
411 sufficient test case.  Your bug report, along with the output of C<perl -V>,
412 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
413
414 If the bug you are reporting has security implications which make it
415 inappropriate to send to a publicly archived mailing list, then see
416 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
417 for details of how to report the issue.
418
419 =head1 Give Thanks
420
421 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
422 you can do so by running the C<perlthanks> program:
423
424     perlthanks
425
426 This will send an email to the Perl 5 Porters list with your show of thanks.
427
428 =head1 SEE ALSO
429
430 The F<Changes> file for an explanation of how to view exhaustive details on
431 what changed.
432
433 The F<INSTALL> file for how to build Perl.
434
435 The F<README> file for general stuff.
436
437 The F<Artistic> and F<Copying> files for copyright information.
438
439 =cut