Commit | Line | Data |
d5114285 |
1 | =head1 NAME |
2 | |
e3d66814 |
3 | perl5112delta - what is new for perl v5.11.2 |
d5114285 |
4 | |
5 | =head1 DESCRIPTION |
6 | |
70c171b5 |
7 | This document describes differences between the 5.11.1 release and the |
8 | 5.11.2 release. |
d5114285 |
9 | |
d5114285 |
10 | =head1 Core Enhancements |
11 | |
97352077 |
12 | =head2 qr overloading |
13 | |
70c171b5 |
14 | It is now possible to overload the C<qr//> operator, that is, |
15 | conversion to regexp, like it was already possible to overload |
16 | conversion to boolean, string or number of objects. It is invoked when |
17 | an object appears on the right hand side of the C<=~> operator, or when |
18 | it is interpolated into a regexp. See L<overload>. |
97352077 |
19 | |
88e1f1a2 |
20 | =head2 Pluggable keywords |
21 | |
70c171b5 |
22 | Extension modules can now cleanly hook into the Perl parser to define |
23 | new kinds of keyword-headed expression and compound statement. The |
24 | syntax following the keyword is defined entirely by the extension. This |
25 | allow a completely non-Perl sublanguage to be parsed inline, with the |
26 | right ops cleanly generated. This feature is currently considered |
27 | experimental. |
88e1f1a2 |
28 | |
70c171b5 |
29 | See L<perlapi/PL_keyword_plugin> for the mechanism. The Perl core |
30 | source distribution also includes a new module |
31 | L<XS::APItest::KeywordRPN>, which implements reverse Polish notation |
32 | arithmetic via pluggable keywords. This module is mainly used for test |
33 | purposes, and is not normally installed, but also serves as an example |
34 | of how to use the new mechanism. |
88e1f1a2 |
35 | |
580561a3 |
36 | =head2 APIs for more internals |
37 | |
38 | The lowest layers of the lexer and parts of the pad system now have C |
c54f4355 |
39 | APIs available to XS extensions. These are necessary to support proper |
40 | use of pluggable keywords, but have other uses too. The new APIs are |
70c171b5 |
41 | experimental, and only cover a small proportion of what would be |
42 | necessary to take full advantage of the core's facilities in these |
43 | areas. It is intended that the Perl 5.13 development cycle will see the |
44 | addition of a full range of clean, supported interfaces. |
580561a3 |
45 | |
f7461760 |
46 | =head2 Overridable function lookup |
47 | |
70c171b5 |
48 | Where an extension module hooks the creation of rv2cv ops to modify the |
49 | subroutine lookup process, this now works correctly for bareword |
c54f4355 |
50 | subroutine calls. This means that prototypes on subroutines referenced |
51 | this way will be processed correctly. (Previously bareword subroutine |
f7461760 |
52 | names were initially looked up, for parsing purposes, by an unhookable |
53 | mechanism, so extensions could only properly influence subroutine names |
54 | that appeared with an C<&> sigil.) |
55 | |
d5114285 |
56 | =head1 Modules and Pragmata |
57 | |
d5114285 |
58 | =head2 New Modules and Pragmata |
59 | |
60 | =over 4 |
61 | |
1fc7262d |
62 | =item C<legacy> |
d5114285 |
63 | |
1fc7262d |
64 | Preserves legacy behaviors or enable new non-default behaviors. |
65 | Currently the only behaviour concerns semantics for the 128 characters |
66 | on ASCII systems that have the 8th bit set. |
d5114285 |
67 | |
68 | =back |
69 | |
70 | =head2 Pragmata Changes |
71 | |
72 | =over 4 |
73 | |
1fc7262d |
74 | =item C<diagnostics> |
d5114285 |
75 | |
1fc7262d |
76 | Supports %.0f formatting internally. |
77 | |
78 | =item C<overload> |
79 | |
80 | Allow overloading of 'qr'. |
d5114285 |
81 | |
82 | =back |
83 | |
84 | =head2 Updated Modules |
85 | |
86 | =over 4 |
87 | |
1fc7262d |
88 | =item C<B::Concise> |
d5114285 |
89 | |
70c171b5 |
90 | Optimize reversing an array in-place, avoid using defined %hash in core |
91 | code and tests. |
d44d5874 |
92 | |
1fc7262d |
93 | =item C<B::Deparse> |
94 | |
d44d5874 |
95 | Teach B::Deparse about in-place reverse. |
96 | |
1fc7262d |
97 | =item C<Carp> |
98 | |
d44d5874 |
99 | Refine Carp caller() fix and add tests. |
100 | |
1fc7262d |
101 | =item C<Compress::Zlib> |
102 | |
d44d5874 |
103 | Updated to 2.022. |
104 | |
1fc7262d |
105 | =item C<CPANPLUS> |
106 | |
d44d5874 |
107 | Updated to 0.89_09. |
1fc7262d |
108 | |
109 | =item C<Encode> |
110 | |
d44d5874 |
111 | Updated to 2.38. |
112 | |
1fc7262d |
113 | =item C<ExtUtils::CBuilder> |
114 | |
d44d5874 |
115 | Updated to 0.27. |
116 | |
1fc7262d |
117 | =item C<Env> |
118 | |
d44d5874 |
119 | Add EXISTS and DELETE methods to Env.pm. |
1fc7262d |
120 | |
121 | =item C<File::Fetch> |
122 | |
d44d5874 |
123 | Updated to 0.22. |
124 | |
1fc7262d |
125 | =item C<I8N::Langinfo> |
126 | |
d44d5874 |
127 | Correctly document export of I18N::Langinfo. |
128 | |
1fc7262d |
129 | =item C<I8N::LangTags> |
130 | |
70c171b5 |
131 | In I18N::LangTags::Detect, avoid using defined @array and defined |
132 | %hash. |
d44d5874 |
133 | |
1fc7262d |
134 | =item C<IO::Compress> |
135 | |
d44d5874 |
136 | Updated to 2.022. |
137 | |
1fc7262d |
138 | =item C<IPC::Cmd> |
139 | |
d44d5874 |
140 | Updated to 0.54. |
141 | |
1fc7262d |
142 | =item C<List::Util> |
143 | |
d44d5874 |
144 | Updated to 1.22. |
145 | |
1fc7262d |
146 | =item C<Locale::Maketext> |
147 | |
d44d5874 |
148 | In Locale::Maketext, avoid using defined @array and defined %hash. |
149 | Convert the odd Locale::Maketext test out from Test to Test::More. |
150 | |
1fc7262d |
151 | =item C<Module::Build> |
152 | |
72343ccb |
153 | Updated to 0.35_08. |
154 | |
1fc7262d |
155 | =item C<Module::CoreList> |
156 | |
d44d5874 |
157 | Implemented is_deprecated(). |
1fc7262d |
158 | |
159 | =item C<Pod::Simple> |
160 | |
d44d5874 |
161 | Updated to 3.10. |
162 | |
1fc7262d |
163 | =item C<Scalar::Util> |
164 | |
d44d5874 |
165 | Updated to 1.22. |
166 | |
1fc7262d |
167 | =item C<Switch> |
168 | |
d44d5874 |
169 | Updated to 2.16. |
d5114285 |
170 | |
171 | =back |
172 | |
173 | =head1 Utility Changes |
174 | |
d5114285 |
175 | =over 4 |
176 | |
72343ccb |
177 | =item F<a2p> |
d5114285 |
178 | |
70c171b5 |
179 | Fixed bugs with the match() operator in list context, remove mention of |
180 | $[. |
d5114285 |
181 | |
182 | =back |
183 | |
d5114285 |
184 | =head1 Performance Enhancements |
185 | |
d5114285 |
186 | =over 4 |
187 | |
188 | =item * |
189 | |
70c171b5 |
190 | Reversing an array to itself (as in C<@a = reverse @a>) in void context |
191 | now happens in-place and is several orders of magnitude faster than it |
192 | used to be. It will also preserve non-existent elements whenever |
193 | possible, i.e. for non magical arrays or tied arrays with C<EXISTS> and |
194 | C<DELETE> methods. |
d5114285 |
195 | |
196 | =back |
197 | |
d5114285 |
198 | =head1 New or Changed Diagnostics |
199 | |
72343ccb |
200 | Several new diagnostics, see L<perldiag> for details. |
d5114285 |
201 | |
202 | =over 4 |
203 | |
72343ccb |
204 | =item C<Bad plugin affecting keyword '%s'> |
d5114285 |
205 | |
72343ccb |
206 | =item C<gmtime(%.0f) too large> |
207 | |
208 | =item C<Lexing code attempted to stuff non-Latin-1 character into Latin-1 input> |
209 | |
210 | =item C<Lexing code internal error (%s)> |
211 | |
212 | =item C<localtime(%.0f) too large> |
213 | |
214 | =item C<Overloaded dereference did not return a reference> |
215 | |
216 | =item C<Overloaded qr did not return a REGEXP> |
217 | |
218 | =item C<Perl_pmflag() is deprecated, and will be removed from the XS API> |
219 | |
220 | =back |
221 | |
222 | One diagnostic has been removed: |
223 | |
224 | =over 4 |
225 | |
226 | =item C<Runaway format> |
d5114285 |
227 | |
228 | =back |
229 | |
230 | =head1 Changed Internals |
231 | |
d5114285 |
232 | =over 4 |
233 | |
234 | =item * |
235 | |
70c171b5 |
236 | C<Perl_pmflag> has been removed from the public API. Calling it now |
237 | generates a deprecation warning, and it will be removed in a future |
238 | release. Although listed as part of the API, it was never documented, |
239 | and only ever used in F<toke.c>, and prior to 5.10, F<regcomp.c>. In |
240 | core, it has been replaced by a static function. |
d5114285 |
241 | |
242 | =back |
243 | |
244 | =head1 New Tests |
245 | |
d5114285 |
246 | =over 4 |
247 | |
72343ccb |
248 | =item F<t/op/while_readdir.t> |
d5114285 |
249 | |
72343ccb |
250 | Test that a bare readdir in while loop sets $_. |
d5114285 |
251 | |
252 | =back |
253 | |
254 | =head1 Known Problems |
255 | |
d5114285 |
256 | =over 4 |
257 | |
72343ccb |
258 | =item Known test failures on VMS |
d5114285 |
259 | |
70c171b5 |
260 | Perl 5.11.2 fails a small set of core and CPAN tests as of this |
261 | release. With luck, that'll be sorted out for 5.11.3. |
d5114285 |
262 | |
263 | =back |
264 | |
265 | =head1 Deprecations |
266 | |
d5114285 |
267 | The following items are now deprecated. |
268 | |
72343ccb |
269 | =head2 Use of C<:=> to mean an empty attribute list is now deprecated. |
d5114285 |
270 | |
70c171b5 |
271 | An accident of Perl's parser meant that these constructions were all |
272 | equivalent: |
d5114285 |
273 | |
72343ccb |
274 | my $pi := 4; |
275 | my $pi : = 4; |
276 | my $pi : = 4; |
d5114285 |
277 | |
70c171b5 |
278 | with the C<:> being treated as the start of an attribute list, which |
279 | ends before the C<=>. As whitespace is not significant here, all are |
280 | parsed as an empty attribute list, hence all the above are equivalent |
281 | to, and better written as |
72343ccb |
282 | |
283 | my $pi = 4; |
284 | |
285 | because no attribute processing is done for an empty list. |
286 | |
70c171b5 |
287 | As is, this meant that C<:=> cannot be used as a new token, without |
288 | silently changing the meaning of existing code. Hence that particular |
289 | form is now deprecated, and will become a syntax error. If it is |
290 | absolutely necessary to have empty attribute lists (for example, |
291 | because of a code generator) then avoid the warning by adding a space |
292 | before the C<=>. |
d5114285 |
293 | |
d5114285 |
294 | =head1 Acknowledgements |
295 | |
70c171b5 |
296 | Perl 5.11.2 represents approximately 3 weeks development since Perl |
bf5a8d4f |
297 | 5.11.1 and contains 29,992 lines of changes across 458 files from 38 |
70c171b5 |
298 | authors and committers: |
72343ccb |
299 | |
70c171b5 |
300 | Abhijit Menon-Sen, Abigail, Ben Morrow, Bo Borgerson, Brad Gilbert, |
301 | Bram, Chris Williams, Craig A. Berry, Daniel Frederick Crisman, Dave |
302 | Rolsky, David E. Wheeler, David Golden, Eric Brine, Father |
303 | Chrysostomos, Frank Wiegand, Gerard Goossen, Gisle Aas, Graham Barr, |
304 | Harmen, H.Merijn Brand, Jan Dubois, Jerry D. Hedden, Jesse Vincent, |
305 | Karl Williamson, Kevin Ryde, Leon Brocard, Nicholas Clark, Paul |
306 | Marquess, Philippe Bruhat, Rafael Garcia-Suarez, Sisyphus, Steffen |
307 | Mueller, Steve Hay, Steve Peters, Vincent Pit, Yuval Kogman, Yves |
308 | Orton, and Zefram. |
d5114285 |
309 | |
72343ccb |
310 | Many of the changes included in this version originated in the CPAN |
311 | modules included in Perl's core. We're grateful to the entire CPAN |
312 | community for helping Perl to flourish. |
d5114285 |
313 | |
314 | =head1 Reporting Bugs |
315 | |
316 | If you find what you think is a bug, you might check the articles |
70c171b5 |
317 | recently posted to the comp.lang.perl.misc newsgroup and the perl bug |
318 | database at http://rt.perl.org/perlbug/ . There may also be information |
319 | at http://www.perl.org/ , the Perl Home Page. |
d5114285 |
320 | |
321 | If you believe you have an unreported bug, please run the B<perlbug> |
70c171b5 |
322 | program included with your release. Be sure to trim your bug down to a |
323 | tiny but sufficient test case. Your bug report, along with the output |
324 | of C<perl -V>, will be sent off to perlbug@perl.org to be analysed by |
325 | the Perl porting team. |
d5114285 |
326 | |
327 | If the bug you are reporting has security implications, which make it |
70c171b5 |
328 | inappropriate to send to a publicly archived mailing list, then please |
329 | send it to perl5-security-report@perl.org. This points to a closed |
330 | subscription unarchived mailing list, which includes all the core |
331 | committers, who be able to help assess the impact of issues, figure out |
332 | a resolution, and help co-ordinate the release of patches to mitigate |
333 | or fix the problem across all platforms on which Perl is supported. |
334 | Please only use this address for security issues in the Perl core, not |
335 | for modules independently distributed on CPAN. |
d5114285 |
336 | |
337 | =head1 SEE ALSO |
338 | |
70c171b5 |
339 | The F<Changes> file for an explanation of how to view exhaustive |
340 | details on what changed. |
d5114285 |
341 | |
342 | The F<INSTALL> file for how to build Perl. |
343 | |
344 | The F<README> file for general stuff. |
345 | |
346 | The F<Artistic> and F<Copying> files for copyright information. |
347 | |
348 | =cut |