This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta entry for the PV/IV flags changes.
[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 try/catch control structure
157
158 Introduced in Perl 5.34.0.
159
160 Using this feature triggers warnings in the category C<experimental::try>.
161
162 The ticket for this experiment is
163 L<[perl #18760]|https://github.com/Perl/perl5/issues/18760>
164
165 =back
166
167 =head2 Accepted features
168
169 These features were so wildly successful and played so well with others that
170 we decided to remove their experimental status and admit them as full, stable
171 features in the world of Perl, lavishing all the benefits and luxuries thereof.
172 They are also awarded +5 Stability and +3 Charisma.
173
174 =over 8
175
176 =item 64-bit support
177
178 Introduced in Perl 5.005
179
180 =item die accepts a reference
181
182 Introduced in Perl 5.005
183
184 =item DB module
185
186 Introduced in Perl 5.6.0
187
188 See also L<perldebug>, L<perldebtut>
189
190 =item Weak references
191
192 Introduced in Perl 5.6.0
193
194 =item Internal file glob
195
196 Introduced in Perl 5.6.0
197
198 =item fork() emulation
199
200 Introduced in Perl 5.6.1
201
202 See also L<perlfork>
203
204 =item -Dusemultiplicity -Duseithreads
205
206 Introduced in Perl 5.6.0
207
208 Accepted in Perl 5.8.0
209
210 =item Support for long doubles
211
212 Introduced in Perl 5.6.0
213
214 Accepted in Perl 5.8.1
215
216 =item The C<\N> regex character class
217
218 The C<\N> character class, not to be confused with the named character
219 sequence C<\N{NAME}>, denotes any non-newline character in a regular
220 expression.
221
222 Introduced in Perl 5.12
223
224 Exact version of acceptance unclear, but no later than Perl 5.18.
225
226 =item C<(?{code})> and C<(??{ code })>
227
228 Introduced in Perl 5.6.0
229
230 Accepted in Perl 5.20.0
231
232 See also L<perlre>
233
234 =item Linux abstract Unix domain sockets
235
236 Introduced in Perl 5.9.2
237
238 Accepted before Perl 5.20.0.  The Socket library is now primarily maintained
239 on CPAN, rather than in the perl core.
240
241 See also L<Socket>
242
243 =item Lvalue subroutines
244
245 Introduced in Perl 5.6.0
246
247 Accepted in Perl 5.20.0
248
249 See also L<perlsub>
250
251 =item Backtracking control verbs
252
253 C<(*ACCEPT)>
254
255 Introduced in Perl 5.10
256
257 Accepted in Perl 5.20.0
258
259 =item The C<:pop> IO pseudolayer
260
261 See also L<perlrun/PERLIO>
262
263 Accepted in Perl 5.20.0
264
265 =item C<\s> in regexp matches vertical tab
266
267 Accepted in Perl 5.22.0
268
269 =item Postfix dereference syntax
270
271 Introduced in Perl 5.20.0
272
273 Accepted in Perl 5.24.0
274
275 =item Lexical subroutines
276
277 Introduced in Perl 5.18.0
278
279 Accepted in Perl 5.26.0
280
281 =item String- and number-specific bitwise operators
282
283 Introduced in Perl 5.22.0
284
285 Accepted in Perl 5.28.0
286
287 =item Alphabetic assertions
288
289 Introduced in Perl 5.28.0
290
291 Accepted in Perl 5.32.0
292
293 =item Script runs
294
295 Introduced in Perl 5.28.0
296
297 Accepted in Perl 5.32.0
298
299 =item The infix C<isa> operator
300
301 Introduced in Perl 5.32.0
302
303 Accepted in Perl 5.36.0
304
305 =back
306
307 =head2 Removed features
308
309 These features are no longer considered experimental and their functionality
310 has disappeared. It's your own fault if you wrote production programs using
311 these features after we explicitly told you not to (see L<perlpolicy>).
312
313 =over 8
314
315 =item 5.005-style threading
316
317 Introduced in Perl 5.005
318
319 Removed in Perl 5.10
320
321 =item perlcc
322
323 Introduced in Perl 5.005
324
325 Moved from Perl 5.9.0 to CPAN
326
327 =item The pseudo-hash data type
328
329 Introduced in Perl 5.6.0
330
331 Removed in Perl 5.9.0
332
333 =item GetOpt::Long Options can now take multiple values at once (experimental)
334
335 C<Getopt::Long> upgraded to version 2.35
336
337 Removed in Perl 5.8.8
338
339 =item Assertions
340
341 The C<-A> command line switch
342
343 Introduced in Perl 5.9.0
344
345 Removed in Perl 5.9.5
346
347 =item Test::Harness::Straps
348
349 Moved from Perl 5.10.1 to CPAN
350
351 =item C<legacy>
352
353 The experimental C<legacy> pragma was swallowed by the C<feature> pragma.
354
355 Introduced in Perl 5.11.2
356
357 Removed in Perl 5.11.3
358
359 =item Lexical C<$_>
360
361 Using this feature triggered warnings in the category
362 C<experimental::lexical_topic>.
363
364 Introduced in Perl 5.10.0
365
366 Removed in Perl 5.24.0
367
368 =item Array and hash container functions accept references
369
370 Using this feature triggered warnings in the category
371 C<experimental::autoderef>.
372
373 Superseded by L</Postfix dereference syntax>.
374
375 Introduced in Perl 5.14.0
376
377 Removed in Perl 5.24.0
378
379 =item C<our> can have an experimental optional attribute C<unique>
380
381 Introduced in Perl 5.8.0
382
383 Deprecated in Perl 5.10.0
384
385 Removed in Perl 5.28.0
386
387 =item The C<:win32> IO pseudolayer
388
389 Introduced in Perl 5.8.0 (or before)
390
391 Removed in Perl 5.36.0
392
393 =back
394
395 =head1 SEE ALSO
396
397 For a complete list of features check L<feature>.
398
399 =head1 AUTHORS
400
401 brian d foy C<< <brian.d.foy@gmail.com> >>
402
403 SE<eacute>bastien Aperghis-Tramoni C<< <saper@cpan.org> >>
404
405 =head1 COPYRIGHT
406
407 Copyright 2010, brian d foy C<< <brian.d.foy@gmail.com> >>
408
409 =head1 LICENSE
410
411 You can use and redistribute this document under the same terms as Perl
412 itself.
413
414 =cut