Commit | Line | Data |
---|---|---|
42e73e1c | 1 | =head1 NAME |
2 | ||
3 | perlexperiment - A listing of experimental features in Perl | |
4 | ||
5 | =head1 DESCRIPTION | |
6 | ||
7 | This document lists the current and past experimental features in the perl | |
d1558b3e | 8 | core. Although all of these are documented with their appropriate topics, |
42e73e1c | 9 | this succinct listing gives you an overview and basic facts about their |
10 | status. | |
11 | ||
fe8d2675 | 12 | So far we've merely tried to find and list the experimental features and infer |
d1558b3e | 13 | their inception, versions, etc. There's a lot of speculation here. |
42e73e1c | 14 | |
15 | =head2 Current experiments | |
16 | ||
17 | =over 8 | |
18 | ||
7896dde7 | 19 | =item Smart match (C<~~>) |
51c34fa4 RS |
20 | |
21 | Introduced in Perl 5.10.0 | |
22 | ||
7896dde7 | 23 | Modified in Perl 5.10.1, 5.12.0 |
51c34fa4 RS |
24 | |
25 | Using this feature triggers warnings in the category | |
26 | C<experimental::smartmatch>. | |
27 | ||
7725a6a2 | 28 | The ticket for this experiment is |
8034715d | 29 | L<[perl #13173]|https://github.com/Perl/perl5/issues/13173>. |
c77be11b | 30 | |
51c34fa4 RS |
31 | =item Pluggable keywords |
32 | ||
7725a6a2 | 33 | Introduced in Perl 5.11.2 |
57b503da | 34 | |
51c34fa4 RS |
35 | See L<perlapi/PL_keyword_plugin> for the mechanism. |
36 | ||
7725a6a2 RS |
37 | The ticket for this experiment is |
38 | L<[perl #13199]|https://github.com/Perl/perl5/issues/13199>. | |
51c34fa4 | 39 | |
51c34fa4 RS |
40 | =item Regular Expression Set Operations |
41 | ||
aec1aee9 | 42 | Introduced in Perl 5.18 |
51c34fa4 | 43 | |
7725a6a2 RS |
44 | Using this feature triggers warnings in the category |
45 | C<experimental::regex_sets>. | |
46 | ||
47 | The ticket for this experiment is | |
8034715d | 48 | L<[perl #13197]|https://github.com/Perl/perl5/issues/13197>. |
ca888027 | 49 | |
51c34fa4 RS |
50 | See also: L<perlrecharclass/Extended Bracketed Character Classes> |
51 | ||
afdb3b14 RS |
52 | =item Subroutine signatures |
53 | ||
54 | Introduced in Perl 5.20.0 | |
55 | ||
56 | Using this feature triggers warnings in the category | |
57 | C<experimental::signatures>. | |
58 | ||
7725a6a2 | 59 | The ticket for this experiment is |
8034715d | 60 | L<[perl #13681]|https://github.com/Perl/perl5/issues/13681>. |
afdb3b14 | 61 | |
baabe3fb | 62 | =item Aliasing via reference |
82848c10 FC |
63 | |
64 | Introduced in Perl 5.22.0 | |
65 | ||
66 | Using this feature triggers warnings in the category | |
baabe3fb | 67 | C<experimental::refaliasing>. |
82848c10 | 68 | |
7725a6a2 | 69 | The ticket for this experiment is |
8034715d | 70 | L<[perl #14150]|https://github.com/Perl/perl5/issues/14150>. |
82848c10 FC |
71 | |
72 | See also: L<perlref/Assigning to References> | |
73 | ||
99734069 FC |
74 | =item The "const" attribute |
75 | ||
76 | Introduced in Perl 5.22.0 | |
77 | ||
78 | Using this feature triggers warnings in the category | |
79 | C<experimental::const_attr>. | |
80 | ||
7725a6a2 | 81 | The ticket for this experiment is |
8034715d | 82 | L<[perl #14428]|https://github.com/Perl/perl5/issues/14428>. |
99734069 FC |
83 | |
84 | See also: L<perlsub/Constant Functions> | |
85 | ||
1eac213a KW |
86 | =item use re 'strict'; |
87 | ||
88 | Introduced in Perl 5.22.0 | |
89 | ||
90 | Using this feature triggers warnings in the category | |
91 | C<experimental::re_strict>. | |
92 | ||
7725a6a2 RS |
93 | The ticket for this experiment is |
94 | L<[perl #18755]|https://github.com/Perl/perl5/issues/18755> | |
95 | ||
1eac213a KW |
96 | See L<re/'strict' mode> |
97 | ||
5c703779 FC |
98 | =item Declaring a reference to a variable |
99 | ||
100 | Introduced in Perl 5.26.0 | |
101 | ||
102 | Using this feature triggers warnings in the category | |
103 | C<experimental::declared_refs>. | |
104 | ||
7725a6a2 | 105 | The ticket for this experiment is |
8034715d | 106 | L<[perl #15458]|https://github.com/Perl/perl5/issues/15458>. |
5c703779 FC |
107 | |
108 | See also: L<perlref/Declaring a Reference to a Variable> | |
109 | ||
42e73e1c | 110 | =item There is an C<installhtml> target in the Makefile. |
afb63838 | 111 | |
7725a6a2 | 112 | The ticket for this experiment is |
8034715d | 113 | L<[perl #12726]|https://github.com/Perl/perl5/issues/12726>. |
42e73e1c | 114 | |
49e19b77 KW |
115 | =item (Limited) Variable-length look-behind |
116 | ||
7725a6a2 RS |
117 | Introduced in Perl 5.30.0. |
118 | ||
119 | Variability of up to 255 characters is handled. | |
49e19b77 KW |
120 | |
121 | Using this feature triggers warnings in the category | |
122 | C<experimental::vlb>. | |
123 | ||
7725a6a2 RS |
124 | The ticket for this experiment is |
125 | L<[perl #18756]|https://github.com/Perl/perl5/issues/18756>. | |
126 | ||
49e19b77 KW |
127 | See also: L<perlre/(*positive_lookbehind:I<pattern>)> and |
128 | L<perlre/(*negative_lookbehind:I<pattern>)> | |
129 | ||
503b1dd8 RS |
130 | =item Unicode private use character hooks |
131 | ||
132 | Introduced in Perl 5.30.0. | |
133 | ||
134 | This feature is part of an interface intended for internal and experimental | |
135 | use by the perl5 developers. You are unlikely to encounter it in the wild. | |
136 | ||
137 | Using this feature triggers warnings in the category | |
138 | C<experimental::private_use>. | |
139 | ||
140 | The ticket for this experiment is | |
141 | L<[perl #18758]|https://github.com/Perl/perl5/issues/18758>. | |
142 | ||
f7d87d09 RS |
143 | =item Unicode property wildcards |
144 | ||
145 | Introduced in Perl 5.30.0. | |
146 | ||
147 | This feature allows regular expression matching against Unicode character | |
148 | properties to be expressed more concisely. | |
149 | ||
150 | Using this feature triggers warnings in the category | |
151 | C<experimental::uniprop_wildcards>. | |
152 | ||
153 | The ticket for this experiment is | |
154 | L<[perl #18759]|https://github.com/Perl/perl5/issues/18759>. | |
155 | ||
8e8b6c17 RB |
156 | =item isa infix operator |
157 | ||
158 | Introduced in Perl 5.32.0. | |
159 | ||
160 | Using this feature triggers warnings in the category | |
161 | C<experimental::isa>. | |
162 | ||
7725a6a2 | 163 | The ticket for this experiment is |
b3a4b25c | 164 | L<[perl #18754]|https://github.com/Perl/perl5/issues/18754> |
8e8b6c17 | 165 | |
2314e06e RS |
166 | =item try/catch control structure |
167 | ||
168 | Introduced in Perl 5.34.0. | |
169 | ||
170 | Using this feature triggers warnings in the category C<experimental::try>. | |
171 | ||
172 | The ticket for this experiment is | |
173 | L<[perl #18760]|https://github.com/Perl/perl5/issues/18760> | |
174 | ||
42e73e1c | 175 | =back |
176 | ||
177 | =head2 Accepted features | |
178 | ||
179 | These features were so wildly successful and played so well with others that | |
180 | we decided to remove their experimental status and admit them as full, stable | |
51c34fa4 | 181 | features in the world of Perl, lavishing all the benefits and luxuries thereof. |
42e73e1c | 182 | They are also awarded +5 Stability and +3 Charisma. |
183 | ||
184 | =over 8 | |
185 | ||
51c34fa4 | 186 | =item 64-bit support |
42e73e1c | 187 | |
51c34fa4 | 188 | Introduced in Perl 5.005 |
fe8d2675 | 189 | |
51c34fa4 | 190 | =item die accepts a reference |
fe8d2675 | 191 | |
51c34fa4 | 192 | Introduced in Perl 5.005 |
fe8d2675 AT |
193 | |
194 | =item DB module | |
195 | ||
196 | Introduced in Perl 5.6.0 | |
197 | ||
198 | See also L<perldebug>, L<perldebtut> | |
199 | ||
200 | =item Weak references | |
201 | ||
202 | Introduced in Perl 5.6.0 | |
203 | ||
204 | =item Internal file glob | |
205 | ||
206 | Introduced in Perl 5.6.0 | |
207 | ||
51c34fa4 | 208 | =item fork() emulation |
fe8d2675 | 209 | |
51c34fa4 | 210 | Introduced in Perl 5.6.1 |
fe8d2675 | 211 | |
51c34fa4 | 212 | See also L<perlfork> |
fe8d2675 | 213 | |
3a0e7915 RS |
214 | =item -Dusemultiplicity -Duseithreads |
215 | ||
216 | Introduced in Perl 5.6.0 | |
217 | ||
218 | Accepted in Perl 5.8.0 | |
219 | ||
36d2f798 RS |
220 | =item Support for long doubles |
221 | ||
222 | Introduced in Perl 5.6.0 | |
223 | ||
224 | Accepted in Perl 5.8.1 | |
225 | ||
51c34fa4 RS |
226 | =item The C<\N> regex character class |
227 | ||
228 | The C<\N> character class, not to be confused with the named character | |
229 | sequence C<\N{NAME}>, denotes any non-newline character in a regular | |
230 | expression. | |
231 | ||
3cb3bd66 RS |
232 | Introduced in Perl 5.12 |
233 | ||
234 | Exact version of acceptance unclear, but no later than Perl 5.18. | |
fe8d2675 | 235 | |
83f32aba RS |
236 | =item C<(?{code})> and C<(??{ code })> |
237 | ||
238 | Introduced in Perl 5.6.0 | |
239 | ||
240 | Accepted in Perl 5.20.0 | |
241 | ||
242 | See also L<perlre> | |
243 | ||
e48e70eb RS |
244 | =item Linux abstract Unix domain sockets |
245 | ||
246 | Introduced in Perl 5.9.2 | |
247 | ||
248 | Accepted before Perl 5.20.0. The Socket library is now primarily maintained | |
249 | on CPAN, rather than in the perl core. | |
250 | ||
251 | See also L<Socket> | |
252 | ||
af7c9f88 RS |
253 | =item Lvalue subroutines |
254 | ||
255 | Introduced in Perl 5.6.0 | |
256 | ||
257 | Accepted in Perl 5.20.0 | |
258 | ||
259 | See also L<perlsub> | |
260 | ||
b387afbc RS |
261 | =item Backtracking control verbs |
262 | ||
263 | C<(*ACCEPT)> | |
264 | ||
aec1aee9 | 265 | Introduced in Perl 5.10 |
b387afbc RS |
266 | |
267 | Accepted in Perl 5.20.0 | |
268 | ||
7be3852b | 269 | =item The C<:pop> IO pseudolayer |
8a7bc862 | 270 | |
028611fa | 271 | See also L<perlrun/PERLIO> |
8a7bc862 RS |
272 | |
273 | Accepted in Perl 5.20.0 | |
274 | ||
779cf272 KW |
275 | =item C<\s> in regexp matches vertical tab |
276 | ||
277 | Accepted in Perl 5.22.0 | |
278 | ||
2ad792cd AC |
279 | =item Postfix dereference syntax |
280 | ||
281 | Introduced in Perl 5.20.0 | |
282 | ||
283 | Accepted in Perl 5.24.0 | |
284 | ||
06c4bad0 FC |
285 | =item Lexical subroutines |
286 | ||
287 | Introduced in Perl 5.18.0 | |
288 | ||
289 | Accepted in Perl 5.26.0 | |
290 | ||
193789ac FC |
291 | =item String- and number-specific bitwise operators |
292 | ||
293 | Introduced in Perl 5.22.0 | |
294 | ||
295 | Accepted in Perl 5.28.0 | |
296 | ||
b98b4594 KW |
297 | =item Alphabetic assertions |
298 | ||
299 | Introduced in Perl 5.28.0 | |
300 | ||
301 | Accepted in Perl 5.32.0 | |
302 | ||
37fc2e9a KW |
303 | =item Script runs |
304 | ||
305 | Introduced in Perl 5.28.0 | |
306 | ||
307 | Accepted in Perl 5.32.0 | |
308 | ||
42e73e1c | 309 | =back |
310 | ||
311 | =head2 Removed features | |
312 | ||
313 | These features are no longer considered experimental and their functionality | |
314 | has disappeared. It's your own fault if you wrote production programs using | |
315 | these features after we explicitly told you not to (see L<perlpolicy>). | |
316 | ||
317 | =over 8 | |
318 | ||
51c34fa4 | 319 | =item 5.005-style threading |
42e73e1c | 320 | |
51c34fa4 | 321 | Introduced in Perl 5.005 |
42e73e1c | 322 | |
51c34fa4 | 323 | Removed in Perl 5.10 |
42e73e1c | 324 | |
51c34fa4 | 325 | =item perlcc |
fe8d2675 | 326 | |
51c34fa4 | 327 | Introduced in Perl 5.005 |
fe8d2675 | 328 | |
51c34fa4 | 329 | Moved from Perl 5.9.0 to CPAN |
fe8d2675 | 330 | |
51c34fa4 | 331 | =item The pseudo-hash data type |
fe8d2675 | 332 | |
51c34fa4 | 333 | Introduced in Perl 5.6.0 |
fe8d2675 | 334 | |
51c34fa4 | 335 | Removed in Perl 5.9.0 |
fe8d2675 AT |
336 | |
337 | =item GetOpt::Long Options can now take multiple values at once (experimental) | |
338 | ||
339 | C<Getopt::Long> upgraded to version 2.35 | |
340 | ||
341 | Removed in Perl 5.8.8 | |
342 | ||
51c34fa4 | 343 | =item Assertions |
fe8d2675 | 344 | |
51c34fa4 | 345 | The C<-A> command line switch |
fe8d2675 | 346 | |
51c34fa4 | 347 | Introduced in Perl 5.9.0 |
fe8d2675 | 348 | |
51c34fa4 | 349 | Removed in Perl 5.9.5 |
fe8d2675 | 350 | |
51c34fa4 | 351 | =item Test::Harness::Straps |
fe8d2675 | 352 | |
51c34fa4 | 353 | Moved from Perl 5.10.1 to CPAN |
fe8d2675 | 354 | |
51c34fa4 | 355 | =item C<legacy> |
fe8d2675 | 356 | |
51c34fa4 | 357 | The experimental C<legacy> pragma was swallowed by the C<feature> pragma. |
fe8d2675 | 358 | |
aec1aee9 | 359 | Introduced in Perl 5.11.2 |
51c34fa4 | 360 | |
aec1aee9 | 361 | Removed in Perl 5.11.3 |
fe8d2675 | 362 | |
f8b823eb DIM |
363 | =item Lexical C<$_> |
364 | ||
74a78c10 AC |
365 | Using this feature triggered warnings in the category |
366 | C<experimental::lexical_topic>. | |
367 | ||
f8b823eb DIM |
368 | Introduced in Perl 5.10.0 |
369 | ||
370 | Removed in Perl 5.24.0 | |
371 | ||
372 | =item Array and hash container functions accept references | |
373 | ||
74a78c10 AC |
374 | Using this feature triggered warnings in the category |
375 | C<experimental::autoderef>. | |
376 | ||
f8b823eb DIM |
377 | Superseded by L</Postfix dereference syntax>. |
378 | ||
379 | Introduced in Perl 5.14.0 | |
380 | ||
381 | Removed in Perl 5.24.0 | |
382 | ||
85cd139f DIM |
383 | =item C<our> can have an experimental optional attribute C<unique> |
384 | ||
385 | Introduced in Perl 5.8.0 | |
386 | ||
387 | Deprecated in Perl 5.10.0 | |
388 | ||
389 | Removed in Perl 5.28.0 | |
390 | ||
c712ff8f | 391 | =item The C<:win32> IO pseudolayer |
25662648 RS |
392 | |
393 | Introduced in Perl 5.8.0 (or before) | |
394 | ||
395 | Removed in Perl 5.36.0 | |
396 | ||
42e73e1c | 397 | =back |
398 | ||
2b0121e1 AS |
399 | =head1 SEE ALSO |
400 | ||
401 | For a complete list of features check L<feature>. | |
402 | ||
42e73e1c | 403 | =head1 AUTHORS |
404 | ||
405 | brian d foy C<< <brian.d.foy@gmail.com> >> | |
406 | ||
fe8d2675 AT |
407 | SE<eacute>bastien Aperghis-Tramoni C<< <saper@cpan.org> >> |
408 | ||
42e73e1c | 409 | =head1 COPYRIGHT |
410 | ||
411 | Copyright 2010, brian d foy C<< <brian.d.foy@gmail.com> >> | |
412 | ||
413 | =head1 LICENSE | |
414 | ||
415 | You can use and redistribute this document under the same terms as Perl | |
416 | itself. | |
417 | ||
418 | =cut |