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