This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Show --html flag for make-rmg-checklist
[perl5.git] / pod / perl5156delta.pod
CommitLineData
52deee2e
DR
1=encoding utf8
2
3=head1 NAME
4
5perl5156delta - what is new for perl v5.15.6
6
7=head1 DESCRIPTION
8
9This document describes differences between the 5.15.5 release and the
105.15.6 release.
11
12If you are upgrading from an earlier release such as 5.15.4, first read
13L<perl5155delta>, which describes differences between 5.15.4 and
145.15.5.
15
16=head1 Core Enhancements
17
18=head2 C<__SUB__>
19
20The new C<__SUB__> token, available under the "current_sub" feature
21(see L<feature>) or C<use v5.15>, returns a reference to the current
22subroutine, making it easier to write recursive closures.
23
24=head2 New option for the debugger's B<t> command
25
26The B<t> command in the debugger, which toggles tracing mode, now
27accepts a numeric argument that determines how many levels of
28subroutine calls to trace.
29
30=head2 Return value of C<tied>
31
32The value returned by C<tied> on a tied variable is now the actual
33scalar that holds the object to which the variable is tied. This
34allows ties to be weakened with C<Scalar::Util::weaken(tied
35$tied_variable)>.
36
37=head1 Security
38
39=head2 C<is_utf8_char()>
40
41The XS-callable function C<is_utf8_char()>, when presented with
42malformed UTF-8 input, can read up to 12 bytes beyond the end of the
43string. This cannot be fixed without changing its API. It is not
44called from CPAN. The documentation now describes how to use it
45safely.
46
47=head2 Other C<is_utf8_foo()> functions, as well as C<utf8_to_foo()>, etc.
48
49Most of the other XS-callable functions that take UTF-8 encoded input
50implicitly assume that the UTF-8 is valid (not malformed) in regards to
51buffer length. Do not do things such as change a character's case or
52see if it is alphanumeric without first being sure that it is valid
53UTF-8. This can be safely done for a whole string by using one of the
54functions C<is_utf8_string()>, C<is_utf8_string_loc()>, and
55C<is_utf8_string_loclen()>.
56
57=head2 C<use I<VERSION>>
58
59As of this release, version declarations like C<use v5.16> now disable
60all features before enabling the new feature bundle. This means that
61the following holds true:
62
63 use 5.016;
64 # 5.16 features enabled here
65 use 5.014;
66 # 5.16 features disabled here
67
68C<use v5.12> and higher continue to enable strict, but explicit C<use
69strict> and C<no strict> now override the version declaration, even
70when they come first:
71
72 no strict;
73 use 5.012;
74 # no strict here
75
76There is a new ":default" feature bundle that represents the set of
77features enabled before any version declaration or C<use feature> has
78been seen. Version declarations below 5.10 now enable the ":default"
79feature set. This does not actually change the behaviour of C<use
80v5.8>, because features added to the ":default" set are those that were
81traditionally enabled by default, before they could be turned off.
82
83C<$[> is now disabled under C<use v5.16>. It is part of the default
84feature set and can be turned on or off explicitly with C<use feature
85'array_base'>.
86
87=head2 C<UNIVERSAL::VERSION>
88
89The change to C<UNIVERSAL::VERSION> in 5.15.2 has been reverted. It
90now returns a stringified version object once more.
91
92=head2 C<substr> lvalue revamp
93
94When C<substr> is called in lvalue or potential lvalue context with two
95or three arguments, a special lvalue scalar is returned that modifies
96the original string (the first argument) when assigned to.
97
98Previously, the offsets (the second and third arguments) passed to
99C<substr> would be converted immediately to match the string, negative
100offsets being translated to positive and offsets beyond the end of the
101string being truncated.
102
103Now, the offsets are recorded without modification in the special
104lvalue scalar that is returned, and the original string is not even
105looked at by C<substr> itself, but only when the returned lvalue is
106read or modified.
107
108These changes result in several incompatible changes and bug fixes:
109
110=over
111
112=item *
113
114If the original string changes length after the call to C<substr> but
115before assignment to its return value, negative offsets will remember
116their position from the end of the string, affecting code like this:
117
118 my $string = "string";
119 my $lvalue = \substr $string, -4, 2;
120 print $lvalue, "\n"; # prints "ri"
121 $string = "bailing twine";
122 print $lvalue, "\n"; # prints "wi"; used to print "il"
123
124The same thing happens with an omitted third argument. The returned
125lvalue will always extend to the end of the string, even if the string
126becomes longer.
127
128=item *
129
130Tied (and otherwise magical) variables are no longer exempt from the
131"Attempt to use reference as lvalue in substr" warning.
132
133=item *
134
135That warning now occurs when the returned lvalue is assigned to, not
136when C<substr> itself is called. This only makes a difference if the
137return value of C<substr> is referenced and assigned to later.
138
139=item *
140
141The order in which "uninitialized" warnings occur for arguments to
142C<substr> has changed.
143
144=item *
145
146Passing a substring of a read-only value or a typeglob to a function
147(potential lvalue context) no longer causes an immediate "Can't coerce"
148or "Modification of a read-only value" error. That error only occurs
149if and when the value passed is assigned to.
150
151The same thing happens with the "substr outside of string" error. If
152the lvalue is only read, not written to, it is now just a warning, as
153with rvalue C<substr>.
154
155=item *
156
157C<substr> assignments no longer call FETCH twice if the first argument
158is a tied variable, just once.
159
160=back
161
162It was impossible to fix all the bugs without an incompatible change,
163and the behaviour of negative offsets was never specified, so the
164change was deemed acceptable.
165
166=head2 Return value of C<eval>
167
168C<eval> returns C<undef> in scalar context or an empty list in list
169context when there is a run-time error. When C<eval> was passed a
170string in list context and a syntax error occurred, it used to return a
171list containing a single undefined element. Now it returns an empty
172list in list context for all errors [perl #80630].
173
174=head2 Anonymous handles
175
176Automatically generated file handles are now named __ANONIO__ when the
177variable name cannot be determined, rather than $__ANONIO__.
178
179=head2 Last-accessed filehandle
180
181Perl has an internal variable that stores the last filehandle to be
182accessed. It is used by C<$.> and by C<tell> and C<eof> without
183arguments.
184
185It used to be possible to set this internal variable to a glob copy and
186then modify that glob copy to be something other than a glob, and still
187have the last-accessed filehandle associated with the variable after
188assigning a glob to it again:
189
190 my $foo = *STDOUT; # $foo is a glob copy
191 <$foo>; # $foo is now the last-accessed handle
192 $foo = 3; # no longer a glob
193 $foo = *STDERR; # still the last-accessed handle
194
195Now the C<$foo = 3> assignment unsets that internal variable, so there
196is no last-accessed filehandle, just as if C<< <$foo> >> had never
197happened.
198
199=head2 XS API tweak
200
201The C<newCONSTSUB_flags> C-level function, added in 5.15.4, now has a
202C<len> parameter.
203
204=head1 Performance Enhancements
205
206=over 4
207
208=item *
209
210Perl 5.12.0 sped up the destruction of objects whose classes define
211empty C<DESTROY> methods (to prevent autoloading), by simply not
212calling such empty methods. This release takes this optimisation a
213step further, by not calling any C<DESTROY> method that begins with a
214C<return> statement. This can be useful for destructors that are only
215used for debugging:
216
217 use constant DEBUG => 1;
218 sub DESTROY { return unless DEBUG; ... }
219
220Constant-folding will reduce the first statement to C<return;> if DEBUG
221is set to 0, triggering this optimisation.
222
223=item *
224
225Assigning to a variable that holds a typeglob or copy-on-write scalar
226is now much faster. Previously the typeglob would be stringified or
227the copy-on-write scalar would be copied before being clobbered.
228
229=item *
230
231Assignment to C<substr> in void context is now more than twice its
232previous speed. Instead of creating and returning a special lvalue
233scalar that is then assigned to, C<substr> modifies the original string
234itself.
235
236=back
237
238=head1 Modules and Pragmata
239
240=head2 Updated Modules and Pragmata
241
242=over 4
243
244=item *
245
246L<Archive::Tar> has been upgraded from version 1.80 to version 1.82.
247
248Adjustments to handle files >8gb (>0777777777777 octal) and a feature
249to return the MD5SUM of files in the archive.
250
251=item *
252
253L<AutoLoader> has been upgraded from version 5.71 to version 5.72.
254
255=item *
256
257L<B::Debug> has been upgraded from version 1.16 to version 1.17.
258
259=item *
260
261L<B::Deparse> has been upgraded from version 1.09 to version 1.10.
262
263Various constructs that used to be deparsed incorrectly have been
264fixed:
265
266=over
267
268=item C<sort(foo(bar))>
269
270It used to deparse as C<sort foo(bar)>, which makes foo the sort
271routine, rather than a regular function call.
272
273=item Keys and values in C<%^H>
274
275Undefined values in the hint hash were being deparsed as empty strings.
276Whenever the hint hash changed, all undefined values, even those
277unmodified, were being printed.
278
279Special characters, such as quotation marks, were not being escaped
280properly.
281
282Some values used to be omitted if, for instance, a key was the same as
283a previous value and vice versa.
284
285=item "method BLOCK" syntax
286
287C<method { $expr }> used to be deparsed as something like C<< do{ $expr
288}->method >>, but the latter puts the $expr in scalar context, whereas
289the former puts in list context.
290
291=item C<do +{}> and C<do({})>
292
293These are both variants of do-file syntax, but were being deparsed as
294do-blocks.
295
296=item Keywords that do not follow the llaf rule
297
298Keywords like C<return> and C<last> that do not follow the
299looks-like-a-function rule are now deparsed correctly with parentheses
300in the right place.
301
302Similarly, C<not>, which I<does> follow the llaf rule, was being
303deparsed as though it does not.
304
305=item C<=~>
306
307In various cases, B::Deparse started adding a spurious C<$_ =~> before
308the right-hand side in Perl 5.14; e.g., C<< "" =~ <$a> >> would become
309C<< "" =~ ($_ =~ <$a>) >>.
310
311=item C<open local *FH>
312
313C<open>, C<pipe> and other functions that autovivify handles used to
314omit C<local *> from C<local *FH>.
315
316=item Negated single-letter subroutine calls
317
318Negated subroutine calls like C<- f()> and C<-(f())> were being
319deparsed as file test operators.
320
321=item C<&{&}>
322
323C<&{&}> and C<& &>, which are calls to the subroutine named "&",
324believe it or not, were being deparsed as C<&&>.
325
326=item C<require $this + $that>
327
328In Perl 5.14, C<require> followed by any binary operator started
329deparsing as C<no>.
330
331=back
332
333=item *
334
335L<Carp> has been upgraded from version 1.23 to version 1.24.
336
337It now tacks the last-accessed filehandle and line number on to the end
338of the error message, just like C<die> [perl #96672].
339
340=item *
341
342L<Compress::Raw::Zlib> has been upgraded from version 2.042 to version
3432.045.
344
345=item *
346
347L<Compress::Raw::Bzip2> has been upgraded from version 2.042 to version
3482.045.
349
350=item *
351
352L<CPAN::Meta::YAML> has been upgraded from version 0.004 to version
3530.005.
354
355=item *
356
357L<CPANPLUS> has been upgraded from version 0.9112 to version 0.9114.
358
359=item *
360
361L<Data::Dumper> has been upgraded from version 2.134 to version 2.135.
362
363The XS implementation has been updated to account for the Unicode
364symbol changes in Perl 5.15.4. It also knows how to output typeglobs
365with nulls in their names.
366
367=item *
368
369L<diagnostics> has been upgraded from version 1.25 to version 1.26.
370
371It now understands the "%X" format code, which some error messages
372started using in Perl 5.14.0.
373
374=item *
375
376L<Digest::SHA> has been upgraded from version 5.63 to version 5.70.
377
378Added BITS mode to the addfile method and shasum. This makes
379partial-byte inputs possible via files/STDIN and allows shasum to check
380all 8074 NIST Msg vectors, where previously special programming was
381required to do this.
382
383=item *
384
385L<Exporter> has been upgraded from version 5.65 to version 5.66.
386
387It no longer tries to localise C<$_> unnecessarily.
388
389=item *
390
391L<ExtUtils::ParseXS> has been upgraded from version 3.05 to version
3923.07.
393
394=item *
395
396L<IO::Compress::Base> has been upgraded from version 2.042 to version
3972.046.
398
399Added zipdetails utility.
400
401=item *
402
403L<Locale::Codes> has been upgraded from version 3.18 to version 3.20.
404
405The code2XXX, XXX2code, all_XXX_codes, and all_XXX_names functions now
406support retired codes. All codesets may be specified by a constant or
407by their name now. Previously, they were specified only by a constant.
408
409The alias_code function exists for backward compatibility. It has been
410replaced by rename_country_code. The alias_code function will be
411removed some time after September, 2013.
412
413All work is now done in the central module (Locale::Codes).
414Previously, some was still done in the wrapper modules
415(Locale::Codes::*). Added Language Family codes (langfam) as defined
416in ISO 639-5.
417
418=item *
419
420L<Module::CoreList> has been upgraded from version 2.58 to version
4212.59.
422
423=item *
424
425L<Module::Loaded> has been upgraded from version 0.06 to version 0.08.
426
427=item *
428
429L<Pod::LaTeX> has been upgraded from version 0.59 to version 0.60.
430
431Added another LaTeX escape: --- => -{}-{}-
432
433Pod::LaTeX doesn't handle -- in PODs specially, passing it directly to
434LaTeX, which then proceeds to replace it with a single -. This patch
435replaces ----- with -{}-{}-{}-{}-
436
437=item *
438
439L<POSIX> has been upgraded from version 1.26 to version 1.27.
440
441It no longer produces a "Constant subroutine TCSANOW redefined" warning
442on Windows.
443
444This bug was introduced in Perl 5.15.3.
445
446=item *
447
448L<Socket> has been upgraded from version 1.94_02 to version 1.97.
449
450=item *
451
452L<threads> has been upgraded from version 1.85 to version 1.86.
453
454=item *
455
456L<Unicode::Collate> has been upgraded from version 0.85 to version
4570.87.
458
459Tailored compatibility ideographs as well as unified ideographs for the
460locales: ja, ko, zh__big5han, zh__gb2312han, zh__pinyin, zh__stroke.
461
462Locale/*.pl files are now searched for in @INC.
463
464=item *
465
466L<UNIVERSAL> has been upgraded from version 1.10 to version 1.11.
467
468Documentation change clarifies return values from UNIVERSAL::VERSION.
469
470=back
471
472=head2 Removed Modules and Pragmata
473
474=over 4
475
476=item *
477
478Changing the case of a UTF-8 encoded string under C<use locale> now
479gives better, but still imperfect, results. Previously, such a string
480would entirely lose locale semantics and silently be treated as
481Unicode. Now, the code points that are less than 256 are treated with
482locale rules, while those above 255 are, of course, treated as Unicode.
483 See L<perlfunc/lc> for more details, including the deficiencies of
484this scheme.
485
486=back
487
488=head1 Documentation
489
490=head2 Changes to Existing Documentation
491
492=head3 L<perlsec/Laundering and Detecting Tainted Data>
493
494=over 4
495
496=item *
497
498The example function for checking for taintedness contained a subtle
499error. C<$@> needs to be localized to prevent its changing this
500global's value outside the function. The preferred method to check for
501this remains L<Scalar::Util/tainted>.
502
503=back
504
505=head1 Diagnostics
506
507=head2 Changes to Existing Diagnostics
508
509=over 4
510
511=item *
512
513Redefinition warnings for constant subroutines used to be mandatory,
514even occurring under C<no warnings>. Now they respect the L<warnings>
515pragma.
516
517=item *
518
519The "Attempt to free non-existent shared string" has had the spelling
520of "non-existent" corrected to "nonexistent". It was already listed
521with the correct spelling in L<perldiag>.
522
523=item *
524
525The 'Use of "foo" without parentheses is ambiguous' warning has been
526extended to apply also to user-defined subroutines with a (;$)
527prototype, and not just to built-in functions.
528
529=item *
530
531The error messages for using C<default> and C<when> outside of a
532topicalizer have been standardised to match the messages for
533C<continue> and loop controls. They now read 'Can't "default" outside
534a topicalizer' and 'Can't "when" outside a topicalizer'. They both
535used to be 'Can't use when() outside a topicalizer' [perl #91514].
536
537=back
538
539=head1 Utility Changes
540
541=head3 L<zipdetails>
542
543=over 4
544
545=item *
546
547L<zipdetails> displays information about the internal record structure
548of the zip file. It is not concerned with displaying any details of
549the compressed data stored in the zip file.
550
551=back
552
553=head1 Configuration and Compilation
554
555=over 4
556
557=item *
558
559F<pod/roffitall> is now built by F<pod/buildtoc>, instead of being
560shipped with the distribution. Its list of manpages is now generated
561(and therefore current). See also RT #103202 for an unresolved related
562issue.
563
564=item *
565
566Perl 5.15.5 had a bug in its installation script, which did not install
567F<unicore/Name.pm>. This has been corrected [perl #104226].
568
569=item *
570
571The man page for C<XS::Typemap> is no longer installed. C<XS::Typemap>
572is a test module which is not installed, hence installing its
573documentation makes no sense.
574
575=for 5.16.0 Merge this with the entry for "Stop installing XS::APItest*"
576
577=item *
578
579The man pages for the perl FAQ, L<perlxs>, L<perlxstut> and L<perldoc>
580are once again correctly installed in F<man1>, not F<man3>
581
582=for 5.16.0 This isn't a regression from 5.14.x, so don't mention this.
583
584=item *
585
586The -Dusesitecustomize and -Duserelocatableinc options now work
587together properly.
588
589=back
590
591=head1 Testing
592
593=over 4
594
595=item *
596
597The F<substr.t> and F<substr_thr.t> scripts for testing C<substr> have
598been moved under F<t/op/>, where they were originally. They had been
599moved under F<t/re/> along with the substitution tests when that
600directory was created.
601
602=back
603
604=head1 Platform Support
605
606=head2 Platform-Specific Notes
607
608=head3 VMS
609
610=over 4
611
612=item *
613
614A link-time error on VMS versions without C<symlink> support was
615introduced in 5.15.1, but has now been corrected.
616
617=item *
618
619Explicit support for VMS versions prior to v7.0 and DEC C versions
620prior to v6.0 has been removed.
621
622=item *
623
624Since Perl 5.10.1, the home-grown C<stat> wrapper has been unable to
625distinguish between a directory name containing an underscore and an
626otherwise-identical filename containing a dot in the same position
627(e.g., t/test_pl as a directory and t/test.pl as a file). This problem
628has been corrected.
629
630=back
631
632=head1 Selected Bug Fixes
633
634=over 4
635
636=item *
637
638RT #78266: The regex engine has been leaking memory when accessing
639named captures that weren't matched as part of a regex ever since 5.10
640when they were introduced, e.g. this would consume over a hundred MB of
641memory:
642
643 for (1..10_000_000) {
644 if ("foo" =~ /(foo|(?<capture>bar))?/) {
645 my $capture = $+{capture}
646 }
647 }
648 system "ps -o rss $$"'
649
650=item *
651
652A constant subroutine assigned to a glob whose name contains a null
653will no longer cause extra globs to pop into existence when the
654constant is referenced under its new name.
655
656=item *
657
658C<sort> was not treating C<sub {}> and C<sub {()}> as equivalent when
659such a sub was provided as the comparison routine. It used to croak on
660C<sub {()}>.
661
662=item *
663
664Subroutines from the C<autouse> namespace are once more exempt from
665redefinition warnings. This used to work in 5.005, but was broken in
6665.6 for most subroutines. For subs created via XS that redefine
667subroutines from the C<autouse> package, this stopped working in 5.10.
668
669=item *
670
671New XSUBs now produce redefinition warnings if they overwrite existing
672subs, as they did in 5.8.x. (The C<autouse> logic was reversed in
6735.10-14. Only subroutines from the C<autouse> namespace would warn
674when clobbered.)
675
676=item *
677
678Redefinition warnings triggered by the creation of XSUBs now respect
679Unicode glob names, instead of using the internal representation. This
680was missed in 5.15.4, partly because this warning was so hard to
681trigger. (See the previous item.)
682
683=item *
684
685C<newCONSTSUB> used to use compile-time warning hints, instead of
686run-time hints. The following code should never produce a redefinition
687warning, but it used to, if C<newCONSTSUB> redefined an existing
688subroutine:
689
690 use warnings;
691 BEGIN {
692 no warnings;
693 some_XS_function_that_calls_new_CONSTSUB();
694 }
695
696=item *
697
698Redefinition warnings for constant subroutines are on by default (what
699are known as severe warnings in L<perldiag>). This was only the case
700when it was a glob assignment or declaration of a Perl subroutine that
701caused the warning. If the creation of XSUBs triggered the warning, it
702was not a default warning. This has been corrected.
703
704=item *
705
706The internal check to see whether a redefinition warning should occur
707used to emit "uninitialized" warnings in cases like this:
708
709 use warnings "uninitialized";
710 use constant {u => undef, v => undef};
711 sub foo(){u}
712 sub foo(){v}
713
714=item *
715
716A bug fix in Perl 5.14 introduced a new bug, causing "uninitialized"
717warnings to report the wrong variable if the operator in question had
718two operands and one was C<%{...}> or C<@{...}>. This has been fixed
719[perl #103766].
720
721=item *
722
723C<< version->new("version") >> and C<printf "%vd", "version"> no longer
724crash [perl #102586].
725
726=item *
727
728C<$tied =~ y/a/b/>, C<chop $tied> and C<chomp $tied> now call FETCH
729just once when $tied holds a reference.
730
731=item *
732
733Four-argument C<select> now always calls FETCH on tied arguments. It
734used to skip the call if the tied argument happened to hold C<undef> or
735a typeglob.
736
737=item *
738
739Four-argument C<select> no longer produces its "Non-string passed as
740bitmask" warning on tied or tainted variables that are strings.
741
742=item *
743
744C<sysread> now always calls FETCH on the buffer passed to it if the
745buffer is tied. It used to skip the call if the tied variable happened
746to hold a typeglob.
747
748=item *
749
750C<< $tied .= <> >> now calls FETCH once on C<$tied>. It used to call
751it multiple times if the last value assigned to or returned from the
752tied variable was anything other than a string or typeglob.
753
754=item *
755
756The C<evalbytes> keyword added in 5.15.5 was respecting C<use utf8>
757declarations from the outer scope, when it should have been ignoring
758them.
759
760=item *
761
762C<goto &func> no longer crashes, but produces an error message, when
763the unwinding of the current subroutine's scope fires a destructor that
764undefines the subroutine being "goneto" [perl #99850].
765
766=item *
767
768Arithmetic assignment (C<$left += $right>) involving overloaded objects
769that rely on the 'nomethod' override no longer segfault when the left
770operand is not overloaded.
771
772=item *
773
774Assigning C<__PACKAGE__> or any other shared hash key scalar to a stash
775element no longer causes a double free. Regardless of this change, the
776results of such assignments are still undefined.
777
778=item *
779
780Assigning C<__PACKAGE__> or another shared hash key string to a
781variable no longer stops that variable from being tied if it happens to
782be a PVMG or PVLV internally.
783
784=item *
785
786Creating a C<UNIVERSAL::AUTOLOAD> sub no longer stops C<%+>, C<%-> and
787C<%!> from working some of the time [perl #105024].
788
789=item *
790
791When presented with malformed UTF-8 input, the XS-callable functions
792C<is_utf8_string()>, C<is_utf8_string_loc()>, and
793C<is_utf8_string_loclen()> could read beyond the end of the input
794string by up to 12 bytes. This no longer happens. [perl #32080].
795However, currently, C<is_utf8_char()> still has this defect, see
796L</is_utf8_char()> above.
797
798=item *
799
800Doing a substitution on a tied variable returning a copy-on-write
801scalar used to cause an assertion failure or an "Attempt to free
802nonexistent shared string" warning.
803
804=item *
805
806A change in perl 5.15.4 caused C<caller()> to produce malloc errors and
807a crash with Perl's own malloc, and possibly with other malloc
808implementations, too [perl #104034].
809
810=item *
811
812A bug fix in 5.15.5 could sometimes result in assertion failures under
813debugging builds of perl for certain syntax errors in C<eval>, such as
814C<eval q|""!=!~//|>
815
816=item *
817
818The "c [line num]" debugger command was broken by other debugger
819changes released in 5.15.3. This is now fixed.
820
821=item *
822
823Breakpoints were not properly restored after a debugger restart using
824the "R" command. This was broken in 5.15.3. This is now fixed.
825
826=item *
827
828The debugger prompt did not display the current line. This was broken
829in 5.15.3. This is now fixed.
830
831=item *
832
833Class method calls still suffered from the Unicode bug with Latin-1
834package names. This was missed in the Unicode package name cleanup in
8355.15.4 [perl #105922].
836
837=item *
838
839The debugger no longer tries to do C<local $_> when dumping data
840structures.
841
842=item *
843
844Calling C<readline($fh)> where $fh is a glob copy (e.g., after C<$fh =
845*STDOUT>), assigning something other than a glob to $fh, and then
846freeing $fh (e.g., by leaving the scope where it is defined) no longer
847causes the internal variable used by C<$.> (C<PL_last_in_gv>) to point
848to a freed scalar, that could be reused for some other glob, causing
849C<$.> to use some unrelated filehandle [perl #97988].
850
851=item *
852
853A regression in 5.14 caused these statements not to set the internal
854variable that holds the handle used by C<$.>:
855
856 my $fh = *STDOUT;
857 tell $fh;
858 eof $fh;
859 seek $fh, 0,0;
860 tell *$fh;
861 eof *$fh;
862 seek *$fh, 0,0;
863 readline *$fh;
864
865This is now fixed, but C<tell *{ *$fh }> still has the problem, and it
866is not clear how to fix it [perl #106536].
867
868=item *
869
870Version comparisons, such as those that happen implicitly with C<use
871v5.43>, no longer cause locale settings to change [perl #105784].
872
873=item *
874
875F<pod/buildtoc>, which generates L<perltoc>, put path names in the
876L<perltoc> file. This bug was introduced in 5.15.1.
877
878=back
879
880=head1 Acknowledgments
881
882Perl 5.15.6 represents approximately 2 months of development since Perl
8835.15.5 and contains approximately 48,000 lines of changes across 560
884files from 36 authors.
885
886Perl continues to flourish into its third decade thanks to a vibrant
887community of users and developers. The following people are known to
888have contributed the improvements that became Perl 5.15.6:
889
890Aaron Crane, Abhijit Menon-Sen, Alexandr Ciornii, Brian Fraser, Carl
891Hayter, Chris 'BinGOs' Williams, Craig A. Berry, Dave Rolsky, David
892Golden, David Mitchell, Dominic Hargreaves, Father Chrysostomos, James
893E Keenan, Johannes Plunien, John Peacock, Karl Williamson, Marc Green,
894Mark Dootson, Matthew Horsfall, Nicholas Clark, Paul Evans, Peter
895Martini, Peter Scott, Rafael Garcia-Suarez, Reini Urban, Ricardo
896Signes, Rodolfo Carvalho, Shlomi Fish, Steffen Müller, Steve Hay,
897Steve Peters, Thomas Sibley, Timothe Litt, Tony Cook, Vadim Konovalov,
898Ævar Arnfjörð Bjarmason.
899
900The list above is almost certainly incomplete as it is automatically
901generated from version control history. In particular, it does not
902include the names of the (very much appreciated) contributors who
903reported issues to the Perl bug tracker.
904
905Many of the changes included in this version originated in the CPAN
906modules included in Perl's core. We're grateful to the entire CPAN
907community for helping Perl to flourish.
908
909For a more complete list of all of Perl's historical contributors,
910please see the F<AUTHORS> file in the Perl source distribution.
911
912=head1 Reporting Bugs
913
914If you find what you think is a bug, you might check the articles
915recently posted to the comp.lang.perl.misc newsgroup and the perl bug
916database at http://rt.perl.org/perlbug/ . There may also be
917information at http://www.perl.org/ , the Perl Home Page.
918
919If you believe you have an unreported bug, please run the L<perlbug>
920program included with your release. Be sure to trim your bug down to a
921tiny but sufficient test case. Your bug report, along with the output
922of C<perl -V>, will be sent off to perlbug@perl.org to be analysed by
923the Perl porting team.
924
925If the bug you are reporting has security implications, which make it
926inappropriate to send to a publicly archived mailing list, then please
927send it to perl5-security-report@perl.org. This points to a closed
928subscription unarchived mailing list, which includes all the core
929committers, who will be able to help assess the impact of issues,
930figure out a resolution, and help co-ordinate the release of patches to
931mitigate or fix the problem across all platforms on which Perl is
932supported. Please only use this address for security issues in the
933Perl core, not for modules independently distributed on CPAN.
934
935=head1 SEE ALSO
936
937The F<Changes> file for an explanation of how to view exhaustive
938details on what changed.
939
940The F<INSTALL> file for how to build Perl.
941
942The F<README> file for general stuff.
943
944The F<Artistic> and F<Copying> files for copyright information.
945
946=cut