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