This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add PERL_NO_GET_CONTEXT to ODBM_File
[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
760696b8
FC
413XXX If any changes are made, the version will need to be bumped again.
414What blead has is currently (as of a9d1f3db, 7th of June) identical to
4155.14.1's version.
416
417L<Pod::Perldoc> has been upgraded from version 3.15_03 to 3.15_04.
418
419It corrects the search paths on VMS [RT #90640].
420
421=item *
422
daca484d
NC
423L<Storable> has been upgraded from version 2.27 to version 2.28.
424
975dff8c
FC
425It no longer turns copy-on-write scalars into read-only scalars when
426freezing and thawing.
427
daca484d
NC
428=item *
429
1c861f7c
CBW
430L<Sys::Syslog> has been upgraded from version 0.27 to version 0.29
431
432Large number of Request Tickets resolved.
433
434=item *
435
f95396b3 436L<Time::HiRes> has been upgraded from version 1.9721_01 to version 1.9722.
91a2e9f6
Z
437
438Portability fix, and avoiding some compiler warnings.
439
440=item *
441
1c861f7c
CBW
442L<Unicode::Collate> has been upgraded from version 0.73 to version 0.76
443
444Updated to CLDR 1.9.1
445
446=item *
447
448L<Unicode::Normalize> has been upgraded from version 1.10 to version 1.12
449
450Fixes for the removal of C<unicore/CompositionExclusions.txt> from core.
451
452=item *
453
454L<XSLoader> has been upgraded from version 0.13 to version 0.15
455
456Integrated changes from bleadperl
457
458=item *
459
38f4139d
KW
460L<charnames> can now be invoked with a new option, C<:loose>,
461which is like the existing C<:full> option, but enables Unicode loose
462name matching. This means that instead of
463having to get the name of the code point or sequence you want exactly right,
464you can fudge things somewhat. This is especially useful when
465you don't remember if the official Unicode name uses hyphens or
466blanks between words. Details are in L<charnames/LOOSE MATCHES>.
467
34dc2ec0 468XXX
9780b8fa 469
e8e35311
FC
470=back
471
34dc2ec0 472=head2 Removed Modules and Pragmata
bdb0cce8 473
c9dab4e9
FR
474As promised in Perl 5.14.0's release notes, the following modules have
475been removed from the core distribution, and if needed should be installed
476from CPAN instead.
477
478=over
44691e6f 479
5076a392 480=item *
44691e6f 481
a1e75797
NC
482C<Devel::DProf> has been removed from the Perl core. Prior version was 20110228.00.
483
484=item *
485
486C<Shell> has been removed from the Perl core. Prior version was 0.72_01.
e8e35311
FC
487
488=back
489
34dc2ec0 490=head1 Documentation
44691e6f 491
34dc2ec0
DM
492XXX Changes to files in F<pod/> go here. Consider grouping entries by
493file and be sure to link to the appropriate page, e.g. L<perlfunc>.
6d96b0fe 494
34dc2ec0 495=head2 New Documentation
6d96b0fe 496
34dc2ec0 497XXX Changes which create B<new> files in F<pod/> go here.
6d96b0fe 498
34dc2ec0 499=head3 L<XXX>
e8e35311 500
34dc2ec0 501XXX Description of the purpose of the new file here
6d96b0fe 502
34dc2ec0 503=head2 Changes to Existing Documentation
b7188eb5 504
34dc2ec0
DM
505XXX Changes which significantly change existing files in F<pod/> go here.
506However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
507section.
b7188eb5 508
bdab33d1
DG
509=head3 L<perlfork>
510
511=over
512
513=item *
514
515Added portability caveats related to using kill on forked process.
516
517=back
518
760696b8
FC
519=head3 L<perlfunc>
520
521=over
522
523=item *
524
525C<given>, C<when> and C<default> are now listed in L<perlfunc> (5.14.1).
526
6693394d
FC
527=item *
528
529The examples for the C<select> function no longer use strings for file
530handles.
531
760696b8
FC
532=back
533
f5938650
FC
534=head3 L<perlguts>
535
536=over
537
538=item *
539
540Some of the function descriptions in L<perlguts> were confusing, as it was
541not clear whether they referred to the function above or below the
542description. This has been clarified [RT #91790].
543
544=back
545
760696b8
FC
546=head3 L<perllol>
547
548=over
549
550=item *
551
552L<perllol> has been expanded with examples using the new C<push $scalar>
553syntax introduced in Perl 5.14.0 (5.14.1).
554
555=back
556
6693394d
FC
557=head3 L<perlmod>
558
559=over
560
561=item *
562
563L<perlmod> now states explicitly that some types of explicit symbol table
564manipulation are not supported. This codifies what was effectively already
565the case [RT #78074].
566
567=back
568
760696b8 569=head3 L<perlop>
b7188eb5 570
34dc2ec0 571=over 4
e8e35311 572
2c389f6c
FC
573=item *
574
760696b8
FC
575The explanation of bitwise operators has been expanded to explain how they
576work on Unicode strings (5.14.1).
577
578=item *
579
580The section on the triple-dot or yada-yada operator has been moved up, as
581it used to separate two closely related sections about the comma operator
582(5.14.1).
583
584=item *
585
586More examples for C<m//g> have been added (5.14.1).
587
588=item *
589
590The C<<< <<\FOO >>> here-doc syntax has been documented (5.14.1).
591
592=back
593
6693394d
FC
594=head3 L<perlpodstyle>
595
596=over 4
597
598=item *
599
600The tips on which formatting codes to use have been corrected and greatly
601expanded.
602
603=item *
604
605There are now a couple of example one-liners for previewing POD files after
606they have been edited.
607
608=back
609
610=head3 L<perlre>
611
612=over
613
614=item *
615
616The C<(*COMMIT)> directive is now listed in the right section
617(L<Verbs without an argument|perlre/Verbs without an argument>).
618
619=back
620
760696b8
FC
621=head3 L<perlrun>
622
623=over
624
625=item *
626
627L<perlrun> has undergone a significant clean-up. Most notably, the
628B<-0x...> form of the B<-0> flag has been clarified, and the final section
629on environment variables has been corrected and expanded (5.14.1).
2c389f6c 630
e8e35311
FC
631=back
632
f5938650
FC
633=head3 L<perlvar>
634
635=over
636
637=item *
638
639The documentation for L<$!|perlvar/$!> has been corrected and clarified.
640It used to state that $! could be C<undef>, which is not the case. It was
641also unclear as to whether system calls set C's C<errno> or Perl's C<$!>
642[RT #91614].
643
644=back
645
6693394d
FC
646=head3 L<POSIX>
647
648=over
649
650=item *
651
652The invocation documentation for C<WIFEXITED>, C<WEXITSTATUS>,
653C<WIFSIGNALED>, C<WTERMSIG>, C<WIFSTOPPED>, and C<WSTOPSIG> has been
654corrected (5.14.1).
655
656=back
657
34dc2ec0 658=head1 Diagnostics
b7188eb5 659
34dc2ec0
DM
660The following additions or changes have been made to diagnostic output,
661including warnings and fatal error messages. For the complete list of
662diagnostic messages, see L<perldiag>.
44691e6f 663
34dc2ec0
DM
664XXX New or changed warnings emitted by the core's C<C> code go here. Also
665include any changes in L<perldiag> that reconcile it to the C<C> code.
6c9cd4a1 666
34dc2ec0 667[ Within each section, list entries as a =item entry ]
6c9cd4a1 668
34dc2ec0 669=head2 New Diagnostics
44691e6f 670
34dc2ec0 671XXX Newly added diagnostic messages go here
44691e6f 672
bdab33d1
DG
673=head3 New Warnings
674
34dc2ec0 675=over 4
44691e6f 676
bdab33d1 677=item L<Useless assignment to a temporary|perldiag/"Useless assignment to a temporary">
44691e6f 678
bdab33d1
DG
679Assigning to a temporary returned from an XS lvalue subroutine now produces a
680warning [RT #31946].
2c389f6c
FC
681
682=back
683
34dc2ec0 684=head2 Changes to Existing Diagnostics
b7188eb5 685
34dc2ec0 686XXX Changes (i.e. rewording) of diagnostic messages go here
b7188eb5 687
34dc2ec0 688=over 4
b7188eb5 689
5076a392 690=item *
b7188eb5 691
34dc2ec0 692XXX
b7188eb5 693
e8e35311 694=back
5076a392 695
34dc2ec0 696=head1 Utility Changes
5076a392 697
34dc2ec0
DM
698XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
699here. Most of these are built within the directories F<utils> and F<x2p>.
5076a392 700
34dc2ec0
DM
701[ List utility changes as a =head3 entry for each utility and =item
702entries for each change
703Use L<XXX> with program names to get proper documentation linking. ]
5076a392 704
34dc2ec0 705=head3 L<XXX>
5076a392 706
34dc2ec0 707=over 4
5076a392
FC
708
709=item *
710
34dc2ec0 711XXX
5076a392 712
2c389f6c 713=back
e8e35311 714
34dc2ec0 715=head1 Configuration and Compilation
5076a392 716
34dc2ec0
DM
717XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
718go here. Any other changes to the Perl build process should be listed here.
719However, any platform-specific changes should be listed in the
720L</Platform Support> section, instead.
2c389f6c 721
34dc2ec0 722[ List changes as a =item entry ].
2c389f6c 723
34dc2ec0 724=over 4
5076a392 725
e8e35311 726=item *
5076a392 727
760696b8
FC
728F<regexp.h> has been modified for compatibility with GCC's B<-Werror>
729option, as used by some projects that include perl's header files (5.14.1).
5076a392 730
bdab33d1
DG
731=item *
732
733USE_LOCALE{,_COLLATE,_CTYPE,_NUMERIC} have been added the output of perl -V
734as they have affect the behaviour of the interpreter binary (albeit only
735in a small area).
736
34dc2ec0 737=back
5076a392 738
34dc2ec0 739=head1 Testing
5076a392 740
34dc2ec0
DM
741XXX Any significant changes to the testing of a freshly built perl should be
742listed here. Changes which create B<new> files in F<t/> go here as do any
743large changes to the testing harness (e.g. when parallel testing was added).
744Changes to existing files in F<t/> aren't worth summarising, although the bugs
745that they represent may be covered elsewhere.
5076a392 746
34dc2ec0 747[ List each test improvement as a =item entry ]
5076a392 748
34dc2ec0 749=over 4
5076a392
FC
750
751=item *
752
34dc2ec0 753XXX
e8e35311 754
34dc2ec0 755=back
5076a392 756
34dc2ec0 757=head1 Platform Support
5076a392 758
34dc2ec0 759XXX Any changes to platform support should be listed in the sections below.
5076a392 760
34dc2ec0
DM
761[ Within the sections, list each platform as a =item entry with specific
762changes as paragraphs below it. ]
5076a392 763
34dc2ec0 764=head2 New Platforms
5076a392 765
34dc2ec0
DM
766XXX List any platforms that this version of perl compiles on, that previous
767versions did not. These will either be enabled by new files in the F<hints/>
768directories, or new subdirectories and F<README> files at the top level of the
769source tree.
cdc10f43 770
34dc2ec0 771=over 4
cdc10f43 772
bdab33d1 773=item GNU/Hurd
d430b8e7 774
bdab33d1
DG
775=over
776
777=item *
778
779No longer overrides possible extra $ccflags values given to Configure
780on GNU/Hurd. C.f. Bug-Debian: http://bugs.debian.org/587901
781
782=back
783
784=item Mac OS X
785
786Clarified apple developer tools requirements in README.macosx
787
788=item MSWin32
789
790Supplied F<makefile.mk> patched to support gcc-4.x.x and README.win32
791updated accordingly. [RT #91354]
792
793=item Solaris
794
795Updated the list of required packages for building perl to reflect Solaris 9
796and 10 in README.solaris [RT #90850]
d430b8e7 797
2c389f6c 798=back
5076a392 799
34dc2ec0 800=head2 Discontinued Platforms
5076a392 801
34dc2ec0 802XXX List any platforms that this version of perl no longer compiles on.
5076a392 803
34dc2ec0 804=over 4
e8e35311 805
34dc2ec0 806=item XXX-some-platform
e8e35311 807
34dc2ec0 808XXX
1e463951 809
c71a852f 810=back
b7188eb5 811
34dc2ec0 812=head2 Platform-Specific Notes
42a91c97 813
34dc2ec0
DM
814XXX List any changes for specific platforms. This could include configuration
815and compilation changes or changes in portability/compatibility. However,
816changes within modules for platforms should generally be listed in the
817L</Modules and Pragmata> section.
42a91c97 818
6693394d
FC
819=head3 Ubuntu Linux
820
34dc2ec0 821=over 4
42a91c97 822
6693394d 823=item *
42a91c97 824
6693394d
FC
825The L<ODBM_File> installation process has been updated with the new library
826paths on Ubuntu natty [RT #90106].
827
828=item *
829
830I<h2ph> now gets the include paths from gcc correctly. This stopped
831working when Ubuntu switched to a "multiarch" setup [RT #90122].
42a91c97 832
34dc2ec0 833=back
42a91c97 834
34dc2ec0 835=head1 Internal Changes
42a91c97 836
34dc2ec0
DM
837XXX Changes which affect the interface available to C<XS> code go here.
838Other significant internal changes for future core maintainers should
839be noted as well.
42a91c97 840
34dc2ec0 841=over 4
42a91c97 842
2c389f6c
FC
843=item *
844
c13a5c80
NC
845When empting a hash of its elements (e.g. via undef(%h), or %h=()), HvARRAY
846field is no longer temporarily zeroed. Any destructors called on the freed
847elements see the remaining elements. Thus, %h=() becomes more like C<delete
848$h{$_} for keys %h>.
849
850=item *
851
74e0ddf7
NC
852The compiled representation of formats is now stored via the mg_ptr of
853their PERL_MAGIC_fm. Previously it was stored in the string buffer,
854beyond SvLEN(), the regular end of the string. SvCOMPILED() and
855SvCOMPILED_{on,off}() now exist solely for compatibility for XS code.
856The first is always 0, the other two now no-ops.
cdc10f43 857
bdab33d1
DG
858=item *
859
c13a5c80
NC
860Boyer-Moore compiled scalars are now PVMGs, and the Boyer-Moore tables are now
861stored via the mg_ptr of their PERL_MAGIC_bm. Previously they were PVGVs, with
862the tables stored in the string buffer, beyond SvLEN(). This eliminates the
863last place where the core stores data beyond SvLEN().
bdab33d1 864
571f0e86
NC
865=item *
866
867C<pos> in lvalue context now returns a PVMG instead of a PVLV, storing the
868target SV in C<mg_obj>, instead of C<LvTARG()>.
869
384e62c0
DG
870=item *
871
872Simplified logic in C<Perl_sv_magic()> introduces a small change of
873behaviour for error cases involving unknown magic types. Previously, if
874C<Perl_sv_magic()> was passed a magic type unknown to it, it would
875
876=over
877
878=item 1.
879
880Croak "Modification of a read-only value attempted" if read only
881
882=item 2.
883
884Return without error if the SV happened to already have this magic
885
886=item 3.
887
888otherwise croak "Don't know how to handle magic of type \\%o"
889
890=back
891
892Now it will always croak "Don't know how to handle magic of type \\%o", even
893on read only values, or SVs which already have the unknown magic type.
894
34dc2ec0 895=back
cdc10f43 896
34dc2ec0 897=head1 Selected Bug Fixes
cdc10f43 898
34dc2ec0
DM
899XXX Important bug fixes in the core language are summarised here.
900Bug fixes in files in F<ext/> and F<lib/> are best summarised in
901L</Modules and Pragmata>.
cdc10f43 902
34dc2ec0 903[ List each fix as a =item entry ]
d430b8e7 904
bdab33d1
DG
905=head2 Regular expressions and character classes
906
34dc2ec0 907=over 4
d430b8e7
FC
908
909=item *
910
f7a45dff
KW
911The new (in 5.14.0) regular expression modifier C</a> when repeated like
912C</aa> forbids the characters outside the ASCII range that match
913characters inside that range from matching under C</i>. This did not
914work under some circumstances, all involving alternation, such as:
915
916 "\N{KELVIN SIGN}" =~ /k|foo/iaa;
917
6693394d 918succeeded inappropriately. This is now fixed.
f7a45dff
KW
919
920=item *
921
9225.14.0 introduced some memory leaks in regular expression character
bdab33d1 923classes such as C<[\w\s]>, which have now been fixed
f7a45dff
KW
924
925=item *
926
927An edge case in regular expression matching could potentially loop.
928This happened only under C</i> in bracketed character classes that have
929characters with multi-character folds, and the target string to match
930against includes the first portion of the fold, followed by another
931character that has a multi-character fold that begins with the remaining
932portion of the fold, plus some more.
933
934 "s\N{U+DF}" =~ /[\x{DF}foo]/i
935
bdab33d1 936is one such case. C<\xDF> folds to C<"ss">
f7a45dff
KW
937
938=item *
939
940A few characters in regular expression pattern matches did not
941match correctly in some circumstances, all involving C</i>. The
942affected characters are:
943COMBINING GREEK YPOGEGRAMMENI,
944GREEK CAPITAL LETTER IOTA,
945GREEK CAPITAL LETTER UPSILON,
946GREEK PROSGEGRAMMENI,
947GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA,
948GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS,
949GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA,
950GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS,
951LATIN SMALL LETTER LONG S,
952LATIN SMALL LIGATURE LONG S T,
953and
954LATIN SMALL LIGATURE ST.
d430b8e7 955
2fbb14a0
DG
956=item *
957
bdab33d1
DG
958Fixed memory leak regression in regular expression compilation
959under threading
960
961=back
962
963=head2 Formats
964
f5938650
FC
965=over
966
967=item *
968
969A number of edge cases have been fixed with formats and C<formline>;
2fbb14a0
DG
970in particular, where the format itself is potentially variable (such as
971with ties and overloading), and where the format and data differ in their
972encoding. In both these cases, it used to possible for the output to be
f5938650
FC
973corrupted [RT #91032].
974
975=item *
976
977C<formline> no longer converts its argument into a string in-place. So
978passing a reference to C<formline> no longer destroys the reference
979[RT #79532].
980
981=back
2fbb14a0 982
bdab33d1 983=head2 Copy-on-write scalars
975dff8c 984
6693394d
FC
985Copy-on-write scalars were introduced in 5.6.0, but most Perl code
986did not encounter them (they were used mostly internally). Perl
9875.10.0 extended them, such that assigning C<__PACKAGE__> or a
988hash key to a scalar would make it copy-on-write. Several parts
bdab33d1 989of Perl were not updated to account for them, but have now been fixed.
975dff8c
FC
990
991=over
992
993=item *
994
995C<utf8::decode> had a nasty bug that would modify copy-on-write scalars'
996string buffers in place (i.e., skipping the copy). This could result in
997hashes having two elements with the same key [RT #91834].
998
999=item *
1000
1001Lvalue subroutines were not allowing COW scalars to be returned. This was
1002fixed for lvalue scalar context in Perl 5.12.3 and 5.14.0, but list context
1003was not fixed until this release.
1004
1005=item *
1006
1007Elements of restricted hashes (see the L<fields> pragma) containing
1008copy-on-write values couldn't be deleted, nor could such hashes be cleared
1009(C<%hash = ()>).
1010
1011=item *
1012
1013Localising a tied variable used to make it read-only if it contained a
1014copy-on-write string.
1015
1016=item *
1017
1018L<Storable>, L<Devel::Peek> and L<PerlIO::scalar> had similar problems.
1019See L</Updated Modules and Pragmata>, above.
1020
1021=back
1022
bdab33d1 1023=head2 lvalue subroutines
975dff8c 1024
bdab33d1 1025There have been various fixes to lvalue subroutines.
975dff8c
FC
1026
1027=over
1028
1029=item *
1030
1031Explicit return now returns the actual argument passed to return, instead
f5938650
FC
1032of copying it [RT #72724] [RT #72706].
1033
1034B<Note:> There are still some discrepancies between explicit and implicit
1035return, which will hopefully be resolved soon. So the exact behaviour is
1036not set in stone yet.
975dff8c
FC
1037
1038=item *
1039
1040Lvalue subroutines used to enforce lvalue syntax (i.e., whatever can go on
1041the left-hand side of C<=>) for the last statement and the arguments to
1042return. Since lvalue subroutines are not always called in lvalue context,
1043this restriction has been lifted.
1044
1045=item *
1046
1047Lvalue subroutines are less restrictive as to what values can be returned.
1048It used to croak on values returned by C<shift> and C<delete> and from
f5938650 1049other subroutines, but no longer does so [RT #71172].
975dff8c
FC
1050
1051=item *
1052
1053Empty lvalue subroutines (C<sub :lvalue {}>) used to return C<@_> in list
1054context. In fact, all subroutines used to, but regular subs were fixed in
1055Perl 5.8.2. Now lvalue subroutines have been likewise fixed.
1056
1057=item *
1058
1059Lvalue subroutines used to copy their return values in rvalue context. Not
1060only was this a waste of CPU cycles, but it also caused bugs. A C<($)>
f5938650 1061prototype would cause an lvalue sub to copy its return value [RT #51408],
975dff8c
FC
1062and C<while(lvalue_sub() =~ m/.../g) { ... }> would loop endlessly
1063[RT #78680].
1064
1065=item *
1066
1067Autovivification now works on values returned from lvalue subroutines
1068[RT #7946].
1069
1070=item *
1071
bdab33d1
DG
1072When called in pass-by-reference context (e.g., subroutine arguments or a list
1073passed to C<for>), an lvalue subroutine returning arrays or hashes used to bind
1074the arrays (or hashes) to scalar variables--something that is not supposed to
87d00a71
FC
1075happen. This could result in "Bizarre copy of ARRAY" errors or C<print>
1076ignoring its arguments. It also made nonsensical code like C<@{\$_}> "work".
bdab33d1
DG
1077This was fixed in 5.14.0 if an array were the first thing returned from the
1078subroutine (but not for C<$scalar, @array> or hashes being returned). Now a
1079more general fix has been applied [RT #23790].
975dff8c 1080
fad4a2e4
FC
1081=item *
1082
1083Assignment to C<keys> returned from an lvalue sub used not to work, but now
1084it does.
1085
975dff8c
FC
1086=back
1087
6693394d 1088=head2 Fixes related to hashes
bdab33d1
DG
1089
1090=over
1091
1092=item *
1093
1094A bug has been fixed that would cause a "Use of freed value in iteration"
1095error if the next two hash elements that would be iterated over are
6693394d
FC
1096deleted [RT #85026].
1097
1098=item *
1099
1100Freeing deeply nested hashes no longer crashes [RT #44225].
1101
1102=item *
1103
1104Deleting the current hash iterator (the hash element that would be returend
1105by the next call to C<each>) in void context used not to free it. The hash
1106would continue to reference it until the next iteration. This has been
1107fixed [RT #85026].
1108
1109=back
1110
1111=head2 Other notable fixes
1112
1113=over
bdab33d1
DG
1114
1115=item *
1116
1117Passing the same constant subroutine to both C<index> and C<formline> no
1118longer causes one or the other to fail [RT #89218].
1119
f5d1ed10
FC
1120=item *
1121
1122List assignment to lexical variables declared with attributes in the same
1123statement (C<my ($x,@y) : blimp = (72,94)>) stopped working in Perl 5.8.0.
1124It has now been fixed.
1125
bdab33d1
DG
1126=item *
1127
6693394d
FC
1128Perl 5.10.0 introduced some faulty logic that made "U*" in the middle of
1129a pack template equivalent to "U0" if the input string was empty. This has
1130been fixed [RT #90160].
1131
1132=item *
1133
1134Destructors on objects were not called during global destruction on objects
1135that were not referenced by any scalars. This could happen if an array
1136element were blessed (e.g., C<bless \$a[0]>) or if a closure referenced a
1137blessed variable (C<bless \my @a; sub foo { @a }>).
1138
1139Now there is an extra pass during global destruction to fire destructors on
1140any objects that might be left after the usual passes that check for
1141objects referenced by scalars [RT #36347].
1142
1143This bug fix was added in Perl 5.13.9, but caused problems with some CPAN
1144modules that were relying on the bug. Since it was so close to Perl
11455.14.0, the fix was reverted in 5.13.10, to allow more time for the modules
1146to adapt. Hopefully they will be fixed soon (see L</Known Problems>,
1147below).
1148
1149=item *
1150
1151C<given> was not calling set-magic on the implicit lexical C<$_> that it
1152uses. This meant, for example, that C<pos> would be remembered from one
1153execution of the same C<given> block to the next, even if the input were a
1154different variable [RT #84526].
1155
1156=item *
1157
1158The "R" command for restarting a debugger session has been fixed to work on
1159Windows, or any other system lacking a C<POSIX::_SC_OPEN_MAX> constant
1160[RT #87740].
1161
1162=item *
1163
1164Fixed a case where it was possible that a freed buffer may have been read
1165from when parsing a here document [RT #90128].
1166
1167=item *
1168
1169The C<study> function could become confused if fed a string longer than
11702**31 characters. Now it simply skips such strings.
1171
1172=item *
1173
1174C<each(I<ARRAY>)> is now wrapped in C<defined(...)>, like C<each(I<HASH>)>,
1175inside a C<when> condition [RT #90888].
bdab33d1 1176
f5938650
FC
1177=item *
1178
1179In @INC filters (subroutines returned by subroutines in @INC), $_ used to
1180misbehave: If returned from a subroutine, it would not be copied, but the
1181variable itself would be returned; and freeing $_ (e.g., with C<undef *_>)
1182would cause perl to crash. This has been fixed [RT #91880].
1183
1184=item *
1185
1186An ASCII single quote (') in a symbol name is meant to be equivalent to a
1187double colon (::) except at the end of the name. It was not equivalent if
1188followed by a null character, but now it is [RT #88138].
1189
25aa614d
KW
1190=item *
1191
1192The abbreviations for four C1 control characters
1193C<MW>
1194C<PM>,
1195C<RI>,
1196and
1197C<ST>
1198were previously unrecognized by C<\N{}>,
1199vianame(), and string_vianame().
1200
87d00a71
FC
1201=item *
1202
1203Some cases of threads crashing due to memory allocation during cloning have
1204been fixed [RT #90006].
1205
1206=item *
1207
1208Attempting to C<goto> out of a tied handle method used to cause memory
1209corruption or crashes. Now it produces an error message instead
1210[RT #8611].
1211
42a91c97
FC
1212=back
1213
bdab33d1
DG
1214=head2 Additional fixes by ticket number
1215
1216XXX Prefix these with "\n=item *\n" once the list is final
1217
bdab33d1
DG
1218Fixed RT #88822: Test failure t/re_fold_grind.t with bleadperl
1219Fixed RT #89896: Locale::Maketext test failure
6693394d 1220
f5938650 1221XXX Comments from FC: I do not think these two are necessary.
bdab33d1 1222
c71a852f 1223=head1 Known Problems
44691e6f 1224
34dc2ec0
DM
1225XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
1226tests that had to be C<TODO>ed for the release would be noted here, unless
1227they were specific to a particular platform (see below).
cdc10f43 1228
34dc2ec0
DM
1229This is a list of some significant unfixed bugs, which are regressions
1230from either 5.XXX.XXX or 5.XXX.XXX.
cdc10f43 1231
34dc2ec0 1232[ List each fix as a =item entry ]
ca767864 1233
34dc2ec0 1234=over 4
cf5da40b
CB
1235
1236=item *
1237
6693394d
FC
1238The fix for RT #36347 causes test failures for C<Gtk2> and C<Tk> on some
1239systems [RT #82542].
cf5da40b 1240
c71a852f 1241=back
014fb485 1242
c71a852f 1243=head1 Obituary
014fb485 1244
34dc2ec0
DM
1245XXX If any significant core contributor has died, we've added a short obituary
1246here.
44691e6f 1247
44691e6f
AB
1248=head1 Acknowledgements
1249
34dc2ec0 1250XXX The list of people to thank goes here.
29cf780c 1251
44691e6f
AB
1252=head1 Reporting Bugs
1253
1254If you find what you think is a bug, you might check the articles
34dc2ec0 1255recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
1256bug database at http://rt.perl.org/perlbug/ . There may also be
1257information at http://www.perl.org/ , the Perl Home Page.
1258
1259If you believe you have an unreported bug, please run the L<perlbug>
1260program included with your release. Be sure to trim your bug down
1261to a tiny but sufficient test case. Your bug report, along with the
1262output of C<perl -V>, will be sent off to perlbug@perl.org to be
1263analysed by the Perl porting team.
1264
1265If the bug you are reporting has security implications, which make it
1266inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 1267it to perl5-security-report@perl.org. This points to a closed subscription
44691e6f
AB
1268unarchived mailing list, which includes all the core committers, who be able
1269to help assess the impact of issues, figure out a resolution, and help
1270co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
1271platforms on which Perl is supported. Please only use this address for
1272security issues in the Perl core, not for modules independently
44691e6f
AB
1273distributed on CPAN.
1274
1275=head1 SEE ALSO
1276
1277The F<Changes> file for an explanation of how to view exhaustive details
1278on what changed.
1279
1280The F<INSTALL> file for how to build Perl.
1281
1282The F<README> file for general stuff.
1283
1284The F<Artistic> and F<Copying> files for copyright information.
1285
1286=cut