Commit | Line | Data |
d5114285 |
1 | =head1 NAME |
2 | |
3 | [ Any text flagged as XXX needs to be processed before release. ] |
4 | |
5 | perldelta - what is new for perl v5.11.2 |
6 | |
7 | =head1 DESCRIPTION |
8 | |
9 | This document describes differences between the 5.11.1 release and |
10 | the 5.11.2 release. |
11 | |
12 | =head1 Notice |
13 | |
14 | XXX Unlikely to need this section. |
15 | |
16 | =head1 Incompatible Changes |
17 | |
d83f38d8 |
18 | =head2 Use of C<:=> to mean an empty attribute list is now deprecated. |
d5114285 |
19 | |
c54f4355 |
20 | An accident of Perl's parser meant that these constructions were all equivalent: |
d5114285 |
21 | |
d83f38d8 |
22 | my $pi := 4; |
23 | my $pi : = 4; |
24 | my $pi : = 4; |
25 | |
26 | with the C<:> being treated as the start of an attribute list, which ends |
27 | before the C<=>. As whitespace is not significant here, all are parsed as an |
28 | empty attribute list, hence all the above are equivalent to, and better written |
29 | as |
30 | |
31 | my $pi = 4; |
32 | |
33 | because no attribute processing is done for an empty list. |
34 | |
c54f4355 |
35 | As is, this meant that C<:=> cannot be used as a new token, without silently |
d83f38d8 |
36 | changing the meaning of existing code. Hence that particular form is now |
37 | deprecated, and will become a syntax error. If it is absolutely necessary to |
c54f4355 |
38 | have empty attribute lists (for example, because of a code generator) then |
d83f38d8 |
39 | avoid the warning by adding a space before the C<=>. |
d5114285 |
40 | |
41 | =head1 Core Enhancements |
42 | |
43 | XXX New core language features go here. Summarise user-visible core language |
44 | enhancements. Particularly prominent performance optimisations could go |
45 | here, but most should go in the L</Performance Enhancements> section. |
46 | |
97352077 |
47 | =head2 qr overloading |
48 | |
49 | It is now possible to overload the C<qr//> operator, that is, conversion |
50 | to regexp, like it was already possible to overload conversion to |
51 | boolean, string or number of objects. It is invoked when an object |
52 | appears on the right hand side of the C<=~> operator, or when it is |
53 | interpolated into a regexp. See L<overload>. |
54 | |
88e1f1a2 |
55 | =head2 Pluggable keywords |
56 | |
57 | Extension modules can now cleanly hook into the Perl parser to define new |
c54f4355 |
58 | kinds of keyword-headed expression and compound statement. The syntax |
59 | following the keyword is defined entirely by the extension. This allow |
88e1f1a2 |
60 | a completely non-Perl sublanguage to be parsed inline, with the right |
c54f4355 |
61 | ops cleanly generated. This feature is currently considered experimental. |
88e1f1a2 |
62 | |
c54f4355 |
63 | See L<perlapi/PL_keyword_plugin> for the mechanism. The Perl core source |
88e1f1a2 |
64 | distribution also includes a new module L<XS::APItest::KeywordRPN>, which |
65 | implements reverse Polish notation arithmetic via pluggable keywords. |
66 | This module is mainly used for test purposes, and is not normally |
67 | installed, but also serves as an example of how to use the new mechanism. |
68 | |
580561a3 |
69 | =head2 APIs for more internals |
70 | |
71 | The lowest layers of the lexer and parts of the pad system now have C |
c54f4355 |
72 | APIs available to XS extensions. These are necessary to support proper |
73 | use of pluggable keywords, but have other uses too. The new APIs are |
580561a3 |
74 | experimental, and only cover a small proportion of what would be necessary |
c54f4355 |
75 | to take full advantage of the core's facilities in these areas. It is |
580561a3 |
76 | intended that the Perl 5.13 development cycle will see the addition of |
77 | a full range of clean, supported interfaces. |
78 | |
f7461760 |
79 | =head2 Overridable function lookup |
80 | |
c54f4355 |
81 | Where an extension module hooks the creation of rv2cv ops to modify |
f7461760 |
82 | the subroutine lookup process, this now works correctly for bareword |
c54f4355 |
83 | subroutine calls. This means that prototypes on subroutines referenced |
84 | this way will be processed correctly. (Previously bareword subroutine |
f7461760 |
85 | names were initially looked up, for parsing purposes, by an unhookable |
86 | mechanism, so extensions could only properly influence subroutine names |
87 | that appeared with an C<&> sigil.) |
88 | |
d5114285 |
89 | =head1 New Platforms |
90 | |
91 | XXX List any platforms that this version of perl compiles on, that previous |
92 | versions did not. These will either be enabled by new files in the F<hints/> |
93 | directories, or new subdirectories and F<README> files at the top level of the |
94 | source tree. |
95 | |
96 | =head1 Modules and Pragmata |
97 | |
98 | XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/> |
99 | go here, in a list ordered by distribution name. Minimally it should be the |
100 | module version, but it's more useful to the end user to give a paragraph's |
101 | summary of the module's changes. In an ideal world, dual-life modules would |
102 | have a F<Changes> file that could be cribbed. |
103 | |
104 | =head2 New Modules and Pragmata |
105 | |
106 | =over 4 |
107 | |
108 | =item C<XXX> |
109 | |
110 | XXX |
111 | |
112 | =back |
113 | |
114 | =head2 Pragmata Changes |
115 | |
116 | =over 4 |
117 | |
118 | =item C<XXX> |
119 | |
120 | XXX |
121 | |
122 | =back |
123 | |
124 | =head2 Updated Modules |
125 | |
126 | =over 4 |
127 | |
128 | =item C<XXX> |
129 | |
130 | XXX |
131 | |
132 | =back |
133 | |
134 | =head1 Utility Changes |
135 | |
136 | XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go |
137 | here. Most of these are built within the directories F<utils> and F<x2p>. |
138 | |
139 | =over 4 |
140 | |
141 | =item F<XXX> |
142 | |
143 | XXX |
144 | |
145 | =back |
146 | |
147 | =head1 New Documentation |
148 | |
149 | XXX Changes which create B<new> files in F<pod/> go here. |
150 | |
151 | =over 4 |
152 | |
153 | =item L<XXX> |
154 | |
155 | XXX |
156 | |
157 | =back |
158 | |
159 | =head1 Changes to Existing Documentation |
160 | |
161 | XXX Changes which significantly change existing files in F<pod/> go here. |
162 | Any changes to F<pod/perldiag.pod> should go in L</New or Changed Diagnostics>. |
163 | |
d5114285 |
164 | =head1 Performance Enhancements |
165 | |
d5114285 |
166 | =over 4 |
167 | |
168 | =item * |
169 | |
437d4214 |
170 | Reversing an array to itself (as in C<@a = reverse @a>) in void context now |
171 | happens in-place and is several orders of magnitude faster than it used to be. |
172 | It will also preserve non-existent elements whenever possible, i.e. for non |
173 | magical arrays or tied arrays with C<EXISTS> and C<DELETE> methods. |
d5114285 |
174 | |
175 | =back |
176 | |
177 | =head1 Installation and Configuration Improvements |
178 | |
179 | XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools |
180 | go here. |
181 | |
182 | =head2 Configuration improvements |
183 | |
184 | XXX |
185 | |
186 | =head2 Compilation improvements |
187 | |
188 | XXX |
189 | |
190 | =head2 Platform Specific Changes |
191 | |
192 | =over 4 |
193 | |
194 | =item XXX-some-platform |
195 | |
196 | XXX |
197 | |
198 | =back |
199 | |
200 | =head1 Selected Bug Fixes |
201 | |
202 | XXX Important bug fixes in the core language are summarised here. |
203 | Bug fixes in files in F<ext/> and F<lib/> are best summarised in |
204 | L</Modules and Pragmata>. |
205 | |
206 | =over 4 |
207 | |
208 | =item * |
209 | |
210 | XXX |
211 | |
212 | =back |
213 | |
214 | =head1 New or Changed Diagnostics |
215 | |
216 | XXX New or changed warnings emitted by the core's C<C> code go here. |
217 | |
218 | =over 4 |
219 | |
220 | =item C<XXX> |
221 | |
222 | XXX |
223 | |
224 | =back |
225 | |
226 | =head1 Changed Internals |
227 | |
d5114285 |
228 | =over 4 |
229 | |
230 | =item * |
231 | |
879d0c72 |
232 | C<Perl_pmflag> has been removed from the public API. Calling it now generates |
233 | a deprecation warning, and it will be removed in a future release. Although |
234 | listed as part of the API, it was never documented, and only ever used in |
235 | F<toke.c>, and prior to 5.10, F<regcomp.c>. In core, it has been replaced by a |
236 | static function. |
d5114285 |
237 | |
238 | =back |
239 | |
240 | =head1 New Tests |
241 | |
242 | XXX Changes which create B<new> files in F<t/> go here. Changes to |
243 | existing files in F<t/> aren't worth summarising, although the bugs that |
244 | they represent may be. |
245 | |
246 | =over 4 |
247 | |
248 | =item F<XXX> |
249 | |
250 | XXX |
251 | |
252 | =back |
253 | |
254 | =head1 Known Problems |
255 | |
256 | XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any |
257 | tests that had to be C<TODO>ed for the release would be noted here, unless |
258 | they were specific to a particular platform (see below). |
259 | |
260 | This is a list of some significant unfixed bugs, which are regressions |
261 | from either 5.10.1 or 5.11.1. |
262 | |
263 | =over 4 |
264 | |
265 | =item * |
266 | |
267 | XXX |
268 | |
269 | =back |
270 | |
271 | =head1 Deprecations |
272 | |
273 | XXX Add any new known deprecations here. |
274 | |
275 | The following items are now deprecated. |
276 | |
277 | =over 4 |
278 | |
279 | =item * |
280 | |
281 | XXX |
282 | |
283 | =back |
284 | |
285 | =head1 Platform Specific Notes |
286 | |
287 | XXX Any changes specific to a particular platform. VMS and Win32 are the usual |
288 | stars here. It's probably best to group changes under the same section layout |
289 | as the main perldelta |
290 | |
291 | =head1 Obituary |
292 | |
293 | XXX If any significant core contributor has died, we've added a short obituary |
294 | here. |
295 | |
296 | =head1 Acknowledgements |
297 | |
298 | XXX The list of people to thank goes here. |
299 | |
300 | |
301 | =head1 Reporting Bugs |
302 | |
303 | If you find what you think is a bug, you might check the articles |
304 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
305 | bug database at http://rt.perl.org/perlbug/ . There may also be |
306 | information at http://www.perl.org/ , the Perl Home Page. |
307 | |
308 | If you believe you have an unreported bug, please run the B<perlbug> |
309 | program included with your release. Be sure to trim your bug down |
310 | to a tiny but sufficient test case. Your bug report, along with the |
311 | output of C<perl -V>, will be sent off to perlbug@perl.org to be |
312 | analysed by the Perl porting team. |
313 | |
314 | If the bug you are reporting has security implications, which make it |
315 | inappropriate to send to a publicly archived mailing list, then please send |
316 | it to perl5-security-report@perl.org. This points to a closed subscription |
317 | unarchived mailing list, which includes all the core committers, who be able |
318 | to help assess the impact of issues, figure out a resolution, and help |
319 | co-ordinate the release of patches to mitigate or fix the problem across all |
320 | platforms on which Perl is supported. Please only use this address for |
321 | security issues in the Perl core, not for modules independently |
322 | distributed on CPAN. |
323 | |
324 | =head1 SEE ALSO |
325 | |
326 | The F<Changes> file for an explanation of how to view exhaustive details |
327 | on what changed. |
328 | |
329 | The F<INSTALL> file for how to build Perl. |
330 | |
331 | The F<README> file for general stuff. |
332 | |
333 | The F<Artistic> and F<Copying> files for copyright information. |
334 | |
335 | =cut |