This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Scalar keys assignment through lvalue subs
[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
6 XXX needs to be processed before release. ]
7
8 perldelta - what is new for perl v5.15.0
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.15.0 release and
13 the 5.14.0 release.
14
15 If you are upgrading from an earlier release such as 5.YYY.YYY, first read
16 L<perl5YYYdelta>, which describes differences between 5.ZZZ.ZZZ and
17 5.YYY.YYY.
18
19 Some of the changes have been included in Perl 5.14.1.  These are
20 indicated with a "(5.14.1)" marker.
21
22 =head1 Notice
23
24 XXX Any important notices here
25
26 =head1 Core Enhancements
27
28 XXX New core language features go here. Summarise user-visible core language
29 enhancements. Particularly prominent performance optimisations could go
30 here, but most should go in the L</Performance Enhancements> section.
31
32 [ List each enhancement as a =head2 entry ]
33
34 =head1 Security
35
36 XXX Any security-related notices go here.  In particular, any security
37 vulnerabilities closed should be noted here rather than in the
38 L</Selected Bug Fixes> section.
39
40 [ List each security issue as a =head2 entry ]
41
42 =head1 Incompatible Changes
43
44 [ List each incompatible change as a =head2 entry ]
45
46 =head1 Deprecations
47
48 XXX Any deprecated features, syntax, modules etc. should be listed here.
49 In particular, deprecated modules should be listed here even if they are
50 listed as an updated module in the L</Modules and Pragmata> section.
51
52 [ List each deprecation as a =head2 entry ]
53
54 =head1 Performance Enhancements
55
56 XXX Changes which enhance performance without changing behaviour go here. There
57 may well be none in a stable release.
58
59 [ List each enhancement as a =item entry ]
60
61 =over 4
62
63 =item *
64
65 XXX
66
67 =back
68
69 =head1 Modules and Pragmata
70
71 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
72 go here.  If Module::CoreList is updated, generate an initial draft of the
73 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
74 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
75 below.  A paragraph summary for important changes should then be added by hand.
76 In an ideal world, dual-life modules would have a F<Changes> file that could be
77 cribbed.
78
79 [ Within each section, list entries as a =item entry ]
80
81 =head2 New Modules and Pragmata
82
83 =over 4
84
85 =item *
86
87 XXX
88
89 =back
90
91 =head2 Updated Modules and Pragmata
92
93 =over 4
94
95 =item *
96
97 L<Archive::Extract> has been upgraded from version 0.48 to version 0.52
98
99 Includes a fix for FreeBSD to only use C<unzip> if it is located in
100 C</usr/local/bin>, as FreeBSD 9.0 will ship with a limited C<unzip> in
101 C</usr/bin>.
102
103 =item *
104
105 L<B> has been upgraded from version 1.29 to version 1.30.
106
107 =item *
108
109 L<B::Deparse> has been upgraded from version 1.03 to 1.05.
110
111 It addresses two regressions in Perl 5.14.0:
112
113 =over
114
115 =item *
116
117 Deparsing of the C<glob> operator and its diamond (C<< <> >>) form now
118 works again [RT #90898] (5.14.1).
119
120 =item *
121
122 The presence of subroutines named C<::::> or C<::::::> no longer causes
123 B::Deparse to hang (5.14.1).
124
125 =back
126
127 XXX Other Deparse fixes go here.
128
129 =item *
130
131 L<CGI> has been upgraded from version 3.52 to version 3.54
132
133 The DELETE HTTP verb is now supported.
134
135 =item *
136
137 L<Compress::Zlib> has been upgraded from version 2.033 to version 2.035
138
139 =item *
140
141 L<Compress::Raw::Bzip2> has been upgraded from version 2.033 to version 2.035
142
143 =item *
144
145 L<Compress::Raw::Zlib> has been upgraded from version 2.033 to version 2.035
146
147 =item *
148
149 L<CPAN::Meta> has been upgraded from version 2.110440 to version 2.110930
150
151 commit 0dc56b6ea90acbb1f9e29a03d008475a618262f3
152 Author: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
153 Date:   Wed May 18 11:12:21 2011 +0100
154
155 =item *
156
157 L<CPANPLUS> has been upgraded from version 0.9103 to version 0.9105
158
159 Now understands specifying modules to install in the format 'Module/Type.pm'
160
161 =item *
162
163 L<CPANPLUS::Dist::Build> has been upgraded from version 0.54 to version 0.56
164
165 =item *
166
167 L<DB_File> has been upgraded from version 1.821 to version 1.822
168
169 Warnings are now in sync with perl's
170
171 =item *
172
173 L<Digest::SHA> has been upgraded from version 5.61 to version 5.62
174
175 No longer loads L<MIME::Base64> as this was unnecessary.
176
177 =item *
178
179 L<Devel::Peek> has been upgraded from version 1.07 to 1.08.
180
181 Its C<fill_mstats> function no longer refuses to write to copy-on-write
182 scalars.
183
184 =item *
185
186 L<Encode> has been upgraded from version 2.42 to version 2.43
187
188 Missing aliases added, a deep recursion error fixed and various
189 documentation updates.
190
191 =item *
192
193 L<Filter::Util::Call> has been upgraded from version 1.08 to version 1.39
194
195 C<decrypt> fixed to work with v5.14.0
196
197 =item *
198
199 L<JSON::PP> has been upgraded from version 2.27105 to version 2.27200
200
201 Fixed C<incr_parse> decoding string more correctly.
202
203 =item *
204
205 L<Math::Complex> has been upgraded from version 1.56 to version 1.57.
206
207 Correct copy constructor usage.
208 Fix polarwise formatting with numeric format specifier.
209 More stable C<great_circle_direction> algorithm.
210
211 =item *
212
213 L<Object::Accessor> has been upgraded from version 0.38 to version 0.42
214
215 Eliminated use of C<exists> on array elements which has been deprecated.
216
217 =item *
218
219 L<PerlIO::encoding> has been upgraded from version 0.14 to 0.15
220
221 =item *
222
223 L<PerlIO::scalar> has been upgraded from version 0.11 to 0.12.
224
225 It fixes a problem with C<< open my $fh, ">", \$scalar >> not working if
226 C<$scalar> is a copy-on-write scalar.
227
228 =item *
229
230 XXX If any changes are made, the version will need to be bumped again.
231 What blead has is currently (as of a9d1f3db, 7th of June) identical to
232 5.14.1's version.
233
234 L<Pod::Perldoc> has been upgraded from version 3.15_03 to 3.15_04.
235
236 It corrects the search paths on VMS [RT #90640].
237
238 =item *
239
240 L<Storable> has been upgraded from version 2.27 to version 2.28.
241
242 It no longer turns copy-on-write scalars into read-only scalars when
243 freezing and thawing.
244
245 =item *
246
247 L<Sys::Syslog> has been upgraded from version 0.27 to version 0.29
248
249 Large number of Request Tickets resolved.
250
251 =item *
252
253 L<Time::HiRes> has been upgraded from version 1.9721_01 to version 1.9722.
254
255 Portability fix, and avoiding some compiler warnings.
256
257 =item *
258
259 L<Module::CoreList> has been upgraded from version 2.49 to 2.50.
260
261 Updated for v5.12.4.
262
263 =item *
264
265 L<Unicode::Collate> has been upgraded from version 0.73 to version 0.76
266
267 Updated to CLDR 1.9.1
268
269 =item *
270
271 L<Unicode::Normalize> has been upgraded from version 1.10 to version 1.12
272
273 Fixes for the removal of C<unicore/CompositionExclusions.txt> from core.
274
275 =item *
276
277 L<XSLoader> has been upgraded from version 0.13 to version 0.15
278
279 Integrated changes from bleadperl
280
281 =item *
282
283 XXX
284
285 =back
286
287 =head2 Removed Modules and Pragmata
288
289 =over 4
290
291 =item *
292
293 XXX
294
295 =back
296
297 =head1 Documentation
298
299 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
300 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
301
302 =head2 New Documentation
303
304 XXX Changes which create B<new> files in F<pod/> go here.
305
306 =head3 L<XXX>
307
308 XXX Description of the purpose of the new file here
309
310 =head2 Changes to Existing Documentation
311
312 XXX Changes which significantly change existing files in F<pod/> go here.
313 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
314 section.
315
316 =head3 L<perlfunc>
317
318 =over
319
320 =item *
321
322 C<given>, C<when> and C<default> are now listed in L<perlfunc> (5.14.1).
323
324 =back
325
326 =head3 L<perllol>
327
328 =over
329
330 =item *
331
332 L<perllol> has been expanded with examples using the new C<push $scalar>
333 syntax introduced in Perl 5.14.0 (5.14.1).
334
335 =back
336
337 =head3 L<perlop>
338
339 =over 4
340
341 =item *
342
343 The explanation of bitwise operators has been expanded to explain how they
344 work on Unicode strings (5.14.1).
345
346 =item *
347
348 The section on the triple-dot or yada-yada operator has been moved up, as
349 it used to separate two closely related sections about the comma operator
350 (5.14.1).
351
352 =item *
353
354 More examples for C<m//g> have been added (5.14.1).
355
356 =item *
357
358 The C<<< <<\FOO >>> here-doc syntax has been documented (5.14.1).
359
360 =back
361
362 =head3 L<perlrun>
363
364 =over
365
366 =item *
367
368 L<perlrun> has undergone a significant clean-up.  Most notably, the
369 B<-0x...> form of the B<-0> flag has been clarified, and the final section
370 on environment variables has been corrected and expanded (5.14.1).
371
372 =back
373
374 =head1 Diagnostics
375
376 The following additions or changes have been made to diagnostic output,
377 including warnings and fatal error messages.  For the complete list of
378 diagnostic messages, see L<perldiag>.
379
380 XXX New or changed warnings emitted by the core's C<C> code go here. Also
381 include any changes in L<perldiag> that reconcile it to the C<C> code.
382
383 [ Within each section, list entries as a =item entry ]
384
385 =head2 New Diagnostics
386
387 XXX Newly added diagnostic messages go here
388
389 =over 4
390
391 =item *
392
393 Assigning to a temporary scalar returned from an XS lvalue subroutine now
394 produces a warning: "Useless assignment to a temporary".  This should help
395 PDL users [RT #31946].
396
397 =back
398
399 =head2 Changes to Existing Diagnostics
400
401 XXX Changes (i.e. rewording) of diagnostic messages go here
402
403 =over 4
404
405 =item *
406
407 XXX
408
409 =back
410
411 =head1 Utility Changes
412
413 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
414 here. Most of these are built within the directories F<utils> and F<x2p>.
415
416 [ List utility changes as a =head3 entry for each utility and =item
417 entries for each change
418 Use L<XXX> with program names to get proper documentation linking. ]
419
420 =head3 L<XXX>
421
422 =over 4
423
424 =item *
425
426 XXX
427
428 =back
429
430 =head1 Configuration and Compilation
431
432 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
433 go here.  Any other changes to the Perl build process should be listed here.
434 However, any platform-specific changes should be listed in the
435 L</Platform Support> section, instead.
436
437 [ List changes as a =item entry ].
438
439 =over 4
440
441 =item *
442
443 F<regexp.h> has been modified for compatibility with GCC's B<-Werror>
444 option, as used by some projects that include perl's header files (5.14.1).
445
446 =back
447
448 =head1 Testing
449
450 XXX Any significant changes to the testing of a freshly built perl should be
451 listed here.  Changes which create B<new> files in F<t/> go here as do any
452 large changes to the testing harness (e.g. when parallel testing was added).
453 Changes to existing files in F<t/> aren't worth summarising, although the bugs
454 that they represent may be covered elsewhere.
455
456 [ List each test improvement as a =item entry ]
457
458 =over 4
459
460 =item *
461
462 XXX
463
464 =back
465
466 =head1 Platform Support
467
468 XXX Any changes to platform support should be listed in the sections below.
469
470 [ Within the sections, list each platform as a =item entry with specific
471 changes as paragraphs below it. ]
472
473 =head2 New Platforms
474
475 XXX List any platforms that this version of perl compiles on, that previous
476 versions did not. These will either be enabled by new files in the F<hints/>
477 directories, or new subdirectories and F<README> files at the top level of the
478 source tree.
479
480 =over 4
481
482 =item XXX-some-platform
483
484 XXX
485
486 =back
487
488 =head2 Discontinued Platforms
489
490 XXX List any platforms that this version of perl no longer compiles on.
491
492 =over 4
493
494 =item XXX-some-platform
495
496 XXX
497
498 =back
499
500 =head2 Platform-Specific Notes
501
502 XXX List any changes for specific platforms. This could include configuration
503 and compilation changes or changes in portability/compatibility.  However,
504 changes within modules for platforms should generally be listed in the
505 L</Modules and Pragmata> section.
506
507 =over 4
508
509 =item XXX-some-platform
510
511 XXX
512
513 =back
514
515 =head1 Internal Changes
516
517 XXX Changes which affect the interface available to C<XS> code go here.
518 Other significant internal changes for future core maintainers should
519 be noted as well.
520
521 =over 4
522
523 =item *
524
525 The compiled representation of formats is now stored via the mg_ptr of
526 their PERL_MAGIC_fm. Previously it was stored in the string buffer,
527 beyond SvLEN(), the regular end of the string. SvCOMPILED() and
528 SvCOMPILED_{on,off}() now exist solely for compatibility for XS code.
529 The first is always 0, the other two now no-ops.
530
531 =back
532
533 =head1 Selected Bug Fixes
534
535 XXX Important bug fixes in the core language are summarised here.
536 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
537 L</Modules and Pragmata>.
538
539 [ List each fix as a =item entry ]
540
541 =over 4
542
543 =item *
544
545 The new (in 5.14.0) regular expression modifier C</a> when repeated like
546 C</aa> forbids the characters outside the ASCII range that match
547 characters inside that range from matching under C</i>.  This did not
548 work under some circumstances, all involving alternation, such as:
549
550  "\N{KELVIN SIGN}" =~ /k|foo/iaa;
551
552 succeeded inaprropriately.  This is now fixed.
553
554 =item *
555
556 5.14.0 introduced some memory leaks in regular expression character
557 classes such as C<[\w\s]>, which have now been fixed (5.14.1).
558
559 =item *
560
561 An edge case in regular expression matching could potentially loop.
562 This happened only under C</i> in bracketed character classes that have
563 characters with multi-character folds, and the target string to match
564 against includes the first portion of the fold, followed by another
565 character that has a multi-character fold that begins with the remaining
566 portion of the fold, plus some more.
567
568  "s\N{U+DF}" =~ /[\x{DF}foo]/i
569
570 is one such case.  C<\xDF> folds to C<"ss"> (5.14.1).
571
572 =item *
573
574 A few characters in regular expression pattern matches did not
575 match correctly in some circumstances, all involving C</i>.  The
576 affected characters are:
577 COMBINING GREEK YPOGEGRAMMENI,
578 GREEK CAPITAL LETTER IOTA,
579 GREEK CAPITAL LETTER UPSILON,
580 GREEK PROSGEGRAMMENI,
581 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA,
582 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS,
583 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA,
584 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS,
585 LATIN SMALL LETTER LONG S,
586 LATIN SMALL LIGATURE LONG S T,
587 and
588 LATIN SMALL LIGATURE ST.
589
590 =item *
591
592 Formats: number of edge cases have been fixed with formats and formline;
593 in particular, where the format itself is potentially variable (such as
594 with ties and overloading), and where the format and data differ in their
595 encoding. In both these cases, it used to possible for the output to be
596 corrupted.
597
598 =item *
599
600 A bug has been fixed that would cause a "Use of freed value in iteration"
601 error if the next two hash elements that would be iterated over are
602 deleted [RT #85026] (5.14.1).
603
604 =item *
605
606 Passing the same constant subroutine to both C<index> and C<formline> no
607 longer causes one or the other to fail [RT #89218] (5.14.1).
608
609 =item *
610
611 XXX Someone tell me whether this first clause is correct (see commit
612 765f542d):
613
614 Copy-on-write scalars were introduced in 5.10.0.  These occur when
615 C<__PACKAGE__> or a hash key is a assigned to a scalar.  Several parts
616 of Perl were not updated to account for them, but have now been fixed:
617
618 =over
619
620 =item *
621
622 C<utf8::decode> had a nasty bug that would modify copy-on-write scalars'
623 string buffers in place (i.e., skipping the copy).  This could result in
624 hashes having two elements with the same key [RT #91834].
625
626 =item *
627
628 Lvalue subroutines were not allowing COW scalars to be returned.  This was
629 fixed for lvalue scalar context in Perl 5.12.3 and 5.14.0, but list context
630 was not fixed until this release.
631
632 =item *
633
634 Elements of restricted hashes (see the L<fields> pragma) containing
635 copy-on-write values couldn't be deleted, nor could such hashes be cleared
636 (C<%hash = ()>).
637
638 =item *
639
640 Localising a tied variable used to make it read-only if it contained a
641 copy-on-write string.
642
643 =item *
644
645 L<Storable>, L<Devel::Peek> and L<PerlIO::scalar> had similar problems.
646 See L</Updated Modules and Pragmata>, above.
647
648 =back
649
650 =item *
651
652 There have been various fixes to lvalue subroutines:
653
654 XXX Should these first three go under New Features?
655
656 =over
657
658 =item *
659
660 Explicit return now returns the actual argument passed to return, instead
661 of copying it [RT #72724].
662
663 =item *
664
665 Lvalue subroutines used to enforce lvalue syntax (i.e., whatever can go on
666 the left-hand side of C<=>) for the last statement and the arguments to
667 return.  Since lvalue subroutines are not always called in lvalue context,
668 this restriction has been lifted.
669
670 =item *
671
672 Lvalue subroutines are less restrictive as to what values can be returned.
673 It used to croak on values returned by C<shift> and C<delete> and from
674 other subroutines, but no longer does so.
675
676 =item *
677
678 Empty lvalue subroutines (C<sub :lvalue {}>) used to return C<@_> in list
679 context.  In fact, all subroutines used to, but regular subs were fixed in
680 Perl 5.8.2.  Now lvalue subroutines have been likewise fixed.
681
682 =item *
683
684 Lvalue subroutines used to copy their return values in rvalue context.  Not
685 only was this a waste of CPU cycles, but it also caused bugs.  A C<($)>
686 prototype would cause an lvalue sub to copy its return value [RT #62498],
687 and C<while(lvalue_sub() =~ m/.../g) { ... }> would loop endlessly
688 [RT #78680].
689
690 =item *
691
692 Autovivification now works on values returned from lvalue subroutines
693 [RT #7946].
694
695 =item *
696
697 XXX This entry is probably too sarcastic in its use of "inanities".  But
698 I'm too tired to think of a better wording.
699
700 When called in pass-by-reference context (e.g., subroutine arguments or a
701 list passed to C<for>), an lvalue subroutine returning arrays or hashes
702 used to bind the arrays (or hashes) to scalar variables--something that is
703 not supposed to happen.  This could result in "Bizzare copy of ARRAY"
704 errors or C<print> ignoring its arguments.  It also made inanities like
705 C<@{\$_}> "work".  This was fixed in 5.14.0 if an array were the first
706 thing returned from the subroutine (but not for C<$scalar, @array> or
707 hashes being returned).  Now a more general fix has been applied
708 [RT #23790].
709
710 =item *
711
712 Assignment to C<keys> returned from an lvalue sub used not to work, but now
713 it does.
714
715 =back
716
717 =item *
718
719 List assignment to lexical variables declared with attributes in the same
720 statement (C<my ($x,@y) : blimp = (72,94)>) stopped working in Perl 5.8.0.
721 It has now been fixed.
722
723 =back
724
725 =head1 Known Problems
726
727 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
728 tests that had to be C<TODO>ed for the release would be noted here, unless
729 they were specific to a particular platform (see below).
730
731 This is a list of some significant unfixed bugs, which are regressions
732 from either 5.XXX.XXX or 5.XXX.XXX.
733
734 [ List each fix as a =item entry ]
735
736 =over 4
737
738 =item *
739
740 XXX
741
742 =back
743
744 =head1 Obituary
745
746 XXX If any significant core contributor has died, we've added a short obituary
747 here.
748
749 =head1 Acknowledgements
750
751 XXX The list of people to thank goes here.
752
753 =head1 Reporting Bugs
754
755 If you find what you think is a bug, you might check the articles
756 recently posted to the comp.lang.perl.misc newsgroup and the perl
757 bug database at http://rt.perl.org/perlbug/ .  There may also be
758 information at http://www.perl.org/ , the Perl Home Page.
759
760 If you believe you have an unreported bug, please run the L<perlbug>
761 program included with your release.  Be sure to trim your bug down
762 to a tiny but sufficient test case.  Your bug report, along with the
763 output of C<perl -V>, will be sent off to perlbug@perl.org to be
764 analysed by the Perl porting team.
765
766 If the bug you are reporting has security implications, which make it
767 inappropriate to send to a publicly archived mailing list, then please send
768 it to perl5-security-report@perl.org. This points to a closed subscription
769 unarchived mailing list, which includes all the core committers, who be able
770 to help assess the impact of issues, figure out a resolution, and help
771 co-ordinate the release of patches to mitigate or fix the problem across all
772 platforms on which Perl is supported. Please only use this address for
773 security issues in the Perl core, not for modules independently
774 distributed on CPAN.
775
776 =head1 SEE ALSO
777
778 The F<Changes> file for an explanation of how to view exhaustive details
779 on what changed.
780
781 The F<INSTALL> file for how to build Perl.
782
783 The F<README> file for general stuff.
784
785 The F<Artistic> and F<Copying> files for copyright information.
786
787 =cut