This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta - Remove boilerplate sections
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perldelta - what is new for perl v5.21.10
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.21.9 release and the 5.21.10
10 release.
11
12 If you are upgrading from an earlier release such as 5.21.8, first read
13 L<perl5219delta>, which describes differences between 5.21.8 and 5.21.9.
14
15 =head1 Incompatible Changes
16
17 =head2 C<(?[...])> operators now follow standard Perl precedence
18
19 This experimental feature allows set operations in regular expression
20 patterns.  Prior to this, the intersection operator had the same
21 precedence as the other binary operators.  Now it has higher precedence.
22 This could lead to different outcomes than existing code expects (though
23 the documentation has always noted that this change might happen,
24 recommending fully parenthesizing the expressions).  See
25 L<perlrecharclass/Extended Bracketed Character Classes>.
26
27 =head1 Performance Enhancements
28
29 =over 4
30
31 =item *
32
33 The functions
34 C<utf8::native_to_unicode()> and
35 C<utf8::unicode_to_native()> (see L<utf8>)
36 are now optimized out on ASCII platforms.
37 There is now not even a minimal performance hit in writing code portable
38 between ASCII and EBCDIC platforms.
39
40 =back
41
42 =head1 Modules and Pragmata
43
44 =head2 Updated Modules and Pragmata
45
46 =over 4
47
48 =item *
49
50 L<B> has been upgraded from version 1.56 to 1.57.
51
52 =item *
53
54 L<B::Deparse> has been upgraded from version 1.33 to 1.34.
55
56 Deparse C<$#_> as that instead of as C<$#{_}>.
57 L<[perl #123947]|https://rt.perl.org/Ticket/Display.html?id=123947>
58
59 =item *
60
61 L<Carp> has been upgraded from version 1.35 to 1.36.
62
63 =item *
64
65 L<CPAN> has been upgraded from version 2.05 to 2.10.
66
67 =over 4
68
69 =item *
70
71 Add support for C<Cwd::getdcwd()> and introduce workaround for a misbehaviour
72 seen on Strawberry Perl 5.20.1.
73
74 =item *
75
76 Fix C<chdir()> after building dependencies bug.
77
78 =item *
79
80 Introduce experimental support for plugins/hooks.
81
82 =item *
83
84 Integrate the App::Cpan sources.
85
86 =item *
87
88 Do not check recursion on optional dependencies.
89
90 =item *
91
92 Sanity check META.yml to contain a hash.
93 L<[cpan #95271]|https://rt.cpan.org/Ticket/Display.html?id=95271>
94
95 =back
96
97 =item *
98
99 L<CPAN::Meta> has been upgraded from version 2.143240 to 2.150001.
100
101 =item *
102
103 L<Data::Dumper> has been upgraded from version 2.157 to 2.158.
104
105 =item *
106
107 L<DB> has been upgraded from version 1.07 to 1.08.
108
109 =item *
110
111 L<Devel::PPPort> has been upgraded from version 3.28 to 3.31.
112
113 =item *
114
115 L<DynaLoader> has been upgraded from version 1.31 to 1.32.
116
117 =item *
118
119 L<Encode> has been upgraded from version 2.70 to 2.72.
120
121 =item *
122
123 L<encoding> has been upgraded from version 2.13 to 2.14.
124
125 =item *
126
127 L<Getopt::Long> has been upgraded from version 2.43 to 2.45.
128
129 =item *
130
131 L<locale> has been upgraded from version 1.05 to 1.06.
132
133 =item *
134
135 L<Locale::Codes> has been upgraded from version 3.33 to 3.34.
136
137 =item *
138
139 L<Module::CoreList> has been upgraded from version 5.20150220 to 5.20150320.
140
141 =item *
142
143 L<parent> has been upgraded from version 0.228 to 0.232.
144
145 No changes to installed files other than the version bump.
146
147 =item *
148
149 The PathTools modules have been upgraded from version 3.54 to 3.55.
150
151 =item *
152
153 L<Pod::Functions> has been upgraded from version 1.08 to 1.09.
154
155 =item *
156
157 L<POSIX> has been upgraded from version 1.51 to 1.52.
158
159 =item *
160
161 L<re> has been upgraded from version 0.31 to 0.32.
162
163 =item *
164
165 L<sigtrap> has been upgraded from version 1.07 to 1.08.
166
167 =item *
168
169 L<Term::Complete> has been upgraded from version 1.402 to 1.403.
170
171 =item *
172
173 L<Test::Simple> has been reverted from version 1.301001_098 to 1.001014.
174
175 =item *
176
177 L<Text::Balanced> has been upgraded from version 2.02 to 2.03.
178
179 No changes to installed files other than the version bump.
180
181 =item *
182
183 L<Text::ParseWords> has been upgraded from version 3.29 to 3.30.
184
185 =item *
186
187 L<threads> has been upgraded from version 1.96_001 to 2.01.
188
189 =item *
190
191 L<Unicode::Collate> has been upgraded from version 1.11 to 1.12.
192
193 =item *
194
195 L<utf8> has been upgraded from version 1.14 to 1.15.
196
197 =back
198
199 =head1 Documentation
200
201 =head2 Changes to Existing Documentation
202
203 =head3 L<perldata>
204
205 =over 4
206
207 =item *
208
209 Documentation has been added regarding the special floating point values C<Inf>
210 and C<NaN>.
211
212 =back
213
214 =head3 L<perlexperiment>
215
216 =over 4
217
218 =item *
219
220 Removed note about C<\s> matching C<VT> now that it is no longer experimental.
221
222 =item *
223
224 Added note that C<use re 'strict'> has been introduced experimentally.
225
226 =back
227
228 =head3 L<perlpolicy>
229
230 =over 4
231
232 =item *
233
234 The documentation of what to expect to see in future maintenance releases has
235 been updated.  Essentially the same types of changes will be included as before
236 but with fewer changes that don't affect the installation or execution of perl.
237
238 =back
239
240 =head1 Diagnostics
241
242 The following additions or changes have been made to diagnostic output,
243 including warnings and fatal error messages.  For the complete list of
244 diagnostic messages, see L<perldiag>.
245
246 =head2 New Diagnostics
247
248 =head3 New Errors
249
250 =over 4
251
252 =item *
253
254 L<Invalid quantifier in {,} in regex; marked by <-- HERE in mE<sol>%sE<sol>|perldiag/"Invalid quantifier in {,} in regex; marked by <-- HERE in m/%s/">
255
256 (F) The pattern looks like a {min,max} quantifier, but the min or max could not
257 be parsed as a valid number - either it has leading zeroes, or it represents
258 too big a number to cope with.  The S<<-- HERE> shows where in the regular
259 expression the problem was discovered.  See L<perlre>.
260
261 =back
262
263 =head1 Testing
264
265 =over 4
266
267 =item *
268
269 Tests for performance issues have been added in the file F<t/perf/taint.t>.
270
271 =back
272
273 =head1 Platform Support
274
275 =head2 New Platforms
276
277 =over 4
278
279 =item z/OS running EBCDIC Code Page 1047
280
281 Core perl now works on this EBCDIC platform.  Early perls also worked,
282 but, even though support wasn't officially withdrawn, recent perls would
283 not compile and run well.  Perl v5.20 would work, but had many bugs
284 which have now been fixed.  Many CPAN modules that ship with Perl still
285 fail tests, including Pod::Simple.  However the version of Pod::Simple
286 currently on CPAN should work; it was fixed too late to include in
287 Perl v5.22.  Work is under way to fix many of the still-broken CPAN
288 modules, which likely will be installed on CPAN when completed, so that
289 you may not have to wait until v5.24 to get a working version.
290
291 =back
292
293 =head2 Platform-Specific Notes
294
295 =over 4
296
297 =item HP-UX
298
299 The archname now distinguishes use64bitint from use64bitall.
300
301 =back
302
303 =head1 Internal Changes
304
305 =over 4
306
307 =item *
308
309 Macros have been created to allow XS code to better manipulate the POSIX
310 locale category C<LC_NUMERIC>.
311 See L<perlapi/Locale-related functions and macros>.
312
313 =item *
314
315 The previous C<atoi> et al replacement function, C<grok_atou>, has now been
316 superseded by C<grok_atoUV>.  See L<perlclib> for details.
317
318 =back
319
320 =head1 Selected Bug Fixes
321
322 =over 4
323
324 =item *
325
326 Repeated global pattern matches in scalar context on large tainted
327 strings were exponentially slow depending on the current match
328 position in the string.
329 L<[perl #123202]|https://rt.perl.org/Ticket/Display.html?id=123202>
330
331 =item *
332
333 Various crashes due to the parser getting confused by syntax errors have
334 been fixed.
335 L<[perl #123801]|https://rt.perl.org/Ticket/Display.html?id=123801>
336 L<[perl #123802]|https://rt.perl.org/Ticket/Display.html?id=123802>
337 L<[perl #123955]|https://rt.perl.org/Ticket/Display.html?id=123955>
338 L<[perl #123995]|https://rt.perl.org/Ticket/Display.html?id=123995>
339
340 =item *
341
342 C<split> in the scope of lexical $_ has been fixed not to fail assertions.
343 L<[perl #123763]|https://rt.perl.org/Ticket/Display.html?id=123763>
344
345 =item *
346
347 C<my $x : attr> syntax inside various list operators no longer fails
348 assertions.
349 L<[perl #123817]|https://rt.perl.org/Ticket/Display.html?id=123817>
350
351 =item *
352
353 An @ sign in quotes followed by a non-ASCII digit (which is not a valid
354 identifier) would cause the parser to crash, instead of simply trying the @
355 as literal.  This has been fixed.
356 L<[perl #123963]|https://rt.perl.org/Ticket/Display.html?id=123963>
357
358 =item *
359
360 C<*bar::=*foo::=*glob_with_hash> has been crashing since 5.14, but no
361 longer does.
362 L<[perl #123847]|https://rt.perl.org/Ticket/Display.html?id=123847>
363
364 =item *
365
366 C<foreach> in scalar context was not pushing an item on to the stack,
367 resulting in bugs.  (C<print 4, scalar do { foreach(@x){} } + 1> would
368 print 5.)  It has been fixed to return C<undef>.
369 L<[perl #124004]|https://rt.perl.org/Ticket/Display.html?id=124004>
370
371 =item *
372
373 A memory leak introduced in Perl 5.21.6 has been fixed.
374 L<[perl #123922]|https://rt.perl.org/Ticket/Display.html?id=123922>
375
376 =item *
377
378 A regression in the behaviour of the C<readline> built-in function, caused by
379 the introduction of the C<< <<>> >> operator, has been fixed.
380 L<[perl #123990]|https://rt.perl.org/Ticket/Display.html?id=123990>
381
382 =item *
383
384 Several cases of data used to store environment variable contents in core C
385 code being potentially overwritten before being used have been fixed.
386 L<[perl #123748]|https://rt.perl.org/Ticket/Display.html?id=123748>
387
388 =back
389
390 =head1 Known Problems
391
392 =over 4
393
394 =item *
395
396 A goal is for Perl to be able to be recompiled to work reasonably well
397 on any Unicode version.  In v5.22, though, the earliest such version is
398 Unicode 5.1 (current is 7.0).
399
400 =item *
401
402 EBCDIC platforms
403
404 =over 4
405
406 =item *
407
408 Encode and encoding are mostly broken.
409
410 =item *
411
412 Many cpan modules that are shipped with core show failing tests
413
414 =item *
415
416 C<pack>/C<unpack> with C<"U0"> format may not work properly.
417
418 =back
419
420 =back
421
422 =head1 Acknowledgements
423
424 XXX Generate this with:
425
426   perl Porting/acknowledgements.pl v5.21.9..HEAD
427
428 =head1 Reporting Bugs
429
430 If you find what you think is a bug, you might check the articles recently
431 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
432 https://rt.perl.org/ .  There may also be information at
433 http://www.perl.org/ , the Perl Home Page.
434
435 If you believe you have an unreported bug, please run the L<perlbug> program
436 included with your release.  Be sure to trim your bug down to a tiny but
437 sufficient test case.  Your bug report, along with the output of C<perl -V>,
438 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
439
440 If the bug you are reporting has security implications, which make it
441 inappropriate to send to a publicly archived mailing list, then please send it
442 to perl5-security-report@perl.org.  This points to a closed subscription
443 unarchived mailing list, which includes all the core committers, who will be
444 able to help assess the impact of issues, figure out a resolution, and help
445 co-ordinate the release of patches to mitigate or fix the problem across all
446 platforms on which Perl is supported.  Please only use this address for
447 security issues in the Perl core, not for modules independently distributed on
448 CPAN.
449
450 =head1 SEE ALSO
451
452 The F<Changes> file for an explanation of how to view exhaustive details on
453 what changed.
454
455 The F<INSTALL> file for how to build Perl.
456
457 The F<README> file for general stuff.
458
459 The F<Artistic> and F<Copying> files for copyright information.
460
461 =cut