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