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