This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta up to 571f0e8
[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
f5938650 10=for comment
87d00a71 11This has been completed up to 571f0e8.
f5938650 12
34dc2ec0 13=head1 DESCRIPTION
a27ff1be 14
34dc2ec0
DM
15This document describes differences between the 5.15.0 release and
16the 5.14.0 release.
a27ff1be 17
34dc2ec0
DM
18If you are upgrading from an earlier release such as 5.YYY.YYY, first read
19L<perl5YYYdelta>, which describes differences between 5.ZZZ.ZZZ and
205.YYY.YYY.
a27ff1be 21
760696b8
FC
22Some of the changes have been included in Perl 5.14.1. These are
23indicated with a "(5.14.1)" marker.
24
bdab33d1
DG
25XXX compare this perldelta to 5.14.1 and double check the notation
26
34dc2ec0 27=head1 Notice
a27ff1be 28
34dc2ec0 29XXX Any important notices here
a27ff1be 30
34dc2ec0 31=head1 Core Enhancements
a27ff1be 32
34dc2ec0
DM
33XXX New core language features go here. Summarise user-visible core language
34enhancements. Particularly prominent performance optimisations could go
35here, but most should go in the L</Performance Enhancements> section.
a27ff1be 36
34dc2ec0 37[ List each enhancement as a =head2 entry ]
a27ff1be 38
9dcb8368
FC
39=head2 C<CORE::> works on all keywords
40
41The C<CORE::> prefix can now be used on keywords enabled by
42L<feature.pm|feature>, even outside the scope of C<use feature>.
43
9cdac2a2
FC
44=head2 C<$$> can be assigned to
45
46C<$$> was made read-only in Perl 5.8.0. But only sometimes: C<local $$>
47would make it writable again. Some CPAN modules were using C<local $$> or
48XS code to bypass the read-only check, so there is no reason to keep C<$$>
49read-only. (This change also allowed a bug to be fixed while maintaining
50backward compatibility.)
51
87d00a71
FC
52=head2 Features inside the debugger
53
54The current Perl's feature bundle is now enabled for commands entered in
55the interactive debugger.
56
34dc2ec0 57=head1 Security
a27ff1be 58
34dc2ec0
DM
59XXX Any security-related notices go here. In particular, any security
60vulnerabilities closed should be noted here rather than in the
61L</Selected Bug Fixes> section.
a27ff1be 62
34dc2ec0 63[ List each security issue as a =head2 entry ]
a27ff1be 64
34dc2ec0 65=head1 Incompatible Changes
9a5a48b7 66
34dc2ec0 67[ List each incompatible change as a =head2 entry ]
9a5a48b7 68
87d00a71
FC
69=head2 Tying scalars that hold typeglobs
70
71Attempting to tie a scalar after a typeglob was assigned to it would
72instead tie the handle in the typeglob's IO slot. This meant that it was
73impossible to tie the scalar itself. Similar problems affected C<tied> and
74C<untie>: C<tied $scalar> would return false on a tied scalar if the last
75thing returned was a typeglob, and C<untie $scalar> on such a tied scalar
76would do nothing.
77
78We fixed this problem before Perl 5.14.0, but it caused problems with some
79CPAN modules, so we put in a deprecation cycle instead.
80
81Now the deprecation has been removed and this bug has been fixed. So
82C<tie $scalar> will always tie the scalar, not the handle it holds. To tie
83the handle, use C<tie *$scalar> (with an explicit asterisk). The same
84applies to C<tied *$scalar> and C<untie *$scalar>.
85
34dc2ec0 86=head1 Deprecations
cdc10f43 87
34dc2ec0
DM
88XXX Any deprecated features, syntax, modules etc. should be listed here.
89In particular, deprecated modules should be listed here even if they are
90listed as an updated module in the L</Modules and Pragmata> section.
cdc10f43 91
34dc2ec0 92[ List each deprecation as a =head2 entry ]
9a5a48b7 93
34dc2ec0 94=head1 Performance Enhancements
9a5a48b7 95
34dc2ec0
DM
96XXX Changes which enhance performance without changing behaviour go here. There
97may well be none in a stable release.
9a5a48b7 98
34dc2ec0 99[ List each enhancement as a =item entry ]
9a5a48b7 100
34dc2ec0 101=over 4
c8c13991 102
5076a392
FC
103=item *
104
34dc2ec0 105XXX
e8e35311
FC
106
107=back
108
34dc2ec0 109=head1 Modules and Pragmata
c8c13991 110
34dc2ec0
DM
111XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
112go here. If Module::CoreList is updated, generate an initial draft of the
113following sections using F<Porting/corelist-perldelta.pl>, which prints stub
114entries to STDOUT. Results can be pasted in place of the '=head2' entries
115below. A paragraph summary for important changes should then be added by hand.
116In an ideal world, dual-life modules would have a F<Changes> file that could be
117cribbed.
f00d3350 118
34dc2ec0 119[ Within each section, list entries as a =item entry ]
e9784f55 120
34dc2ec0 121=head2 New Modules and Pragmata
d430b8e7 122
34dc2ec0 123=over 4
d430b8e7 124
31ecc2aa
FC
125=item *
126
34dc2ec0 127XXX
31ecc2aa 128
e9784f55 129=back
c34a735e 130
34dc2ec0 131=head2 Updated Modules and Pragmata
24b164a5 132
34dc2ec0 133=over 4
2c389f6c 134
9780b8fa
FC
135=item *
136
bdab33d1
DG
137L<constant> has been updated from version 1.21 to 1.22.
138
139=item *
140
1c861f7c
CBW
141L<Archive::Extract> has been upgraded from version 0.48 to version 0.52
142
143Includes a fix for FreeBSD to only use C<unzip> if it is located in
144C</usr/local/bin>, as FreeBSD 9.0 will ship with a limited C<unzip> in
145C</usr/bin>.
146
147=item *
148
bdab33d1
DG
149L<Attribute::Handlers> updated from version 0.88 to 0.91
150
151=item *
152
daca484d
NC
153L<B> has been upgraded from version 1.29 to version 1.30.
154
155=item *
156
760696b8
FC
157L<B::Deparse> has been upgraded from version 1.03 to 1.05.
158
159It addresses two regressions in Perl 5.14.0:
160
161=over
162
163=item *
164
165Deparsing of the C<glob> operator and its diamond (C<< <> >>) form now
166works again [RT #90898] (5.14.1).
167
168=item *
169
170The presence of subroutines named C<::::> or C<::::::> no longer causes
171B::Deparse to hang (5.14.1).
172
173=back
174
f5938650
FC
175Plus a few other bugs:
176
177=over
178
179=item *
180
181Deparsing of handle C<keys>, C<each> and C<value> with a scalar argument
182now works [RT #91008].
183
184=item *
185
186C<readpipe> followed by a complex expression (as opposed to a simple scalar
187variable) now works.
188
189=item *
6693394d
FC
190
191It now puts C<CORE::> in front of overridable core keywords if they
192conflict with user-defined subroutines.
760696b8
FC
193
194=item *
195
f5938650
FC
196Deparsing assignment to an lvalue method specified as a variable
197(C<< $obj->$method = ... >>) used not to work [RT #62498].
198
199=back
200
201=item *
202
1c861f7c
CBW
203L<CGI> has been upgraded from version 3.52 to version 3.54
204
205The DELETE HTTP verb is now supported.
206
207=item *
208
209L<Compress::Zlib> has been upgraded from version 2.033 to version 2.035
210
211=item *
212
213L<Compress::Raw::Bzip2> has been upgraded from version 2.033 to version 2.035
214
215=item *
216
217L<Compress::Raw::Zlib> has been upgraded from version 2.033 to version 2.035
218
219=item *
220
221L<CPAN::Meta> has been upgraded from version 2.110440 to version 2.110930
222
1c861f7c
CBW
223=item *
224
225L<CPANPLUS> has been upgraded from version 0.9103 to version 0.9105
226
227Now understands specifying modules to install in the format 'Module/Type.pm'
228
229=item *
230
231L<CPANPLUS::Dist::Build> has been upgraded from version 0.54 to version 0.56
232
233=item *
234
bdab33d1
DG
235L<Data::Dumper> has been upgraded from version 2.128 to 2.131.
236
237=item *
238
1c861f7c
CBW
239L<DB_File> has been upgraded from version 1.821 to version 1.822
240
241Warnings are now in sync with perl's
242
243=item *
244
245L<Digest::SHA> has been upgraded from version 5.61 to version 5.62
246
247No longer loads L<MIME::Base64> as this was unnecessary.
248
249=item *
250
975dff8c
FC
251L<Devel::Peek> has been upgraded from version 1.07 to 1.08.
252
253Its C<fill_mstats> function no longer refuses to write to copy-on-write
254scalars.
255
256=item *
257
1c861f7c
CBW
258L<Encode> has been upgraded from version 2.42 to version 2.43
259
260Missing aliases added, a deep recursion error fixed and various
261documentation updates.
262
263=item *
264
bdab33d1
DG
265L<ExtUtils::CBuilder> updated from version 0.280203 to 0.280204. The new version
266append CFLAGS and LDFLAGS to their Config.pm counterparts.
267
268=item *
269
1c861f7c
CBW
270L<Filter::Util::Call> has been upgraded from version 1.08 to version 1.39
271
272C<decrypt> fixed to work with v5.14.0
273
274=item *
275
bdab33d1
DG
276L<Filter::Simple> updated from version 0.85 to 0.87
277
278=item *
279
280L<FindBin> updated from version 1.50 to 1.51.
281
6693394d
FC
282It no longer returns a wrong result if a script of the same name as the
283current one exists in the path and is executable.
284
bdab33d1
DG
285=item *
286
1c861f7c
CBW
287L<JSON::PP> has been upgraded from version 2.27105 to version 2.27200
288
289Fixed C<incr_parse> decoding string more correctly.
290
291=item *
292
76fadaa8
LB
293L<I18N::LangTags> has been upgraded from version 0.35_01 to version 0.36.
294
295Fix broken URLs for RFCs.
296
297=item *
298
031f91ce
NC
299L<IPC::Open3> has been upgraded from version 1.10 to version 1.11.
300
301=over 4
302
303=item *
304
305Fixes a bug which prevented use of open3 on Windows when *STDIN, *STDOUT or
306*STDERR had been localized.
307
9f3ee5ee
NC
308=item *
309
310Fixes a bug which prevented duplicating numeric file descriptors on Windows.
311
031f91ce
NC
312=back
313
314=item *
315
87d00a71
FC
316L<Math::BigFloat> has been upgraded from version 1.993 to 1.994.
317
318The C<numify> method has been corrected to return a normalised Perl number
319(the result of C<0 + $thing>), instead of a string [rt.cpan.org #66732].
320
321=item *
322
323L<Math::BigInt> has been upgraded from version 1.994 to 1.995.
324
325It provides a new C<bsgn> method that complements the C<babs> method.
326
327It fixes the internal C<objectify> function's handling of "foreign objects"
328so they are converted to the appropriate class (Math::BigInt or
329Math::BigFloat).
330
331=item *
332
f95396b3 333L<Math::Complex> has been upgraded from version 1.56 to version 1.57.
3194a40a
Z
334
335Correct copy constructor usage.
336Fix polarwise formatting with numeric format specifier.
337More stable C<great_circle_direction> algorithm.
338
339=item *
340
6693394d
FC
341L<Module::CoreList> has been upgraded from version 2.49 to 2.50.
342
343Updated for v5.12.4.
bdab33d1
DG
344
345=item *
346
b43aaa67
LB
347L<mro> has been updated to remove two broken URLs in the documentation.
348
349=item *
350
1c861f7c
CBW
351L<Object::Accessor> has been upgraded from version 0.38 to version 0.42
352
353Eliminated use of C<exists> on array elements which has been deprecated.
354
355=item *
356
e5904012
NC
357L<PerlIO::encoding> has been upgraded from version 0.14 to 0.15
358
359=item *
360
975dff8c
FC
361L<PerlIO::scalar> has been upgraded from version 0.11 to 0.12.
362
363It fixes a problem with C<< open my $fh, ">", \$scalar >> not working if
364C<$scalar> is a copy-on-write scalar.
365
f5938650
FC
366It also fixes a hang that occurs with C<readline> or C<< <$fh> >> if a
367typeglob has been assigned to $scalar [RT #92258].
368
975dff8c
FC
369=item *
370
760696b8
FC
371XXX If any changes are made, the version will need to be bumped again.
372What blead has is currently (as of a9d1f3db, 7th of June) identical to
3735.14.1's version.
374
375L<Pod::Perldoc> has been upgraded from version 3.15_03 to 3.15_04.
376
377It corrects the search paths on VMS [RT #90640].
378
379=item *
380
daca484d
NC
381L<Storable> has been upgraded from version 2.27 to version 2.28.
382
975dff8c
FC
383It no longer turns copy-on-write scalars into read-only scalars when
384freezing and thawing.
385
daca484d
NC
386=item *
387
1c861f7c
CBW
388L<Sys::Syslog> has been upgraded from version 0.27 to version 0.29
389
390Large number of Request Tickets resolved.
391
392=item *
393
f95396b3 394L<Time::HiRes> has been upgraded from version 1.9721_01 to version 1.9722.
91a2e9f6
Z
395
396Portability fix, and avoiding some compiler warnings.
397
398=item *
399
1c861f7c
CBW
400L<Unicode::Collate> has been upgraded from version 0.73 to version 0.76
401
402Updated to CLDR 1.9.1
403
404=item *
405
406L<Unicode::Normalize> has been upgraded from version 1.10 to version 1.12
407
408Fixes for the removal of C<unicore/CompositionExclusions.txt> from core.
409
410=item *
411
412L<XSLoader> has been upgraded from version 0.13 to version 0.15
413
414Integrated changes from bleadperl
415
416=item *
417
34dc2ec0 418XXX
9780b8fa 419
e8e35311
FC
420=back
421
34dc2ec0 422=head2 Removed Modules and Pragmata
bdb0cce8 423
34dc2ec0 424=over 4
44691e6f 425
5076a392 426=item *
44691e6f 427
34dc2ec0 428XXX
e8e35311
FC
429
430=back
431
34dc2ec0 432=head1 Documentation
44691e6f 433
34dc2ec0
DM
434XXX Changes to files in F<pod/> go here. Consider grouping entries by
435file and be sure to link to the appropriate page, e.g. L<perlfunc>.
6d96b0fe 436
34dc2ec0 437=head2 New Documentation
6d96b0fe 438
34dc2ec0 439XXX Changes which create B<new> files in F<pod/> go here.
6d96b0fe 440
34dc2ec0 441=head3 L<XXX>
e8e35311 442
34dc2ec0 443XXX Description of the purpose of the new file here
6d96b0fe 444
34dc2ec0 445=head2 Changes to Existing Documentation
b7188eb5 446
34dc2ec0
DM
447XXX Changes which significantly change existing files in F<pod/> go here.
448However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
449section.
b7188eb5 450
bdab33d1
DG
451=head3 L<perlfork>
452
453=over
454
455=item *
456
457Added portability caveats related to using kill on forked process.
458
459=back
460
760696b8
FC
461=head3 L<perlfunc>
462
463=over
464
465=item *
466
467C<given>, C<when> and C<default> are now listed in L<perlfunc> (5.14.1).
468
6693394d
FC
469=item *
470
471The examples for the C<select> function no longer use strings for file
472handles.
473
760696b8
FC
474=back
475
f5938650
FC
476=head3 L<perlguts>
477
478=over
479
480=item *
481
482Some of the function descriptions in L<perlguts> were confusing, as it was
483not clear whether they referred to the function above or below the
484description. This has been clarified [RT #91790].
485
486=back
487
760696b8
FC
488=head3 L<perllol>
489
490=over
491
492=item *
493
494L<perllol> has been expanded with examples using the new C<push $scalar>
495syntax introduced in Perl 5.14.0 (5.14.1).
496
497=back
498
6693394d
FC
499=head3 L<perlmod>
500
501=over
502
503=item *
504
505L<perlmod> now states explicitly that some types of explicit symbol table
506manipulation are not supported. This codifies what was effectively already
507the case [RT #78074].
508
509=back
510
760696b8 511=head3 L<perlop>
b7188eb5 512
34dc2ec0 513=over 4
e8e35311 514
2c389f6c
FC
515=item *
516
760696b8
FC
517The explanation of bitwise operators has been expanded to explain how they
518work on Unicode strings (5.14.1).
519
520=item *
521
522The section on the triple-dot or yada-yada operator has been moved up, as
523it used to separate two closely related sections about the comma operator
524(5.14.1).
525
526=item *
527
528More examples for C<m//g> have been added (5.14.1).
529
530=item *
531
532The C<<< <<\FOO >>> here-doc syntax has been documented (5.14.1).
533
534=back
535
6693394d
FC
536=head3 L<perlpodstyle>
537
538=over 4
539
540=item *
541
542The tips on which formatting codes to use have been corrected and greatly
543expanded.
544
545=item *
546
547There are now a couple of example one-liners for previewing POD files after
548they have been edited.
549
550=back
551
552=head3 L<perlre>
553
554=over
555
556=item *
557
558The C<(*COMMIT)> directive is now listed in the right section
559(L<Verbs without an argument|perlre/Verbs without an argument>).
560
561=back
562
760696b8
FC
563=head3 L<perlrun>
564
565=over
566
567=item *
568
569L<perlrun> has undergone a significant clean-up. Most notably, the
570B<-0x...> form of the B<-0> flag has been clarified, and the final section
571on environment variables has been corrected and expanded (5.14.1).
2c389f6c 572
e8e35311
FC
573=back
574
f5938650
FC
575=head3 L<perlvar>
576
577=over
578
579=item *
580
581The documentation for L<$!|perlvar/$!> has been corrected and clarified.
582It used to state that $! could be C<undef>, which is not the case. It was
583also unclear as to whether system calls set C's C<errno> or Perl's C<$!>
584[RT #91614].
585
586=back
587
6693394d
FC
588=head3 L<POSIX>
589
590=over
591
592=item *
593
594The invocation documentation for C<WIFEXITED>, C<WEXITSTATUS>,
595C<WIFSIGNALED>, C<WTERMSIG>, C<WIFSTOPPED>, and C<WSTOPSIG> has been
596corrected (5.14.1).
597
598=back
599
34dc2ec0 600=head1 Diagnostics
b7188eb5 601
34dc2ec0
DM
602The following additions or changes have been made to diagnostic output,
603including warnings and fatal error messages. For the complete list of
604diagnostic messages, see L<perldiag>.
44691e6f 605
34dc2ec0
DM
606XXX New or changed warnings emitted by the core's C<C> code go here. Also
607include any changes in L<perldiag> that reconcile it to the C<C> code.
6c9cd4a1 608
34dc2ec0 609[ Within each section, list entries as a =item entry ]
6c9cd4a1 610
34dc2ec0 611=head2 New Diagnostics
44691e6f 612
34dc2ec0 613XXX Newly added diagnostic messages go here
44691e6f 614
bdab33d1
DG
615=head3 New Warnings
616
34dc2ec0 617=over 4
44691e6f 618
bdab33d1 619=item L<Useless assignment to a temporary|perldiag/"Useless assignment to a temporary">
44691e6f 620
bdab33d1
DG
621Assigning to a temporary returned from an XS lvalue subroutine now produces a
622warning [RT #31946].
2c389f6c
FC
623
624=back
625
34dc2ec0 626=head2 Changes to Existing Diagnostics
b7188eb5 627
34dc2ec0 628XXX Changes (i.e. rewording) of diagnostic messages go here
b7188eb5 629
34dc2ec0 630=over 4
b7188eb5 631
5076a392 632=item *
b7188eb5 633
34dc2ec0 634XXX
b7188eb5 635
e8e35311 636=back
5076a392 637
34dc2ec0 638=head1 Utility Changes
5076a392 639
34dc2ec0
DM
640XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
641here. Most of these are built within the directories F<utils> and F<x2p>.
5076a392 642
34dc2ec0
DM
643[ List utility changes as a =head3 entry for each utility and =item
644entries for each change
645Use L<XXX> with program names to get proper documentation linking. ]
5076a392 646
34dc2ec0 647=head3 L<XXX>
5076a392 648
34dc2ec0 649=over 4
5076a392
FC
650
651=item *
652
34dc2ec0 653XXX
5076a392 654
2c389f6c 655=back
e8e35311 656
34dc2ec0 657=head1 Configuration and Compilation
5076a392 658
34dc2ec0
DM
659XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
660go here. Any other changes to the Perl build process should be listed here.
661However, any platform-specific changes should be listed in the
662L</Platform Support> section, instead.
2c389f6c 663
34dc2ec0 664[ List changes as a =item entry ].
2c389f6c 665
34dc2ec0 666=over 4
5076a392 667
e8e35311 668=item *
5076a392 669
760696b8
FC
670F<regexp.h> has been modified for compatibility with GCC's B<-Werror>
671option, as used by some projects that include perl's header files (5.14.1).
5076a392 672
bdab33d1
DG
673=item *
674
675USE_LOCALE{,_COLLATE,_CTYPE,_NUMERIC} have been added the output of perl -V
676as they have affect the behaviour of the interpreter binary (albeit only
677in a small area).
678
34dc2ec0 679=back
5076a392 680
34dc2ec0 681=head1 Testing
5076a392 682
34dc2ec0
DM
683XXX Any significant changes to the testing of a freshly built perl should be
684listed here. Changes which create B<new> files in F<t/> go here as do any
685large changes to the testing harness (e.g. when parallel testing was added).
686Changes to existing files in F<t/> aren't worth summarising, although the bugs
687that they represent may be covered elsewhere.
5076a392 688
34dc2ec0 689[ List each test improvement as a =item entry ]
5076a392 690
34dc2ec0 691=over 4
5076a392
FC
692
693=item *
694
34dc2ec0 695XXX
e8e35311 696
34dc2ec0 697=back
5076a392 698
34dc2ec0 699=head1 Platform Support
5076a392 700
34dc2ec0 701XXX Any changes to platform support should be listed in the sections below.
5076a392 702
34dc2ec0
DM
703[ Within the sections, list each platform as a =item entry with specific
704changes as paragraphs below it. ]
5076a392 705
34dc2ec0 706=head2 New Platforms
5076a392 707
34dc2ec0
DM
708XXX List any platforms that this version of perl compiles on, that previous
709versions did not. These will either be enabled by new files in the F<hints/>
710directories, or new subdirectories and F<README> files at the top level of the
711source tree.
cdc10f43 712
34dc2ec0 713=over 4
cdc10f43 714
bdab33d1 715=item GNU/Hurd
d430b8e7 716
bdab33d1
DG
717=over
718
719=item *
720
721No longer overrides possible extra $ccflags values given to Configure
722on GNU/Hurd. C.f. Bug-Debian: http://bugs.debian.org/587901
723
724=back
725
726=item Mac OS X
727
728Clarified apple developer tools requirements in README.macosx
729
730=item MSWin32
731
732Supplied F<makefile.mk> patched to support gcc-4.x.x and README.win32
733updated accordingly. [RT #91354]
734
735=item Solaris
736
737Updated the list of required packages for building perl to reflect Solaris 9
738and 10 in README.solaris [RT #90850]
d430b8e7 739
2c389f6c 740=back
5076a392 741
34dc2ec0 742=head2 Discontinued Platforms
5076a392 743
34dc2ec0 744XXX List any platforms that this version of perl no longer compiles on.
5076a392 745
34dc2ec0 746=over 4
e8e35311 747
34dc2ec0 748=item XXX-some-platform
e8e35311 749
34dc2ec0 750XXX
1e463951 751
c71a852f 752=back
b7188eb5 753
34dc2ec0 754=head2 Platform-Specific Notes
42a91c97 755
34dc2ec0
DM
756XXX List any changes for specific platforms. This could include configuration
757and compilation changes or changes in portability/compatibility. However,
758changes within modules for platforms should generally be listed in the
759L</Modules and Pragmata> section.
42a91c97 760
6693394d
FC
761=head3 Ubuntu Linux
762
34dc2ec0 763=over 4
42a91c97 764
6693394d 765=item *
42a91c97 766
6693394d
FC
767The L<ODBM_File> installation process has been updated with the new library
768paths on Ubuntu natty [RT #90106].
769
770=item *
771
772I<h2ph> now gets the include paths from gcc correctly. This stopped
773working when Ubuntu switched to a "multiarch" setup [RT #90122].
42a91c97 774
34dc2ec0 775=back
42a91c97 776
34dc2ec0 777=head1 Internal Changes
42a91c97 778
34dc2ec0
DM
779XXX Changes which affect the interface available to C<XS> code go here.
780Other significant internal changes for future core maintainers should
781be noted as well.
42a91c97 782
34dc2ec0 783=over 4
42a91c97 784
2c389f6c
FC
785=item *
786
c13a5c80
NC
787When empting a hash of its elements (e.g. via undef(%h), or %h=()), HvARRAY
788field is no longer temporarily zeroed. Any destructors called on the freed
789elements see the remaining elements. Thus, %h=() becomes more like C<delete
790$h{$_} for keys %h>.
791
792=item *
793
74e0ddf7
NC
794The compiled representation of formats is now stored via the mg_ptr of
795their PERL_MAGIC_fm. Previously it was stored in the string buffer,
796beyond SvLEN(), the regular end of the string. SvCOMPILED() and
797SvCOMPILED_{on,off}() now exist solely for compatibility for XS code.
798The first is always 0, the other two now no-ops.
cdc10f43 799
bdab33d1
DG
800=item *
801
c13a5c80
NC
802Boyer-Moore compiled scalars are now PVMGs, and the Boyer-Moore tables are now
803stored via the mg_ptr of their PERL_MAGIC_bm. Previously they were PVGVs, with
804the tables stored in the string buffer, beyond SvLEN(). This eliminates the
805last place where the core stores data beyond SvLEN().
bdab33d1 806
571f0e86
NC
807=item *
808
809C<pos> in lvalue context now returns a PVMG instead of a PVLV, storing the
810target SV in C<mg_obj>, instead of C<LvTARG()>.
811
34dc2ec0 812=back
cdc10f43 813
34dc2ec0 814=head1 Selected Bug Fixes
cdc10f43 815
34dc2ec0
DM
816XXX Important bug fixes in the core language are summarised here.
817Bug fixes in files in F<ext/> and F<lib/> are best summarised in
818L</Modules and Pragmata>.
cdc10f43 819
34dc2ec0 820[ List each fix as a =item entry ]
d430b8e7 821
bdab33d1
DG
822=head2 Regular expressions and character classes
823
34dc2ec0 824=over 4
d430b8e7
FC
825
826=item *
827
f7a45dff
KW
828The new (in 5.14.0) regular expression modifier C</a> when repeated like
829C</aa> forbids the characters outside the ASCII range that match
830characters inside that range from matching under C</i>. This did not
831work under some circumstances, all involving alternation, such as:
832
833 "\N{KELVIN SIGN}" =~ /k|foo/iaa;
834
6693394d 835succeeded inappropriately. This is now fixed.
f7a45dff
KW
836
837=item *
838
8395.14.0 introduced some memory leaks in regular expression character
bdab33d1 840classes such as C<[\w\s]>, which have now been fixed
f7a45dff
KW
841
842=item *
843
844An edge case in regular expression matching could potentially loop.
845This happened only under C</i> in bracketed character classes that have
846characters with multi-character folds, and the target string to match
847against includes the first portion of the fold, followed by another
848character that has a multi-character fold that begins with the remaining
849portion of the fold, plus some more.
850
851 "s\N{U+DF}" =~ /[\x{DF}foo]/i
852
bdab33d1 853is one such case. C<\xDF> folds to C<"ss">
f7a45dff
KW
854
855=item *
856
857A few characters in regular expression pattern matches did not
858match correctly in some circumstances, all involving C</i>. The
859affected characters are:
860COMBINING GREEK YPOGEGRAMMENI,
861GREEK CAPITAL LETTER IOTA,
862GREEK CAPITAL LETTER UPSILON,
863GREEK PROSGEGRAMMENI,
864GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA,
865GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS,
866GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA,
867GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS,
868LATIN SMALL LETTER LONG S,
869LATIN SMALL LIGATURE LONG S T,
870and
871LATIN SMALL LIGATURE ST.
d430b8e7 872
2fbb14a0
DG
873=item *
874
bdab33d1
DG
875Fixed memory leak regression in regular expression compilation
876under threading
877
878=back
879
880=head2 Formats
881
f5938650
FC
882=over
883
884=item *
885
886A number of edge cases have been fixed with formats and C<formline>;
2fbb14a0
DG
887in particular, where the format itself is potentially variable (such as
888with ties and overloading), and where the format and data differ in their
889encoding. In both these cases, it used to possible for the output to be
f5938650
FC
890corrupted [RT #91032].
891
892=item *
893
894C<formline> no longer converts its argument into a string in-place. So
895passing a reference to C<formline> no longer destroys the reference
896[RT #79532].
897
898=back
2fbb14a0 899
bdab33d1 900=head2 Copy-on-write scalars
975dff8c 901
6693394d
FC
902Copy-on-write scalars were introduced in 5.6.0, but most Perl code
903did not encounter them (they were used mostly internally). Perl
9045.10.0 extended them, such that assigning C<__PACKAGE__> or a
905hash key to a scalar would make it copy-on-write. Several parts
bdab33d1 906of Perl were not updated to account for them, but have now been fixed.
975dff8c
FC
907
908=over
909
910=item *
911
912C<utf8::decode> had a nasty bug that would modify copy-on-write scalars'
913string buffers in place (i.e., skipping the copy). This could result in
914hashes having two elements with the same key [RT #91834].
915
916=item *
917
918Lvalue subroutines were not allowing COW scalars to be returned. This was
919fixed for lvalue scalar context in Perl 5.12.3 and 5.14.0, but list context
920was not fixed until this release.
921
922=item *
923
924Elements of restricted hashes (see the L<fields> pragma) containing
925copy-on-write values couldn't be deleted, nor could such hashes be cleared
926(C<%hash = ()>).
927
928=item *
929
930Localising a tied variable used to make it read-only if it contained a
931copy-on-write string.
932
933=item *
934
935L<Storable>, L<Devel::Peek> and L<PerlIO::scalar> had similar problems.
936See L</Updated Modules and Pragmata>, above.
937
938=back
939
bdab33d1 940=head2 lvalue subroutines
975dff8c 941
bdab33d1 942There have been various fixes to lvalue subroutines.
975dff8c
FC
943
944=over
945
946=item *
947
948Explicit return now returns the actual argument passed to return, instead
f5938650
FC
949of copying it [RT #72724] [RT #72706].
950
951B<Note:> There are still some discrepancies between explicit and implicit
952return, which will hopefully be resolved soon. So the exact behaviour is
953not set in stone yet.
975dff8c
FC
954
955=item *
956
957Lvalue subroutines used to enforce lvalue syntax (i.e., whatever can go on
958the left-hand side of C<=>) for the last statement and the arguments to
959return. Since lvalue subroutines are not always called in lvalue context,
960this restriction has been lifted.
961
962=item *
963
964Lvalue subroutines are less restrictive as to what values can be returned.
965It used to croak on values returned by C<shift> and C<delete> and from
f5938650 966other subroutines, but no longer does so [RT #71172].
975dff8c
FC
967
968=item *
969
970Empty lvalue subroutines (C<sub :lvalue {}>) used to return C<@_> in list
971context. In fact, all subroutines used to, but regular subs were fixed in
972Perl 5.8.2. Now lvalue subroutines have been likewise fixed.
973
974=item *
975
976Lvalue subroutines used to copy their return values in rvalue context. Not
977only was this a waste of CPU cycles, but it also caused bugs. A C<($)>
f5938650 978prototype would cause an lvalue sub to copy its return value [RT #51408],
975dff8c
FC
979and C<while(lvalue_sub() =~ m/.../g) { ... }> would loop endlessly
980[RT #78680].
981
982=item *
983
984Autovivification now works on values returned from lvalue subroutines
985[RT #7946].
986
987=item *
988
bdab33d1
DG
989When called in pass-by-reference context (e.g., subroutine arguments or a list
990passed to C<for>), an lvalue subroutine returning arrays or hashes used to bind
991the arrays (or hashes) to scalar variables--something that is not supposed to
87d00a71
FC
992happen. This could result in "Bizarre copy of ARRAY" errors or C<print>
993ignoring its arguments. It also made nonsensical code like C<@{\$_}> "work".
bdab33d1
DG
994This was fixed in 5.14.0 if an array were the first thing returned from the
995subroutine (but not for C<$scalar, @array> or hashes being returned). Now a
996more general fix has been applied [RT #23790].
975dff8c 997
fad4a2e4
FC
998=item *
999
1000Assignment to C<keys> returned from an lvalue sub used not to work, but now
1001it does.
1002
975dff8c
FC
1003=back
1004
6693394d 1005=head2 Fixes related to hashes
bdab33d1
DG
1006
1007=over
1008
1009=item *
1010
1011A bug has been fixed that would cause a "Use of freed value in iteration"
1012error if the next two hash elements that would be iterated over are
6693394d
FC
1013deleted [RT #85026].
1014
1015=item *
1016
1017Freeing deeply nested hashes no longer crashes [RT #44225].
1018
1019=item *
1020
1021Deleting the current hash iterator (the hash element that would be returend
1022by the next call to C<each>) in void context used not to free it. The hash
1023would continue to reference it until the next iteration. This has been
1024fixed [RT #85026].
1025
1026=back
1027
1028=head2 Other notable fixes
1029
1030=over
bdab33d1
DG
1031
1032=item *
1033
9cdac2a2
FC
1034Previously, if one embeds Perl or uses XS and calls fork(3) from C, Perl's
1035notion of C<$$> could go out of sync with what getpid() returns. By always
1036fetching the value of C<$$> via getpid(), this potential bug is eliminated.
1037
1038=item *
1039
bdab33d1
DG
1040Passing the same constant subroutine to both C<index> and C<formline> no
1041longer causes one or the other to fail [RT #89218].
1042
f5d1ed10
FC
1043=item *
1044
1045List assignment to lexical variables declared with attributes in the same
1046statement (C<my ($x,@y) : blimp = (72,94)>) stopped working in Perl 5.8.0.
1047It has now been fixed.
1048
bdab33d1
DG
1049=item *
1050
6693394d
FC
1051Perl 5.10.0 introduced some faulty logic that made "U*" in the middle of
1052a pack template equivalent to "U0" if the input string was empty. This has
1053been fixed [RT #90160].
1054
1055=item *
1056
1057Destructors on objects were not called during global destruction on objects
1058that were not referenced by any scalars. This could happen if an array
1059element were blessed (e.g., C<bless \$a[0]>) or if a closure referenced a
1060blessed variable (C<bless \my @a; sub foo { @a }>).
1061
1062Now there is an extra pass during global destruction to fire destructors on
1063any objects that might be left after the usual passes that check for
1064objects referenced by scalars [RT #36347].
1065
1066This bug fix was added in Perl 5.13.9, but caused problems with some CPAN
1067modules that were relying on the bug. Since it was so close to Perl
10685.14.0, the fix was reverted in 5.13.10, to allow more time for the modules
1069to adapt. Hopefully they will be fixed soon (see L</Known Problems>,
1070below).
1071
1072=item *
1073
1074C<given> was not calling set-magic on the implicit lexical C<$_> that it
1075uses. This meant, for example, that C<pos> would be remembered from one
1076execution of the same C<given> block to the next, even if the input were a
1077different variable [RT #84526].
1078
1079=item *
1080
1081The "R" command for restarting a debugger session has been fixed to work on
1082Windows, or any other system lacking a C<POSIX::_SC_OPEN_MAX> constant
1083[RT #87740].
1084
1085=item *
1086
1087Fixed a case where it was possible that a freed buffer may have been read
1088from when parsing a here document [RT #90128].
1089
1090=item *
1091
1092The C<study> function could become confused if fed a string longer than
10932**31 characters. Now it simply skips such strings.
1094
1095=item *
1096
1097C<each(I<ARRAY>)> is now wrapped in C<defined(...)>, like C<each(I<HASH>)>,
1098inside a C<when> condition [RT #90888].
bdab33d1 1099
f5938650
FC
1100=item *
1101
1102In @INC filters (subroutines returned by subroutines in @INC), $_ used to
1103misbehave: If returned from a subroutine, it would not be copied, but the
1104variable itself would be returned; and freeing $_ (e.g., with C<undef *_>)
1105would cause perl to crash. This has been fixed [RT #91880].
1106
1107=item *
1108
1109An ASCII single quote (') in a symbol name is meant to be equivalent to a
1110double colon (::) except at the end of the name. It was not equivalent if
1111followed by a null character, but now it is [RT #88138].
1112
25aa614d
KW
1113=item *
1114
1115The abbreviations for four C1 control characters
1116C<MW>
1117C<PM>,
1118C<RI>,
1119and
1120C<ST>
1121were previously unrecognized by C<\N{}>,
1122vianame(), and string_vianame().
1123
87d00a71
FC
1124=item *
1125
1126Some cases of threads crashing due to memory allocation during cloning have
1127been fixed [RT #90006].
1128
1129=item *
1130
1131Attempting to C<goto> out of a tied handle method used to cause memory
1132corruption or crashes. Now it produces an error message instead
1133[RT #8611].
1134
42a91c97
FC
1135=back
1136
bdab33d1
DG
1137=head2 Additional fixes by ticket number
1138
1139XXX Prefix these with "\n=item *\n" once the list is final
1140
bdab33d1
DG
1141Fixed RT #88822: Test failure t/re_fold_grind.t with bleadperl
1142Fixed RT #89896: Locale::Maketext test failure
6693394d 1143
f5938650 1144XXX Comments from FC: I do not think these two are necessary.
bdab33d1 1145
c71a852f 1146=head1 Known Problems
44691e6f 1147
34dc2ec0
DM
1148XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
1149tests that had to be C<TODO>ed for the release would be noted here, unless
1150they were specific to a particular platform (see below).
cdc10f43 1151
34dc2ec0
DM
1152This is a list of some significant unfixed bugs, which are regressions
1153from either 5.XXX.XXX or 5.XXX.XXX.
cdc10f43 1154
34dc2ec0 1155[ List each fix as a =item entry ]
ca767864 1156
34dc2ec0 1157=over 4
cf5da40b
CB
1158
1159=item *
1160
6693394d
FC
1161The fix for RT #36347 causes test failures for C<Gtk2> and C<Tk> on some
1162systems [RT #82542].
cf5da40b 1163
c71a852f 1164=back
014fb485 1165
c71a852f 1166=head1 Obituary
014fb485 1167
34dc2ec0
DM
1168XXX If any significant core contributor has died, we've added a short obituary
1169here.
44691e6f 1170
44691e6f
AB
1171=head1 Acknowledgements
1172
34dc2ec0 1173XXX The list of people to thank goes here.
29cf780c 1174
44691e6f
AB
1175=head1 Reporting Bugs
1176
1177If you find what you think is a bug, you might check the articles
34dc2ec0 1178recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
1179bug database at http://rt.perl.org/perlbug/ . There may also be
1180information at http://www.perl.org/ , the Perl Home Page.
1181
1182If you believe you have an unreported bug, please run the L<perlbug>
1183program included with your release. Be sure to trim your bug down
1184to a tiny but sufficient test case. Your bug report, along with the
1185output of C<perl -V>, will be sent off to perlbug@perl.org to be
1186analysed by the Perl porting team.
1187
1188If the bug you are reporting has security implications, which make it
1189inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 1190it to perl5-security-report@perl.org. This points to a closed subscription
44691e6f
AB
1191unarchived mailing list, which includes all the core committers, who be able
1192to help assess the impact of issues, figure out a resolution, and help
1193co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
1194platforms on which Perl is supported. Please only use this address for
1195security issues in the Perl core, not for modules independently
44691e6f
AB
1196distributed on CPAN.
1197
1198=head1 SEE ALSO
1199
1200The F<Changes> file for an explanation of how to view exhaustive details
1201on what changed.
1202
1203The F<INSTALL> file for how to build Perl.
1204
1205The F<README> file for general stuff.
1206
1207The F<Artistic> and F<Copying> files for copyright information.
1208
1209=cut