This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for split-to-array
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
6 to be processed before release. ]
7
8 perldelta - what is new for perl v5.21.5
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.21.4 release and the 5.21.5
13 release.
14
15 If you are upgrading from an earlier release such as 5.21.3, first read
16 L<perl5214delta>, which describes differences between 5.21.3 and 5.21.4.
17
18 =head1 Notice
19
20 XXX Any important notices here
21
22 =head1 Core Enhancements
23
24 XXX New core language features go here.  Summarize user-visible core language
25 enhancements.  Particularly prominent performance optimisations could go
26 here, but most should go in the L</Performance Enhancements> section.
27
28 [ List each enhancement as a =head2 entry ]
29
30 =head2 New double-diamond operator
31
32 C<<< <<>>> >>> is like C<< <> >> but uses three-argument C<open> to open
33 each file in @ARGV.  So each element of @ARGV is an actual file name, and
34 "|foo" won't be treated as a pipe open.
35
36 =head2 Perl now supports POSIX 2008 locale currency additions.
37
38 On platforms that are able to handle POSIX.1-2008, the
39 hash returned by
40 L<C<POSIX::localeconv()>|perllocale/The localeconv function>
41 includes the international currency fields added by that version of the
42 POSIX standard.  These are
43 C<int_n_cs_precedes>,
44 C<int_n_sep_by_space>,
45 C<int_n_sign_posn>,
46 C<int_p_cs_precedes>,
47 C<int_p_sep_by_space>,
48 and
49 C<int_p_sign_posn>.
50
51 =head1 Security
52
53 =head2 Perl is now compiled with -fstack-protector-strong if available
54
55 Perl has been compiled with the anti-stack-smashing option
56 C<-fstack-protector> since 5.10.1.  Now Perl uses the newer variant
57 called C<-fstack-protector-strong>, if available.  (This was added
58 already in 5.21.4.)
59
60 [ List each security issue as a =head2 entry ]
61
62 =head1 Incompatible Changes
63
64 XXX For a release on a stable branch, this section aspires to be:
65
66     There are no changes intentionally incompatible with 5.XXX.XXX
67     If any exist, they are bugs, and we request that you submit a
68     report.  See L</Reporting Bugs> below.
69
70 [ List each incompatible change as a =head2 entry ]
71
72 =head1 Deprecations
73
74 XXX Any deprecated features, syntax, modules etc. should be listed here.
75
76 =head2 Module removals
77
78 XXX Remove this section if inapplicable.
79
80 The following modules will be removed from the core distribution in a
81 future release, and will at that time need to be installed from CPAN.
82 Distributions on CPAN which require these modules will need to list them as
83 prerequisites.
84
85 The core versions of these modules will now issue C<"deprecated">-category
86 warnings to alert you to this fact.  To silence these deprecation warnings,
87 install the modules in question from CPAN.
88
89 Note that these are (with rare exceptions) fine modules that you are encouraged
90 to continue to use.  Their disinclusion from core primarily hinges on their
91 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
92 not usually on concerns over their design.
93
94 =over
95
96 =item XXX
97
98 XXX Note that deprecated modules should be listed here even if they are listed
99 as an updated module in the L</Modules and Pragmata> section.
100
101 =back
102
103 =head2 Use of multiple /x regexp modifiers
104
105 It is now deprecated to say something like any of the following:
106
107     qr/foo/xx;
108     /(?xax:foo)/;
109     use re qw(/amxx);
110
111 That is, now C<x> should only occur once in any string of contiguous
112 regular expression pattern modifiers.  We do not believe there are any
113 occurrences of this in all of CPAN.  This is in preparation for a future
114 Perl release having C</xx> mean to allow white-space for readability in
115 bracketed character classes (those enclosed in square brackets:
116 C<[...]>).
117
118 =head1 Performance Enhancements
119
120 XXX Changes which enhance performance without changing behaviour go here.
121 There may well be none in a stable release.
122
123 [ List each enhancement as a =item entry ]
124
125 =over 4
126
127 =item *
128
129 C<length> is up to 20% faster for non-magical/non-tied scalars containing a
130 string if it is a non-utf8 string or if C<use bytes;> is in scope.
131
132 =item *
133
134 Non-magical/non-tied scalars that contain only a floating point value and are
135 on most Perl builds with 64 bit integers now use 8-32 less bytes of memory
136 depending on OS.
137
138 =item *
139
140 In C<@array = split>, the assigment can be optimised away with C<split>
141 writing directly to the array.  This optimisation was happening only for
142 package arrays other than @_ and only if the argument to split was an
143 explicit constant or scalar other than $_.  Now this optimisation happens
144 almost all the time.
145
146 =back
147
148 =head1 Modules and Pragmata
149
150 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
151 go here.  If Module::CoreList is updated, generate an initial draft of the
152 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
153 for important changes should then be added by hand.  In an ideal world,
154 dual-life modules would have a F<Changes> file that could be cribbed.
155
156 [ Within each section, list entries as a =item entry ]
157
158 =head2 New Modules and Pragmata
159
160 =over 4
161
162 =item *
163
164 XXX
165
166 =back
167
168 =head2 Updated Modules and Pragmata
169
170 =over 4
171
172 =item *
173
174 L<attributes> has been upgraded from version 0.23 to 0.24.
175
176 Avoid reading beyond the end of a buffer. [perl #122629]
177
178 =item *
179
180 L<B::Deparse> has been upgraded from version 1.28 to 1.29.
181
182 Parenthesised arrays in lists passed to C<\> are now correctly deparsed
183 with parentheses (e.g., C<\(@a, (@b), @c)> now retains the parentheses
184 around @b), this preserving the flattening behaviour of referenced
185 parenthesised arrays.  Formerly, it only worked for one array: C<\(@a)>.
186
187 C<local our> is now deparsed correctly, with the C<our> included.
188
189 C<for($foo; !$bar; $baz) {...}> was deparsed without the C<!> (or C<not>).
190 This has been fixed.
191
192 Core keywords that conflict with lexical subroutines are now deparsed with
193 the C<CORE::> prefix.
194
195 C<foreach state $x (...) {...}> now deparses correctly with C<state> and
196 not C<my>.
197
198 C<our @array = split(...)> now deparses correctly with C<our> in those
199 cases where the assignment is optimised away.
200
201 =item *
202
203 L<DynaLoader> has been upgraded from version 1.26 to 1.27.
204
205 Remove dl_nonlazy global if unused in Dynaloader. [perl #122926]
206
207 =item *
208
209 L<Fcntl> has been upgraded from version 1.12 to 1.13.
210
211 Add support for the Linux pipe buffer size fcntl() commands.
212
213 =item *
214
215 L<Module::CoreList> has been upgraded from version 5.20140920 to 5.20141020.
216
217 Updated to cover the latest releases of Perl.
218
219 =item *
220
221 L<XSLoader> has been upgraded from version 0.17 to 0.18.
222
223 Allow XSLoader to load modules from a different namespace.
224 [perl #122455]
225
226 =back
227
228 =head2 Removed Modules and Pragmata
229
230 =over 4
231
232 =item *
233
234 XXX
235
236 =back
237
238 =head1 Documentation
239
240 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
241 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
242
243 =head2 New Documentation
244
245 XXX Changes which create B<new> files in F<pod/> go here.
246
247 =head3 L<XXX>
248
249 XXX Description of the purpose of the new file here
250
251 =head2 Changes to Existing Documentation
252
253 XXX Changes which significantly change existing files in F<pod/> go here.
254 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
255 section.
256
257 =head3 L<XXX>
258
259 =over 4
260
261 =item *
262
263 Clarifications have been added to L<perlrecharclass/Character Ranges>
264 to the effect that Perl guarantees that C<[A-Z]>, C<[a-z]>, C<[0-9]> and
265 any subranges thereof in regular expression bracketed character classes
266 are guaranteed to match exactly what a naive English speaker would
267 expect them to match, even on platforms (such as EBCDIC) where special
268 handling is required to accomplish this.
269
270 =back
271
272 =head1 Diagnostics
273
274 The following additions or changes have been made to diagnostic output,
275 including warnings and fatal error messages.  For the complete list of
276 diagnostic messages, see L<perldiag>.
277
278 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
279 include any changes in L<perldiag> that reconcile it to the C<C> code.
280
281 =head2 New Diagnostics
282
283 XXX Newly added diagnostic messages go under here, separated into New Errors
284 and New Warnings
285
286 =head3 New Errors
287
288 =over 4
289
290 =item *
291
292 XXX L<message|perldiag/"message">
293
294 =back
295
296 =head3 New Warnings
297
298 =over 4
299
300 =item *
301
302 XXX L<message|perldiag/"message">
303
304 =back
305
306 =head2 Changes to Existing Diagnostics
307
308 XXX Changes (i.e. rewording) of diagnostic messages go here
309
310 =over 4
311
312 =item *
313
314 '"my" variable &foo::bar can't be in a package' has been reworded to say
315 'subroutine' instead of 'variable'.
316
317 =back
318
319 =head1 Utility Changes
320
321 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
322 Most of these are built within the directory F<utils>.
323
324 [ List utility changes as a =head2 entry for each utility and =item
325 entries for each change
326 Use L<XXX> with program names to get proper documentation linking. ]
327
328 =head2 L<XXX>
329
330 =over 4
331
332 =item *
333
334 XXX
335
336 =back
337
338 =head1 Configuration and Compilation
339
340 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
341 go here.  Any other changes to the Perl build process should be listed here.
342 However, any platform-specific changes should be listed in the
343 L</Platform Support> section, instead.
344
345 [ List changes as a =item entry ].
346
347 =over 4
348
349 =item *
350
351 XXX
352
353 =back
354
355 =head1 Testing
356
357 XXX Any significant changes to the testing of a freshly built perl should be
358 listed here.  Changes which create B<new> files in F<t/> go here as do any
359 large changes to the testing harness (e.g. when parallel testing was added).
360 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
361 that they represent may be covered elsewhere.
362
363 [ List each test improvement as a =item entry ]
364
365 =over 4
366
367 =item *
368
369 XXX
370
371 =back
372
373 =head1 Platform Support
374
375 XXX Any changes to platform support should be listed in the sections below.
376
377 [ Within the sections, list each platform as a =item entry with specific
378 changes as paragraphs below it. ]
379
380 =head2 New Platforms
381
382 XXX List any platforms that this version of perl compiles on, that previous
383 versions did not.  These will either be enabled by new files in the F<hints/>
384 directories, or new subdirectories and F<README> files at the top level of the
385 source tree.
386
387 =over 4
388
389 =item XXX-some-platform
390
391 XXX
392
393 =back
394
395 =head2 Discontinued Platforms
396
397 XXX List any platforms that this version of perl no longer compiles on.
398
399 =over 4
400
401 =item XXX-some-platform
402
403 XXX
404
405 =back
406
407 =head2 Platform-Specific Notes
408
409 XXX List any changes for specific platforms.  This could include configuration
410 and compilation changes or changes in portability/compatibility.  However,
411 changes within modules for platforms should generally be listed in the
412 L</Modules and Pragmata> section.
413
414 =over 4
415
416 =item EBCDIC
417
418 Special handling is required on EBCDIC platforms to get C<qr/[i-j]/> to
419 match only C<"i"> and C<"j">, since there are 7 characters between the
420 code points for C<"i"> and C<"j">.  This special handling had only been
421 invoked when both ends of the range are literals.  Now it is also
422 invoked if any of the C<\N{...}> forms for specifying a character by
423 name or Unicode code point is used instead of a literal.  See
424 L<perlrecharclass/Character Ranges>.
425
426 =back
427
428 =head1 Internal Changes
429
430 XXX Changes which affect the interface available to C<XS> code go here.  Other
431 significant internal changes for future core maintainers should be noted as
432 well.
433
434 [ List each change as a =item entry ]
435
436 =over 4
437
438 =item *
439
440 SVs of type SVt_NV are now bodyless when a build configure and platform allow
441 it, specifically C<sizeof(NV) <= sizeof(IV)>. The bodyless trick is the same one
442 as for IVs since 5.9.2, but for NVs, unlike IVs, is not guarenteed on all
443 platforms and build configurations.
444
445 =item *
446
447 The C<$DB::single>, C<$DB::signal> and C<$DB::trace> now have set and
448 get magic that stores their values as IVs and those IVs are used when
449 testing their values in C<pp_dbstate>.  This prevents perl from
450 recursing infinity if an overloaded object is assigned to any of those
451 variables. [perl #122445]
452
453 =item *
454
455 C<Perl_tmps_grow> which is marked as public API but undocumented has been
456 removed from public API. If you use C<EXTEND_MORTAL> macro in your XS code to
457 preextend the mortal stack, you are unaffected by this change.
458
459 =item *
460
461 C<cv_name>, which was introduced in 5.21.4, has been changed incompatibly.
462 It now has a flags field that allows the caller to specify whether the name
463 should be fully qualified.  See L<perlapi/cv_name>.
464
465 =item *
466
467 Internally Perl no longer uses the C<SVs_PADMY> flag.  C<SvPADMY()> now
468 returns a true value for anything not marked PADTMP.  C<SVs_PADMY> is now
469 defined as 0.
470
471 =back
472
473 =head1 Selected Bug Fixes
474
475 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
476 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
477
478 [ List each fix as a =item entry ]
479
480 =over 4
481
482 =item *
483
484 Locking and unlocking values via L<Hash::Util> or C<Internals::SvREADONLY>
485 no longer has any affect on values that are read-only to begin.  Unlocking
486 such values could result in crashes, hangs or other erratic behaviour.
487
488 =item *
489
490 The internal C<looks_like_number> function (which L<Scalar::Util> provides
491 access to) began erroneously to return true for "-e1" in 5.21.4, affecting
492 also C<-'-e1'>.  This has been fixed.
493
494 =item *
495
496 The flip-flop operator (C<..> in scalar context) would return the same
497 scalar each time, unles the containing subroutine was called recursively.
498 Now it always returns a new scalar.  [perl #122829]
499
500 =item *
501
502 Some unterminated C<(?(...)...)> constructs in regular expressions would
503 either crash or give erroneous error messages.  C</(?(1)/> is one such
504 example.
505
506 =item *
507
508 C<pack "w", $tied> no longer calls FETCH twice.
509
510 =item *
511
512 List assignments like C<($x, $z) = (1, $y)> now work correctly if $x and $y
513 have been aliased by C<foreach>.
514
515 =item *
516
517 Some patterns including code blocks with syntax errors, such as
518 C</ (?{(^{})/>, would hang or fail assertions on debugging builds.  Now
519 they produce errors.
520
521 =item *
522
523 An assertion failure when parsing C<sort> with debugging enabled has been
524 fixed.  [perl #122771]
525
526 =item *
527
528 C<*a = *b; @a = split //, $b[1]> could do a bad read and produce junk
529 results.
530
531 =back
532
533 =head1 Known Problems
534
535 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
536 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
537 platform specific bugs also go here.
538
539 [ List each fix as a =item entry ]
540
541 =over 4
542
543 =item *
544
545 XXX
546
547 =back
548
549 =head1 Errata From Previous Releases
550
551 =over 4
552
553 =item *
554
555 XXX Add anything here that we forgot to add, or were mistaken about, in
556 the perldelta of a previous release.
557
558 =back
559
560 =head1 Obituary
561
562 XXX If any significant core contributor has died, we've added a short obituary
563 here.
564
565 =head1 Acknowledgements
566
567 XXX Generate this with:
568
569   perl Porting/acknowledgements.pl v5.21.4..HEAD
570
571 =head1 Reporting Bugs
572
573 If you find what you think is a bug, you might check the articles recently
574 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
575 https://rt.perl.org/ .  There may also be information at
576 http://www.perl.org/ , the Perl Home Page.
577
578 If you believe you have an unreported bug, please run the L<perlbug> program
579 included with your release.  Be sure to trim your bug down to a tiny but
580 sufficient test case.  Your bug report, along with the output of C<perl -V>,
581 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
582
583 If the bug you are reporting has security implications, which make it
584 inappropriate to send to a publicly archived mailing list, then please send it
585 to perl5-security-report@perl.org.  This points to a closed subscription
586 unarchived mailing list, which includes all the core committers, who will be
587 able to help assess the impact of issues, figure out a resolution, and help
588 co-ordinate the release of patches to mitigate or fix the problem across all
589 platforms on which Perl is supported.  Please only use this address for
590 security issues in the Perl core, not for modules independently distributed on
591 CPAN.
592
593 =head1 SEE ALSO
594
595 The F<Changes> file for an explanation of how to view exhaustive details on
596 what changed.
597
598 The F<INSTALL> file for how to build Perl.
599
600 The F<README> file for general stuff.
601
602 The F<Artistic> and F<Copying> files for copyright information.
603
604 =cut