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