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