Commit | Line | Data |
7120b314 |
1 | =head1 NAME |
2 | |
3 | perldelta - what is new for perl v5.11.0 |
4 | |
5 | =head1 DESCRIPTION |
6 | |
7 | This document describes differences between the 5.10.0 and the 5.11.0 |
9948897e |
8 | development releases. |
7120b314 |
9 | |
10 | =head1 Incompatible Changes |
11 | |
8b8da387 |
12 | =head2 Switch statement changes |
13 | |
14 | The handling of complex expressions by the C<given>/C<when> switch |
1710b4c0 |
15 | statement has been enhanced. There are two new cases where C<when> now |
412304fb |
16 | interprets its argument as a boolean, instead of an expression to be used |
8b8da387 |
17 | in a smart match: |
18 | |
19 | =over 4 |
20 | |
8b8da387 |
21 | =item flip-flop operators |
22 | |
23 | The C<..> and C<...> flip-flop operators are evaluated in boolean context, |
24 | following their usual semantics; see L<perlop/"Range Operators">. |
25 | |
26 | =item defined-or operator |
27 | |
28 | A compound expression involving the defined-or operator, as in |
29 | C<when (expr1 // expr2)>, will be treated as boolean if the first |
30 | expression is boolean. (This just extends the existing rule that applies |
31 | to the regular or operator, as in C<when (expr1 || expr2)>.) |
32 | |
33 | =back |
34 | |
35 | The next paragraph details more changes brought to the semantics to |
36 | the smart match operator, that naturally also modify the behaviour |
37 | of the switch statements where smart matching is implicitly used. |
38 | |
39 | =head2 Smart match changes |
40 | |
41 | =head3 Changes to type-based dispatch |
42 | |
43 | The smart match operator C<~~> is no longer commutative. The behaviour of |
44 | a smart match now depends primarily on the type of its right hand |
ee18cc6c |
45 | argument. Moreover, its semantics has been adjusted for greater |
46 | consistency or usefulness in several cases. While the general backwards |
47 | compatibility is maintained, several changes must be noted: |
8b8da387 |
48 | |
49 | =over 4 |
50 | |
51 | =item * |
52 | |
53 | Code references with an empty prototype are no longer treated specially. |
54 | They are passed an argument like the other code references (even if they |
55 | choose to ignore it). |
56 | |
57 | =item * |
58 | |
59 | C<%hash ~~ sub {}> and C<@array ~~ sub {}> now test that the subroutine |
9091a618 |
60 | returns a true value for each key of the hash (or element of the |
8b8da387 |
61 | array), instead of passing the whole hash or array as a reference to |
62 | the subroutine. |
63 | |
64 | =item * |
65 | |
ee18cc6c |
66 | Due to the commutativity breakage, code references are no longer |
67 | treated specially when appearing on the left of the C<~~> operator, |
68 | but like any vulgar scalar. |
69 | |
70 | =item * |
71 | |
8b8da387 |
72 | C<undef ~~ %hash> is always false (since C<undef> can't be a key in a |
73 | hash). No implicit conversion to C<""> is done (as was the case in perl |
74 | 5.10.0). |
75 | |
76 | =item * |
77 | |
78 | C<$scalar ~~ @array> now always distributes the smart match across the |
79 | elements of the array. It's true if one element in @array verifies |
80 | C<$scalar ~~ $element>. This is a generalization of the old behaviour |
81 | that tested whether the array contained the scalar. |
82 | |
83 | =back |
84 | |
85 | The full dispatch table for the smart match operator is given in |
86 | L<perlsyn/"Smart matching in detail">. |
87 | |
88 | =head3 Smart match and overloading |
89 | |
90 | According to the rule of dispatch based on the rightmost argument type, |
91 | when an object overloading C<~~> appears on the right side of the |
92 | operator, the overload routine will always be called (with a 3rd argument |
93 | set to a true value, see L<overload>.) However, when the object will |
94 | appear on the left, the overload routine will be called only when the |
9091a618 |
95 | rightmost argument is a simple scalar. This way distributivity of smart match |
8b8da387 |
96 | across arrays is not broken, as well as the other behaviours with complex |
97 | types (coderefs, hashes, regexes). Thus, writers of overloading routines |
ee18cc6c |
98 | for smart match mostly need to worry only with comparing against a scalar, |
99 | and possibly with stringification overloading; the other common cases |
100 | will be automatically handled consistently. |
8b8da387 |
101 | |
102 | C<~~> will now refuse to work on objects that do not overload it (in order |
103 | to avoid relying on the object's underlying structure). |
104 | |
7120b314 |
105 | =head1 Core Enhancements |
106 | |
1839a850 |
107 | =head1 The C<overloading> pragma |
108 | |
109 | This pragma allows you to lexically disable or enable overloading |
110 | for some or all operations. (Yuval Kogman) |
111 | |
7120b314 |
112 | =head1 Modules and Pragmata |
113 | |
1839a850 |
114 | =head2 Pragmata Changes |
115 | |
116 | =over 4 |
117 | |
118 | =item C<overloading> |
119 | |
120 | See L</"The C<overloading> pragma"> above. |
121 | |
122 | =back |
123 | |
7120b314 |
124 | =head1 Utility Changes |
125 | |
126 | =head1 Documentation |
127 | |
128 | =head1 Performance Enhancements |
129 | |
130 | =head1 Installation and Configuration Improvements |
131 | |
132 | =head1 Selected Bug Fixes |
133 | |
54ad55c5 |
134 | =over 4 |
135 | |
136 | =item C<-I> on shebang line now adds directories in front of @INC |
137 | |
138 | as documented, and as does C<-I> when specified on the command-line. |
139 | (Renée Bäcker) |
140 | |
141 | =back |
142 | |
7120b314 |
143 | =head1 New or Changed Diagnostics |
144 | |
145 | =head1 Changed Internals |
146 | |
147 | =head1 Known Problems |
148 | |
149 | =head2 Platform Specific Problems |
150 | |
151 | =head1 Reporting Bugs |
152 | |
153 | If you find what you think is a bug, you might check the articles |
154 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
155 | bug database at http://bugs.perl.org/ . There may also be |
156 | information at http://www.perl.org/ , the Perl Home Page. |
157 | |
158 | If you believe you have an unreported bug, please run the B<perlbug> |
159 | program included with your release. Be sure to trim your bug down |
160 | to a tiny but sufficient test case. Your bug report, along with the |
161 | output of C<perl -V>, will be sent off to perlbug@perl.org to be |
162 | analysed by the Perl porting team. |
163 | |
164 | =head1 SEE ALSO |
165 | |
166 | The F<Changes> file for exhaustive details on what changed. |
167 | |
168 | The F<INSTALL> file for how to build Perl. |
169 | |
170 | The F<README> file for general stuff. |
171 | |
172 | The F<Artistic> and F<Copying> files for copyright information. |
173 | |
174 | =cut |