This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Perldelta final massage for 5.29.8 release
[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<deprecate> has been upgraded from version 0.03 to 0.04.
69
70 =item *
71
72 L<Encode> has been upgraded from version 2.97 to 3.00.
73
74 =item *
75
76 L<ExtUtils::Miniperl> has been upgraded from version 1.08 to 1.09.
77
78 =item *
79
80 L<IO> has been upgraded from version 1.39 to 1.40.
81
82 =item *
83
84 L<JSON::PP> has been upgraded from version 2.97001 to 4.00.
85 JSON::PP as JSON::XS 4.0 enable allow_nonref by default
86
87 =item *
88
89 L<Module::CoreList> has been upgraded from version 5.20190120 to 5.20190220.
90
91 Changes to B::Op_private and Config
92
93 =item *
94
95 L<Module::Load> has been upgraded from version 0.32 to 0.34.
96
97 =item *
98
99 L<Net::Ping> has been upgraded from version 2.62 to 2.71.
100
101 =item *
102
103 L<perlfaq> has been upgraded from version 5.20180915 to 5.20190126.
104
105 =item *
106
107 L<POSIX> has been upgraded from version 1.86 to 1.87.
108
109 =item *
110
111 L<Test::Simple> has been upgraded from version 1.302160 to 1.302162.
112
113 =item *
114
115 L<XS::APItest> has been upgraded from version 0.99 to 1.00.
116
117 =back
118
119 =head1 Documentation
120
121 =head2 Changes to Existing Documentation
122
123 We have attempted to update the documentation to reflect the changes
124 listed in this document.  If you find any we have missed, send email
125 to L<perlbug@perl.org|mailto:perlbug@perl.org>.
126
127 Additionally, the following selected changes have been made:
128
129 =head3 L<perlfunc>
130
131 =over 4
132
133 =item *
134
135 Try to clarify that C<< ref(qr/xx/) >> returns C<Regexp> rather than
136 C<REGEXP> and why.  [perl #133751]
137
138 =back
139
140 =head3 L<perllocale>
141
142 =over 4
143
144 =item *
145
146 There are actually two slightly different types of UTF-8 locales: one for Turkic
147 languages and one for everything else. Starting in Perl v5.30, Perl seamlessly 
148 handles both types.
149
150 =back
151
152 =head3 L<perlrecharclass>
153
154 =over 4
155
156 =item *
157
158 Added a note for the ::xdigit:: character class.
159
160 =back
161
162 =head1 Diagnostics
163
164 The following additions or changes have been made to diagnostic output,
165 including warnings and fatal error messages.  For the complete list of
166 diagnostic messages, see L<perldiag>.
167
168 =head2 Changes to Existing Diagnostics
169
170 =over 4
171
172 =item *
173
174 L<Type of arg %d to %s must be %s (not %s)|perldiag/"Type of arg %d to %s must be %s (not %s)">
175
176 Attempts to push, pop, etc on a hash or glob now produce this message
177 rather than complaining that they no longer work on scalars. [perl
178 #130367]
179
180 =back
181
182 =head1 Configuration and Compilation
183
184 =over 4
185
186 =item *
187
188 Improve detection of memrchr, strlcat, and strlcpy
189
190 =item *
191
192 Improve Configure detection of memmem() [perl #133760].
193
194 =item *
195
196 Fix -DPERL_GLOBAL_STRUCT_PRIVATE build option.
197
198 =item *
199
200 Multiple improvements and fixes for -DPERL_GLOBAL_STRUCT build option.
201
202 =back
203
204 =head1 Testing
205
206 Tests were added and changed to reflect the other additions and
207 changes in this release.  Furthermore, these significant changes were
208 made:
209
210 =over 4
211
212 =item *
213
214 t/lib/croak/op [perl #130367]
215
216 separate error for push etc on hash/glob
217
218 =item *
219
220 t/op/svleak.t [perl #133660]
221
222 add test for goto &sub in overload leaking
223
224 =item *
225
226 Split t/re/fold_grind.t into multiple test files
227
228 =back
229
230 =head2 Platform-Specific Notes
231
232 =over 4
233
234 =item Windows
235
236 socket() now sets C<$!> if the protocol, address family and socket
237 type combination is not found.  [perl #133853]
238
239 =back
240
241 =head1 Internal Changes
242
243 =over 4
244
245 =item *
246
247 It is now forbidden to malloc more than C<PTRDIFF_T_MAX> bytes.  Much
248 code (including C optimizers) assumes that all data structures will not
249 be larger than this, so this catches such attempts before overflow
250 happens.
251
252 =back
253
254 =head1 Selected Bug Fixes
255
256 =over 4
257
258 =item *
259
260 Regular expression matching no longer leaves stale UTF-8 length magic
261 when updating C<$^R>. This could result in C<length($^R)> returning
262 an incorrect value.
263
264 =item *
265
266 Fix a qr/[...]/ bug introduced in v5.29.7
267
268 Using /il should not result in looking for a [:posix:] class
269 that matches the code points given.
270
271 =item *
272
273 Reduce recursion on ops [perl #108276]
274
275 This can prevent stack overflow when processing extremely deep op
276 trees.
277
278 =item *
279
280 Avoid leak in multiconcat with overloading. [perl #133789]
281
282 =item *
283
284 The handling of user-defined C<\p{}> properties (see
285 L<perlunicode/User-Defined Character Properties>) has been rewritten to
286 be in C (instead of Perl).  This speeds things up, but in the process
287 several inconsistencies and bug fixes are made.
288
289 =over
290
291 =item 1
292
293 A few error messages have minor wording changes.  This is essentially
294 because the new way is integrated into the regex error handling
295 mechanism that marks the position in the input at which the error
296 occurred.  That was not possible previously.  The messages now also
297 contain additional back-trace-like information in case the error occurs
298 deep in nested calls.
299
300 =item 2
301
302 A user-defined property is implemented as a perl subroutine with certain
303 highly constrained naming conventions.  It was documented previously
304 that the sub would be in the current package if the package was
305 unspecified.  This turned out not to be true in all cases, but now it
306 is.
307
308 =item 3
309
310 All recursive calls are treated as infinite recursion.  Previously they
311 would cause the interpreter to panic.  Now, they cause the regex pattern
312 to fail to compile.
313
314 =item 4
315
316 Similarly, any other error likely would lead to a panic; now to just the
317 pattern failing to compile.
318
319 =item 5
320
321 The old mechanism did not detect illegal ranges in the definition of the
322 property.  Now, the range max must not be smaller than the range min.
323 Otherwise, the pattern fails to compile.
324
325 =item 6
326
327 The intention was to have each sub called only once during the lifetime
328 of the program, so that a property's definition is immutable.  This was
329 relaxed so that it could be called once for all /i compilations, and
330 potentially a second time for non-/i (the sub is passed a parameter
331 indicating which).  However, in practice there were instances when this
332 was broken, and multiple calls were possible.  Those have been fixed.
333 Now (besides the /i,non-/i cases) the only way a sub can be called
334 multiple times is if some component of it has not been defined yet.  For
335 example, suppose we have sub IsA() whose definition is known at compile
336 time, and it in turn calls isB() whose definition is not yet known.
337 isA() will be called each time a pattern it appears in is compiled.  If
338 isA() also calls isC() and that definition is known, isC() will be
339 called just once.
340
341 =item 7
342
343 There were some races and very long hangs should one thread be compiling
344 the same property as another simultaneously.  These have now been fixed.
345
346 =back
347
348 =item * Assertion failure in compiling invalid regex pattern [perl #133767]
349
350 This bug was introduced in the 5.29 series, so this should not be in the
351 perldelta for 5.30.
352
353 =item * Null pointer deref [perl #133770]
354
355 This bug was introduced in the 5.29 series, so this should not be in the
356 perldelta for 5.30.
357
358 =back
359
360 =head1 Acknowledgements
361
362 Perl 5.29.8 represents approximately 5 weeks of development since Perl
363 5.29.7 and contains approximately 13,000 lines of changes across 290 files
364 from 18 authors.
365
366 Excluding auto-generated files, documentation and release tools, there were
367 approximately 9,500 lines of changes to 210 .pm, .t, .c and .h files.
368
369 Perl continues to flourish into its fourth decade thanks to a vibrant
370 community of users and developers. The following people are known to have
371 contributed the improvements that became Perl 5.29.8:
372
373 Abigail, Andreas König, Andy Dougherty, Aristotle Pagaltzis, Chris 'BinGOs'
374 Williams, Dagfinn Ilmari Mannsåker, Dan Kogai, David Mitchell, Jakub Wilk,
375 James E Keenan, Karen Etheridge, Karl Williamson, Nicolas R., Pali, Sawyer
376 X, Shlomi Fish, Tomasz Konojacki, Tony Cook.
377
378 The list above is almost certainly incomplete as it is automatically
379 generated from version control history. In particular, it does not include
380 the names of the (very much appreciated) contributors who reported issues to
381 the Perl bug tracker.
382
383 Many of the changes included in this version originated in the CPAN modules
384 included in Perl's core. We're grateful to the entire CPAN community for
385 helping Perl to flourish.
386
387 For a more complete list of all of Perl's historical contributors, please
388 see the F<AUTHORS> file in the Perl source distribution.
389
390 =head1 Reporting Bugs
391
392 If you find what you think is a bug, you might check the perl bug database
393 at L<https://rt.perl.org/>.  There may also be information at
394 L<http://www.perl.org/>, the Perl Home Page.
395
396 If you believe you have an unreported bug, please run the L<perlbug> program
397 included with your release.  Be sure to trim your bug down to a tiny but
398 sufficient test case.  Your bug report, along with the output of C<perl -V>,
399 will be sent off to perlbug@perl.org to be analyzed by the Perl porting team.
400
401 If the bug you are reporting has security implications which make it
402 inappropriate to send to a publicly archived mailing list, then see
403 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
404 for details of how to report the issue.
405
406 =head1 Give Thanks
407
408 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
409 you can do so by running the C<perlthanks> program:
410
411     perlthanks
412
413 This will send an email to the Perl 5 Porters list with your show of thanks.
414
415 =head1 SEE ALSO
416
417 The F<Changes> file for an explanation of how to view exhaustive details on
418 what changed.
419
420 The F<INSTALL> file for how to build Perl.
421
422 The F<README> file for general stuff.
423
424 The F<Artistic> and F<Copying> files for copyright information.
425
426 =cut