This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add more Travis CI flavors to the matrix
[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 Windows
265
266 socket() now sets C<$!> if the protocol, address family and socket
267 type combination is not found.  [perl #133853]
268
269 =back
270
271 =head1 Internal Changes
272
273 XXX Changes which affect the interface available to C<XS> code go here.  Other
274 significant internal changes for future core maintainers should be noted as
275 well.
276
277 [ List each change as an =item entry ]
278
279 =over 4
280
281 =item *
282
283 It is now forbidden to malloc more than C<PTRDIFF_T_MAX> bytes.  Much
284 code (including C optimizers) assumes that all data structures will not
285 be larger than this, so this catches such attempts before overflow
286 happens.
287
288 =back
289
290 =head1 Selected Bug Fixes
291
292 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
293 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
294
295 [ List each fix as an =item entry ]
296
297 =over 4
298
299 =item *
300
301 Regular expression matching no longer leaves stale UTF-8 length magic
302 when updating C<$^R>. This could result in C<length($^R)> returning
303 an incorrect value.
304
305 =item *
306
307 Fix a qr/[...]/ bug introduced in v5.29.7
308
309 Using /il should not result in looking for a [:posix:] class
310 that matches the code points given.
311
312 =item *
313
314 Reduce recursion on ops [perl #108276]
315
316 This can prevent stack overflow when processing extremely deep op
317 trees.
318
319 =item *
320
321 Avoid leak in multiconcat with overloading. [perl #133789]
322
323 =item *
324
325 The handling of user-defined C<\p{}> properties (see
326 L<perlunicode/User-Defined Character Properties>) has been rewritten to
327 be in C (instead of Perl).  This speeds things up, but in the process
328 several inconsistencies and bug fixes are made.
329
330 =over
331
332 =item 1
333
334 A few error messages have minor wording changes.  This is essentially
335 because the new way is integrated into the regex error handling
336 mechanism that marks the position in the input at which the error
337 occurred.  That was not possible previously.  The messages now also
338 contain additional back-trace-like information in case the error occurs
339 deep in nested calls.
340
341 =item 2
342
343 A user-defined property is implemented as a perl subroutine with certain
344 highly constrained naming conventions.  It was documented previously
345 that the sub would be in the current package if the package was
346 unspecified.  This turned out not to be true in all cases, but now it
347 is.
348
349 =item 3
350
351 All recursive calls are treated as infinite recursion.  Previously they
352 would cause the interpreter to panic.  Now, they cause the regex pattern
353 to fail to compile.
354
355 =item 4
356
357 Similarly, any other error likely would lead to a panic; now to just the
358 pattern failing to compile.
359
360 =item 5
361
362 The old mechanism did not detect illegal ranges in the definition of the
363 property.  Now, the range max must not be smaller than the range min.
364 Otherwise, the pattern fails to compile.
365
366 =item 6
367
368 The intention was to have each sub called only once during the lifetime
369 of the program, so that a property's definition is immutable.  This was
370 relaxed so that it could be called once for all /i compilations, and
371 potentially a second time for non-/i (the sub is passed a parameter
372 indicating which).  However, in practice there were instances when this
373 was broken, and multiple calls were possible.  Those have been fixed.
374 Now (besides the /i,non-/i cases) the only way a sub can be called
375 multiple times is if some component of it has not been defined yet.  For
376 example, suppose we have sub IsA() whose definition is known at compile
377 time, and it in turn calls isB() whose definition is not yet known.
378 isA() will be called each time a pattern it appears in is compiled.  If
379 isA() also calls isC() and that definition is known, isC() will be
380 called just once.
381
382 =item 7
383
384 There were some races and very long hangs should one thread be compiling
385 the same property as another simultaneously.  These have now been fixed.
386
387 =back
388
389 =item * Assertion failure in compiling invalid regex pattern [perl #133767]
390
391 This bug was introduced in the 5.29 series, so this should not be in the
392 perldelta for 5.30.
393
394 =item * Null pointer deref [perl #133770]
395
396 This bug was introduced in the 5.29 series, so this should not be in the
397 perldelta for 5.30.
398
399 =back
400
401 =head1 Acknowledgements
402
403 XXX Generate this with:
404
405   perl Porting/acknowledgements.pl v5.29.7..HEAD
406
407 =head1 Reporting Bugs
408
409 If you find what you think is a bug, you might check the perl bug database
410 at L<https://rt.perl.org/>.  There may also be information at
411 L<http://www.perl.org/>, the Perl Home Page.
412
413 If you believe you have an unreported bug, please run the L<perlbug> program
414 included with your release.  Be sure to trim your bug down to a tiny but
415 sufficient test case.  Your bug report, along with the output of C<perl -V>,
416 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
417
418 If the bug you are reporting has security implications which make it
419 inappropriate to send to a publicly archived mailing list, then see
420 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
421 for details of how to report the issue.
422
423 =head1 Give Thanks
424
425 If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
426 you can do so by running the C<perlthanks> program:
427
428     perlthanks
429
430 This will send an email to the Perl 5 Porters list with your show of thanks.
431
432 =head1 SEE ALSO
433
434 The F<Changes> file for an explanation of how to view exhaustive details on
435 what changed.
436
437 The F<INSTALL> file for how to build Perl.
438
439 The F<README> file for general stuff.
440
441 The F<Artistic> and F<Copying> files for copyright information.
442
443 =cut