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