This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
07466ce628500ed7d866fc1c18c76b61307ee6a1
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perldelta - what is new for perl v5.21.5
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.21.4 release and the 5.21.5
10 release.
11
12 If you are upgrading from an earlier release such as 5.21.3, first read
13 L<perl5214delta>, which describes differences between 5.21.3 and 5.21.4.
14
15 =head1 Core Enhancements
16
17 =head2 New double-diamond operator
18
19 C<<< <<>> >>> is like C<< <> >> but uses three-argument C<open> to open
20 each file in @ARGV.  So each element of @ARGV is an actual file name, and
21 "|foo" won't be treated as a pipe open.
22
23 =head2 Aliasing via reference
24
25 Variables and subroutines can now be aliased by assigning to a reference:
26
27     \$c = \$d;
28     \&x = \&y;
29
30 Or by using a backslash before a C<foreach> iterator variable, which is
31 perhaps the most useful idiom this feature provides:
32
33     foreach \%hash (@array_of_hash_refs) { ... }
34
35 This feature is experimental and must be enabled via C<use feature
36 'refaliasing'>.  It will warn unless the C<experimental::refaliasing>
37 warnings category is disabled.
38
39 See L<perlref/Assigning to References>.
40
41 =head2 Perl now supports POSIX 2008 locale currency additions.
42
43 On platforms that are able to handle POSIX.1-2008, the
44 hash returned by
45 L<C<POSIX::localeconv()>|perllocale/The localeconv function>
46 includes the international currency fields added by that version of the
47 POSIX standard.  These are
48 C<int_n_cs_precedes>,
49 C<int_n_sep_by_space>,
50 C<int_n_sign_posn>,
51 C<int_p_cs_precedes>,
52 C<int_p_sep_by_space>,
53 and
54 C<int_p_sign_posn>.
55
56 =head2 Packing infinity or not-a-number into a character is now fatal.
57
58 Before, when trying to pack infinity or not-a-number into a
59 (signed) character, Perl would warn, and assumed you tried to
60 pack C<< 0xFF >>; if you gave it as an argument to C<< chr >>,
61 C<< U+FFFD >> was returned. 
62
63 But now, all such actions (C<< pack >>, C<< chr >>, and C<< print '%c' >>)
64 result in a fatal error.
65
66 =head1 Security
67
68 =head2 Perl is now compiled with -fstack-protector-strong if available
69
70 Perl has been compiled with the anti-stack-smashing option
71 C<-fstack-protector> since 5.10.1.  Now Perl uses the newer variant
72 called C<-fstack-protector-strong>, if available.  (This was added
73 already in 5.21.4.)
74
75 =head1 Deprecations
76
77 =head2 Use of multiple /x regexp modifiers
78
79 It is now deprecated to say something like any of the following:
80
81     qr/foo/xx;
82     /(?xax:foo)/;
83     use re qw(/amxx);
84
85 That is, now C<x> should only occur once in any string of contiguous
86 regular expression pattern modifiers.  We do not believe there are any
87 occurrences of this in all of CPAN.  This is in preparation for a future
88 Perl release having C</xx> mean to allow white-space for readability in
89 bracketed character classes (those enclosed in square brackets:
90 C<[...]>).
91
92 =head1 Performance Enhancements
93
94 =over 4
95
96 =item *
97
98 C<length> is up to 20% faster for non-magical/non-tied scalars containing a
99 string if it is a non-utf8 string or if C<use bytes;> is in scope.
100
101 =item *
102
103 Non-magical/non-tied scalars that contain only a floating point value and are
104 on most Perl builds with 64 bit integers now use 8-32 less bytes of memory
105 depending on OS.
106
107 =item *
108
109 In C<@array = split>, the assigment can be optimised away with C<split>
110 writing directly to the array.  This optimisation was happening only for
111 package arrays other than @_ and only
112 sometimes.  Now this optimisation happens
113 almost all the time.
114
115 =item *
116
117 C<join> is now subject to constant folding.  Moreover, C<join> with a
118 scalar or constant for the separator and a single-item list to join is
119 simplified to a stringification.  The separator doesn't even get evaluated.
120
121 =item *
122
123 C<qq(@array)> is implemented using two ops: a stringify op and a join op.
124 If the qq contains nothing but a single array, the stringification is
125 optimised away.
126
127 =item *
128
129 C<our $var> and C<our($s,@a,%h)> in void context are no longer evaluated at
130 run time.  Even a whole sequence of C<our $foo;> statements will simply be
131 skipped over.  The same applies to C<state> variables.
132
133 =back
134
135 =head1 Modules and Pragmata
136
137 =head2 Updated Modules and Pragmata
138
139 =over 4
140
141 =item *
142
143 L<attributes> has been upgraded from version 0.23 to 0.24.
144
145 Avoid reading beyond the end of a buffer. [perl #122629]
146
147 =item *
148
149 L<B::Concise> has been upgraded from version 0.993 to 0.994.
150
151 Null ops that are part of the execution chain are now given sequence
152 numbers.
153
154 Private flags for nulled ops are now dumped with mnemonics as they would be
155 for the non-nulled counterparts.
156
157 L<B::Deparse> has been upgraded from version 1.28 to 1.29.
158
159 Parenthesised arrays in lists passed to C<\> are now correctly deparsed
160 with parentheses (e.g., C<\(@a, (@b), @c)> now retains the parentheses
161 around @b), this preserving the flattening behaviour of referenced
162 parenthesised arrays.  Formerly, it only worked for one array: C<\(@a)>.
163
164 C<local our> is now deparsed correctly, with the C<our> included.
165
166 C<for($foo; !$bar; $baz) {...}> was deparsed without the C<!> (or C<not>).
167 This has been fixed.
168
169 Core keywords that conflict with lexical subroutines are now deparsed with
170 the C<CORE::> prefix.
171
172 C<foreach state $x (...) {...}> now deparses correctly with C<state> and
173 not C<my>.
174
175 C<our @array = split(...)> now deparses correctly with C<our> in those
176 cases where the assignment is optimised away.
177
178 =item *
179
180 L<DynaLoader> has been upgraded from version 1.26 to 1.27.
181
182 Remove dl_nonlazy global if unused in Dynaloader. [perl #122926]
183
184 =item *
185
186 L<Fcntl> has been upgraded from version 1.12 to 1.13.
187
188 Add support for the Linux pipe buffer size fcntl() commands.
189
190 =item *
191
192 L<File::Find> has been upgraded from version 1.28 to 1.29.
193
194 Slightly faster module loading time.
195
196 =item *
197
198 L<Module::CoreList> has been upgraded from version 5.20140920 to 5.20141020.
199
200 Updated to cover the latest releases of Perl.
201
202 =item *
203
204 The PathTools module collection has been upgraded from version 3.50 to 3.51.
205
206 Slightly faster module loading time.
207
208 =item *
209
210 L<POSIX> has been upgraded from version 1.44 to 1.45.
211
212 POSIX::tmpnam() now produces a deprecation warning.  [perl #122005]
213
214 =item *
215
216 L<XSLoader> has been upgraded from version 0.17 to 0.18.
217
218 Allow XSLoader to load modules from a different namespace.
219 [perl #122455]
220
221 =item *
222
223 L<perlfaq> has been upgraded from version 5.0150045 to version 5.0150046.
224 [perl #123008]
225
226 =back
227
228 =head1 Documentation
229
230 =head2 Changes to Existing Documentation
231
232 =head3 L<perlrecharclass>
233
234 =over 4
235
236 =item *
237
238 Clarifications have been added to L<perlrecharclass/Character Ranges>
239 to the effect that Perl guarantees that C<[A-Z]>, C<[a-z]>, C<[0-9]> and
240 any subranges thereof in regular expression bracketed character classes
241 are guaranteed to match exactly what a naive English speaker would
242 expect them to match, even on platforms (such as EBCDIC) where special
243 handling is required to accomplish this.
244
245 =back
246
247 =head1 Diagnostics
248
249 The following additions or changes have been made to diagnostic output,
250 including warnings and fatal error messages.  For the complete list of
251 diagnostic messages, see L<perldiag>.
252
253 =head2 New Diagnostics
254
255 =head3 New Errors
256
257 =over 4
258
259 =item *
260
261 L<message|perldiag/"Cannot chr %f">
262
263 =item *
264
265 L<message|perldiag/"Cannot compress %f in pack">
266
267 =item *
268
269 L<message|perldiag/"Cannot pack %f with '%c'">
270
271 =item *
272
273 L<message|perldiag/"Cannot printf %f with '%c'">
274
275 =item *
276
277 L<message|perldiag/""my" subroutine %s can't be in a package">
278
279 =back
280
281 =head2 Changes to Existing Diagnostics
282
283 =over 4
284
285 =item *
286
287 '"my" variable &foo::bar can't be in a package' has been reworded to say
288 'subroutine' instead of 'variable'.
289
290 =back
291
292 =head1 Testing
293
294 =over 4
295
296 =item *
297
298 Some regular expression tests are written in such a way that they will
299 run very slowly if certain optimizations break. These tests have been
300 moved into new files, F<< t/re/speed.t >> and F<< t/re/speed_thr.t >>,
301 and are run with a C<< watchdog() >>.
302
303 =back
304
305 =head1 Platform Support
306
307 =head2 Platform-Specific Notes
308
309 =over 4
310
311 =item EBCDIC
312
313 Special handling is required on EBCDIC platforms to get C<qr/[i-j]/> to
314 match only C<"i"> and C<"j">, since there are 7 characters between the
315 code points for C<"i"> and C<"j">.  This special handling had only been
316 invoked when both ends of the range are literals.  Now it is also
317 invoked if any of the C<\N{...}> forms for specifying a character by
318 name or Unicode code point is used instead of a literal.  See
319 L<perlrecharclass/Character Ranges>.
320
321 =back
322
323 =head1 Internal Changes
324
325 =over 4
326
327 =item *
328
329 SVs of type SVt_NV are now bodyless when a build configure and platform allow
330 it, specifically C<sizeof(NV) <= sizeof(IV)>. The bodyless trick is the same one
331 as for IVs since 5.9.2, but for NVs, unlike IVs, is not guarenteed on all
332 platforms and build configurations.
333
334 =item *
335
336 The C<$DB::single>, C<$DB::signal> and C<$DB::trace> now have set and
337 get magic that stores their values as IVs and those IVs are used when
338 testing their values in C<pp_dbstate>.  This prevents perl from
339 recursing infinity if an overloaded object is assigned to any of those
340 variables. [perl #122445]
341
342 =item *
343
344 C<Perl_tmps_grow> which is marked as public API but undocumented has been
345 removed from public API. If you use C<EXTEND_MORTAL> macro in your XS code to
346 preextend the mortal stack, you are unaffected by this change.
347
348 =item *
349
350 C<cv_name>, which was introduced in 5.21.4, has been changed incompatibly.
351 It now has a flags field that allows the caller to specify whether the name
352 should be fully qualified.  See L<perlapi/cv_name>.
353
354 =item *
355
356 Internally Perl no longer uses the C<SVs_PADMY> flag.  C<SvPADMY()> now
357 returns a true value for anything not marked PADTMP.  C<SVs_PADMY> is now
358 defined as 0.
359
360 =item *
361
362 The macros SETsv and SETsvUN have been removed. They were no longer used
363 in the core since commit 6f1401dc2a, and have not been found present on
364 CPAN.
365
366 =item *
367
368 The C<< SvFAKE >> bit (unused on HVs) got informally reserved by
369 David Mitchell for future work on vtables.
370
371 =item *
372
373 The C<sv_catpvn_flags> function accepts C<SV_CATBYTES> and C<SV_CATUTF8>
374 flags, which specify whether the appended string is bytes or utf8,
375 respectively.
376
377 =item *
378
379 A new opcode class, C<< METHOP >> has been introduced, which holds
380 class/method related info needed at runtime to improve performance
381 of class/object method calls.
382
383 C<< OP_METHOD >> and C<< OP_METHOD_NAMED >> are moved from being
384 C<< UNOP/SVOP >> to being C<< METHOD >>.
385
386 =back
387
388 =head1 Selected Bug Fixes
389
390 =over 4
391
392 =item *
393
394 Locking and unlocking values via L<Hash::Util> or C<Internals::SvREADONLY>
395 no longer has any affect on values that are read-only to begin.  Unlocking
396 such values could result in crashes, hangs or other erratic behaviour.
397
398 =item *
399
400 The internal C<looks_like_number> function (which L<Scalar::Util> provides
401 access to) began erroneously to return true for "-e1" in 5.21.4, affecting
402 also C<-'-e1'>.  This has been fixed.
403
404 =item *
405
406 The flip-flop operator (C<..> in scalar context) would return the same
407 scalar each time, unless the containing subroutine was called recursively.
408 Now it always returns a new scalar.  [perl #122829]
409
410 =item *
411
412 Some unterminated C<(?(...)...)> constructs in regular expressions would
413 either crash or give erroneous error messages.  C</(?(1)/> is one such
414 example.
415
416 =item *
417
418 C<pack "w", $tied> no longer calls FETCH twice.
419
420 =item *
421
422 List assignments like C<($x, $z) = (1, $y)> now work correctly if $x and $y
423 have been aliased by C<foreach>.
424
425 =item *
426
427 Some patterns including code blocks with syntax errors, such as
428 C</ (?{(^{})/>, would hang or fail assertions on debugging builds.  Now
429 they produce errors.
430
431 =item *
432
433 An assertion failure when parsing C<sort> with debugging enabled has been
434 fixed.  [perl #122771]
435
436 =item *
437
438 C<*a = *b; @a = split //, $b[1]> could do a bad read and produce junk
439 results.
440
441 =item *
442
443 In C<() = @array = split>, the C<() => at the beginning no longer confuses
444 the optimiser, making it assume a limit of 1.
445
446 =item *
447
448 Fatal warnings no longer prevent the output of syntax errors.
449 [perl #122966]
450
451 =item *
452
453 Fixed a NaN double to long double conversion error on VMS. For quiet NaNs
454 (and only on Itanium, not Alpha) negative infinity instead of NaN was
455 produced. 
456
457 =item *
458
459 Fixed the issue that caused C<< make distclean >> to leave files behind
460 that shouldn't. [perl #122820]
461
462 =item *
463
464 AIX now sets the length in C<< getsockopt >> correctly. [perl #120835],
465 [rt #91183], [rt #85570].
466
467 =item *
468
469 During the pattern optimization phase, we no longer recurse into
470 GOSUB/GOSTART when not SCF_DO_SUBSTR. This prevents the optimizer
471 to run "forever" and exhaust all memory. [perl #122283]
472
473 =item *
474
475 F<< t/op/crypt.t >> now performs SHA-256 algorithm if the default one
476 is disabled. [perl #121591]
477
478 =item *
479
480 Fixed an off-by-one error when setting the size of shared array.
481 [perl #122950]
482
483 =item *
484
485 Fixed a bug that could cause perl to execute an infite loop during
486 compilation. [perl #122995]
487
488 =back
489
490 =head1 Acknowledgements
491
492 XXX Generate this with:
493
494   perl Porting/acknowledgements.pl v5.21.4..HEAD
495
496 =head1 Reporting Bugs
497
498 If you find what you think is a bug, you might check the articles recently
499 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
500 https://rt.perl.org/ .  There may also be information at
501 http://www.perl.org/ , the Perl Home Page.
502
503 If you believe you have an unreported bug, please run the L<perlbug> program
504 included with your release.  Be sure to trim your bug down to a tiny but
505 sufficient test case.  Your bug report, along with the output of C<perl -V>,
506 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
507
508 If the bug you are reporting has security implications, which make it
509 inappropriate to send to a publicly archived mailing list, then please send it
510 to perl5-security-report@perl.org.  This points to a closed subscription
511 unarchived mailing list, which includes all the core committers, who will be
512 able to help assess the impact of issues, figure out a resolution, and help
513 co-ordinate the release of patches to mitigate or fix the problem across all
514 platforms on which Perl is supported.  Please only use this address for
515 security issues in the Perl core, not for modules independently distributed on
516 CPAN.
517
518 =head1 SEE ALSO
519
520 The F<Changes> file for an explanation of how to view exhaustive details on
521 what changed.
522
523 The F<INSTALL> file for how to build Perl.
524
525 The F<README> file for general stuff.
526
527 The F<Artistic> and F<Copying> files for copyright information.
528
529 =cut