Merge branch 'blead' of ssh://perl5.git.perl.org/gitroot/perl into blead
[p5sagit/p5-mst-13.2.git] / pod / perl5110delta.pod
CommitLineData
7120b314 1=head1 NAME
2
5a00ee6a 3perl5110delta - what is new for perl v5.11.0
7120b314 4
5=head1 DESCRIPTION
6
5a00ee6a 7This document describes differences between the 5.10.0 release and
8the 5.11.0 development release.
7120b314 9
10=head1 Incompatible Changes
11
8b8da387 12=head2 Switch statement changes
13
14The handling of complex expressions by the C<given>/C<when> switch
1710b4c0 15statement has been enhanced. There are two new cases where C<when> now
412304fb 16interprets its argument as a boolean, instead of an expression to be used
8b8da387 17in a smart match:
18
19=over 4
20
8b8da387 21=item flip-flop operators
22
98814a2b 23The C<..> and C<...> flip-flop operators are now evaluated in boolean
24context, following their usual semantics; see L<perlop/"Range Operators">.
25
26Note that, as in perl 5.10.0, C<when (1..10)> will not work to test
27whether a given value is an integer between 1 and 10; you should use
28C<when ([1..10])> instead (note the array reference).
29
30However, contrary to 5.10.0, evaluating the flip-flop operators in boolean
31context ensures it can now be useful in a C<when()>, notably for
32implementing bistable conditions, like in:
33
5a00ee6a 34 when (/^=begin/ .. /^=end/) {
35 # do something
36 }
8b8da387 37
38=item defined-or operator
39
40A compound expression involving the defined-or operator, as in
41C<when (expr1 // expr2)>, will be treated as boolean if the first
42expression is boolean. (This just extends the existing rule that applies
43to the regular or operator, as in C<when (expr1 || expr2)>.)
44
45=back
46
98814a2b 47The next section details more changes brought to the semantics to
8b8da387 48the smart match operator, that naturally also modify the behaviour
49of the switch statements where smart matching is implicitly used.
50
51=head2 Smart match changes
52
53=head3 Changes to type-based dispatch
54
55The smart match operator C<~~> is no longer commutative. The behaviour of
56a smart match now depends primarily on the type of its right hand
5a00ee6a 57argument. Moreover, its semantics have been adjusted for greater
ee18cc6c 58consistency or usefulness in several cases. While the general backwards
59compatibility is maintained, several changes must be noted:
8b8da387 60
61=over 4
62
63=item *
64
65Code references with an empty prototype are no longer treated specially.
66They are passed an argument like the other code references (even if they
67choose to ignore it).
68
69=item *
70
71C<%hash ~~ sub {}> and C<@array ~~ sub {}> now test that the subroutine
9091a618 72returns a true value for each key of the hash (or element of the
8b8da387 73array), instead of passing the whole hash or array as a reference to
74the subroutine.
75
76=item *
77
ee18cc6c 78Due to the commutativity breakage, code references are no longer
79treated specially when appearing on the left of the C<~~> operator,
80but like any vulgar scalar.
81
82=item *
83
8b8da387 84C<undef ~~ %hash> is always false (since C<undef> can't be a key in a
85hash). No implicit conversion to C<""> is done (as was the case in perl
865.10.0).
87
88=item *
89
90C<$scalar ~~ @array> now always distributes the smart match across the
91elements of the array. It's true if one element in @array verifies
92C<$scalar ~~ $element>. This is a generalization of the old behaviour
93that tested whether the array contained the scalar.
94
95=back
96
97The full dispatch table for the smart match operator is given in
98L<perlsyn/"Smart matching in detail">.
99
100=head3 Smart match and overloading
101
102According to the rule of dispatch based on the rightmost argument type,
103when an object overloading C<~~> appears on the right side of the
104operator, the overload routine will always be called (with a 3rd argument
105set to a true value, see L<overload>.) However, when the object will
106appear on the left, the overload routine will be called only when the
9091a618 107rightmost argument is a simple scalar. This way distributivity of smart match
8b8da387 108across arrays is not broken, as well as the other behaviours with complex
109types (coderefs, hashes, regexes). Thus, writers of overloading routines
ee18cc6c 110for smart match mostly need to worry only with comparing against a scalar,
111and possibly with stringification overloading; the other common cases
112will be automatically handled consistently.
8b8da387 113
114C<~~> will now refuse to work on objects that do not overload it (in order
665f5e98 115to avoid relying on the object's underlying structure). (However, if the
116object overloads the stringification or the numification operators, and
117if overload fallback is active, it will be used instead, as usual.)
8b8da387 118
f71d6157 119=head2 Labels can't be keywords
120
121Labels used as targets for the C<goto>, C<last>, C<next> or C<redo>
122statements cannot be keywords anymore. This restriction will prevent
123potential confusion between the C<goto LABEL> and C<goto EXPR> syntaxes:
124for example, a statement like C<goto print> would jump to a label whose
125name would be the return value of print(), (usually 1), instead of a
126label named C<print>. Moreover, the other control flow statements
127would just ignore any keyword passed to them as a label name. Since
128such labels cannot be defined anymore, this kind of error will be
129avoided.
130
5a00ee6a 131=head2 Other incompatible changes
132
133=over 4
134
135=item *
136
137The semantics of C<use feature :5.10*> have changed slightly.
138See L<"Modules and Pragmata"> for more information.
139
140=item *
141
142It is now a run-time error to use the smart match operator C<~~>
143with an object that has no overload defined for it. (This way
144C<~~> will not break encapsulation by matching against the
145object's internal representation as a reference.)
146
147=item *
148
149The version control system used for the development of the perl
150interpreter has been switched from Perforce to git. This is mainly an
151internal issue that only affects people actively working on the perl core;
152but it may have minor external visibility, for example in some of details
153of the output of C<perl -V>. See L<perlrepository> for more information.
154
155=item *
156
157The internal structure of the C<ext/> directory in the perl source has
158been reorganised. In general, a module C<Foo::Bar> whose source was
159stored under F<ext/Foo/Bar/> is now located under F<ext/Foo-Bar/>. Also,
160some modules have been moved from F<lib/> to F<ext/>. This is purely a
161source tarball change, and should make no difference to the compilation or
162installation of perl, unless you have a very customised build process that
163explicitly relies on this structure, or which hard-codes the C<nonxs_ext>
164F<Configure> parameter. Specifically, this change does not by default
165alter the location of any files in the final installation.
166
167=item *
168
169As part of the C<Test::Harness> 2.x to 3.x upgrade, the experimental
170C<Test::Harness::Straps> module has been removed.
171See L</"Updated Modules"> for more details.
172
173=item *
174
175As part of the C<ExtUtils::MakeMaker> upgrade, the
176C<ExtUtils::MakeMaker::bytes> and C<ExtUtils::MakeMaker::vmsish> modules
177have been removed from this distribution.
178
179=item *
180
181C<Module::CoreList> no longer contains the C<%:patchlevel> hash.
182
183=item *
184
185This one is actually a change introduced in 5.10.0, but it was missed
186from that release's perldelta, so it is mentioned here instead.
187
188A bugfix related to the handling of the C</m> modifier and C<qr> resulted
189in a change of behaviour between 5.8.x and 5.10.0:
190
191 # matches in 5.8.x, doesn't match in 5.10.0
192 $re = qr/^bar/; "foo\nbar" =~ /$re/m;
193
194=back
195
7120b314 196=head1 Core Enhancements
197
5a00ee6a 198=head2 Unicode Character Database 5.1.0
199
200The copy of the Unicode Character Database included in Perl 5.10.1 has
201been updated to 5.1.0 from 5.0.0. See
202L<http://www.unicode.org/versions/Unicode5.1.0/#Notable_Changes> for the
203notable changes.
204
205=head2 A proper interface for pluggable Method Resolution Orders
206
207As of Perl 5.10.1 there is a new interface for plugging and using method
208resolution orders other than the default (linear depth first search).
209The C3 method resolution order added in 5.10.0 has been re-implemented as
210a plugin, without changing its Perl-space interface. See L<perlmroapi> for
211more information.
212
ef55af2a 213=head2 The C<overloading> pragma
1839a850 214
215This pragma allows you to lexically disable or enable overloading
216for some or all operations. (Yuval Kogman)
217
71e9c532 218=head2 C<\N> regex escape
219
220A new regex escape has been added, C<\N>. It will match any character that
221is not a newline, independently from the presence or absence of the single
222line match modifier C</s>. (If C<\N> is followed by an opening brace and
223by a letter, perl will still assume that a Unicode character name is
224coming, so compatibility is preserved.) (Rafael Garcia-Suarez)
225
4b3db487 226=head2 Implicit strictures
227
228Using the C<use VERSION> syntax with a version number greater or equal
229to 5.11.0 will also lexically enable strictures just like C<use strict>
230would do (in addition to enabling features.) So, the following:
231
232 use 5.11.0;
233
234will now imply:
235
236 use strict;
237 use feature ':5.11';
238
5ee651a9 239=head2 Parallel tests
240
241The core distribution can now run its regression tests in parallel on
242Unix-like platforms. Instead of running C<make test>, set C<TEST_JOBS> in
243your environment to the number of tests to run in parallel, and run
244C<make test_harness>. On a Bourne-like shell, this can be done as
245
246 TEST_JOBS=3 make test_harness # Run 3 tests in parallel
247
248An environment variable is used, rather than parallel make itself, because
249L<TAP::Harness> needs to be able to schedule individual non-conflicting test
250scripts itself, and there is no standard interface to C<make> utilities to
251interact with their job schedulers.
252
5a00ee6a 253Note that currently some test scripts may fail when run in parallel (most
254notably C<ext/IO/t/io_dir.t>). If necessary run just the failing scripts
255again sequentially and see if the failures go away.
256
044c880b 257=head2 The C<...> operator
258
259A new operator, C<...>, nicknamed the Yada Yada operator, has been added.
260It is intended to mark placeholder code, that is not yet implemented.
261See L<perlop/"Yada Yada Operator">. (chromatic)
262
5a00ee6a 263=head2 DTrace support
264
265Some support for DTrace has been added. See "DTrace support" in F<INSTALL>.
266
267=head2 Support for C<configure_requires> in CPAN module metadata
268
269Both C<CPAN> and C<CPANPLUS> now support the C<configure_requires> keyword
270in the C<META.yml> metadata file included in most recent CPAN distributions.
271This allows distribution authors to specify configuration prerequisites that
272must be installed before running F<Makefile.PL> or F<Build.PL>.
273
274See the documentation for C<ExtUtils::MakeMaker> or C<Module::Build> for more
275on how to specify C<configure_requires> when creating a distribution for CPAN.
276
7120b314 277=head1 Modules and Pragmata
278
5a00ee6a 279=head2 New Modules and Pragmata
280
281=over 4
282
283=item C<autodie>
284
285This is a new lexically-scoped alternative for the C<Fatal> module.
286The bundled version is 2.06_01. Note that in this release, using a string
287eval when C<autodie> is in effect can cause the autodie behaviour to leak
288into the surrounding scope. See L<autodie/"BUGS"> for more details.
289
290=item C<Compress::Raw::Bzip2>
291
292This has been added to the core (version 2.020).
293
294=item C<parent>
295
296This pragma establishes an ISA relationship with base classes at compile
297time. It provides the key feature of C<base> without the feature creep.
298
299=item C<Parse::CPAN::Meta>
300
301This has been added to the core (version 1.39).
302
303=back
304
1839a850 305=head2 Pragmata Changes
306
307=over 4
308
309=item C<overloading>
310
311See L</"The C<overloading> pragma"> above.
312
5a00ee6a 313=item C<attributes>
314
315Upgraded from version 0.08 to 0.09.
316
317=item C<attrs>
318
319Upgraded from version 1.02 to 1.03.
320
321=item C<base>
322
323Upgraded from version 2.13 to 2.14. See L<parent> for a replacement.
324
325=item C<bigint>
326
327Upgraded from version 0.22 to 0.23.
328
329=item C<bignum>
330
331Upgraded from version 0.22 to 0.23.
332
333=item C<bigrat>
334
335Upgraded from version 0.22 to 0.23.
336
337=item C<charnames>
338
339Upgraded from version 1.06 to 1.07.
340
341The Unicode F<NameAliases.txt> database file has been added. This has the
342effect of adding some extra C<\N> character names that formerly wouldn't
343have been recognised; for example, C<"\N{LATIN CAPITAL LETTER GHA}">.
344
345=item C<constant>
346
347Upgraded from version 1.13 to 1.17.
348
349=item C<feature>
350
351The meaning of the C<:5.10> and C<:5.10.X> feature bundles has
352changed slightly. The last component, if any (i.e. C<X>) is simply ignored.
353This is predicated on the assumption that new features will not, in
354general, be added to maintenance releases. So C<:5.10> and C<:5.10.X>
355have identical effect. This is a change to the behaviour documented for
3565.10.0.
357
358=item C<fields>
359
360Upgraded from version 2.13 to 2.14 (this was just a version bump; there
361were no functional changes).
362
363=item C<lib>
364
365Upgraded from version 0.5565 to 0.62.
366
367=item C<open>
368
369Upgraded from version 1.06 to 1.07.
370
371=item C<overload>
372
373Upgraded from version 1.06 to 1.07.
374
375=item C<overloading>
376
377See L</"The C<overloading> pragma"> above.
378
379=item C<version>
380
381Upgraded from version 0.74 to 0.77.
382
1839a850 383=back
384
5a00ee6a 385=head2 Updated Modules
02569b83 386
387=over 4
388
5a00ee6a 389=item C<Archive::Extract>
390
391Upgraded from version 0.24 to 0.34.
392
393=item C<Archive::Tar>
394
395Upgraded from version 1.38 to 1.52.
396
397=item C<Attribute::Handlers>
398
399Upgraded from version 0.79 to 0.85.
400
401=item C<AutoLoader>
402
403Upgraded from version 5.63 to 5.68.
404
405=item C<AutoSplit>
406
407Upgraded from version 1.05 to 1.06.
408
409=item C<B>
410
411Upgraded from version 1.17 to 1.22.
412
413=item C<B::Debug>
414
415Upgraded from version 1.05 to 1.11.
416
417=item C<B::Deparse>
418
419Upgraded from version 0.83 to 0.89.
420
421=item C<B::Lint>
422
423Upgraded from version 1.09 to 1.11.
424
425=item C<B::Xref>
426
427Upgraded from version 1.01 to 1.02.
428
429=item C<Benchmark>
430
431Upgraded from version 1.10 to 1.11.
432
433=item C<Carp>
434
435Upgraded from version 1.08 to 1.11.
436
02569b83 437L<Carp> now includes all the necessary code to function. Previously, it
438used to be a lightweight placeholder that loaded the actual code from
439C<Carp::Heavy> on demand. C<Carp::Heavy> is now a simple, empty module
440kept for backwards compatibility for programs that used to pre-load it.
441
02569b83 442
5a00ee6a 443=item C<CGI>
7120b314 444
5a00ee6a 445Upgraded from version 3.29 to 3.43.
446(also includes the "default_value for popup_menu()" fix from 3.45).
7120b314 447
5a00ee6a 448=item C<Compress::Zlib>
7120b314 449
5a00ee6a 450Upgraded from version 2.008 to 2.020.
7120b314 451
5a00ee6a 452=item C<CPAN>
7120b314 453
5a00ee6a 454Upgraded from version 1.9205 to 1.9402. C<CPAN::FTP> has a local fix to
455stop it being too verbose on download failure.
54ad55c5 456
5a00ee6a 457=item C<CPANPLUS>
54ad55c5 458
5a00ee6a 459Upgraded from version 0.84 to 0.88.
54ad55c5 460
5a00ee6a 461=item C<CPANPLUS::Dist::Build>
e2c0f81f 462
5a00ee6a 463Upgraded from version 0.06_02 to 0.36.
e2c0f81f 464
5a00ee6a 465=item C<Cwd>
fc46f0f6 466
5a00ee6a 467Upgraded from version 3.25_01 to 3.30.
fc46f0f6 468
5a00ee6a 469=item C<Data::Dumper>
54ad55c5 470
5a00ee6a 471Upgraded from version 2.121_14 to 2.124.
7120b314 472
5a00ee6a 473=item C<DB>
7120b314 474
5a00ee6a 475Upgraded from version 1.01 to 1.02.
476
477=item C<DB_File>
478
479Upgraded from version 1.816_1 to 1.820.
480
481=item C<Devel::PPPort>
482
483Upgraded from version 3.13 to 3.19.
484
485=item C<Digest::MD5>
486
487Upgraded from version 2.36_01 to 2.39.
488
489=item C<Digest::SHA>
490
491Upgraded from version 5.45 to 5.47.
492
493=item C<DirHandle>
494
495Upgraded from version 1.01 to 1.03.
496
497=item C<Dumpvalue>
498
499Upgraded from version 1.12 to 1.13.
500
501=item C<DynaLoader>
502
503Upgraded from version 1.08 to 1.10.
504
505=item C<Encode>
506
507Upgraded from version 2.23 to 2.35.
508
509=item C<Errno>
510
511Upgraded from version 1.10 to 1.11.
512
513=item C<Exporter>
514
515Upgraded from version 5.62 to 5.63.
516
517=item C<ExtUtils::CBuilder>
518
519Upgraded from version 0.21 to 0.2602.
520
521=item C<ExtUtils::Command>
522
523Upgraded from version 1.13 to 1.16.
524
525=item C<ExtUtils::Constant>
526
527Upgraded from 0.20 to 0.22. (Note that neither of these versions are
528available on CPAN.)
529
530=item C<ExtUtils::Embed>
531
532Upgraded from version 1.27 to 1.28.
533
534=item C<ExtUtils::Install>
535
536Upgraded from version 1.44 to 1.54.
537
538=item C<ExtUtils::MakeMaker>
539
540Upgraded from version 6.42 to 6.55_02.
541
542Note that C<ExtUtils::MakeMaker::bytes> and C<ExtUtils::MakeMaker::vmsish>
543have been removed from this distribution.
544
545=item C<ExtUtils::Manifest>
546
547Upgraded from version 1.51_01 to 1.56.
548
549=item C<ExtUtils::ParseXS>
550
551Upgraded from version 2.18_02 to 2.2002.
552
553=item C<Fatal>
554
555Upgraded from version 1.05 to 2.06_01. See also the new pragma C<autodie>.
556
557=item C<File::Basename>
558
559Upgraded from version 2.76 to 2.77.
560
561=item C<File::Compare>
562
563Upgraded from version 1.1005 to 1.1006.
564
565=item C<File::Copy>
566
567Upgraded from version 2.11 to 2.14.
568
569=item C<File::Fetch>
570
571Upgraded from version 0.14 to 0.20.
572
573=item C<File::Find>
574
575Upgraded from version 1.12 to 1.14.
576
577=item C<File::Path>
578
579Upgraded from version 2.04 to 2.07_03.
580
581=item C<File::Spec>
582
583Upgraded from version 3.2501 to 3.30.
584
585=item C<File::stat>
586
587Upgraded from version 1.00 to 1.01.
588
589=item C<File::Temp>
590
591Upgraded from version 0.18 to 0.22.
592
593=item C<FileCache>
594
595Upgraded from version 1.07 to 1.08.
596
597=item C<FileHandle>
598
599Upgraded from version 2.01 to 2.02.
600
601=item C<Filter::Simple>
602
603Upgraded from version 0.82 to 0.84.
604
605=item C<Filter::Util::Call>
606
607Upgraded from version 1.07 to 1.08.
608
609=item C<FindBin>
610
611Upgraded from version 1.49 to 1.50.
612
613=item C<GDBM_File>
614
615Upgraded from version 1.08 to 1.09.
616
617=item C<Getopt::Long>
618
619Upgraded from version 2.37 to 2.38.
620
621=item C<Hash::Util::FieldHash>
622
623Upgraded from version 1.03 to 1.04. This fixes a memory leak.
624
625=item C<I18N::Collate>
626
627Upgraded from version 1.00 to 1.01.
628
629=item C<IO>
630
631Upgraded from version 1.23_01 to 1.25.
632
633This makes non-blocking mode work on Windows in C<IO::Socket::INET>
634[CPAN #43573].
635
636=item C<IO::Compress::*>
637
638Upgraded from version 2.008 to 2.020.
639
640=item C<IO::Dir>
641
642Upgraded from version 1.06 to 1.07.
643
644=item C<IO::Handle>
645
646Upgraded from version 1.27 to 1.28.
647
648=item C<IO::Socket>
649
650Upgraded from version 1.30_01 to 1.31.
651
652=item C<IO::Zlib>
653
654Upgraded from version 1.07 to 1.09.
655
656=item C<IPC::Cmd>
657
658Upgraded from version 0.40_1 to 0.46.
659
660=item C<IPC::Open3>
661
662Upgraded from version 1.02 to 1.04.
663
664=item C<IPC::SysV>
665
666Upgraded from version 1.05 to 2.01.
667
668=item C<lib>
669
670Upgraded from version 0.5565 to 0.62.
671
672=item C<List::Util>
673
674Upgraded from version 1.19 to 1.21.
675
676=item C<Locale::MakeText>
677
678Upgraded from version 1.12 to 1.13.
679
680=item C<Log::Message>
681
682Upgraded from version 0.01 to 0.02.
683
684=item C<Math::BigFloat>
685
686Upgraded from version 1.59 to 1.60.
687
688=item C<Math::BigInt>
689
690Upgraded from version 1.88 to 1.89.
691
692=item C<Math::BigInt::FastCalc>
693
694Upgraded from version 0.16 to 0.19.
695
696=item C<Math::BigRat>
697
698Upgraded from version 0.21 to 0.22.
699
700=item C<Math::Complex>
701
702Upgraded from version 1.37 to 1.56.
703
704=item C<Math::Trig>
705
706Upgraded from version 1.04 to 1.20.
707
708=item C<Memoize>
709
710Upgraded from version 1.01_02 to 1.01_03 (just a minor documentation
711change).
712
713=item C<Module::Build>
714
715Upgraded from version 0.2808_01 to 0.34_02.
716
717=item C<Module::CoreList>
718
719Upgraded from version 2.13 to 2.18. This release no longer contains the
720C<%Module::CoreList::patchlevel> hash.
721
722=item C<Module::Load>
723
724Upgraded from version 0.12 to 0.16.
725
726=item C<Module::Load::Conditional>
727
728Upgraded from version 0.22 to 0.30.
729
730=item C<Module::Loaded>
731
732Upgraded from version 0.01 to 0.02.
733
734=item C<Module::Pluggable>
735
736Upgraded from version 3.6 to 3.9.
737
738=item C<NDBM_File>
739
740Upgraded from version 1.07 to 1.08.
741
742=item C<Net::Ping>
743
744Upgraded from version 2.33 to 2.36.
745
746=item C<NEXT>
747
748Upgraded from version 0.60_01 to 0.64.
749
750=item C<Object::Accessor>
751
752Upgraded from version 0.32 to 0.34.
753
754=item C<OS2::REXX>
755
756Upgraded from version 1.03 to 1.04.
757
758=item C<Package::Constants>
759
760Upgraded from version 0.01 to 0.02.
761
762=item C<PerlIO>
763
764Upgraded from version 1.04 to 1.06.
765
766=item C<PerlIO::via>
767
768Upgraded from version 0.04 to 0.07.
769
770=item C<Pod::Man>
771
772Upgraded from version 2.16 to 2.22.
773
774=item C<Pod::Parser>
775
776Upgraded from version 1.35 to 1.37.
777
778=item C<Pod::Simple>
779
780Upgraded from version 3.05 to 3.07.
781
782=item C<Pod::Text>
783
784Upgraded from version 3.08 to 3.13.
785
786=item C<POSIX>
787
788Upgraded from version 1.13 to 1.17.
789
790=item C<Safe>
791
792Upgraded from 2.12 to 2.18.
793
794=item C<Scalar::Util>
795
796Upgraded from version 1.19 to 1.21.
797
798=item C<SelectSaver>
799
800Upgraded from 1.01 to 1.02.
801
802=item C<SelfLoader>
803
804Upgraded from 1.11 to 1.17.
805
806=item C<Socket>
807
808Upgraded from 1.80 to 1.82.
809
810=item C<Storable>
811
812Upgraded from 2.18 to 2.20.
813
814=item C<Switch>
815
816Upgraded from version 2.13 to 2.14. Please see L</Deprecations>.
817
818=item C<Symbol>
819
820Upgraded from version 1.06 to 1.07.
821
822=item C<Sys::Syslog>
823
824Upgraded from version 0.22 to 0.27.
825
826=item C<Term::ANSIColor>
827
828Upgraded from version 1.12 to 2.00.
829
830=item C<Term::ReadLine>
831
832Upgraded from version 1.03 to 1.04.
833
834=item C<Term::UI>
835
836Upgraded from version 0.18 to 0.20.
837
838=item C<Test::Harness>
839
840Upgraded from version 2.64 to 3.17.
841
842Note that one side-effect of the 2.x to 3.x upgrade is that the
843experimental C<Test::Harness::Straps> module (and its supporting
844C<Assert>, C<Iterator>, C<Point> and C<Results> modules) have been
845removed. If you still need this, then they are available in the
846(unmaintained) C<Test-Harness-Straps> distribution on CPAN.
847
848=item C<Test::Simple>
849
850Upgraded from version 0.72 to 0.92.
851
852=item C<Text::ParseWords>
853
854Upgraded from version 3.26 to 3.27.
855
856=item C<Text::Tabs>
857
858Upgraded from version 2007.1117 to 2009.0305.
859
860=item C<Text::Wrap>
861
862Upgraded from version 2006.1117 to 2009.0305.
863
864=item C<Thread::Queue>
865
866Upgraded from version 2.00 to 2.11.
867
868=item C<Thread::Semaphore>
869
870Upgraded from version 2.01 to 2.09.
871
872=item C<threads>
873
874Upgraded from version 1.67 to 1.72.
875
876=item C<threads::shared>
877
878Upgraded from version 1.14 to 1.29.
879
880=item C<Tie::RefHash>
881
882Upgraded from version 1.37 to 1.38.
883
884=item C<Tie::StdHandle>
885
886This has documentation changes, and has been assigned a version for the
887first time: version 4.2.
888
889=item C<Time::HiRes>
890
891Upgraded from version 1.9711 to 1.9719.
892
893=item C<Time::Local>
894
895Upgraded from version 1.18 to 1.1901.
896
897=item C<Time::Piece>
898
899Upgraded from version 1.12 to 1.15.
900
901=item C<Unicode::Normalize>
902
903Upgraded from version 1.02 to 1.03.
904
905=item C<Unicode::UCD>
906
907Upgraded from version 0.25 to 0.27.
908
909C<charinfo()> now works on Unified CJK code points added to later versions
910of Unicode.
911
912C<casefold()> has new fields returned to provide both a simpler interface
913and previously missing information. The old fields are retained for
914backwards compatibility. Information about Turkic-specific code points is
915now returned.
916
917The documentation has been corrected and expanded.
918
919=item C<UNIVERSAL>
920
921Upgraded from version 1.04 to 1.05.
922
923=item C<Win32>
924
925Upgraded from version 0.34 to 0.39.
926
927=item C<Win32API::File>
928
929Upgraded from version 0.1001_01 to 0.1101.
930
931=item C<XSLoader>
932
933Upgraded from version 0.08 to 0.10.
934
935=back
936
937=head1 Utility Changes
938
939=over 4
940
941=item F<h2ph>
942
943Now looks in C<include-fixed> too, which is a recent addition to gcc's
944search path.
945
946=item F<h2xs>
947
948No longer incorrectly treats enum values like macros (Daniel Burr).
949
950Now handles C++ style constants (C<//>) properly in enums. (A patch from
951Rainer Weikusat was used; Daniel Burr also proposed a similar fix).
952
953=item F<perl5db.pl>
954
955C<LVALUE> subroutines now work under the debugger.
956
957The debugger now correctly handles proxy constant subroutines, and
958subroutine stubs.
959
960=item F<perlthanks>
961
962Perl 5.10.1 adds a new utility F<perlthanks>, which is a variant of
963F<perlbug>, but for sending non-bug-reports to the authors and maintainers
964of Perl. Getting nothing but bug reports can become a bit demoralising:
965we'll see if this changes things.
966
967=back
968
969=head1 New Documentation
970
971=over 4
972
973=item L<perlhaiku>
974
975This contains instructions on how to build perl for the Haiku platform.
976
977=item L<perlmroapi>
978
979This describes the new interface for pluggable Method Resolution Orders.
980
981=item L<perlperf>
982
983This document, by Richard Foley, provides an introduction to the use of
984performance and optimization techniques which can be used with particular
985reference to perl programs.
986
987=item L<perlrepository>
988
989This describes how to access the perl source using the I<git> version
990control system.
991
992=item L<perlthanks>
993
994This describes the new F<perlthanks> utility.
995
996=back
997
998=head1 Changes to Existing Documentation
999
1000The various large C<Changes*> files (which listed every change made to perl
1001over the last 18 years) have been removed, and replaced by a small file,
1002also called C<Changes>, which just explains how that same information may
1003be extracted from the git version control system.
1004
1005The file F<Porting/patching.pod> has been deleted, as it mainly described
1006interacting with the old Perforce-based repository, which is now obsolete.
1007Information still relevant has been moved to L<perlrepository>.
1008
1009L<perlapi>, L<perlintern>, L<perlmodlib> and L<perltoc> are now all
1010generated at build time, rather than being shipped as part of the release.
1011
1012=head1 Performance Enhancements
1013
1014=over 4
1015
1016=item *
1017
1018A new internal cache means that C<isa()> will often be faster.
1019
1020=item *
1021
1022Under C<use locale>, the locale-relevant information is now cached on
1023read-only values, such as the list returned by C<keys %hash>. This makes
1024operations such as C<sort keys %hash> in the scope of C<use locale> much
1025faster.
1026
1027=item *
1028
1029Empty C<DESTROY> methods are no longer called.
1030
1031=back
1032
1033=head1 Installation and Configuration Improvements
1034
1035=head2 F<ext/> reorganisation
1036
1037The layout of directories in F<ext> has been revised. Specifically, all
1038extensions are now flat, and at the top level, with C</> in pathnames
1039replaced by C<->, so that F<ext/Data/Dumper/> is now F<ext/Data-Dumper/>,
1040etc. The names of the extensions as specified to F<Configure>, and as
1041reported by C<%Config::Config> under the keys C<dynamic_ext>,
1042C<known_extensions>, C<nonxs_ext> and C<static_ext> have not changed, and
1043still use C</>. Hence this change will not have any affect once perl is
1044installed. However, C<Attribute::Handlers>, C<Safe> and C<mro> have now
1045become extensions in their own right, so if you run F<Configure> with
1046options to specify an exact list of extensions to build, you will need to
1047change it to account for this.
1048
1049For 5.10.2, it is planned that many dual-life modules will have been moved
1050from F<lib> to F<ext>; again this will have no effect on an installed
1051perl, but will matter if you invoke F<Configure> with a pre-canned list of
1052extensions to build.
1053
1054=head2 Configuration improvements
1055
1056If C<vendorlib> and C<vendorarch> are the same, then they are only added to
1057C<@INC> once.
1058
1059C<$Config{usedevel}> and the C-level C<PERL_USE_DEVEL> are now defined if
1060perl is built with C<-Dusedevel>.
1061
1062F<Configure> will enable use of C<-fstack-protector>, to provide protection
1063against stack-smashing attacks, if the compiler supports it.
1064
1065F<Configure> will now determine the correct prototypes for re-entrant
1066functions, and for C<gconvert>, if you are using a C++ compiler rather
1067than a C compiler.
1068
1069On Unix, if you build from a tree containing a git repository, the
1070configuration process will note the commit hash you have checked out, for
1071display in the output of C<perl -v> and C<perl -V>. Unpushed local commits
1072are automatically added to the list of local patches displayed by
1073C<perl -V>.
1074
1075=head2 Compilation improvements
1076
1077As part of the flattening of F<ext>, all extensions on all platforms are
1078built by F<make_ext.pl>. This replaces the Unix-specific
1079F<ext/util/make_ext>, VMS-specific F<make_ext.com> and Win32-specific
1080F<win32/buildext.pl>.
1081
1082=head2 Platform Specific Changes
1083
1084=over 4
1085
1086=item AIX
1087
1088Removed F<libbsd> for AIX 5L and 6.1. Only flock() was used from F<libbsd>.
1089
1090Removed F<libgdbm> for AIX 5L and 6.1. The F<libgdbm> is delivered as an
1091optional package with the AIX Toolbox. Unfortunately the 64 bit version
1092is broken.
1093
1094Hints changes mean that AIX 4.2 should work again.
1095
1096=item Cygwin
1097
1098On Cygwin we now strip the last number from the DLL. This has been the
1099behaviour in the cygwin.com build for years. The hints files have been
1100updated.
1101
1102=item FreeBSD
1103
1104The hints files now identify the correct threading libraries on FreeBSD 7
1105and later.
1106
1107=item Irix
1108
1109We now work around a bizarre preprocessor bug in the Irix 6.5 compiler:
1110C<cc -E -> unfortunately goes into K&R mode, but C<cc -E file.c> doesn't.
1111
1112=item Haiku
1113
1114Patches from the Haiku maintainers have been merged in. Perl should now
1115build on Haiku.
1116
1117=item MirOS BSD
1118
1119Perl should now build on MirOS BSD.
1120
1121=item NetBSD
1122
1123Hints now supports versions 5.*.
1124
1125=item Stratus VOS
1126
1127Various changes from Stratus have been merged in.
1128
1129=item Symbian
1130
1131There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK.
1132
1133=item Win32
1134
1135Improved message window handling means that C<alarm> and C<kill> messages
1136will no longer be dropped under race conditions.
1137
1138=item VMS
1139
1140Reads from the in-memory temporary files of C<PerlIO::scalar> used to fail
1141if C<$/> was set to a numeric reference (to indicate record-style reads).
1142This is now fixed.
1143
1144VMS now supports C<getgrgid>.
1145
1146Many improvements and cleanups have been made to the VMS file name handling
1147and conversion code.
1148
1149Enabling the C<PERL_VMS_POSIX_EXIT> logical name now encodes a POSIX exit
1150status in a VMS condition value for better interaction with GNV's bash
1151shell and other utilities that depend on POSIX exit values. See
1152L<perlvms/"$?"> for details.
1153
1154=back
1155
1156=head1 Selected Bug Fixes
1157
1158=over 4
1159
1160=item
1161
1162=item C<-I> on shebang line now adds directories in front of @INC.
1163as documented, and as does C<-I> when specified on the command-line.
1164(Renée Bäcker)
1165
1166=item
1167
1168* C<kill> is now fatal when called on non-numeric process identifiers.
1169Previously, an 'undef' process identifier would be interpreted as a request to
1170kill process "0", which would terminate the current process group on POSIX
1171systems. Since process identifiers are always integers, killing a non-numeric
1172process is now fatal.
1173
1174=item *
1175
11765.10.0 inadvertently disabled an optimisation, which caused a measurable
1177performance drop in list assignment, such as is often used to assign
1178function parameters from C<@_>. The optimisation has been re-instated, and
1179the performance regression fixed.
1180
1181=item *
1182
1183Fixed memory leak on C<while (1) { map 1, 1 }> [RT #53038].
1184
1185=item *
1186
1187Some potential coredumps in PerlIO fixed [RT #57322,54828].
1188
1189=item *
1190
1191The debugger now works with lvalue subroutines.
1192
1193=item *
1194
1195The debugger's C<m> command was broken on modules that defined constants
1196[RT #61222].
1197
1198=item *
1199
1200C<crypt()> and string complement could return tainted values for untainted
1201arguments [RT #59998].
1202
1203=item *
1204
1205The C<-i.suffix> command-line switch now recreates the file using
1206restricted permissions, before changing its mode to match the original
1207file. This eliminates a potential race condition [RT #60904].
1208
1209=item *
1210
1211On some UNIX systems, the value in C<$?> would not have the top bit set
1212(C<$? & 128>) even if the child core dumped.
1213
1214=item *
1215
1216Under some circumstances, $^R could incorrectly become undefined
1217[RT #57042].
1218
1219=item *
1220
1221(XS) In various hash functions, passing a pre-computed hash to when the
1222key is UTF-8 might result in an incorrect lookup.
1223
1224=item *
1225
1226(XS) Including F<XSUB.h> before F<perl.h> gave a compile-time error
1227[RT #57176].
1228
1229=item *
1230
1231C<< $object->isa('Foo') >> would report false if the package C<Foo> didn't
1232exist, even if the object's C<@ISA> contained C<Foo>.
1233
1234=item *
1235
1236Various bugs in the new-to 5.10.0 mro code, triggered by manipulating
1237C<@ISA>, have been found and fixed.
1238
1239=item *
1240
1241Bitwise operations on references could crash the interpreter, e.g.
1242C<$x=\$y; $x |= "foo"> [RT #54956].
1243
1244=item *
1245
1246Patterns including alternation might be sensitive to the internal UTF-8
1247representation, e.g.
1248
1249 my $byte = chr(192);
1250 my $utf8 = chr(192); utf8::upgrade($utf8);
1251 $utf8 =~ /$byte|X}/i; # failed in 5.10.0
1252
1253=item *
1254
1255Within UTF8-encoded Perl source files (i.e. where C<use utf8> is in
1256effect), double-quoted literal strings could be corrupted where a C<\xNN>,
1257C<\0NNN> or C<\N{}> is followed by a literal character with ordinal value
1258greater than 255 [RT #59908].
1259
1260=item *
1261
1262C<B::Deparse> failed to correctly deparse various constructs:
1263C<readpipe STRING> [RT #62428], C<CORE::require(STRING)> [RT #62488],
1264C<sub foo(_)> [RT #62484].
1265
1266=item *
1267
1268Using C<setpgrp()> with no arguments could corrupt the perl stack.
1269
1270=item *
1271
1272The block form of C<eval> is now specifically trappable by C<Safe> and
1273C<ops>. Previously it was erroneously treated like string C<eval>.
1274
1275=item *
1276
1277In 5.10.0, the two characters C<[~> were sometimes parsed as the smart
1278match operator (C<~~>) [RT #63854].
1279
1280=item *
1281
1282In 5.10.0, the C<*> quantifier in patterns was sometimes treated as
1283C<{0,32767}> [RT #60034, #60464]. For example, this match would fail:
1284
1285 ("ab" x 32768) =~ /^(ab)*$/
1286
1287=item *
1288
1289C<shmget> was limited to a 32 bit segment size on a 64 bit OS [RT #63924].
1290
1291=item *
1292
1293Using C<next> or C<last> to exit a C<given> block no longer produces a
1294spurious warning like the following:
1295
1296 Exiting given via last at foo.pl line 123
1297
1298=item *
1299
1300On Windows, C<'.\foo'> and C<'..\foo'> were treated differently than
1301C<'./foo'> and C<'../foo'> by C<do> and C<require> [RT #63492].
1302
1303=item *
1304
1305Assigning a format to a glob could corrupt the format; e.g.:
1306
1307 *bar=*foo{FORMAT}; # foo format now bad
1308
1309=item *
1310
1311Attempting to coerce a typeglob to a string or number could cause an
1312assertion failure. The correct error message is now generated,
1313C<Can't coerce GLOB to I<$type>>.
1314
1315=item *
1316
1317Under C<use filetest 'access'>, C<-x> was using the wrong access mode. This
1318has been fixed [RT #49003].
1319
1320=item *
1321
1322C<length> on a tied scalar that returned a Unicode value would not be
1323correct the first time. This has been fixed.
1324
1325=item *
1326
1327Using an array C<tie> inside in array C<tie> could SEGV. This has been
1328fixed. [RT #51636]
1329
1330=item *
1331
1332A race condition inside C<PerlIOStdio_close()> has been identified and
1333fixed. This used to cause various threading issues, including SEGVs.
1334
1335=item *
1336
1337In C<unpack>, the use of C<()> groups in scalar context was internally
1338placing a list on the interpreter's stack, which manifested in various
1339ways, including SEGVs. This is now fixed [RT #50256].
1340
1341=item *
1342
1343Magic was called twice in C<substr>, C<\&$x>, C<tie $x, $m> and C<chop>.
1344These have all been fixed.
1345
1346=item *
1347
1348A 5.10.0 optimisation to clear the temporary stack within the implicit
1349loop of C<s///ge> has been reverted, as it turned out to be the cause of
1350obscure bugs in seemingly unrelated parts of the interpreter [commit
1351ef0d4e17921ee3de].
1352
1353=item *
1354
1355The line numbers for warnings inside C<elsif> are now correct.
1356
1357=item *
1358
1359The C<..> operator now works correctly with ranges whose ends are at or
1360close to the values of the smallest and largest integers.
1361
1362=item *
1363
1364C<binmode STDIN, ':raw'> could lead to segmentation faults on some platforms.
1365This has been fixed [RT #54828].
1366
1367=item *
1368
1369An off-by-one error meant that C<index $str, ...> was effectively being
1370executed as C<index "$str\0", ...>. This has been fixed [RT #53746].
1371
1372=item *
1373
1374Various leaks associated with named captures in regexes have been fixed
1375[RT #57024].
1376
1377=item *
1378
1379A weak reference to a hash would leak. This was affecting C<DBI>
1380[RT #56908].
1381
1382=item *
1383
1384Using (?|) in a regex could cause a segfault [RT #59734].
1385
1386=item *
1387
1388Use of a UTF-8 C<tr//> within a closure could cause a segfault [RT #61520].
1389
1390=item *
1391
1392Calling C<sv_chop()> or otherwise upgrading an SV could result in an
1393unaligned 64-bit access on the SPARC architecture [RT #60574].
1394
1395=item *
1396
1397In the 5.10.0 release, C<inc_version_list> would incorrectly list
1398C<5.10.*> after C<5.8.*>; this affected the C<@INC> search order
1399[RT #67628].
1400
1401=item *
1402
1403In 5.10.0, C<pack "a*", $tainted_value> returned a non-tainted value
1404[RT #52552].
1405
1406=item *
1407
1408In 5.10.0, C<printf> and C<sprintf> could produce the fatal error
1409C<panic: utf8_mg_pos_cache_update> when printing UTF-8 strings
1410[RT #62666].
1411
1412=item *
1413
1414In the 5.10.0 release, a dynamically created C<AUTOLOAD> method might be
1415missed (method cache issue) [RT #60220,60232].
1416
1417=item *
1418
1419In the 5.10.0 release, a combination of C<use feature> and C<//ee> could
1420cause a memory leak [RT #63110].
1421
1422=item *
1423
1424C<-C> on the shebang (C<#!>) line is once more permitted if it is also
1425specified on the command line. C<-C> on the shebang line used to be a
1426silent no-op I<if> it was not also on the command line, so perl 5.10.0
1427disallowed it, which broke some scripts. Now perl checks whether it is
1428also on the command line and only dies if it is not [RT #67880].
1429
1430=item *
1431
1432In 5.10.0, certain types of re-entrant regular expression could crash,
1433or cause the following assertion failure [RT #60508]:
1434
1435 Assertion rx->sublen >= (s - rx->subbeg) + i failed
1436
1437
1438=back
1439
1440=head1 New or Changed Diagnostics
1441
1442=over 4
1443
1444=item C<panic: sv_chop %s>
1445
1446This new fatal error occurs when the C routine C<Perl_sv_chop()> was
1447passed a position that is not within the scalar's string buffer. This
1448could be caused by buggy XS code, and at this point recovery is not
1449possible.
1450
1451=item C<Can't locate package %s for the parents of %s>
1452
1453This warning has been removed. In general, it only got produced in
1454conjunction with other warnings, and removing it allowed an ISA lookup
1455optimisation to be added.
1456
1457=item C<v-string in use/require is non-portable>
1458
1459This warning has been removed.
1460
1461=item C<Deep recursion on subroutine "%s">
1462
1463It is now possible to change the depth threshold for this warning from the
1464default of 100, by recompiling the F<perl> binary, setting the C
1465pre-processor macro C<PERL_SUB_DEPTH_WARN> to the desired value.
1466
1467=back
1468
1469=head1 Changed Internals
1470
1471=over 4
1472
1473=item *
1474
1475The J.R.R. Tolkien quotes at the head of C source file have been checked and
1476proper citations added, thanks to a patch from Tom Christiansen.
1477
1478=item *
1479
1480C<vcroak()> now accepts a null first argument. In addition, a full audit
1481was made of the "not NULL" compiler annotations, and those for several
1482other internal functions were corrected.
1483
1484=item *
1485
1486New macros C<dSAVEDERRNO>, C<dSAVE_ERRNO>, C<SAVE_ERRNO>, C<RESTORE_ERRNO>
1487have been added to formalise the temporary saving of the C<errno>
1488variable.
1489
1490=item *
1491
1492The function C<Perl_sv_insert_flags> has been added to augment
1493C<Perl_sv_insert>.
1494
1495=item *
1496
1497The function C<Perl_newSV_type(type)> has been added, equivalent to
1498C<Perl_newSV()> followed by C<Perl_sv_upgrade(type)>.
1499
1500=item *
1501
1502The function C<Perl_newSVpvn_flags()> has been added, equivalent to
1503C<Perl_newSVpvn()> and then performing the action relevant to the flag.
1504
1505Two flag bits are currently supported.
1506
1507=over 4
1508
1509=item C<SVf_UTF8>
1510
1511This will call C<SvUTF8_on()> for you. (Note that this does not convert an
1512sequence of ISO 8859-1 characters to UTF-8). A wrapper, C<newSVpvn_utf8()>
1513is available for this.
1514
1515=item C<SVs_TEMP>
1516
1517Call C<sv_2mortal()> on the new SV.
1518
1519=back
1520
1521There is also a wrapper that takes constant strings, C<newSVpvs_flags()>.
1522
1523=item *
1524
1525The function C<Perl_croak_xs_usage> has been added as a wrapper to
1526C<Perl_croak>.
1527
1528=item *
1529
1530The functions C<PerlIO_find_layer> and C<PerlIO_list_alloc> are now
1531exported.
1532
1533=item *
1534
1535C<PL_na> has been exterminated from the core code, replaced by local STRLEN
1536temporaries, or C<*_nolen()> calls. Either approach is faster than C<PL_na>,
1537which is a pointer deference into the interpreter structure under ithreads,
1538and a global variable otherwise.
1539
1540=item *
1541
1542C<Perl_mg_free()> used to leave freed memory accessible via SvMAGIC() on
1543the scalar. It now updates the linked list to remove each piece of magic
1544as it is freed.
1545
1546=item *
1547
1548Under ithreads, the regex in C<PL_reg_curpm> is now reference counted. This
1549eliminates a lot of hackish workarounds to cope with it not being reference
1550counted.
1551
1552=item *
1553
1554C<Perl_mg_magical()> would sometimes incorrectly turn on C<SvRMAGICAL()>.
1555This has been fixed.
1556
1557=item *
1558
1559The I<public> IV and NV flags are now not set if the string value has
1560trailing "garbage". This behaviour is consistent with not setting the
1561public IV or NV flags if the value is out of range for the type.
1562
1563=item *
1564
1565SV allocation tracing has been added to the diagnostics enabled by C<-Dm>.
1566The tracing can alternatively output via the C<PERL_MEM_LOG> mechanism, if
1567that was enabled when the F<perl> binary was compiled.
1568
1569=item *
1570
1571Uses of C<Nullav>, C<Nullcv>, C<Nullhv>, C<Nullop>, C<Nullsv> etc have been
1572replaced by C<NULL> in the core code, and non-dual-life modules, as C<NULL>
1573is clearer to those unfamiliar with the core code.
1574
1575=item *
1576
1577A macro C<MUTABLE_PTR(p)> has been added, which on (non-pedantic) gcc will
1578not cast away C<const>, returning a C<void *>. Macros C<MUTABLE_SV(av)>,
1579C<MUTABLE_SV(cv)> etc build on this, casting to C<AV *> etc without
1580casting away C<const>. This allows proper compile-time auditing of
1581C<const> correctness in the core, and helped picked up some errors (now
1582fixed).
1583
1584=item *
1585
1586Macros C<mPUSHs()> and C<mXPUSHs()> have been added, for pushing SVs on the
1587stack and mortalizing them.
1588
1589=item *
1590
1591Use of the private structure C<mro_meta> has changed slightly. Nothing
1592outside the core should be accessing this directly anyway.
1593
1594=item *
1595
1596A new tool, C<Porting/expand-macro.pl> has been added, that allows you
1597to view how a C preprocessor macro would be expanded when compiled.
1598This is handy when trying to decode the macro hell that is the perl
1599guts.
1600
1601=back
1602
1603=head1 New Tests
1604
1605Many modules updated from CPAN incorporate new tests.
1606
1607Several tests that have the potential to hang forever if they fail now
1608incorporate a "watchdog" functionality that will kill them after a timeout,
1609which helps ensure that C<make test> and C<make test_harness> run to
1610completion automatically. (Jerry Hedden).
1611
1612Some core-specific tests have been added:
1613
1614=over 4
1615
1616=item t/comp/retainedlines.t
1617
1618Check that the debugger can retain source lines from C<eval>.
1619
1620=item t/io/perlio_fail.t
1621
1622Check that bad layers fail.
1623
1624=item t/io/perlio_leaks.t
1625
1626Check that PerlIO layers are not leaking.
1627
1628=item t/io/perlio_open.t
1629
1630Check that certain special forms of open work.
1631
1632=item t/io/perlio.t
1633
1634General PerlIO tests.
1635
1636=item t/io/pvbm.t
1637
1638Check that there is no unexpected interaction between the internal types
1639C<PVBM> and C<PVGV>.
1640
1641=item t/mro/package_aliases.t
1642
1643Check that mro works properly in the presence of aliased packages.
1644
1645=item t/op/dbm.t
1646
1647Tests for C<dbmopen> and C<dbmclose>.
1648
1649=item t/op/index_thr.t
1650
1651Tests for the interaction of C<index> and threads.
1652
1653=item t/op/pat_thr.t
1654
1655Tests for the interaction of esoteric patterns and threads.
1656
1657=item t/op/qr_gc.t
1658
1659Test that C<qr> doesn't leak.
1660
1661=item t/op/reg_email_thr.t
1662
1663Tests for the interaction of regex recursion and threads.
1664
1665=item t/op/regexp_qr_embed_thr.t
1666
1667Tests for the interaction of patterns with embedded C<qr//> and threads.
1668
1669=item t/op/regexp_unicode_prop.t
1670
1671Tests for Unicode properties in regular expressions.
1672
1673=item t/op/regexp_unicode_prop_thr.t
1674
1675Tests for the interaction of Unicode properties and threads.
1676
1677=item t/op/reg_nc_tie.t
1678
1679Test the tied methods of C<Tie::Hash::NamedCapture>.
1680
1681=item t/op/reg_posixcc.t
1682
1683Check that POSIX character classes behave consistently.
1684
1685=item t/op/re.t
1686
1687Check that exportable C<re> functions in F<universal.c> work.
1688
1689=item t/op/setpgrpstack.t
1690
1691Check that C<setpgrp> works.
1692
1693=item t/op/substr_thr.t
1694
1695Tests for the interaction of C<substr> and threads.
1696
1697=item t/op/upgrade.t
1698
1699Check that upgrading and assigning scalars works.
1700
1701=item t/uni/lex_utf8.t
1702
1703Check that Unicode in the lexer works.
1704
1705=item t/uni/tie.t
1706
1707Check that Unicode and C<tie> work.
1708
1709=back
1710
1711=head1 Known Problems
1712
1713This is a list of some significant unfixed bugs, which are regressions
1714from either 5.10.0 or 5.8.x.
1715
1716=over 4
1717
1718=item *
1719
1720C<List::Util::first> misbehaves in the presence of a lexical C<$_>
1721(typically introduced by C<my $_> or implicitly by C<given>). The variable
1722which gets set for each iteration is the package variable C<$_>, not the
1723lexical C<$_> [RT #67694].
1724
1725A similar issue may occur in other modules that provide functions which
1726take a block as their first argument, like
1727
1728 foo { ... $_ ...} list
1729
1730=item *
1731
1732The C<charnames> pragma may generate a run-time error when a regex is
1733interpolated [RT #56444]:
1734
1735 use charnames ':full';
1736 my $r1 = qr/\N{THAI CHARACTER SARA I}/;
1737 "foo" =~ $r1; # okay
1738 "foo" =~ /$r1+/; # runtime error
1739
1740A workaround is to generate the character outside of the regex:
1741
1742 my $a = "\N{THAI CHARACTER SARA I}";
1743 my $r1 = qr/$a/;
1744
1745=item *
1746
1747Some regexes may run much more slowly when run in a child thread compared
1748with the thread the pattern was compiled into [RT #55600].
1749
1750
1751=back
1752
1753=head1 Deprecations
1754
1755The following items are now deprecated.
1756
1757=over 4
1758
1759=item *
1760
1761C<Switch> is buggy and should be avoided. From perl 5.11.0 onwards, it is
1762intended that any use of the core version of this module will emit a
1763warning, and that the module will eventually be removed from the core
1764(probably in perl 5.14.0). See L<perlsyn/"Switch statements"> for its
1765replacement.
1766
1767=item *
1768
1769C<suidperl> will be removed in 5.12.0. This provides a mechanism to
1770emulate setuid permission bits on systems that don't support it properly.
1771
1772=back
1773
1774=head1 Acknowledgements
1775
1776Some of the work in this release was funded by a TPF grant.
1777
1778Nicholas Clark officially retired from maintenance pumpking duty at the
1779end of 2008; however in reality he has put much effort in since then to
1780help get 5.10.1 into a fit state to be released, including writing a
1781considerable chunk of this perldelta.
1782
1783Steffen Mueller and David Golden in particular helped getting CPAN modules
1784polished and synchronised with their in-core equivalents.
1785
1786Craig Berry was tireless in getting maint to run under VMS, no matter how
1787many times we broke it for him.
1788
1789The other core committers contributed most of the changes, and applied most
1790of the patches sent in by the hundreds of contributors listed in F<AUTHORS>.
7120b314 1791
5a00ee6a 1792Finally, thanks to Larry Wall, without whom none of this would be
1793necessary.
7120b314 1794
1795=head1 Reporting Bugs
1796
1797If you find what you think is a bug, you might check the articles
1798recently posted to the comp.lang.perl.misc newsgroup and the perl
5a00ee6a 1799bug database at http://rt.perl.org/perlbug/ . There may also be
7120b314 1800information at http://www.perl.org/ , the Perl Home Page.
1801
1802If you believe you have an unreported bug, please run the B<perlbug>
1803program included with your release. Be sure to trim your bug down
1804to a tiny but sufficient test case. Your bug report, along with the
1805output of C<perl -V>, will be sent off to perlbug@perl.org to be
1806analysed by the Perl porting team.
1807
49f8307e 1808If the bug you are reporting has security implications, which make it
1809inappropriate to send to a publicly archived mailing list, then please send
1810it to perl5-security-report@perl.org. This points to a closed subscription
1811unarchived mailing list, which includes all the core committers, who be able
1812to help assess the impact of issues, figure out a resolution, and help
1813co-ordinate the release of patches to mitigate or fix the problem across all
5a00ee6a 1814platforms on which Perl is supported. Please only use this address for
1815security issues in the Perl core, not for modules independently
1816distributed on CPAN.
49f8307e 1817
7120b314 1818=head1 SEE ALSO
1819
5a00ee6a 1820The F<Changes> file for an explanation of how to view exhaustive details
1821on what changed.
7120b314 1822
1823The F<INSTALL> file for how to build Perl.
1824
1825The F<README> file for general stuff.
1826
1827The F<Artistic> and F<Copying> files for copyright information.
1828
1829=cut