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