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