tue+weds merging activity
[perl.git] / pod / perl5101delta.pod
1 =head1 NAME
2
3 perldelta - what is new for perl v5.10.1
4
5 =head1 DESCRIPTION
6
7 This document describes differences between the 5.10.0 release and
8 the 5.10.1 release.
9
10 If you are upgrading from an earlier release such as 5.8.8, first read
11 the L<perl5100delta>, which describes differences between 5.8.8 and
12 5.10.0
13
14 =head1 Incompatible Changes
15
16 =head2 Switch statement changes
17
18 The handling of complex expressions by the C<given>/C<when> switch
19 statement has been enhanced. There are two new cases where C<when> now
20 inteprets its argument as a boolean, instead of an expression to be used
21 in a smart match:
22
23 =over 4
24
25 =item flip-flop operators
26
27 The C<..> and C<...> flip-flop operators are evaluated in boolean context,
28 following their usual semantics; see L<perlop/"Range Operators">.
29
30 =item defined-or operator
31
32 A compound expression involving the defined-or operator, as in
33 C<when (expr1 // expr2)>, will be treated as boolean if the first
34 expression is boolean. (This just extends the existing rule that applies
35 to the regular or operator, as in C<when (expr1 || expr2)>.)
36
37 =back
38
39 The next paragraph details more changes brought to the semantics to
40 the smart match operator, that naturally also modify the behaviour
41 of the switch statements where smart matching is implicitly used.
42
43 =head2 Smart match changes
44
45 =head3 Changes to type-based dispatch
46
47 The smart match operator C<~~> is no longer commutative. The behaviour of
48 a smart match now depends primarily on the type of its right hand
49 argument. Moreover, its semantics has been adjusted for greater
50 consistency or usefulness in several cases. While the general backwards
51 compatibility is maintained, several changes must be noted:
52
53 =over 4
54
55 =item *
56
57 Code references with an empty prototype are no longer treated specially.
58 They are passed an argument like the other code references (even if they
59 choose to ignore it).
60
61 =item *
62
63 C<%hash ~~ sub {}> and C<@array ~~ sub {}> now test that the subroutine
64 returns a true value for each key of the hash (or element of the
65 array), instead of passing the whole hash or array as a reference to
66 the subroutine.
67
68 =item *
69
70 Due to the commutativity breakage, code references are no longer
71 treated specially when appearing on the left of the C<~~> operator,
72 but like any vulgar scalar.
73
74 =item *
75
76 C<undef ~~ %hash> is always false (since C<undef> can't be a key in a
77 hash). No implicit conversion to C<""> is done (as was the case in perl
78 5.10.0).
79
80 =item *
81
82 C<$scalar ~~ @array> now always distributes the smart match across the
83 elements of the array. It's true if one element in @array verifies
84 C<$scalar ~~ $element>. This is a generalization of the old behaviour
85 that tested whether the array contained the scalar.
86
87 =back
88
89 The full dispatch table for the smart match operator is given in
90 L<perlsyn/"Smart matching in detail">.
91
92 =head3 Smart match and overloading
93
94 According to the rule of dispatch based on the rightmost argument type,
95 when an object overloading C<~~> appears on the right side of the
96 operator, the overload routine will always be called (with a 3rd argument
97 set to a true value, see L<overload>.) However, when the object will
98 appear on the left, the overload routine will be called only when the
99 rightmost argument is a simple scalar. This way distributivity of smart match
100 across arrays is not broken, as well as the other behaviours with complex
101 types (coderefs, hashes, regexes). Thus, writers of overloading routines
102 for smart match mostly need to worry only with comparing against a scalar,
103 and possibly with stringification overloading; the other common cases
104 will be automatically handled consistently.
105
106
107 C<~~> will now refuse to work on objects that do not overload it (in order
108 to avoid relying on the object's underlying structure).
109
110 =head2 Other incompatible changes
111
112 =over
113
114 =item *
115
116 The semantics of C<use feature :5.10*> have changed slightly.
117 See L<"Modules and Pragmata"> for more information.
118
119 =item *
120
121 It is now a run-time error to use the smart match operator C<~~>
122 with an object that has no overload defined for it. (This way
123 C<~~> will not break encapsulation by matching against the
124 object's internal representation as a reference.)
125
126 =item *
127
128 The version control system used for the development of the perl
129 interpreter has been switched from Perforce to git.  This is mainly an
130 internal issue that only affects people actively working on the perl core;
131 but it may have minor external visibility, for example in some of details
132 of the output of C<perl -V>. See L<perlrepository> for more information.
133
134 =item *
135
136 The internal structure of the C<ext/> directory in the perl source has
137 been reorganised. In general, a module C<Foo::Bar> who's source was
138 stored under F<ext/Foo/Bar/> is now located under F<ext/Foo-Bar/>. Also,
139 some modules have been moved from F<lib/> to F<ext/>. This is purely a
140 source tarball change, and should make no difference to the compilation or
141 installation of perl, unless you have a very customised build process that
142 explicitly relies on this structure, or which hard-codes the C<nonxs_ext>
143 F<Configure> parameter. Specifically, this change does not by default
144 alter the location of any files in the final installation.
145
146 =item *
147
148 As part of the C<Test::Harness> 2.x to 3.x upgrade, the experimental
149 C<Test::Harness::Straps> module has been removed. See 
150 See L</"Updated Modules"> for more details.
151
152 =item *
153
154 This one is actually a change introduced in 5.10.0, but it was missed
155 from that release's perldelta, so it is mentioned here instead.
156
157 A bugfix related to the handling of the C</m> modifier and C<qr> resulted
158 in a change of behaviour between 5.8.x and 5.10.0:
159
160     # matches in 5.8.x, doesn't match in 5.10.0
161     $re = qr/^bar/; "foo\nbar" =~ /$re/m;
162
163
164 =back
165
166
167 =head1 Core Enhancements
168
169 =head2 Unicode Character Database 5.1.0
170
171 The copy of the Unicode Character Database included in Perl 5.10.1 has
172 been updated to 5.1.0 from 5.0.0. See
173 L<http://www.unicode.org/versions/Unicode5.1.0/#NotableChanges> for the
174 notable changes.
175
176 =head2 A proper interface for pluggable Method Resolution Orders
177
178 XXX Nicholas said he needs to document the following change, at which
179 point update this entry (b2685f0c86 2008/12/27)
180
181 =head2 The C<overloading> pragma
182
183 This pragma allows you to lexically disable or enable overloading
184 for some or all operations. (Yuval Kogman)
185
186
187 =head1 Modules and Pragmata
188
189 =head2 Pragmata Changes
190
191 =over 4
192
193 =item C<charnames>
194
195 The Unicode NameAliases.txt database file has been added. This has the
196 effect of adding some extra C<\N> character names that formerly wouldn't
197 have been recognised; for example, C<"\N{LATIN CAPITAL LETTER GHA}">.
198
199 =over 4
200
201 =item C<overloading>
202
203 See L</"The C<overloading> pragma"> above.
204
205 =back
206
207
208 =head2 New Modules
209
210 =over
211
212 =item *
213
214 C<autodie> is a new lexically-scoped alternative for the C<Fatal> module.
215 The bundled version is 1.999.
216
217 =item *
218
219 C<Compress::Raw::Bzip2> has been added to the core (version 2.020).
220
221 =item *
222
223 C<Parse::CPAN::Meta> has been added to the core (version 1.39).
224
225 =back
226
227 =head2 Updated Modules
228
229 =over
230
231 =item C<feature>
232
233 The meaning of the C<:5.10> and C<:5.10.X> feature bundles has
234 changed slightly. The last component, if any (ie C<X>) is simply ignored.
235 This is predicated on the assumption that new features will not, in
236 general, be added to maintenance releases. So  C<:5.10> and C<:5.10.X>
237 have identical effect. This is a change to the behaviour documented for
238 5.10.0.
239
240 =item *
241
242 C<Attribute::Handlers> upgraded from version 0.79 to 0.83
243
244 =item *
245
246 C<Archive::Extract> upgraded from version 0.24 to 0.30
247
248 =item *
249
250 C<Archive::Tar> upgraded from version 1.38 to 1.48
251
252 =item *
253
254 C<Autoloader> upgraded from version 5.63 to 5.68
255
256 =item *
257
258 C<B> upgraded from version 1.17 to 1.22
259
260 =item *
261
262 C<B::Deparse> upgraded from version 0.83 to 0.87
263
264 =item *
265
266 C<CGI> upgraded from version 3.29 to 1.93_03 
267
268 =item *
269
270 C<Compress::Zlib> upgraded from version 2.008 to 2.020
271
272 =item *
273
274 C<CPAN> upgraded from version 1.9205 to 1.94
275
276 =item *
277
278 C<CPANPLUS> upgraded from version 0.84 to 0.8601
279
280 =item *
281
282 C<CPANPLUS::Dist::Build> upgraded from version 0.06_02 to 0.32
283
284 =item *
285
286 C<Cwd> upgraded from version 3.25_01 to 3.30
287
288 =item *
289
290 C<Data::Dumper> upgraded from version 2.121_14 to 2.121_20
291
292 =item *
293
294 C<Devel::PPPort> upgraded from version 3.13 to 3.17
295
296 =item *
297
298 C<DB_File> upgraded from version 1.816_1 to 1.820
299
300 =item *
301
302 C<Digest::MD5> upgraded from version 2.36_01 to 2.38
303
304 =item *
305
306 C<Dynaloader> XXX the "1.09" in 5.8.9 is probably different from that in
307 bleed/maint
308
309 =item *
310
311 C<Encode> upgraded from version 2.23 to 2.33
312
313 =item *
314
315 C<Filter::Simple> upgraded from version 0.82 to 0.84
316
317 =item *
318
319 C<ExtUtils::Command> upgraded from version 1.13 to 1.16
320
321 =item *
322
323 C<ExtUtils::Constant> XXX various .pms from this have newer versions than
324 CPAN, both in 5.10.0 and 5.10.x
325
326 =item *
327
328 C<ExtUtils::Install> upgraded from version 1.44 to 1.52
329
330 =item *
331
332 C<ExtUtils::MakeMaker> upgraded from version 6.42 to 6.50
333
334
335 =item *
336
337 C<ExtUtils::Manifest> upgraded from version 1.51_01 to 1.56
338
339 =item *
340
341 C<File::Copy> upgraded from version 2.11 to 2.14
342
343 =item *
344
345 C<File::Fetch> upgraded from version 0.14 to 0.18
346
347 =item *
348
349 C<File::Spec> upgraded from version 3.2501 to 3.30
350
351 =item *
352
353 C<FileCache> upgraded from version 1.07 to 1.08
354
355 =item *
356
357 C<Filter::Util::Call> upgraded from version 1.07 to 1.08
358
359 =item *
360
361 C<Fatal> upgraded from version 1.05 to 1.999. See also the new pragma
362 C<autodie>.
363
364 =item *
365
366 C<Getopt::Long> upgraded from version 2.37 to 2.38
367
368 =item *
369
370 C<Hash::Util::FieldHash> upgraded from version 1.03 to 1.03_01. XXX
371 This fixes a memory leak.
372
373 =item *
374
375 C<IO> upgraded from version 1.23_01 to 1.23_02 XXX
376
377 This makes non-blocking mode work on Windows in IO::Socket::INET [CPAN #43573].
378
379 =item *
380
381 C<IO::Compress::*> upgraded from version 2.008 to 2.020
382
383 =item *
384
385 C<IPC::Cmd> upgraded from version 0.40_1 to 0.44
386
387 =item *
388
389 C<IPC::Open3> upgraded from version 1.02 to 1.04
390
391 =item *
392
393 C<IPC::SysV> upgraded from version 1.05 to 2.01
394
395 =item *
396
397 C<Log::Message> upgraded from version 0.01 to 0.02
398
399 =item *
400
401 C<Math::Complex> upgraded from version 1.37 to 1.56
402
403 =item *
404
405 C<Module::Build> upgraded from version 0.2808_01 to 0.32
406
407 =item *
408
409 C<Module::CoreList> upgraded from version 2.13 to 2.17_01 XXX
410
411 =item *
412
413 C<Module::Load> upgraded from version 0.12 to 0.16
414
415 =item *
416
417 C<Module::Load::Conditional> upgraded from version 0.22 to 0.30
418
419 =item *
420
421 C<Module::Loaded> upgraded from version 0.01 to 0.02
422
423 =item *
424
425 C<Module::Pluggable> upgraded from version 3.6 to 3.9_01 XXX
426
427 =item *
428
429 C<NEXT> upgraded from version 0.60_01 to 0.63
430
431 =item *
432
433 C<Package::Constants> upgraded from version 0.01 to 0.02
434
435 =item *
436
437 C<Pod::Parser> upgraded from version 1.35 to 1.37
438
439 =item *
440
441 C<Pod::MAN> upgraded from version 2.16 to 2.22
442
443 =item *
444
445 C<Pod::Text> upgraded from version 3.08 to 3.13
446
447 =item *
448
449 C<POSIX> upgraded from version 1.13 to 1.17
450
451 =item *
452
453 C<Storable> XXX the "2.19" in 5.8.9 is probably different from that in
454 bleed/maint
455
456 =item *
457
458 C<Switch> upgraded from version 2.13 to 2.14
459
460 =item *
461
462 C<Symbol> upgraded from version 1.06 to 1.07
463
464 =item *
465
466 C<threads> upgraded from version 1.67 to 1.72
467
468 =item *
469
470 C<threads::shared> upgraded from version 1.14 to 1.28
471
472 =item *
473
474 C<Term::ANSIColor> upgraded from version 1.12 to 2.00
475
476 =item *
477
478 C<Term::UI> upgraded from version 0.18 to 0.20
479
480 =item *
481
482 C<Test::Harness> upgraded from version 2.64 to 3.16
483 XXX major upgrade - add some blurb ???
484
485 Note that one side-effect of the 2.x to 3.x upgrade is that the
486 experimental C<Test::Harness::Straps> module (and its supporting
487 C<Assert>, C<Iterator>, C<Point> and C<Results> modules) have been
488 removed. If you still need this, then they are available in the
489 (unmaintained) C<Test-Harness-Straps> distribution on CPAN.
490
491 =item *
492
493 C<Test::Simple> upgraded from version 0.80 to 0.86_01 XXX not a CPAN release
494
495 =item *
496
497 C<Text::Tabs> upgraded from version 2007.1117 to 2009.0305
498
499 =item *
500
501 C<Text::Wrap> upgraded from version 2006.1117 to 2009.0305
502
503 =item *
504
505 C<Time::HiRes> upgraded from version 1.9711 to 1.9719
506
507 =item *
508
509 C<Time::Piece> upgraded from version 1.12 to 1.13_03 XXX
510
511 =item *
512
513 C<Unicode::Normalize> upgraded from version 1.02 to 1.03
514
515 =item *
516
517 C<Unicode::UCD> upgraded from version 0.25 to 0.27
518
519 =item *
520
521 C<Win32> upgraded from version 0.34 to version 0.39
522
523 =item *
524
525 C<Win32API::File> upgraded from version 0.1001_01 to 0.1101
526
527 =back
528
529 =head1 Utility Changes
530
531 =head2 F<h2ph>
532
533 Now looks in C<include-fixed> too, which is a recent addition to gcc's
534 search path.
535
536
537 =head2 F<h2xs>
538
539 No longer incorrectly treats enum values like macros.
540
541 Now handles C++ style constants (C<//>) properly in enums.
542
543 =head1 New Documentation
544
545 L<perlperf> by Richard Foley, provides an introduction to the use of
546 performance and optimization techniques which can be used with particular
547 reference to perl programs.
548
549 L<perlrepository> describes how to access the perl source using git.
550
551 The various large C<Changes*> files (which listed every change made to perl
552 over the last 18 years) have been removed, and replaced by a small file,
553 also called C<Changes>, which just explains how that same information may
554 be extracted from the git version control system.
555
556 =head1 Performance Enhancements
557
558 =over
559
560 =item *
561
562 A new internal cache means that C<isa()> will often be faster.
563
564 =back
565
566 =head1 Installation and Configuration Improvements
567
568 =head2 Configuration improvements
569
570 if C<vendorlib> and C<vendorarch> are the same, then they are only added to
571 C<@INC> once.
572
573 C<$Config{usedevel}> and the C-level C<PERL_USE_DEVEL> are now defined if
574 perl is built with  C<-Dusedevel>.
575
576 =head2 Compilation improvements
577
578 =head2 Installation improvements.
579
580 =head2 Platform Specific Changes
581
582 =head3 NetBSD
583
584 hints now supports versions 5.*.
585
586
587
588 =head1 Selected Bug Fixes
589
590 =head2 Other fixes
591
592 =over
593
594 =item *
595
596 Fixed memory leak on C<while (1) { map 1, 1 }> [RT # 53038].
597
598 =item *
599
600 Some potential coredumps in PerlIO fixed [RT # 57322,54828].
601
602 =item *
603
604 The debugger now works with lvalue subroutines
605
606 =item *
607
608 The debugger's C<m> command was broken on modules that defined constants
609 [RT #61222].
610
611
612 =item *
613
614 C<crypt()> and string complement could return tainted values for untainted
615 arguments [RT # 59998].
616
617 =item *
618
619 The C<-i.sufffix> command-line switch now recreates the file using
620 restricted permissions, before changing its mode to match the original
621 file. This eliminates a potential race condition.
622
623 =item *
624
625 On some UNIX systems, the value in C<$?> would not have the top bit set
626 (C<$? & 128>) even if the child core dumped.
627
628 =item *
629
630 Under some circumstances, $^R could incorrectly become undefined
631 [RT # 57042].
632
633 =item *
634
635 (XS) In various hash functions, passing a pre-computed hash to when the
636 key is utf8 might result in an incorrect lookup.
637
638 =item *
639
640 (XS) Including F<XSUB.h> before F<perl.h> gave a compile-time error
641 [RT #57176].
642
643 =item *
644
645 C<$object->isa('Foo')> would report false if the package C<Foo> didn't
646 exist, even if the object's C<@ISA> contained C<Foo>.
647
648 =item *
649
650 Bitwise operations on references could crash the interpreter, e.g.
651 C<$x=\$y; $x |= "foo"> [RT #54956].
652
653 =item *
654
655 Patterns including alternation might be sensitive to the internal UTF8
656 representation, e.g.
657
658     my $byte = chr(192);
659     my $utf8 = chr(192); utf8::upgrade($utf8);
660     $utf8 =~ /$byte|X}/i;       # failed in 5.10.0
661
662 =item *
663
664 Within utf8-encoded Perl source files (i.e. where C<use utf8> is in
665 effect), double-quoted literal strings could be corrupted where a C<\xNN>,
666 C<\0NNN> or C<\N{}> is followed by a literal character with ordinal value
667 greater than 255 [RT #59908].
668
669 =item *
670
671 C<B::Deparse> failed to correctly deparse various constructs:
672 C<readpipe STRING> [RT #62428], C<CORE::require(STRING)> [RT #62488],
673 C<sub foo(_)> [RT #62484]. Also, constant subroutines were deparsed as
674 their values.
675
676 =item *
677
678 Using C<setpgrp()> with no arguments could corrupt the perl stack.
679
680 =item *
681
682 The block form of C<eval> is now specifically trappable by C<Safe> and
683 C<ops>.  Previously it was erroneously treated like string C<eval>.
684
685 =item *
686
687 In 5.10.0, the two characters C<[~> were sometimes parsed as the smart
688 match operator (C<~~>) [RT #63854].
689
690 =item *
691
692 In 5.10.0, the C<*> quantifier in patterns was sometimes treated as
693 C<{0,32767}> [RT #60034, #60464]. For example, this match would fail:
694
695     ("ab" x 32768) =~ /^(ab)*$/
696
697 =item *
698
699 C<shmget> was limited to a 32 bit segment size on a 64 bit OS [RT #63924].
700
701 =item *
702
703 Using C<next> or C<last> to exit a C<given> block no longer produces a
704 spurious warning like the following:
705
706     Exiting given via last at foo.pl line 123
707
708 =item *
709
710 On windows, C<'.\foo'> and C<'..\foo'>  were treated differently than
711 C<'./foo'> and C<'../foo'> by C<do> and C<require> [RT #63492].
712
713
714 =item *
715
716 Assigning a format to a glob could corrupt the format; e.g.:
717
718      *bar=*foo{FORMAT}; # foo format now bad
719
720 =back
721
722 =head1 New or Changed Diagnostics
723
724 =head2 Can't locate package %s for the parents of %s
725
726 This warning has been removed. In general, it only got produced in
727 conjunction with other warnings, and removing it allowed an isa lookup
728 optimisation to be added.
729
730 =head1 Changed Internals
731
732 =over
733
734 =item *
735
736 C<vcroak()> now accepts a null first argument.
737
738 =item *
739
740 New macros C<dSAVEDERRNO>, C<dSAVE_ERRNO>, C<SAVE_ERRNO>, C<RESTORE_ERRNO>
741 have been added to formalise the temporary saving of the C<errno>
742 variable.
743
744 =item *
745
746 The function C<Perl_sv_insert_flags> has been added to augment
747 C<Perl_sv_insert>.
748
749 =item *
750
751 The function C<Perl_croak_xs_usage> has been added as a wrapper to
752 C<Perl_croak>.
753
754 =item *
755
756 The functions C<PerlIO_find_layer> and C<PerlIO_list_alloc> are now
757 exported.
758
759
760 =back
761
762 =head1 Known Problems
763
764 =head2 Platform Specific Problems
765
766 =head1 Deprecations
767
768 The following items are now deprecated.
769
770 =over
771
772 =item *
773
774 C<Switch> is buggy and should be avoided. From perl 5.11.0 onwards it is
775 intended that any use of the core version of this module will emit a
776 warning, and that the module will eventually be removed from the core
777 (probably in perl 5.14.0). See L<perlsyn/"Switch statements"> for its
778 replacement.
779
780 =item *
781
782 C<suidperl> will be removed in 5.12.0. This provides a mechanism to
783 emulate setuid permission bits on systems that don't support it properly.
784
785 =back
786
787 =head1 Acknowledgements
788
789 Some of the work in this release was funded by a TPF grant.
790
791 XXX more to come
792
793 =head1 Reporting Bugs
794
795 If you find what you think is a bug, you might check the articles
796 recently posted to the comp.lang.perl.misc newsgroup and the perl
797 bug database at http://bugs.perl.org/ .  There may also be
798 information at http://www.perl.org/ , the Perl Home Page.
799
800 If you believe you have an unreported bug, please run the B<perlbug>
801 program included with your release.  Be sure to trim your bug down
802 to a tiny but sufficient test case.  Your bug report, along with the
803 output of C<perl -V>, will be sent off to perlbug@perl.org to be
804 analysed by the Perl porting team.
805
806 =head1 SEE ALSO
807
808 The F<Changes> file for an explanation of how to view exhaustive details
809 on what changed.
810
811 The F<INSTALL> file for how to build Perl.
812
813 The F<README> file for general stuff.
814
815 The F<Artistic> and F<Copying> files for copyright information.
816
817 =cut