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