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