Commit | Line | Data |
---|---|---|
d5114285 NC |
1 | =head1 NAME |
2 | ||
e3d66814 | 3 | perl5112delta - what is new for perl v5.11.2 |
d5114285 NC |
4 | |
5 | =head1 DESCRIPTION | |
6 | ||
70c171b5 LB |
7 | This document describes differences between the 5.11.1 release and the |
8 | 5.11.2 release. | |
d5114285 | 9 | |
d5114285 NC |
10 | =head1 Core Enhancements |
11 | ||
97352077 RGS |
12 | =head2 qr overloading |
13 | ||
70c171b5 LB |
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 JV |
20 | =head2 Pluggable keywords |
21 | ||
70c171b5 LB |
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 LB |
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 Z |
36 | =head2 APIs for more internals |
37 | ||
38 | The lowest layers of the lexer and parts of the pad system now have C | |
c54f4355 LB |
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 LB |
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 Z |
46 | =head2 Overridable function lookup |
47 | ||
70c171b5 LB |
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 LB |
50 | subroutine calls. This means that prototypes on subroutines referenced |
51 | this way will be processed correctly. (Previously bareword subroutine | |
f7461760 Z |
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 NC |
56 | =head1 Modules and Pragmata |
57 | ||
d5114285 NC |
58 | =head2 New Modules and Pragmata |
59 | ||
60 | =over 4 | |
61 | ||
1fc7262d | 62 | =item C<legacy> |
d5114285 | 63 | |
1fc7262d LB |
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 NC |
67 | |
68 | =back | |
69 | ||
70 | =head2 Pragmata Changes | |
71 | ||
72 | =over 4 | |
73 | ||
1fc7262d | 74 | =item C<diagnostics> |
d5114285 | 75 | |
1fc7262d LB |
76 | Supports %.0f formatting internally. |
77 | ||
78 | =item C<overload> | |
79 | ||
80 | Allow overloading of 'qr'. | |
d5114285 NC |
81 | |
82 | =back | |
83 | ||
84 | =head2 Updated Modules | |
85 | ||
86 | =over 4 | |
87 | ||
1fc7262d | 88 | =item C<B::Concise> |
d5114285 | 89 | |
70c171b5 LB |
90 | Optimize reversing an array in-place, avoid using defined %hash in core |
91 | code and tests. | |
d44d5874 | 92 | |
1fc7262d LB |
93 | =item C<B::Deparse> |
94 | ||
d44d5874 LB |
95 | Teach B::Deparse about in-place reverse. |
96 | ||
1fc7262d LB |
97 | =item C<Carp> |
98 | ||
d44d5874 LB |
99 | Refine Carp caller() fix and add tests. |
100 | ||
1fc7262d LB |
101 | =item C<Compress::Zlib> |
102 | ||
d44d5874 LB |
103 | Updated to 2.022. |
104 | ||
1fc7262d LB |
105 | =item C<CPANPLUS> |
106 | ||
d44d5874 | 107 | Updated to 0.89_09. |
1fc7262d LB |
108 | |
109 | =item C<Encode> | |
110 | ||
d44d5874 LB |
111 | Updated to 2.38. |
112 | ||
1fc7262d LB |
113 | =item C<ExtUtils::CBuilder> |
114 | ||
d44d5874 LB |
115 | Updated to 0.27. |
116 | ||
1fc7262d LB |
117 | =item C<Env> |
118 | ||
d44d5874 | 119 | Add EXISTS and DELETE methods to Env.pm. |
1fc7262d LB |
120 | |
121 | =item C<File::Fetch> | |
122 | ||
d44d5874 LB |
123 | Updated to 0.22. |
124 | ||
1fc7262d LB |
125 | =item C<I8N::Langinfo> |
126 | ||
d44d5874 LB |
127 | Correctly document export of I18N::Langinfo. |
128 | ||
1fc7262d LB |
129 | =item C<I8N::LangTags> |
130 | ||
70c171b5 LB |
131 | In I18N::LangTags::Detect, avoid using defined @array and defined |
132 | %hash. | |
d44d5874 | 133 | |
1fc7262d LB |
134 | =item C<IO::Compress> |
135 | ||
d44d5874 LB |
136 | Updated to 2.022. |
137 | ||
1fc7262d LB |
138 | =item C<IPC::Cmd> |
139 | ||
d44d5874 LB |
140 | Updated to 0.54. |
141 | ||
1fc7262d LB |
142 | =item C<List::Util> |
143 | ||
d44d5874 LB |
144 | Updated to 1.22. |
145 | ||
1fc7262d LB |
146 | =item C<Locale::Maketext> |
147 | ||
d44d5874 LB |
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 LB |
151 | =item C<Module::Build> |
152 | ||
72343ccb LB |
153 | Updated to 0.35_08. |
154 | ||
1fc7262d LB |
155 | =item C<Module::CoreList> |
156 | ||
d44d5874 | 157 | Implemented is_deprecated(). |
1fc7262d LB |
158 | |
159 | =item C<Pod::Simple> | |
160 | ||
d44d5874 LB |
161 | Updated to 3.10. |
162 | ||
1fc7262d LB |
163 | =item C<Scalar::Util> |
164 | ||
d44d5874 LB |
165 | Updated to 1.22. |
166 | ||
1fc7262d LB |
167 | =item C<Switch> |
168 | ||
d44d5874 | 169 | Updated to 2.16. |
d5114285 NC |
170 | |
171 | =back | |
172 | ||
173 | =head1 Utility Changes | |
174 | ||
d5114285 NC |
175 | =over 4 |
176 | ||
72343ccb | 177 | =item F<a2p> |
d5114285 | 178 | |
70c171b5 LB |
179 | Fixed bugs with the match() operator in list context, remove mention of |
180 | $[. | |
d5114285 NC |
181 | |
182 | =back | |
183 | ||
d5114285 NC |
184 | =head1 Performance Enhancements |
185 | ||
d5114285 NC |
186 | =over 4 |
187 | ||
188 | =item * | |
189 | ||
70c171b5 LB |
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 NC |
195 | |
196 | =back | |
197 | ||
d5114285 NC |
198 | =head1 New or Changed Diagnostics |
199 | ||
72343ccb | 200 | Several new diagnostics, see L<perldiag> for details. |
d5114285 NC |
201 | |
202 | =over 4 | |
203 | ||
72343ccb | 204 | =item C<Bad plugin affecting keyword '%s'> |
d5114285 | 205 | |
72343ccb LB |
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 NC |
227 | |
228 | =back | |
229 | ||
230 | =head1 Changed Internals | |
231 | ||
d5114285 NC |
232 | =over 4 |
233 | ||
234 | =item * | |
235 | ||
70c171b5 LB |
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 NC |
241 | |
242 | =back | |
243 | ||
244 | =head1 New Tests | |
245 | ||
d5114285 NC |
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 NC |
251 | |
252 | =back | |
253 | ||
254 | =head1 Known Problems | |
255 | ||
d5114285 NC |
256 | =over 4 |
257 | ||
72343ccb | 258 | =item Known test failures on VMS |
d5114285 | 259 | |
70c171b5 LB |
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 NC |
262 | |
263 | =back | |
264 | ||
265 | =head1 Deprecations | |
266 | ||
d5114285 NC |
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 LB |
271 | An accident of Perl's parser meant that these constructions were all |
272 | equivalent: | |
d5114285 | 273 | |
72343ccb LB |
274 | my $pi := 4; |
275 | my $pi : = 4; | |
276 | my $pi : = 4; | |
d5114285 | 277 | |
70c171b5 LB |
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 LB |
282 | |
283 | my $pi = 4; | |
284 | ||
285 | because no attribute processing is done for an empty list. | |
286 | ||
70c171b5 LB |
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 NC |
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 LB |
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 LB |
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 NC |
313 | |
314 | =head1 Reporting Bugs | |
315 | ||
316 | If you find what you think is a bug, you might check the articles | |
70c171b5 LB |
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 NC |
320 | |
321 | If you believe you have an unreported bug, please run the B<perlbug> | |
70c171b5 LB |
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 NC |
326 | |
327 | If the bug you are reporting has security implications, which make it | |
70c171b5 LB |
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 NC |
336 | |
337 | =head1 SEE ALSO | |
338 | ||
70c171b5 LB |
339 | The F<Changes> file for an explanation of how to view exhaustive |
340 | details on what changed. | |
d5114285 NC |
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 |