This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: Typo, clarification
[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 effect on values that are read-only to begin.
396 Previously, unlocking such values could result in crashes, hangs or
397 other erratic behaviour.
398
399 =item *
400
401 The internal C<looks_like_number> function (which L<Scalar::Util> provides
402 access to) began erroneously to return true for "-e1" in 5.21.4, affecting
403 also C<-'-e1'>.  This has been fixed.
404
405 =item *
406
407 The flip-flop operator (C<..> in scalar context) would return the same
408 scalar each time, unless the containing subroutine was called recursively.
409 Now it always returns a new scalar.  [perl #122829]
410
411 =item *
412
413 Some unterminated C<(?(...)...)> constructs in regular expressions would
414 either crash or give erroneous error messages.  C</(?(1)/> is one such
415 example.
416
417 =item *
418
419 C<pack "w", $tied> no longer calls FETCH twice.
420
421 =item *
422
423 List assignments like C<($x, $z) = (1, $y)> now work correctly if $x and $y
424 have been aliased by C<foreach>.
425
426 =item *
427
428 Some patterns including code blocks with syntax errors, such as
429 C</ (?{(^{})/>, would hang or fail assertions on debugging builds.  Now
430 they produce errors.
431
432 =item *
433
434 An assertion failure when parsing C<sort> with debugging enabled has been
435 fixed.  [perl #122771]
436
437 =item *
438
439 C<*a = *b; @a = split //, $b[1]> could do a bad read and produce junk
440 results.
441
442 =item *
443
444 In C<() = @array = split>, the C<() => at the beginning no longer confuses
445 the optimiser, making it assume a limit of 1.
446
447 =item *
448
449 Fatal warnings no longer prevent the output of syntax errors.
450 [perl #122966]
451
452 =item *
453
454 Fixed a NaN double to long double conversion error on VMS. For quiet NaNs
455 (and only on Itanium, not Alpha) negative infinity instead of NaN was
456 produced. 
457
458 =item *
459
460 Fixed the issue that caused C<< make distclean >> to leave files behind
461 that shouldn't. [perl #122820]
462
463 =item *
464
465 AIX now sets the length in C<< getsockopt >> correctly. [perl #120835],
466 [rt #91183], [rt #85570].
467
468 =item *
469
470 During the pattern optimization phase, we no longer recurse into
471 GOSUB/GOSTART when not SCF_DO_SUBSTR. This prevents the optimizer
472 to run "forever" and exhaust all memory. [perl #122283]
473
474 =item *
475
476 F<< t/op/crypt.t >> now performs SHA-256 algorithm if the default one
477 is disabled. [perl #121591]
478
479 =item *
480
481 Fixed an off-by-one error when setting the size of shared array.
482 [perl #122950]
483
484 =item *
485
486 Fixed a bug that could cause perl to execute an infite loop during
487 compilation. [perl #122995]
488
489 =back
490
491 =head1 Acknowledgements
492
493 XXX Generate this with:
494
495   perl Porting/acknowledgements.pl v5.21.4..HEAD
496
497 =head1 Reporting Bugs
498
499 If you find what you think is a bug, you might check the articles recently
500 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
501 https://rt.perl.org/ .  There may also be information at
502 http://www.perl.org/ , the Perl Home Page.
503
504 If you believe you have an unreported bug, please run the L<perlbug> program
505 included with your release.  Be sure to trim your bug down to a tiny but
506 sufficient test case.  Your bug report, along with the output of C<perl -V>,
507 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
508
509 If the bug you are reporting has security implications, which make it
510 inappropriate to send to a publicly archived mailing list, then please send it
511 to perl5-security-report@perl.org.  This points to a closed subscription
512 unarchived mailing list, which includes all the core committers, who will be
513 able to help assess the impact of issues, figure out a resolution, and help
514 co-ordinate the release of patches to mitigate or fix the problem across all
515 platforms on which Perl is supported.  Please only use this address for
516 security issues in the Perl core, not for modules independently distributed on
517 CPAN.
518
519 =head1 SEE ALSO
520
521 The F<Changes> file for an explanation of how to view exhaustive details on
522 what changed.
523
524 The F<INSTALL> file for how to build Perl.
525
526 The F<README> file for general stuff.
527
528 The F<Artistic> and F<Copying> files for copyright information.
529
530 =cut