Use alternative URLs for links which are now broken (link rot)
[p5sagit/p5-mst-13.2.git] / pod / perl5110delta.pod
CommitLineData
fa7da8f7 1=encoding utf8
2
7120b314 3=head1 NAME
4
5a00ee6a 5perl5110delta - what is new for perl v5.11.0
7120b314 6
7=head1 DESCRIPTION
8
5a00ee6a 9This document describes differences between the 5.10.0 release and
10the 5.11.0 development release.
7120b314 11
12=head1 Incompatible Changes
13
6fa80ea2 14=head2 Unicode interpretation of \w, \d, \s, and the POSIX character classes redefined.
15
16Previous versions of Perl tried to map POSIX style character class definitions onto
17Unicode property names so that patterns would "dwim" when matches were made against latin-1 or
18unicode strings. This proved to be a mistake, breaking character class negation, causing
19forward compatibility problems (as Unicode keeps updating their property definitions and adding
20new characters), and other problems.
21
22Therefore we have now defined a new set of artificial "unicode" property names which will be
23used to do unicode matching of patterns using POSIX style character classes and perl short-form
24escape character classes like \w and \d.
25
26The key change here is that \d will no longer match every digit in the unicode standard
27(there are thousands) nor will \w match every word character in the standard, instead they
28will match precisely their POSIX or Perl definition.
29
30Those needing to match based on Unicode properties can continue to do so by using the \p{} syntax
31to match whichever property they like, including the new artificial definitions.
32
33B<NOTE:> This is a backwards incompatible no-warning change in behaviour. If you are upgrading
34and you process large volumes of text look for POSIX and Perl style character classes and
35change them to the relevent property name (by removing the word 'Posix' from the current name).
36
37The following table maps the POSIX character class names, the escapes and the old and new
38Unicode property mappings:
39
40 POSIX Esc Class New-Property ! Old-Property
41 ----------------------------------------------+-------------
42 alnum [0-9A-Za-z] IsPosixAlnum ! IsAlnum
43 alpha [A-Za-z] IsPosixAlpha ! IsAlpha
44 ascii [\000-\177] IsASCII = IsASCII
45 blank [\011 ] IsPosixBlank !
46 cntrl [\0-\37\177] IsPosixCntrl ! IsCntrl
47 digit \d [0-9] IsPosixDigit ! IsDigit
48 graph [!-~] IsPosixGraph ! IsGraph
49 lower [a-z] IsPosixLower ! IsLower
50 print [ -~] IsPosixPrint ! IsPrint
51 punct [!-/:-@[-`{-~] IsPosixPunct ! IsPunct
52 space [\11-\15 ] IsPosixSpace ! IsSpace
53 \s [\11\12\14\15 ] IsPerlSpace ! IsSpacePerl
54 upper [A-Z] IsPosixUpper ! IsUpper
55 word \w [0-9A-Z_a-z] IsPerlWord ! IsWord
56 xdigit [0-9A-Fa-f] IsXDigit = IsXDigit
57
58If you wish to build perl with the old mapping you may do so by setting
59
60 #define PERL_LEGACY_UNICODE_CHARCLASS_MAPPINGS 1
61
62in regcomp.h, and then setting
63
64 PERL_TEST_LEGACY_POSIX_CC
65
66to true your enviornment when testing.
67
68
ad1d1c50 69=head2 In @INC, move ARCHLIB and PRIVLIB after the current version's site_perl and vendor_perl.
70
8b8da387 71=head2 Switch statement changes
72
73The handling of complex expressions by the C<given>/C<when> switch
a98ccf1e 74statement has been enhanced. These enhancements are also available in
755.10.1 and subsequent 5.10 releases. There are two new cases where C<when> now
412304fb 76interprets its argument as a boolean, instead of an expression to be used
8b8da387 77in a smart match:
78
79=over 4
80
8b8da387 81=item flip-flop operators
82
98814a2b 83The C<..> and C<...> flip-flop operators are now evaluated in boolean
84context, following their usual semantics; see L<perlop/"Range Operators">.
85
86Note that, as in perl 5.10.0, C<when (1..10)> will not work to test
87whether a given value is an integer between 1 and 10; you should use
88C<when ([1..10])> instead (note the array reference).
89
90However, contrary to 5.10.0, evaluating the flip-flop operators in boolean
91context ensures it can now be useful in a C<when()>, notably for
92implementing bistable conditions, like in:
93
5a00ee6a 94 when (/^=begin/ .. /^=end/) {
95 # do something
96 }
8b8da387 97
98=item defined-or operator
99
100A compound expression involving the defined-or operator, as in
101C<when (expr1 // expr2)>, will be treated as boolean if the first
102expression is boolean. (This just extends the existing rule that applies
103to the regular or operator, as in C<when (expr1 || expr2)>.)
104
105=back
106
98814a2b 107The next section details more changes brought to the semantics to
8b8da387 108the smart match operator, that naturally also modify the behaviour
109of the switch statements where smart matching is implicitly used.
a98ccf1e 110These changers were also made for the 5.10.1 release, and will remain in
111subsequent 5.10 releases.
8b8da387 112
113=head2 Smart match changes
114
115=head3 Changes to type-based dispatch
116
117The smart match operator C<~~> is no longer commutative. The behaviour of
118a smart match now depends primarily on the type of its right hand
5a00ee6a 119argument. Moreover, its semantics have been adjusted for greater
ee18cc6c 120consistency or usefulness in several cases. While the general backwards
121compatibility is maintained, several changes must be noted:
8b8da387 122
123=over 4
124
125=item *
126
127Code references with an empty prototype are no longer treated specially.
128They are passed an argument like the other code references (even if they
129choose to ignore it).
130
131=item *
132
133C<%hash ~~ sub {}> and C<@array ~~ sub {}> now test that the subroutine
9091a618 134returns a true value for each key of the hash (or element of the
8b8da387 135array), instead of passing the whole hash or array as a reference to
136the subroutine.
137
138=item *
139
ee18cc6c 140Due to the commutativity breakage, code references are no longer
141treated specially when appearing on the left of the C<~~> operator,
142but like any vulgar scalar.
143
144=item *
145
8b8da387 146C<undef ~~ %hash> is always false (since C<undef> can't be a key in a
147hash). No implicit conversion to C<""> is done (as was the case in perl
1485.10.0).
149
150=item *
151
152C<$scalar ~~ @array> now always distributes the smart match across the
153elements of the array. It's true if one element in @array verifies
154C<$scalar ~~ $element>. This is a generalization of the old behaviour
155that tested whether the array contained the scalar.
156
157=back
158
159The full dispatch table for the smart match operator is given in
160L<perlsyn/"Smart matching in detail">.
161
162=head3 Smart match and overloading
163
164According to the rule of dispatch based on the rightmost argument type,
165when an object overloading C<~~> appears on the right side of the
166operator, the overload routine will always be called (with a 3rd argument
167set to a true value, see L<overload>.) However, when the object will
168appear on the left, the overload routine will be called only when the
9091a618 169rightmost argument is a simple scalar. This way distributivity of smart match
8b8da387 170across arrays is not broken, as well as the other behaviours with complex
171types (coderefs, hashes, regexes). Thus, writers of overloading routines
ee18cc6c 172for smart match mostly need to worry only with comparing against a scalar,
173and possibly with stringification overloading; the other common cases
174will be automatically handled consistently.
8b8da387 175
176C<~~> will now refuse to work on objects that do not overload it (in order
665f5e98 177to avoid relying on the object's underlying structure). (However, if the
178object overloads the stringification or the numification operators, and
179if overload fallback is active, it will be used instead, as usual.)
8b8da387 180
f71d6157 181=head2 Labels can't be keywords
182
183Labels used as targets for the C<goto>, C<last>, C<next> or C<redo>
184statements cannot be keywords anymore. This restriction will prevent
185potential confusion between the C<goto LABEL> and C<goto EXPR> syntaxes:
186for example, a statement like C<goto print> would jump to a label whose
187name would be the return value of print(), (usually 1), instead of a
188label named C<print>. Moreover, the other control flow statements
189would just ignore any keyword passed to them as a label name. Since
190such labels cannot be defined anymore, this kind of error will be
191avoided.
192
5a00ee6a 193=head2 Other incompatible changes
194
195=over 4
196
197=item *
198
199The semantics of C<use feature :5.10*> have changed slightly.
200See L<"Modules and Pragmata"> for more information.
201
202=item *
203
204It is now a run-time error to use the smart match operator C<~~>
205with an object that has no overload defined for it. (This way
206C<~~> will not break encapsulation by matching against the
207object's internal representation as a reference.)
208
209=item *
210
211The version control system used for the development of the perl
212interpreter has been switched from Perforce to git. This is mainly an
213internal issue that only affects people actively working on the perl core;
214but it may have minor external visibility, for example in some of details
215of the output of C<perl -V>. See L<perlrepository> for more information.
216
217=item *
218
219The internal structure of the C<ext/> directory in the perl source has
220been reorganised. In general, a module C<Foo::Bar> whose source was
221stored under F<ext/Foo/Bar/> is now located under F<ext/Foo-Bar/>. Also,
222some modules have been moved from F<lib/> to F<ext/>. This is purely a
223source tarball change, and should make no difference to the compilation or
224installation of perl, unless you have a very customised build process that
225explicitly relies on this structure, or which hard-codes the C<nonxs_ext>
226F<Configure> parameter. Specifically, this change does not by default
227alter the location of any files in the final installation.
228
229=item *
230
231As part of the C<Test::Harness> 2.x to 3.x upgrade, the experimental
232C<Test::Harness::Straps> module has been removed.
233See L</"Updated Modules"> for more details.
234
235=item *
236
237As part of the C<ExtUtils::MakeMaker> upgrade, the
238C<ExtUtils::MakeMaker::bytes> and C<ExtUtils::MakeMaker::vmsish> modules
239have been removed from this distribution.
240
241=item *
242
243C<Module::CoreList> no longer contains the C<%:patchlevel> hash.
244
245=item *
246
247This one is actually a change introduced in 5.10.0, but it was missed
248from that release's perldelta, so it is mentioned here instead.
249
250A bugfix related to the handling of the C</m> modifier and C<qr> resulted
251in a change of behaviour between 5.8.x and 5.10.0:
252
253 # matches in 5.8.x, doesn't match in 5.10.0
254 $re = qr/^bar/; "foo\nbar" =~ /$re/m;
255
ad1d1c50 256=item *
257
258C<length undef> now returns undef.
259
5a00ee6a 260=back
261
7120b314 262=head1 Core Enhancements
263
5a00ee6a 264=head2 Unicode Character Database 5.1.0
265
3141b5e1 266The copy of the Unicode Character Database included in Perl 5.11.0 has
5a00ee6a 267been updated to 5.1.0 from 5.0.0. See
268L<http://www.unicode.org/versions/Unicode5.1.0/#Notable_Changes> for the
269notable changes.
270
271=head2 A proper interface for pluggable Method Resolution Orders
272
3141b5e1 273As of Perl 5.11.0 there is a new interface for plugging and using method
5a00ee6a 274resolution orders other than the default (linear depth first search).
275The C3 method resolution order added in 5.10.0 has been re-implemented as
276a plugin, without changing its Perl-space interface. See L<perlmroapi> for
277more information.
278
ef55af2a 279=head2 The C<overloading> pragma
1839a850 280
281This pragma allows you to lexically disable or enable overloading
282for some or all operations. (Yuval Kogman)
283
71e9c532 284=head2 C<\N> regex escape
285
286A new regex escape has been added, C<\N>. It will match any character that
287is not a newline, independently from the presence or absence of the single
288line match modifier C</s>. (If C<\N> is followed by an opening brace and
289by a letter, perl will still assume that a Unicode character name is
290coming, so compatibility is preserved.) (Rafael Garcia-Suarez)
291
4b3db487 292=head2 Implicit strictures
293
294Using the C<use VERSION> syntax with a version number greater or equal
295to 5.11.0 will also lexically enable strictures just like C<use strict>
296would do (in addition to enabling features.) So, the following:
297
298 use 5.11.0;
299
300will now imply:
301
302 use strict;
303 use feature ':5.11';
304
5ee651a9 305=head2 Parallel tests
306
307The core distribution can now run its regression tests in parallel on
308Unix-like platforms. Instead of running C<make test>, set C<TEST_JOBS> in
309your environment to the number of tests to run in parallel, and run
310C<make test_harness>. On a Bourne-like shell, this can be done as
311
312 TEST_JOBS=3 make test_harness # Run 3 tests in parallel
313
314An environment variable is used, rather than parallel make itself, because
315L<TAP::Harness> needs to be able to schedule individual non-conflicting test
316scripts itself, and there is no standard interface to C<make> utilities to
317interact with their job schedulers.
318
5a00ee6a 319Note that currently some test scripts may fail when run in parallel (most
320notably C<ext/IO/t/io_dir.t>). If necessary run just the failing scripts
321again sequentially and see if the failures go away.
322
044c880b 323=head2 The C<...> operator
324
325A new operator, C<...>, nicknamed the Yada Yada operator, has been added.
326It is intended to mark placeholder code, that is not yet implemented.
327See L<perlop/"Yada Yada Operator">. (chromatic)
328
5a00ee6a 329=head2 DTrace support
330
331Some support for DTrace has been added. See "DTrace support" in F<INSTALL>.
332
333=head2 Support for C<configure_requires> in CPAN module metadata
334
335Both C<CPAN> and C<CPANPLUS> now support the C<configure_requires> keyword
038a5866 336in the F<META.yml> metadata file included in most recent CPAN distributions.
5a00ee6a 337This allows distribution authors to specify configuration prerequisites that
338must be installed before running F<Makefile.PL> or F<Build.PL>.
339
340See the documentation for C<ExtUtils::MakeMaker> or C<Module::Build> for more
341on how to specify C<configure_requires> when creating a distribution for CPAN.
342
ad1d1c50 343=head2 The C<each> function can now operate on arrays
344
345=head2 Perl's core time-related functions are now Y2038 compliand
346
347=head2 The variable C<$,> may now be tied
348
349=head2 // now behaves like || in when clauses
350
351=head2 You can now set C<-W> from the C<PERL5OPT> environment varialbe
352
7120b314 353=head1 Modules and Pragmata
354
5a00ee6a 355=head2 New Modules and Pragmata
356
357=over 4
358
359=item C<autodie>
360
361This is a new lexically-scoped alternative for the C<Fatal> module.
362The bundled version is 2.06_01. Note that in this release, using a string
363eval when C<autodie> is in effect can cause the autodie behaviour to leak
364into the surrounding scope. See L<autodie/"BUGS"> for more details.
365
366=item C<Compress::Raw::Bzip2>
367
368This has been added to the core (version 2.020).
369
370=item C<parent>
371
372This pragma establishes an ISA relationship with base classes at compile
373time. It provides the key feature of C<base> without the feature creep.
374
375=item C<Parse::CPAN::Meta>
376
377This has been added to the core (version 1.39).
378
379=back
380
1839a850 381=head2 Pragmata Changes
382
383=over 4
384
385=item C<overloading>
386
387See L</"The C<overloading> pragma"> above.
388
5a00ee6a 389=item C<attributes>
390
391Upgraded from version 0.08 to 0.09.
392
393=item C<attrs>
394
42f099ed 395The C<attrs> pragma has been removed. It had been marked as deprecated since
3965.6.0.
5a00ee6a 397
398=item C<base>
399
400Upgraded from version 2.13 to 2.14. See L<parent> for a replacement.
401
402=item C<bigint>
403
404Upgraded from version 0.22 to 0.23.
405
406=item C<bignum>
407
408Upgraded from version 0.22 to 0.23.
409
410=item C<bigrat>
411
412Upgraded from version 0.22 to 0.23.
413
414=item C<charnames>
415
416Upgraded from version 1.06 to 1.07.
417
418The Unicode F<NameAliases.txt> database file has been added. This has the
419effect of adding some extra C<\N> character names that formerly wouldn't
420have been recognised; for example, C<"\N{LATIN CAPITAL LETTER GHA}">.
421
422=item C<constant>
423
9f808eed 424Upgraded from version 1.13 to 1.19. Some code has been shifted from run time to
425compile time, and the amount of MRO cache flushing has been minimised.
5a00ee6a 426
427=item C<feature>
428
429The meaning of the C<:5.10> and C<:5.10.X> feature bundles has
430changed slightly. The last component, if any (i.e. C<X>) is simply ignored.
431This is predicated on the assumption that new features will not, in
432general, be added to maintenance releases. So C<:5.10> and C<:5.10.X>
433have identical effect. This is a change to the behaviour documented for
4345.10.0.
435
436=item C<fields>
437
438Upgraded from version 2.13 to 2.14 (this was just a version bump; there
439were no functional changes).
440
441=item C<lib>
442
443Upgraded from version 0.5565 to 0.62.
444
445=item C<open>
446
447Upgraded from version 1.06 to 1.07.
448
449=item C<overload>
450
451Upgraded from version 1.06 to 1.07.
452
453=item C<overloading>
454
455See L</"The C<overloading> pragma"> above.
456
457=item C<version>
458
459Upgraded from version 0.74 to 0.77.
460
1839a850 461=back
462
5a00ee6a 463=head2 Updated Modules
02569b83 464
465=over 4
466
5a00ee6a 467=item C<Archive::Extract>
468
469Upgraded from version 0.24 to 0.34.
470
471=item C<Archive::Tar>
472
473Upgraded from version 1.38 to 1.52.
474
475=item C<Attribute::Handlers>
476
477Upgraded from version 0.79 to 0.85.
478
479=item C<AutoLoader>
480
481Upgraded from version 5.63 to 5.68.
482
483=item C<AutoSplit>
484
485Upgraded from version 1.05 to 1.06.
486
487=item C<B>
488
489Upgraded from version 1.17 to 1.22.
490
491=item C<B::Debug>
492
493Upgraded from version 1.05 to 1.11.
494
495=item C<B::Deparse>
496
497Upgraded from version 0.83 to 0.89.
498
499=item C<B::Lint>
500
501Upgraded from version 1.09 to 1.11.
502
503=item C<B::Xref>
504
505Upgraded from version 1.01 to 1.02.
506
507=item C<Benchmark>
508
509Upgraded from version 1.10 to 1.11.
510
511=item C<Carp>
512
513Upgraded from version 1.08 to 1.11.
514
02569b83 515L<Carp> now includes all the necessary code to function. Previously, it
516used to be a lightweight placeholder that loaded the actual code from
517C<Carp::Heavy> on demand. C<Carp::Heavy> is now a simple, empty module
518kept for backwards compatibility for programs that used to pre-load it.
519
5a00ee6a 520=item C<CGI>
7120b314 521
5a00ee6a 522Upgraded from version 3.29 to 3.43.
523(also includes the "default_value for popup_menu()" fix from 3.45).
7120b314 524
5a00ee6a 525=item C<Compress::Zlib>
7120b314 526
5a00ee6a 527Upgraded from version 2.008 to 2.020.
7120b314 528
5a00ee6a 529=item C<CPAN>
7120b314 530
5a00ee6a 531Upgraded from version 1.9205 to 1.9402. C<CPAN::FTP> has a local fix to
532stop it being too verbose on download failure.
54ad55c5 533
5a00ee6a 534=item C<CPANPLUS>
54ad55c5 535
5a00ee6a 536Upgraded from version 0.84 to 0.88.
54ad55c5 537
5a00ee6a 538=item C<CPANPLUS::Dist::Build>
e2c0f81f 539
5a00ee6a 540Upgraded from version 0.06_02 to 0.36.
e2c0f81f 541
5a00ee6a 542=item C<Cwd>
fc46f0f6 543
5a00ee6a 544Upgraded from version 3.25_01 to 3.30.
fc46f0f6 545
5a00ee6a 546=item C<Data::Dumper>
54ad55c5 547
5a00ee6a 548Upgraded from version 2.121_14 to 2.124.
7120b314 549
5a00ee6a 550=item C<DB>
7120b314 551
5a00ee6a 552Upgraded from version 1.01 to 1.02.
553
554=item C<DB_File>
555
556Upgraded from version 1.816_1 to 1.820.
557
558=item C<Devel::PPPort>
559
560Upgraded from version 3.13 to 3.19.
561
562=item C<Digest::MD5>
563
564Upgraded from version 2.36_01 to 2.39.
565
566=item C<Digest::SHA>
567
568Upgraded from version 5.45 to 5.47.
569
570=item C<DirHandle>
571
572Upgraded from version 1.01 to 1.03.
573
574=item C<Dumpvalue>
575
576Upgraded from version 1.12 to 1.13.
577
578=item C<DynaLoader>
579
580Upgraded from version 1.08 to 1.10.
581
582=item C<Encode>
583
584Upgraded from version 2.23 to 2.35.
585
586=item C<Errno>
587
588Upgraded from version 1.10 to 1.11.
589
590=item C<Exporter>
591
592Upgraded from version 5.62 to 5.63.
593
594=item C<ExtUtils::CBuilder>
595
596Upgraded from version 0.21 to 0.2602.
597
598=item C<ExtUtils::Command>
599
600Upgraded from version 1.13 to 1.16.
601
602=item C<ExtUtils::Constant>
603
604Upgraded from 0.20 to 0.22. (Note that neither of these versions are
605available on CPAN.)
606
607=item C<ExtUtils::Embed>
608
609Upgraded from version 1.27 to 1.28.
610
611=item C<ExtUtils::Install>
612
613Upgraded from version 1.44 to 1.54.
614
615=item C<ExtUtils::MakeMaker>
616
617Upgraded from version 6.42 to 6.55_02.
618
619Note that C<ExtUtils::MakeMaker::bytes> and C<ExtUtils::MakeMaker::vmsish>
620have been removed from this distribution.
621
622=item C<ExtUtils::Manifest>
623
624Upgraded from version 1.51_01 to 1.56.
625
626=item C<ExtUtils::ParseXS>
627
628Upgraded from version 2.18_02 to 2.2002.
629
630=item C<Fatal>
631
632Upgraded from version 1.05 to 2.06_01. See also the new pragma C<autodie>.
633
634=item C<File::Basename>
635
636Upgraded from version 2.76 to 2.77.
637
638=item C<File::Compare>
639
640Upgraded from version 1.1005 to 1.1006.
641
642=item C<File::Copy>
643
0de885a9 644Upgraded from version 2.11 to 2.16.
5a00ee6a 645
ad1d1c50 646File::Copy now always return 0 (not "") on failure.
647
0de885a9 648FIXME - describe C<cp>
649
5a00ee6a 650=item C<File::Fetch>
651
652Upgraded from version 0.14 to 0.20.
653
654=item C<File::Find>
655
656Upgraded from version 1.12 to 1.14.
657
658=item C<File::Path>
659
660Upgraded from version 2.04 to 2.07_03.
661
662=item C<File::Spec>
663
664Upgraded from version 3.2501 to 3.30.
665
666=item C<File::stat>
667
668Upgraded from version 1.00 to 1.01.
669
ad1d1c50 670Added -X overloading, -M, -C and -A.
671
5a00ee6a 672=item C<File::Temp>
673
674Upgraded from version 0.18 to 0.22.
675
676=item C<FileCache>
677
678Upgraded from version 1.07 to 1.08.
679
680=item C<FileHandle>
681
682Upgraded from version 2.01 to 2.02.
683
684=item C<Filter::Simple>
685
686Upgraded from version 0.82 to 0.84.
687
688=item C<Filter::Util::Call>
689
690Upgraded from version 1.07 to 1.08.
691
692=item C<FindBin>
693
694Upgraded from version 1.49 to 1.50.
695
696=item C<GDBM_File>
697
698Upgraded from version 1.08 to 1.09.
699
700=item C<Getopt::Long>
701
702Upgraded from version 2.37 to 2.38.
703
704=item C<Hash::Util::FieldHash>
705
706Upgraded from version 1.03 to 1.04. This fixes a memory leak.
707
708=item C<I18N::Collate>
709
710Upgraded from version 1.00 to 1.01.
711
712=item C<IO>
713
714Upgraded from version 1.23_01 to 1.25.
715
716This makes non-blocking mode work on Windows in C<IO::Socket::INET>
717[CPAN #43573].
718
719=item C<IO::Compress::*>
720
721Upgraded from version 2.008 to 2.020.
722
723=item C<IO::Dir>
724
725Upgraded from version 1.06 to 1.07.
726
727=item C<IO::Handle>
728
729Upgraded from version 1.27 to 1.28.
730
731=item C<IO::Socket>
732
733Upgraded from version 1.30_01 to 1.31.
734
735=item C<IO::Zlib>
736
737Upgraded from version 1.07 to 1.09.
738
739=item C<IPC::Cmd>
740
741Upgraded from version 0.40_1 to 0.46.
742
743=item C<IPC::Open3>
744
745Upgraded from version 1.02 to 1.04.
746
747=item C<IPC::SysV>
748
749Upgraded from version 1.05 to 2.01.
750
751=item C<lib>
752
753Upgraded from version 0.5565 to 0.62.
754
755=item C<List::Util>
756
757Upgraded from version 1.19 to 1.21.
758
759=item C<Locale::MakeText>
760
761Upgraded from version 1.12 to 1.13.
762
763=item C<Log::Message>
764
765Upgraded from version 0.01 to 0.02.
766
767=item C<Math::BigFloat>
768
769Upgraded from version 1.59 to 1.60.
770
771=item C<Math::BigInt>
772
773Upgraded from version 1.88 to 1.89.
774
775=item C<Math::BigInt::FastCalc>
776
777Upgraded from version 0.16 to 0.19.
778
779=item C<Math::BigRat>
780
781Upgraded from version 0.21 to 0.22.
782
783=item C<Math::Complex>
784
785Upgraded from version 1.37 to 1.56.
786
787=item C<Math::Trig>
788
789Upgraded from version 1.04 to 1.20.
790
791=item C<Memoize>
792
793Upgraded from version 1.01_02 to 1.01_03 (just a minor documentation
794change).
795
796=item C<Module::Build>
797
798Upgraded from version 0.2808_01 to 0.34_02.
799
800=item C<Module::CoreList>
801
802Upgraded from version 2.13 to 2.18. This release no longer contains the
803C<%Module::CoreList::patchlevel> hash.
804
805=item C<Module::Load>
806
807Upgraded from version 0.12 to 0.16.
808
809=item C<Module::Load::Conditional>
810
811Upgraded from version 0.22 to 0.30.
812
813=item C<Module::Loaded>
814
815Upgraded from version 0.01 to 0.02.
816
817=item C<Module::Pluggable>
818
819Upgraded from version 3.6 to 3.9.
820
821=item C<NDBM_File>
822
823Upgraded from version 1.07 to 1.08.
824
825=item C<Net::Ping>
826
827Upgraded from version 2.33 to 2.36.
828
829=item C<NEXT>
830
831Upgraded from version 0.60_01 to 0.64.
832
833=item C<Object::Accessor>
834
835Upgraded from version 0.32 to 0.34.
836
837=item C<OS2::REXX>
838
839Upgraded from version 1.03 to 1.04.
840
841=item C<Package::Constants>
842
843Upgraded from version 0.01 to 0.02.
844
845=item C<PerlIO>
846
847Upgraded from version 1.04 to 1.06.
848
849=item C<PerlIO::via>
850
851Upgraded from version 0.04 to 0.07.
852
853=item C<Pod::Man>
854
855Upgraded from version 2.16 to 2.22.
856
857=item C<Pod::Parser>
858
859Upgraded from version 1.35 to 1.37.
860
ad1d1c50 861=item Pod::Perldoc
862
863Upgrade from version 3.14_02 to 3.15.
864
5a00ee6a 865=item C<Pod::Simple>
866
867Upgraded from version 3.05 to 3.07.
868
869=item C<Pod::Text>
870
871Upgraded from version 3.08 to 3.13.
872
873=item C<POSIX>
874
875Upgraded from version 1.13 to 1.17.
876
877=item C<Safe>
878
879Upgraded from 2.12 to 2.18.
880
881=item C<Scalar::Util>
882
883Upgraded from version 1.19 to 1.21.
884
885=item C<SelectSaver>
886
887Upgraded from 1.01 to 1.02.
888
889=item C<SelfLoader>
890
891Upgraded from 1.11 to 1.17.
892
893=item C<Socket>
894
61f1d76c 895Upgraded from 1.80 to 1.84.
896
897As of 1.84, C<Socket> can now handle abstract namespace sockets on Linux.
898(see unix(7)).
5a00ee6a 899
900=item C<Storable>
901
902Upgraded from 2.18 to 2.20.
903
904=item C<Switch>
905
906Upgraded from version 2.13 to 2.14. Please see L</Deprecations>.
907
908=item C<Symbol>
909
910Upgraded from version 1.06 to 1.07.
911
912=item C<Sys::Syslog>
913
914Upgraded from version 0.22 to 0.27.
915
916=item C<Term::ANSIColor>
917
ad1d1c50 918Upgraded from version 1.12 to 2.01.
5a00ee6a 919
920=item C<Term::ReadLine>
921
922Upgraded from version 1.03 to 1.04.
923
924=item C<Term::UI>
925
926Upgraded from version 0.18 to 0.20.
927
928=item C<Test::Harness>
929
930Upgraded from version 2.64 to 3.17.
931
932Note that one side-effect of the 2.x to 3.x upgrade is that the
933experimental C<Test::Harness::Straps> module (and its supporting
934C<Assert>, C<Iterator>, C<Point> and C<Results> modules) have been
935removed. If you still need this, then they are available in the
936(unmaintained) C<Test-Harness-Straps> distribution on CPAN.
937
938=item C<Test::Simple>
939
940Upgraded from version 0.72 to 0.92.
941
942=item C<Text::ParseWords>
943
944Upgraded from version 3.26 to 3.27.
945
946=item C<Text::Tabs>
947
948Upgraded from version 2007.1117 to 2009.0305.
949
950=item C<Text::Wrap>
951
952Upgraded from version 2006.1117 to 2009.0305.
953
954=item C<Thread::Queue>
955
956Upgraded from version 2.00 to 2.11.
957
958=item C<Thread::Semaphore>
959
960Upgraded from version 2.01 to 2.09.
961
962=item C<threads>
963
ad1d1c50 964Upgraded from version 1.67 to 1.73.
5a00ee6a 965
966=item C<threads::shared>
967
968Upgraded from version 1.14 to 1.29.
969
970=item C<Tie::RefHash>
971
972Upgraded from version 1.37 to 1.38.
973
974=item C<Tie::StdHandle>
975
976This has documentation changes, and has been assigned a version for the
977first time: version 4.2.
978
979=item C<Time::HiRes>
980
981Upgraded from version 1.9711 to 1.9719.
982
983=item C<Time::Local>
984
985Upgraded from version 1.18 to 1.1901.
986
987=item C<Time::Piece>
988
989Upgraded from version 1.12 to 1.15.
990
991=item C<Unicode::Normalize>
992
993Upgraded from version 1.02 to 1.03.
994
995=item C<Unicode::UCD>
996
997Upgraded from version 0.25 to 0.27.
998
999C<charinfo()> now works on Unified CJK code points added to later versions
1000of Unicode.
1001
1002C<casefold()> has new fields returned to provide both a simpler interface
1003and previously missing information. The old fields are retained for
1004backwards compatibility. Information about Turkic-specific code points is
1005now returned.
1006
1007The documentation has been corrected and expanded.
1008
1009=item C<UNIVERSAL>
1010
1011Upgraded from version 1.04 to 1.05.
1012
ad1d1c50 1013UNIVERSAL->import() is now deprecated.
1014
5a00ee6a 1015=item C<Win32>
1016
1017Upgraded from version 0.34 to 0.39.
1018
1019=item C<Win32API::File>
1020
1021Upgraded from version 0.1001_01 to 0.1101.
1022
1023=item C<XSLoader>
1024
1025Upgraded from version 0.08 to 0.10.
1026
1027=back
1028
1029=head1 Utility Changes
1030
1031=over 4
1032
1033=item F<h2ph>
1034
1035Now looks in C<include-fixed> too, which is a recent addition to gcc's
1036search path.
1037
1038=item F<h2xs>
1039
1040No longer incorrectly treats enum values like macros (Daniel Burr).
1041
1042Now handles C++ style constants (C<//>) properly in enums. (A patch from
1043Rainer Weikusat was used; Daniel Burr also proposed a similar fix).
1044
1045=item F<perl5db.pl>
1046
1047C<LVALUE> subroutines now work under the debugger.
1048
1049The debugger now correctly handles proxy constant subroutines, and
1050subroutine stubs.
1051
ad1d1c50 1052=item F<perlbug>
1053
038a5866 1054F<perlbug> now uses C<%Module::CoreList::bug_tracker> to print out upstream bug
76e3c4a8 1055tracker URLs.
ad1d1c50 1056
1057Where the user names a module that their bug report is about, and we know the
1058URL for its upstream bug tracker, provide a message to the user explaining
1059that the core copies the CPAN version directly, and provide the URL for
1060reporting the bug directly to upstream.
1061
5a00ee6a 1062=item F<perlthanks>
1063
3141b5e1 1064Perl 5.11.0 added a new utility F<perlthanks>, which is a variant of
5a00ee6a 1065F<perlbug>, but for sending non-bug-reports to the authors and maintainers
1066of Perl. Getting nothing but bug reports can become a bit demoralising:
1067we'll see if this changes things.
1068
1069=back
1070
1071=head1 New Documentation
1072
1073=over 4
1074
1075=item L<perlhaiku>
1076
1077This contains instructions on how to build perl for the Haiku platform.
1078
1079=item L<perlmroapi>
1080
1081This describes the new interface for pluggable Method Resolution Orders.
1082
1083=item L<perlperf>
1084
1085This document, by Richard Foley, provides an introduction to the use of
1086performance and optimization techniques which can be used with particular
1087reference to perl programs.
1088
1089=item L<perlrepository>
1090
1091This describes how to access the perl source using the I<git> version
1092control system.
1093
1094=item L<perlthanks>
1095
1096This describes the new F<perlthanks> utility.
1097
1098=back
1099
1100=head1 Changes to Existing Documentation
1101
76e3c4a8 1102The various large F<Changes*> files (which listed every change made to perl
5a00ee6a 1103over the last 18 years) have been removed, and replaced by a small file,
76e3c4a8 1104also called F<Changes>, which just explains how that same information may
5a00ee6a 1105be extracted from the git version control system.
1106
1107The file F<Porting/patching.pod> has been deleted, as it mainly described
1108interacting with the old Perforce-based repository, which is now obsolete.
1109Information still relevant has been moved to L<perlrepository>.
1110
1111L<perlapi>, L<perlintern>, L<perlmodlib> and L<perltoc> are now all
1112generated at build time, rather than being shipped as part of the release.
1113
ad1d1c50 1114=head2 Documented -X overloading.
1115
1116=head2 Documented that when() treats specially most of the filetest operators
1117
ad1d1c50 1118=head2 Documented when as a syntax modifier
1119
1120=head2 Eliminated "Old Perl threads tutorial", which describes 5005 threads.
1121
1122pod/perlthrtut.pod is the same material reworked for ithreads.
1123
ad1d1c50 1124=head2 Correct previous documentation: v-strings are not deprecated
1125
1126With version objects, we need them to use MODULE VERSION syntax. This
1127patch removes the deprecation note.
1128
5a00ee6a 1129=head1 Performance Enhancements
1130
1131=over 4
1132
1133=item *
1134
1135A new internal cache means that C<isa()> will often be faster.
1136
1137=item *
1138
6f54462f 1139The implementation of C<C3> Method Resolution Order has been optimised -
1140linearisation for classes with single inheritance is 40% faster. Performance
1141for multiple inheritance is unchanged.
1142
1143=item *
1144
5a00ee6a 1145Under C<use locale>, the locale-relevant information is now cached on
1146read-only values, such as the list returned by C<keys %hash>. This makes
1147operations such as C<sort keys %hash> in the scope of C<use locale> much
1148faster.
1149
1150=item *
1151
1152Empty C<DESTROY> methods are no longer called.
1153
ad1d1c50 1154=item *
1155
1156Faster sv_utf8_upgrade()
1157
1158=item *
1159
1160Speed up keys() on empty hash
1161
5a00ee6a 1162=back
1163
1164=head1 Installation and Configuration Improvements
1165
1166=head2 F<ext/> reorganisation
1167
1168The layout of directories in F<ext> has been revised. Specifically, all
1169extensions are now flat, and at the top level, with C</> in pathnames
1170replaced by C<->, so that F<ext/Data/Dumper/> is now F<ext/Data-Dumper/>,
1171etc. The names of the extensions as specified to F<Configure>, and as
1172reported by C<%Config::Config> under the keys C<dynamic_ext>,
1173C<known_extensions>, C<nonxs_ext> and C<static_ext> have not changed, and
1174still use C</>. Hence this change will not have any affect once perl is
1175installed. However, C<Attribute::Handlers>, C<Safe> and C<mro> have now
1176become extensions in their own right, so if you run F<Configure> with
1177options to specify an exact list of extensions to build, you will need to
1178change it to account for this.
1179
3141b5e1 1180For 5.11.1, it is planned that many dual-life modules will have been moved
5a00ee6a 1181from F<lib> to F<ext>; again this will have no effect on an installed
1182perl, but will matter if you invoke F<Configure> with a pre-canned list of
1183extensions to build.
1184
1185=head2 Configuration improvements
1186
1187If C<vendorlib> and C<vendorarch> are the same, then they are only added to
1188C<@INC> once.
1189
1190C<$Config{usedevel}> and the C-level C<PERL_USE_DEVEL> are now defined if
1191perl is built with C<-Dusedevel>.
1192
1193F<Configure> will enable use of C<-fstack-protector>, to provide protection
1194against stack-smashing attacks, if the compiler supports it.
1195
1196F<Configure> will now determine the correct prototypes for re-entrant
1197functions, and for C<gconvert>, if you are using a C++ compiler rather
1198than a C compiler.
1199
1200On Unix, if you build from a tree containing a git repository, the
1201configuration process will note the commit hash you have checked out, for
1202display in the output of C<perl -v> and C<perl -V>. Unpushed local commits
1203are automatically added to the list of local patches displayed by
1204C<perl -V>.
1205
1206=head2 Compilation improvements
1207
1208As part of the flattening of F<ext>, all extensions on all platforms are
1209built by F<make_ext.pl>. This replaces the Unix-specific
1210F<ext/util/make_ext>, VMS-specific F<make_ext.com> and Win32-specific
1211F<win32/buildext.pl>.
1212
1213=head2 Platform Specific Changes
1214
1215=over 4
1216
1217=item AIX
1218
1219Removed F<libbsd> for AIX 5L and 6.1. Only flock() was used from F<libbsd>.
1220
1221Removed F<libgdbm> for AIX 5L and 6.1. The F<libgdbm> is delivered as an
1222optional package with the AIX Toolbox. Unfortunately the 64 bit version
1223is broken.
1224
1225Hints changes mean that AIX 4.2 should work again.
1226
1227=item Cygwin
1228
1229On Cygwin we now strip the last number from the DLL. This has been the
1230behaviour in the cygwin.com build for years. The hints files have been
1231updated.
1232
81afb674 1233=item DomainOS
1234
1235Support for Apollo DomainOS was removed in Perl 5.11.0
1236
5a00ee6a 1237=item FreeBSD
1238
1239The hints files now identify the correct threading libraries on FreeBSD 7
1240and later.
1241
1242=item Irix
1243
1244We now work around a bizarre preprocessor bug in the Irix 6.5 compiler:
1245C<cc -E -> unfortunately goes into K&R mode, but C<cc -E file.c> doesn't.
1246
1247=item Haiku
1248
1249Patches from the Haiku maintainers have been merged in. Perl should now
1250build on Haiku.
1251
81afb674 1252=item MiNT
1253
1254Support for Atari MiNT was removed in Perl 5.11.0.
1255
5a00ee6a 1256=item MirOS BSD
1257
1258Perl should now build on MirOS BSD.
1259
1260=item NetBSD
1261
1262Hints now supports versions 5.*.
1263
1264=item Stratus VOS
1265
1266Various changes from Stratus have been merged in.
1267
1268=item Symbian
1269
1270There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK.
1271
1272=item Win32
1273
1274Improved message window handling means that C<alarm> and C<kill> messages
1275will no longer be dropped under race conditions.
1276
1277=item VMS
1278
1279Reads from the in-memory temporary files of C<PerlIO::scalar> used to fail
1280if C<$/> was set to a numeric reference (to indicate record-style reads).
1281This is now fixed.
1282
1283VMS now supports C<getgrgid>.
1284
1285Many improvements and cleanups have been made to the VMS file name handling
1286and conversion code.
1287
1288Enabling the C<PERL_VMS_POSIX_EXIT> logical name now encodes a POSIX exit
1289status in a VMS condition value for better interaction with GNV's bash
1290shell and other utilities that depend on POSIX exit values. See
1291L<perlvms/"$?"> for details.
1292
76e3c4a8 1293C<File::Copy> now detects Unix compatibility mode on VMS.
ad1d1c50 1294
5a00ee6a 1295=back
1296
1297=head1 Selected Bug Fixes
1298
1299=over 4
1300
038a5866 1301=item *
5a00ee6a 1302
038a5866 1303C<-I> on shebang line now adds directories in front of @INC.
5a00ee6a 1304as documented, and as does C<-I> when specified on the command-line.
1305(Renée Bäcker)
1306
76e3c4a8 1307=item *
5a00ee6a 1308
76e3c4a8 1309C<kill> is now fatal when called on non-numeric process identifiers.
5a00ee6a 1310Previously, an 'undef' process identifier would be interpreted as a request to
1311kill process "0", which would terminate the current process group on POSIX
1312systems. Since process identifiers are always integers, killing a non-numeric
1313process is now fatal.
1314
1315=item *
1316
13175.10.0 inadvertently disabled an optimisation, which caused a measurable
1318performance drop in list assignment, such as is often used to assign
1319function parameters from C<@_>. The optimisation has been re-instated, and
1320the performance regression fixed.
1321
1322=item *
1323
1324Fixed memory leak on C<while (1) { map 1, 1 }> [RT #53038].
1325
1326=item *
1327
1328Some potential coredumps in PerlIO fixed [RT #57322,54828].
1329
1330=item *
1331
1332The debugger now works with lvalue subroutines.
1333
1334=item *
1335
1336The debugger's C<m> command was broken on modules that defined constants
1337[RT #61222].
1338
1339=item *
1340
1341C<crypt()> and string complement could return tainted values for untainted
1342arguments [RT #59998].
1343
1344=item *
1345
038a5866 1346The C<-i>I<.suffix> command-line switch now recreates the file using
5a00ee6a 1347restricted permissions, before changing its mode to match the original
1348file. This eliminates a potential race condition [RT #60904].
1349
1350=item *
1351
1352On some UNIX systems, the value in C<$?> would not have the top bit set
1353(C<$? & 128>) even if the child core dumped.
1354
1355=item *
1356
038a5866 1357Under some circumstances, C<$^R> could incorrectly become undefined
5a00ee6a 1358[RT #57042].
1359
1360=item *
1361
a048364f 1362In the XS API, various hash functions, when passed a pre-computed hash where
1363the key is UTF-8, might result in an incorrect lookup.
5a00ee6a 1364
1365=item *
1366
a048364f 1367XS code including F<XSUB.h> before F<perl.h> gave a compile-time error
5a00ee6a 1368[RT #57176].
1369
1370=item *
1371
1372C<< $object->isa('Foo') >> would report false if the package C<Foo> didn't
1373exist, even if the object's C<@ISA> contained C<Foo>.
1374
1375=item *
1376
1377Various bugs in the new-to 5.10.0 mro code, triggered by manipulating
1378C<@ISA>, have been found and fixed.
1379
1380=item *
1381
1382Bitwise operations on references could crash the interpreter, e.g.
1383C<$x=\$y; $x |= "foo"> [RT #54956].
1384
1385=item *
1386
1387Patterns including alternation might be sensitive to the internal UTF-8
1388representation, e.g.
1389
1390 my $byte = chr(192);
1391 my $utf8 = chr(192); utf8::upgrade($utf8);
1392 $utf8 =~ /$byte|X}/i; # failed in 5.10.0
1393
1394=item *
1395
1396Within UTF8-encoded Perl source files (i.e. where C<use utf8> is in
1397effect), double-quoted literal strings could be corrupted where a C<\xNN>,
1398C<\0NNN> or C<\N{}> is followed by a literal character with ordinal value
1399greater than 255 [RT #59908].
1400
1401=item *
1402
1403C<B::Deparse> failed to correctly deparse various constructs:
1404C<readpipe STRING> [RT #62428], C<CORE::require(STRING)> [RT #62488],
1405C<sub foo(_)> [RT #62484].
1406
1407=item *
1408
1409Using C<setpgrp()> with no arguments could corrupt the perl stack.
1410
1411=item *
1412
1413The block form of C<eval> is now specifically trappable by C<Safe> and
1414C<ops>. Previously it was erroneously treated like string C<eval>.
1415
1416=item *
1417
1418In 5.10.0, the two characters C<[~> were sometimes parsed as the smart
1419match operator (C<~~>) [RT #63854].
1420
1421=item *
1422
1423In 5.10.0, the C<*> quantifier in patterns was sometimes treated as
1424C<{0,32767}> [RT #60034, #60464]. For example, this match would fail:
1425
1426 ("ab" x 32768) =~ /^(ab)*$/
1427
1428=item *
1429
1430C<shmget> was limited to a 32 bit segment size on a 64 bit OS [RT #63924].
1431
1432=item *
1433
1434Using C<next> or C<last> to exit a C<given> block no longer produces a
1435spurious warning like the following:
1436
1437 Exiting given via last at foo.pl line 123
1438
1439=item *
1440
1441On Windows, C<'.\foo'> and C<'..\foo'> were treated differently than
1442C<'./foo'> and C<'../foo'> by C<do> and C<require> [RT #63492].
1443
1444=item *
1445
1446Assigning a format to a glob could corrupt the format; e.g.:
1447
1448 *bar=*foo{FORMAT}; # foo format now bad
1449
1450=item *
1451
1452Attempting to coerce a typeglob to a string or number could cause an
1453assertion failure. The correct error message is now generated,
1454C<Can't coerce GLOB to I<$type>>.
1455
1456=item *
1457
1458Under C<use filetest 'access'>, C<-x> was using the wrong access mode. This
1459has been fixed [RT #49003].
1460
1461=item *
1462
1463C<length> on a tied scalar that returned a Unicode value would not be
1464correct the first time. This has been fixed.
1465
1466=item *
1467
1468Using an array C<tie> inside in array C<tie> could SEGV. This has been
1469fixed. [RT #51636]
1470
1471=item *
1472
1473A race condition inside C<PerlIOStdio_close()> has been identified and
1474fixed. This used to cause various threading issues, including SEGVs.
1475
1476=item *
1477
1478In C<unpack>, the use of C<()> groups in scalar context was internally
1479placing a list on the interpreter's stack, which manifested in various
1480ways, including SEGVs. This is now fixed [RT #50256].
1481
1482=item *
1483
1484Magic was called twice in C<substr>, C<\&$x>, C<tie $x, $m> and C<chop>.
1485These have all been fixed.
1486
1487=item *
1488
1489A 5.10.0 optimisation to clear the temporary stack within the implicit
1490loop of C<s///ge> has been reverted, as it turned out to be the cause of
1491obscure bugs in seemingly unrelated parts of the interpreter [commit
1492ef0d4e17921ee3de].
1493
1494=item *
1495
1496The line numbers for warnings inside C<elsif> are now correct.
1497
1498=item *
1499
1500The C<..> operator now works correctly with ranges whose ends are at or
1501close to the values of the smallest and largest integers.
1502
1503=item *
1504
1505C<binmode STDIN, ':raw'> could lead to segmentation faults on some platforms.
1506This has been fixed [RT #54828].
1507
1508=item *
1509
1510An off-by-one error meant that C<index $str, ...> was effectively being
1511executed as C<index "$str\0", ...>. This has been fixed [RT #53746].
1512
1513=item *
1514
1515Various leaks associated with named captures in regexes have been fixed
1516[RT #57024].
1517
1518=item *
1519
1520A weak reference to a hash would leak. This was affecting C<DBI>
1521[RT #56908].
1522
1523=item *
1524
1525Using (?|) in a regex could cause a segfault [RT #59734].
1526
1527=item *
1528
1529Use of a UTF-8 C<tr//> within a closure could cause a segfault [RT #61520].
1530
1531=item *
1532
1533Calling C<sv_chop()> or otherwise upgrading an SV could result in an
1534unaligned 64-bit access on the SPARC architecture [RT #60574].
1535
1536=item *
1537
1538In the 5.10.0 release, C<inc_version_list> would incorrectly list
1539C<5.10.*> after C<5.8.*>; this affected the C<@INC> search order
1540[RT #67628].
1541
1542=item *
1543
1544In 5.10.0, C<pack "a*", $tainted_value> returned a non-tainted value
1545[RT #52552].
1546
1547=item *
1548
1549In 5.10.0, C<printf> and C<sprintf> could produce the fatal error
1550C<panic: utf8_mg_pos_cache_update> when printing UTF-8 strings
1551[RT #62666].
1552
1553=item *
1554
1555In the 5.10.0 release, a dynamically created C<AUTOLOAD> method might be
1556missed (method cache issue) [RT #60220,60232].
1557
1558=item *
1559
1560In the 5.10.0 release, a combination of C<use feature> and C<//ee> could
1561cause a memory leak [RT #63110].
1562
1563=item *
1564
1565C<-C> on the shebang (C<#!>) line is once more permitted if it is also
1566specified on the command line. C<-C> on the shebang line used to be a
1567silent no-op I<if> it was not also on the command line, so perl 5.10.0
1568disallowed it, which broke some scripts. Now perl checks whether it is
1569also on the command line and only dies if it is not [RT #67880].
1570
1571=item *
1572
1573In 5.10.0, certain types of re-entrant regular expression could crash,
1574or cause the following assertion failure [RT #60508]:
1575
1576 Assertion rx->sublen >= (s - rx->subbeg) + i failed
1577
5a00ee6a 1578=back
1579
1580=head1 New or Changed Diagnostics
1581
1582=over 4
1583
1584=item C<panic: sv_chop %s>
1585
1586This new fatal error occurs when the C routine C<Perl_sv_chop()> was
1587passed a position that is not within the scalar's string buffer. This
1588could be caused by buggy XS code, and at this point recovery is not
1589possible.
1590
1591=item C<Can't locate package %s for the parents of %s>
1592
1593This warning has been removed. In general, it only got produced in
1594conjunction with other warnings, and removing it allowed an ISA lookup
1595optimisation to be added.
1596
1597=item C<v-string in use/require is non-portable>
1598
1599This warning has been removed.
1600
1601=item C<Deep recursion on subroutine "%s">
1602
1603It is now possible to change the depth threshold for this warning from the
1604default of 100, by recompiling the F<perl> binary, setting the C
1605pre-processor macro C<PERL_SUB_DEPTH_WARN> to the desired value.
1606
1607=back
1608
1609=head1 Changed Internals
1610
1611=over 4
1612
1613=item *
1614
1615The J.R.R. Tolkien quotes at the head of C source file have been checked and
1616proper citations added, thanks to a patch from Tom Christiansen.
1617
1618=item *
1619
1620C<vcroak()> now accepts a null first argument. In addition, a full audit
1621was made of the "not NULL" compiler annotations, and those for several
1622other internal functions were corrected.
1623
1624=item *
1625
1626New macros C<dSAVEDERRNO>, C<dSAVE_ERRNO>, C<SAVE_ERRNO>, C<RESTORE_ERRNO>
1627have been added to formalise the temporary saving of the C<errno>
1628variable.
1629
1630=item *
1631
1632The function C<Perl_sv_insert_flags> has been added to augment
1633C<Perl_sv_insert>.
1634
1635=item *
1636
1637The function C<Perl_newSV_type(type)> has been added, equivalent to
1638C<Perl_newSV()> followed by C<Perl_sv_upgrade(type)>.
1639
1640=item *
1641
1642The function C<Perl_newSVpvn_flags()> has been added, equivalent to
1643C<Perl_newSVpvn()> and then performing the action relevant to the flag.
1644
1645Two flag bits are currently supported.
1646
1647=over 4
1648
1649=item C<SVf_UTF8>
1650
1651This will call C<SvUTF8_on()> for you. (Note that this does not convert an
1652sequence of ISO 8859-1 characters to UTF-8). A wrapper, C<newSVpvn_utf8()>
1653is available for this.
1654
1655=item C<SVs_TEMP>
1656
1657Call C<sv_2mortal()> on the new SV.
1658
1659=back
1660
1661There is also a wrapper that takes constant strings, C<newSVpvs_flags()>.
1662
1663=item *
1664
1665The function C<Perl_croak_xs_usage> has been added as a wrapper to
1666C<Perl_croak>.
1667
1668=item *
1669
1670The functions C<PerlIO_find_layer> and C<PerlIO_list_alloc> are now
1671exported.
1672
1673=item *
1674
1675C<PL_na> has been exterminated from the core code, replaced by local STRLEN
1676temporaries, or C<*_nolen()> calls. Either approach is faster than C<PL_na>,
1677which is a pointer deference into the interpreter structure under ithreads,
1678and a global variable otherwise.
1679
1680=item *
1681
1682C<Perl_mg_free()> used to leave freed memory accessible via SvMAGIC() on
1683the scalar. It now updates the linked list to remove each piece of magic
1684as it is freed.
1685
1686=item *
1687
1688Under ithreads, the regex in C<PL_reg_curpm> is now reference counted. This
1689eliminates a lot of hackish workarounds to cope with it not being reference
1690counted.
1691
1692=item *
1693
1694C<Perl_mg_magical()> would sometimes incorrectly turn on C<SvRMAGICAL()>.
1695This has been fixed.
1696
1697=item *
1698
1699The I<public> IV and NV flags are now not set if the string value has
1700trailing "garbage". This behaviour is consistent with not setting the
1701public IV or NV flags if the value is out of range for the type.
1702
1703=item *
1704
1705SV allocation tracing has been added to the diagnostics enabled by C<-Dm>.
1706The tracing can alternatively output via the C<PERL_MEM_LOG> mechanism, if
1707that was enabled when the F<perl> binary was compiled.
1708
1709=item *
1710
1711Uses of C<Nullav>, C<Nullcv>, C<Nullhv>, C<Nullop>, C<Nullsv> etc have been
1712replaced by C<NULL> in the core code, and non-dual-life modules, as C<NULL>
1713is clearer to those unfamiliar with the core code.
1714
1715=item *
1716
1717A macro C<MUTABLE_PTR(p)> has been added, which on (non-pedantic) gcc will
1718not cast away C<const>, returning a C<void *>. Macros C<MUTABLE_SV(av)>,
1719C<MUTABLE_SV(cv)> etc build on this, casting to C<AV *> etc without
1720casting away C<const>. This allows proper compile-time auditing of
1721C<const> correctness in the core, and helped picked up some errors (now
1722fixed).
1723
1724=item *
1725
1726Macros C<mPUSHs()> and C<mXPUSHs()> have been added, for pushing SVs on the
1727stack and mortalizing them.
1728
1729=item *
1730
1731Use of the private structure C<mro_meta> has changed slightly. Nothing
1732outside the core should be accessing this directly anyway.
1733
1734=item *
1735
76e3c4a8 1736A new tool, F<Porting/expand-macro.pl> has been added, that allows you
5a00ee6a 1737to view how a C preprocessor macro would be expanded when compiled.
1738This is handy when trying to decode the macro hell that is the perl
1739guts.
1740
1741=back
1742
1743=head1 New Tests
1744
1745Many modules updated from CPAN incorporate new tests.
1746
1747Several tests that have the potential to hang forever if they fail now
1748incorporate a "watchdog" functionality that will kill them after a timeout,
1749which helps ensure that C<make test> and C<make test_harness> run to
1750completion automatically. (Jerry Hedden).
1751
1752Some core-specific tests have been added:
1753
1754=over 4
1755
1756=item t/comp/retainedlines.t
1757
1758Check that the debugger can retain source lines from C<eval>.
1759
1760=item t/io/perlio_fail.t
1761
1762Check that bad layers fail.
1763
1764=item t/io/perlio_leaks.t
1765
1766Check that PerlIO layers are not leaking.
1767
1768=item t/io/perlio_open.t
1769
1770Check that certain special forms of open work.
1771
1772=item t/io/perlio.t
1773
1774General PerlIO tests.
1775
1776=item t/io/pvbm.t
1777
1778Check that there is no unexpected interaction between the internal types
1779C<PVBM> and C<PVGV>.
1780
1781=item t/mro/package_aliases.t
1782
1783Check that mro works properly in the presence of aliased packages.
1784
1785=item t/op/dbm.t
1786
1787Tests for C<dbmopen> and C<dbmclose>.
1788
1789=item t/op/index_thr.t
1790
1791Tests for the interaction of C<index> and threads.
1792
1793=item t/op/pat_thr.t
1794
1795Tests for the interaction of esoteric patterns and threads.
1796
1797=item t/op/qr_gc.t
1798
1799Test that C<qr> doesn't leak.
1800
1801=item t/op/reg_email_thr.t
1802
1803Tests for the interaction of regex recursion and threads.
1804
1805=item t/op/regexp_qr_embed_thr.t
1806
1807Tests for the interaction of patterns with embedded C<qr//> and threads.
1808
1809=item t/op/regexp_unicode_prop.t
1810
1811Tests for Unicode properties in regular expressions.
1812
1813=item t/op/regexp_unicode_prop_thr.t
1814
1815Tests for the interaction of Unicode properties and threads.
1816
1817=item t/op/reg_nc_tie.t
1818
1819Test the tied methods of C<Tie::Hash::NamedCapture>.
1820
1821=item t/op/reg_posixcc.t
1822
1823Check that POSIX character classes behave consistently.
1824
1825=item t/op/re.t
1826
1827Check that exportable C<re> functions in F<universal.c> work.
1828
1829=item t/op/setpgrpstack.t
1830
1831Check that C<setpgrp> works.
1832
1833=item t/op/substr_thr.t
1834
1835Tests for the interaction of C<substr> and threads.
1836
1837=item t/op/upgrade.t
1838
1839Check that upgrading and assigning scalars works.
1840
1841=item t/uni/lex_utf8.t
1842
1843Check that Unicode in the lexer works.
1844
1845=item t/uni/tie.t
1846
1847Check that Unicode and C<tie> work.
1848
1849=back
1850
1851=head1 Known Problems
1852
1853This is a list of some significant unfixed bugs, which are regressions
1854from either 5.10.0 or 5.8.x.
1855
1856=over 4
1857
1858=item *
1859
1860C<List::Util::first> misbehaves in the presence of a lexical C<$_>
1861(typically introduced by C<my $_> or implicitly by C<given>). The variable
1862which gets set for each iteration is the package variable C<$_>, not the
1863lexical C<$_> [RT #67694].
1864
1865A similar issue may occur in other modules that provide functions which
1866take a block as their first argument, like
1867
1868 foo { ... $_ ...} list
1869
1870=item *
1871
1872The C<charnames> pragma may generate a run-time error when a regex is
1873interpolated [RT #56444]:
1874
1875 use charnames ':full';
1876 my $r1 = qr/\N{THAI CHARACTER SARA I}/;
1877 "foo" =~ $r1; # okay
1878 "foo" =~ /$r1+/; # runtime error
1879
1880A workaround is to generate the character outside of the regex:
1881
1882 my $a = "\N{THAI CHARACTER SARA I}";
1883 my $r1 = qr/$a/;
1884
1885=item *
1886
1887Some regexes may run much more slowly when run in a child thread compared
1888with the thread the pattern was compiled into [RT #55600].
1889
5a00ee6a 1890=back
1891
1892=head1 Deprecations
1893
1894The following items are now deprecated.
1895
1896=over 4
1897
1898=item *
1899
1900C<Switch> is buggy and should be avoided. From perl 5.11.0 onwards, it is
1901intended that any use of the core version of this module will emit a
1902warning, and that the module will eventually be removed from the core
1903(probably in perl 5.14.0). See L<perlsyn/"Switch statements"> for its
1904replacement.
1905
1906=item *
1907
ad1d1c50 1908C<suidperl> has been removed. It used to provide a mechanism to
5a00ee6a 1909emulate setuid permission bits on systems that don't support it properly.
1910
ad1d1c50 1911=item *
1912
1913Deprecate assignment to $[
1914
1915=item *
1916
1917Remove attrs, which has been deprecated since 1999/10/02.
1918
1919=item *
1920
1921Deprecate use of the attribute :locked on subroutines.
1922
1923=item *
1924
1925Deprecate using "locked" with the attributes pragma.
1926
1927=item *
1928
1929Deprecate using "unique" with the attributes pragma.
1930
1931=item *
1932
1933warn if ++ or -- are unable to change the value because it's beyond the limit of representation
1934
1935This uses a new warnings category: "imprecision".
1936
ad1d1c50 1937=item *
1938
1939Make lc/uc/lcfirst/ucfirst warn when passed undef.
1940
1941=item *
1942
1943Show constant in "Useless use of a constant in void context"
1944
1945=item *
1946
1947Make the new warning report undef constants as undef
1948
1949=item *
1950
1951Add a new warning, "Prototype after '%s'"
1952
1953=item *
1954
1955Tweak the "Illegal character in prototype" warning so it's more precise when reporting illegal characters after _
1956
1957=item *
1958
1959Unintented interpolation of $\ in regex
1960
1961=item *
1962
1963Make overflow warnings in gmtime/localtime only occur when warnings are on
1964
1965=item *
1966
1967Improve mro merging error messages.
1968
1969They are now very similar to those produced by Algorithm::C3.
1970
1971=item *
1972
1973Amelioration of the error message "Unrecognized character %s in column %d"
1974
1975Changes the error message to "Unrecognized character %s; marked by <--
1976HERE after %s<-- HERE near column %d". This should make it a little
1977simpler to spot and correct the suspicious character.
1978
1979=item *
1980
1981Explicitely point to $. when it causes an uninitialized warning for ranges in scalar context
1982
5a00ee6a 1983=back
1984
1985=head1 Acknowledgements
1986
1987Some of the work in this release was funded by a TPF grant.
1988
1989Nicholas Clark officially retired from maintenance pumpking duty at the
1990end of 2008; however in reality he has put much effort in since then to
1991help get 5.10.1 into a fit state to be released, including writing a
1992considerable chunk of this perldelta.
1993
1994Steffen Mueller and David Golden in particular helped getting CPAN modules
1995polished and synchronised with their in-core equivalents.
1996
1997Craig Berry was tireless in getting maint to run under VMS, no matter how
1998many times we broke it for him.
1999
2000The other core committers contributed most of the changes, and applied most
2001of the patches sent in by the hundreds of contributors listed in F<AUTHORS>.
7120b314 2002
ad1d1c50 2003Much of the work of categorizing changes in this perldelta file was contributed
2004by the following porters using changelogger.bestpractical.com:
2005
2006Nicholas Clark, leon, shawn, alexm, rjbs, rafl, Pedro Melo, brunorc,
2007anonymous, ☄, Tom Hukins, anonymous, Jesse, dagolden, Moritz Onken,
2008Mark Fowler, chorny, anonymous, tmtm
2009
5a00ee6a 2010Finally, thanks to Larry Wall, without whom none of this would be
2011necessary.
7120b314 2012
2013=head1 Reporting Bugs
2014
2015If you find what you think is a bug, you might check the articles
2016recently posted to the comp.lang.perl.misc newsgroup and the perl
5a00ee6a 2017bug database at http://rt.perl.org/perlbug/ . There may also be
7120b314 2018information at http://www.perl.org/ , the Perl Home Page.
2019
2020If you believe you have an unreported bug, please run the B<perlbug>
2021program included with your release. Be sure to trim your bug down
2022to a tiny but sufficient test case. Your bug report, along with the
2023output of C<perl -V>, will be sent off to perlbug@perl.org to be
2024analysed by the Perl porting team.
2025
49f8307e 2026If the bug you are reporting has security implications, which make it
2027inappropriate to send to a publicly archived mailing list, then please send
2028it to perl5-security-report@perl.org. This points to a closed subscription
2029unarchived mailing list, which includes all the core committers, who be able
2030to help assess the impact of issues, figure out a resolution, and help
2031co-ordinate the release of patches to mitigate or fix the problem across all
5a00ee6a 2032platforms on which Perl is supported. Please only use this address for
2033security issues in the Perl core, not for modules independently
2034distributed on CPAN.
49f8307e 2035
7120b314 2036=head1 SEE ALSO
2037
5a00ee6a 2038The F<Changes> file for an explanation of how to view exhaustive details
2039on what changed.
7120b314 2040
2041The F<INSTALL> file for how to build Perl.
2042
2043The F<README> file for general stuff.
2044
2045The F<Artistic> and F<Copying> files for copyright information.
2046
2047=cut
ad1d1c50 2048
2049
2050=head1 TODO
2051
2052The following changes are a filtered list of changes which weren't backported
2053to 5.10.1. They were run through changelogger.bestpractical.com and triaged
2054by a set of Perl 5 Porters. Changes to blead after 5945e41e have not yet
2055been triaged or integrated.
2056
2057The following changes need to be
2058
20591) deleted if they don't merit inclusion
2060
2061 OR
2062
20632) lightly copyedited and integrated into the perldelta above. Unfortunately, many of our
2064commit messages are somewhat terse and require a bit more help to turn into something readable
2065
2066
2067
2068
2069=head1 API
2070
2071=head2 Move the reg_stringify logic to Perl_sv_2pv_flags
2072
2073=head2 mg_copy ought to take an I32
2074
2075=head2 Perl_store_cop_label() isn't meant to be part of the public API.
2076
2077=head2 Perl_gv_fetchmethod{,_autoload,_flags} are actually never* called with a non-NULL stash.
2078So change the parameter to NN.
2079
2080
2081=head2 Promote Perl_setdefout() to the public API.
2082
2083=head2 Add get_cvs() as a shortcut for STR_WITH_LEN() and Perl_get_cvn_flags()
2084
2085=head2 In Perl_newCONSTSUB(), sv should not be NULL.
2086
2087=head2 GvUNIQUE* have been defined as 0 since 2005/06/30 - high time to remove them.
2088
2089=head2 invert and rename PERL_MEM_LOG_STDERR to PERL_MEM_LOG_NOIMPL
2090
2091Most users who want PERL_MEM_LOG want the default implementation,
2092give it to them. Users providing their own implementation can
2093obtain current behavior by adding -DPERL_MEM_LOG_NOIMPL.
2094Frankly, the average user probably wants _ENV by default too.
2095
2096=head2 simplify PERL_MEM_LOG
2097
2098This combines multiple environment variable reads into 1,
2099where it looks for values like "2mst"
2100-2 leading digits are atoi()d to get FD
2101-m memory logging please
2102-s sv logging also
2103-t timestamp those please.
2104
2105Combining these reduces overhead such that it seemed
2106worthwhile to drop all the ifdefs. TBD whether this works
2107in the environment that drove the original tradeoffs.
2108
2109If it isnt enough, Id be tempted by a global static ptr,
2110and on 1st use, is read, seen 0, a lock is taken, and getenvar
2111run to populate it, unlocked, proceed. This would remove
2112iterative overheads.
2113
2114=head2 Add a parameter "destructing" to Gv_AMupdate()
2115
2116This boolean parameter indicates if the function has been called
2117to update the overload magic table while looking up the DESTROY
2118method. In this case, it's probably best to avoid croaking if
2119those tables could not be updated (for example due to a method
2120that could not be loaded.)
2121
2122=head2 Modify the return value of Gv_AMupdate to indicate a compilation error
2123
2124This way we'll restore most of the performance on object desctruction
2125lost by the previous commit
2126
2127
2128=head2 local $SIG{FOO} = sub {...}; sets signal handler to SIG_DFL
2129
2130Re: [perl #60360] [PATCH] UPDATED: local $SIG{FOO} = sub {...}; sets signal handler to SIG_DFL
2131Message-ID: <20081112234504.GI2062@tytlal.topaz.cx>
2132
2133Updated patch to retain source compatibility.
2134
2135Plus using the correct PERL_ARGS_ASSERT_SAVE_HELEM_FLAGS
2136macro and running make regen.
2137
2138=head2 Respecting inc_version_list while processing PERL_VENDORLIB_STEM
2139
2140Respecting inc_version_list while processing PERL_VENDORLIB_STEM
2141From: "Mandalemula, Rajesh" <Rajesh.Mandalemula@deshaw.com>
2142
2143=head2 Change PL_debug behaviour
2144
2145
2146String eval lines are now saved whenever
2147a subroutine is defined, even if the eval'd string has subsequent
2148syntax errors. This allows the debugger to single step into these
2149subroutines.
2150
2151
2152=head2 Tied filehandles now have an additional method EOF which provides the EOF type
2153
2154=head2 Perl is now smarter about adding a -I dir to the beginning or end of @INC
2155
2156=head2 On scope end, delete localized array elements that should not exist anymore, so that the array recovers its previous length. Honour EXISTS and DELETE for tied arrays.
2157
2158=head2 When a glob is deleted, mark its sub as ANON.
2159
2160=head2 Require a space or a newline after a "#line XXX" directive
2161
2162=head2 Forbid using "foreach" as an attribute
2163
2164(like all other control flow statements)
2165
2166
2167=head2 Unregister signal handlers before destroying my_perl
2168
2169If the signal handler runs after perl_destruct() has been called, it
2170will get an invalid (or NULL) my_perl when it asks for the
2171thread-specific interpreter struct. This patch resets the signal
2172handler for any signal previously handled by PL_csighandlerp to SIG_DFL
2173before calling perl_destruct().
2174
2175=head2 Perl_magic_clearsig() needs to remove magic, else delete $SIG{INT} returns undef
2176
2177Perl_magic_clearsig() needs to remove magic, else delete $SIG{INT} returns undef
2178instead of the now-removed INT handler.
2179
2180=head2 [perl #66452] TMPDIR not honored when opening an anonymous temporary file
2181
2182[perl #66452] TMPDIR not honored when opening an anonymous temporary file
2183
2184=head2 The attached patch to perlio.c fixes the problem of errno getting set.
2185
2186While I am firmly in the school of "do not look at $! except immediately
2187after a failure", I also agree that spuriously setting it is messy. But
2188there is just no way of knowing where your errno might have been.
2189
2190The problem was that PerlIO_fast_gets() (and other nearby similar
2191capability-checking PerlIO routines) set the errno (and it was being
2192called a lot, from sv_gets()). I think setting the errno here was
2193a mistake: checking for "can has FOO" should not set external state,
2194such as the errno. The patch removes that errno trashing from all those
2195routines.
2196
2197=head2 Trim all trailing / from "." in @INC when filling %INC
2198
2199This fixes bug #66942 : as a / was left in the directory name,
2200$INC{"Foo.pm"} for a file loaded from the current directory
2201was given the incorrect value "/Foo.pm".
2202
2203=head2 Don't enqueue pending signals during global destruction
2204
2205Global destruction is not signal-safe. PL_psig_pend may already
2206be gone when the signal handler is called (with destruct_level > 0).
2207NULL it before freeing it to prevent a race condition.
2208
2209=head2 Eliminate struct regexp_allocated and xpvio_allocated.
2210
2211Calculate memory allocation using regexp and XPVIO, and the offset of the first
2212real structure member. This avoids tripping over alignment differences between
2213X* and x*_allocated, because x*_allocated doesn't have a double in it.
2214
2215
2216=head1 internals
2217
2218=head2 [perl #47047] Use of inherited AUTOLOAD for non-method is deprecated
2219
2220=head2 Remove the definitions of Null(), Nullch, Nullfp, Nullsv and PL_na when code is within the perl source tree
2221
2222=head2 Replace our assert-which-can-be-caught-by-eval with the real deal from the standard C library.
2223
2224=head2 Tweak Perl_sv_upgrade() so that references can upgrade to SVt_PV
2225
2226=head2 Eliminate prelen from struct regexp.
2227
2228=head2 Change Perl_av_iter_p() to return IV* rather than I32* (which means
2229
2230=head2 Reorder the external regexp flags to get RXf_PMf_STD_PMMOD into the
2231
2232lowest 4 bits (which saves a shift), and the "flags indicating special
2233patterns" into contiguous bits. This makes everything a little tidier,
2234and saves 88 bytes (woohoo!) of object file with -Os on x86 FreeBSD.
2235
2236
2237=head2 Re-implement the SvOOK() hack to store the offset as a BER encoded number in the part of the PVX that is being released.
2238(It will always
2239fit, as chopping off 1 byte gives just enough space for recording a
2240delta of up to 127). This allows SvOOK() to co-exist with SvIOK_on(),
2241which means all the calls to SvOOK_off() [with the possibility of a
2242call to sv_backoff()] in SvIOK_on() can be removed. This ought to make
2243a lot of straight line code a little bit simpler.
2244OOK()d scalars can now be SVt_PV, as the IVX isn't needed.
2245
2246=head2 Abolish wraplen from struct regexp. We're already storing it in SvCUR.
2247
2248=head2 Make Perl_pregcomp() use SvUTF8() of the pattern, rather than the flag bit in pmflags, to decide whether the pattern is UTF-8.
2249
2250=head2 Abolish RXf_UTF8. Store the UTF-8-ness of the pattern with SvUTF8().
2251
2252=head2 In struct regexp move the member paren_names to the IV union.
2253
2254=head2 Make REGEXP a type distinct from SV. (Much like AV, CV, GV, HV).
2255
2256=head2 Allow sv_setsv_flags() to copy SVt_REGEXP much like it copies SVt_FORMAT - the just string buffer.
2257
2258
2259=head2 Correct a long-standing ithreads reference counting anonamly
2260
2261The reference count only needs "doubling" when the scalar is pushed onto
2262PL_regex_padav for the second time.
2263
2264
2265=head2 In PL_regexp_padav, store regexps via real references, rather than hiding them within IVs.
2266
2267We can do this now that they are real SV pointers.
2268
2269=head2 With regexps stored as real RVs, we can eliminate SvREPADTMP().
2270
2271=head2 REGEXPs are now stored directly in PL_regex_padav, rather than indirectly via RVs.
2272
2273=head2 Remove code that protected pp_qr against REGEXPs going away during global destruction whilst they were stored via true references in PL_regex_padav.
2274
2275=head2 Remove PM_GETRE_SAFE and PM_SETRE_SAFE as nothing uses them.
2276
2277=head2 Note the U8 sized space created by removing -P, and check that it is now an illegal command line flag.
2278
2279=head2 Pack the recycled pad offsets into an SV at PL_regex_pad[0].
2280
2281=head2 Re-order so that the !SvOK() case is last (which should be rare)
2282
2283=head2 Extend PUSHFORMAT() to take a second parameter to set retop, to save NULLing it and then reassigning.
2284
2285=head2 Split struct block_sub into struct block_sub and struct block_format.
2286
2287Split struct block_sub into struct block_sub and struct block_format.
2288(CXt_SUB and CXt_FORMAT were using some comon members, but some members
2289were only for one or the other.)
2290
2291=head2 Change the wantarray result from caller from IV to bool for the SCALAR/ARRAY case.
2292
2293This doesn't contradict the documentation, as there isn't any. Oops.
2294
2295
2296=head2 Give G_VOID, G_SCALAR and G_ARRAY the same numeric values as OPf_WANT_VOID, OPf_WANT_SCALAR and OPf_WANT_LIST.
2297
2298
2299=head2 Squeeze the context type down to 4 bits, and move the private flags to fit within the next 4 bits.
2300
2301
2302=head2 In struct block change blku_type from U8 to U16, and the "spare" U8 to U16, with the lockstep changes in struct subst.
2303Eliminate lval from
2304struct block_sub, and instead store it in the U16 in struct block.
2305
2306
2307=head2 In struct block_eval, eliminate old_in_eval and old_op_type by storing the data in blk_u16.
2308
2309
2310=head2 The layout for struct block_loop under ithreads can be simplified.
2311
2312Instead of wedging the pad offset into a void* iterdata, and always
2313storing PL_comppad even when it isn't used, instead do this:
2314
2315PAD *oldcomppad; /* Also used for the GV, if targoffset is 0 */
2316/* This is also accesible via cx->blk_loop.my_op->op_targ */
2317PADOFFSET targoffset;
2318
2319and store the GV pointer in oldcompad. Pointers to pointers seems
2320cleaner. This also allows us to eliminate the flag bit CXp_PADVAR.
2321
2322
2323=head2 In XS_PerlIO_get_layers() take advantage of the implementation of
2324
2325In XS_PerlIO_get_layers() take advantage of the implementation of
2326PerlIO_get_layers(), by co-opting the new SVs it creates, rather than
2327copying them.
2328
2329
2330=head2 Micro-optimise the order of the context types. [Because I can :-)]
2331
2332=head2 [patch] optimize OP_IS_(FILETEST|SOCKET) macros
2333
2334=head2 Eliminate ck_lengthconst.
2335
2336=head2 Chainsaw DEBUG_S out, as suggested by Vincent Pit.
2337
2338=head2 Unsupported private API functions are now declared "static" to prevent leakage to the public API
2339
2340=head2 Perl_cv_ckproto() is not part of the public API, and not used anywhere. It has been removed
2341
2342=head2 Remove all the 5005threads specific mutex macros, which are now vestigial.
2343
2344=head2 Do not honor TMPDIR for anonymous temporary files when tainting
2345
2346Use a default of /tmp on Unixes when TMPDIR is unset or empty, or
2347when creation of a temporary file in it fails
2348
2349=head2 Add a pluggable hook in op_free()
2350
2351
6fa80ea2 2352
2353
2354