This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix misspellings in documentation. Correct spelling of name to 'De
[perl5.git] / pod / perlexperiment.pod
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
8 core. Although all of these are documented with their appropriate topics,
9 this succinct listing gives you an overview and basic facts about their
10 status.
11
12 So far we've merely tried to find and list the experimental features and infer
13 their inception, versions, etc. There's a lot of speculation here.
14
15 =head2 Current experiments
16
17 =over 8
18
19 =item Smart match (C<~~>)
20
21 Introduced in Perl 5.10.0
22
23 Modified in Perl 5.10.1, 5.12.0
24
25 Using this feature triggers warnings in the category
26 C<experimental::smartmatch>.
27
28 The ticket for this experiment is
29 L<[perl #13173]|https://github.com/Perl/perl5/issues/13173>.
30
31 =item Pluggable keywords
32
33 Introduced in Perl 5.11.2
34
35 See L<perlapi/PL_keyword_plugin> for the mechanism.
36
37 The ticket for this experiment is
38 L<[perl #13199]|https://github.com/Perl/perl5/issues/13199>.
39
40 =item Regular Expression Set Operations
41
42 Introduced in Perl 5.18
43
44 Using this feature triggers warnings in the category
45 C<experimental::regex_sets>.
46
47 The ticket for this experiment is
48 L<[perl #13197]|https://github.com/Perl/perl5/issues/13197>.
49
50 See also: L<perlrecharclass/Extended Bracketed Character Classes>
51
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
59 The ticket for this experiment is
60 L<[perl #13681]|https://github.com/Perl/perl5/issues/13681>.
61
62 =item Aliasing via reference
63
64 Introduced in Perl 5.22.0
65
66 Using this feature triggers warnings in the category
67 C<experimental::refaliasing>.
68
69 The ticket for this experiment is
70 L<[perl #14150]|https://github.com/Perl/perl5/issues/14150>.
71
72 See also: L<perlref/Assigning to References>
73
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
81 The ticket for this experiment is
82 L<[perl #14428]|https://github.com/Perl/perl5/issues/14428>.
83
84 See also: L<perlsub/Constant Functions>
85
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
93 The ticket for this experiment is
94 L<[perl #18755]|https://github.com/Perl/perl5/issues/18755>
95
96 See L<re/'strict' mode>
97
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
105 The ticket for this experiment is
106 L<[perl #15458]|https://github.com/Perl/perl5/issues/15458>.
107
108 See also: L<perlref/Declaring a Reference to a Variable>
109
110 =item There is an C<installhtml> target in the Makefile.
111
112 The ticket for this experiment is
113 L<[perl #12726]|https://github.com/Perl/perl5/issues/12726>.
114
115 =item (Limited) Variable-length look-behind
116
117 Introduced in Perl 5.30.0.
118
119 Variability of up to 255 characters is handled.
120
121 Using this feature triggers warnings in the category
122 C<experimental::vlb>.
123
124 The ticket for this experiment is
125 L<[perl #18756]|https://github.com/Perl/perl5/issues/18756>.
126
127 See also: L<perlre/(*positive_lookbehind:I<pattern>)> and
128 L<perlre/(*negative_lookbehind:I<pattern>)>
129
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
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
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
163 The ticket for this experiment is
164 L<[perl #18754]|https://github.com/Perl/perl5/issues/18754>
165
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
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
181 features in the world of Perl, lavishing all the benefits and luxuries thereof.
182 They are also awarded +5 Stability and +3 Charisma.
183
184 =over 8
185
186 =item 64-bit support
187
188 Introduced in Perl 5.005
189
190 =item die accepts a reference
191
192 Introduced in Perl 5.005
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
208 =item fork() emulation
209
210 Introduced in Perl 5.6.1
211
212 See also L<perlfork>
213
214 =item -Dusemultiplicity -Duseithreads
215
216 Introduced in Perl 5.6.0
217
218 Accepted in Perl 5.8.0
219
220 =item Support for long doubles
221
222 Introduced in Perl 5.6.0
223
224 Accepted in Perl 5.8.1
225
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
232 Introduced in Perl 5.12
233
234 Exact version of acceptance unclear, but no later than Perl 5.18.
235
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
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
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
261 =item Backtracking control verbs
262
263 C<(*ACCEPT)>
264
265 Introduced in Perl 5.10
266
267 Accepted in Perl 5.20.0
268
269 =item The C<:pop> IO pseudolayer
270
271 See also L<perlrun/PERLIO>
272
273 Accepted in Perl 5.20.0
274
275 =item C<\s> in regexp matches vertical tab
276
277 Accepted in Perl 5.22.0
278
279 =item Postfix dereference syntax
280
281 Introduced in Perl 5.20.0
282
283 Accepted in Perl 5.24.0
284
285 =item Lexical subroutines
286
287 Introduced in Perl 5.18.0
288
289 Accepted in Perl 5.26.0
290
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
297 =item Alphabetic assertions
298
299 Introduced in Perl 5.28.0
300
301 Accepted in Perl 5.32.0
302
303 =item Script runs
304
305 Introduced in Perl 5.28.0
306
307 Accepted in Perl 5.32.0
308
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
319 =item 5.005-style threading
320
321 Introduced in Perl 5.005
322
323 Removed in Perl 5.10
324
325 =item perlcc
326
327 Introduced in Perl 5.005
328
329 Moved from Perl 5.9.0 to CPAN
330
331 =item The pseudo-hash data type
332
333 Introduced in Perl 5.6.0
334
335 Removed in Perl 5.9.0
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
343 =item Assertions
344
345 The C<-A> command line switch
346
347 Introduced in Perl 5.9.0
348
349 Removed in Perl 5.9.5
350
351 =item Test::Harness::Straps
352
353 Moved from Perl 5.10.1 to CPAN
354
355 =item C<legacy>
356
357 The experimental C<legacy> pragma was swallowed by the C<feature> pragma.
358
359 Introduced in Perl 5.11.2
360
361 Removed in Perl 5.11.3
362
363 =item Lexical C<$_>
364
365 Using this feature triggered warnings in the category
366 C<experimental::lexical_topic>.
367
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
374 Using this feature triggered warnings in the category
375 C<experimental::autoderef>.
376
377 Superseded by L</Postfix dereference syntax>.
378
379 Introduced in Perl 5.14.0
380
381 Removed in Perl 5.24.0
382
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
391 =item The C<:win32> IO pseudolayer
392
393 Introduced in Perl 5.8.0 (or before)
394
395 Removed in Perl 5.36.0
396
397 =back
398
399 =head1 SEE ALSO
400
401 For a complete list of features check L<feature>.
402
403 =head1 AUTHORS
404
405 brian d foy C<< <brian.d.foy@gmail.com> >>
406
407 SE<eacute>bastien Aperghis-Tramoni C<< <saper@cpan.org> >>
408
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