This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perlexperiment: Was missing vlb
[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 feature is
29 L<[perl #119317]|https://rt.perl.org/rt3/Ticket/Display.html?id=119317>.
30
31 =item Pluggable keywords
32
33 The ticket for this feature is
34 L<[perl #119455]|https://rt.perl.org/rt3/Ticket/Display.html?id=119455>.
35
36 See L<perlapi/PL_keyword_plugin> for the mechanism.
37
38 Introduced in Perl 5.11.2
39
40 =item Regular Expression Set Operations
41
42 Introduced in Perl 5.18
43
44 The ticket for this feature is
45 L<[perl #119451]|https://rt.perl.org/rt3/Ticket/Display.html?id=119451>.
46
47 See also: L<perlrecharclass/Extended Bracketed Character Classes>
48
49 Using this feature triggers warnings in the category
50 C<experimental::regex_sets>.
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 feature is
60 L<[perl #121481]|https://rt.perl.org/Ticket/Display.html?id=121481>.
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 feature is
70 L<[perl #122947]|https://rt.perl.org/rt3/Ticket/Display.html?id=122947>.
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 feature is
82 L<[perl #123630]|https://rt.perl.org/rt3/Ticket/Display.html?id=123630>.
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 See L<re/'strict' mode>
94
95 =item The <:win32> IO pseudolayer
96
97 The ticket for this feature is
98 L<[perl #119453]|https://rt.perl.org/rt3/Ticket/Display.html?id=119453>.
99
100 See also L<perlrun>
101
102 =item Declaring a reference to a variable
103
104 Introduced in Perl 5.26.0
105
106 Using this feature triggers warnings in the category
107 C<experimental::declared_refs>.
108
109 The ticket for this feature is
110 L<[perl #128654]|https://rt.perl.org/rt3/Ticket/Display.html?id=128654>.
111
112 See also: L<perlref/Declaring a Reference to a Variable>
113
114 =item There is an C<installhtml> target in the Makefile.
115
116 The ticket for this feature is
117 L<[perl #116487]|https://rt.perl.org/rt3/Ticket/Display.html?id=116487>.
118
119 =item Script runs
120
121 Introduced in Perl 5.28.0
122
123 Using this feature triggers warnings in the category
124 C<experimental::script_run>.
125
126 See also: L<perlre/Script Runs>
127
128 =item Alphabetic assertions
129
130 Introduced in Perl 5.28.0
131
132 Using this feature triggers warnings in the category
133 C<experimental::alpha_assertions>.
134
135 See also: L<perlre/Extended Patterns>.
136
137 =item (Limited) Variable-length look-behind
138
139 Introduced in Perl 5.30.0.  Variability of up to 255 characters is
140 handled.
141
142 Using this feature triggers warnings in the category
143 C<experimental::vlb>.
144
145 See also: L<perlre/(*positive_lookbehind:I<pattern>)> and
146 L<perlre/(*negative_lookbehind:I<pattern>)>
147
148 =back
149
150 =head2 Accepted features
151
152 These features were so wildly successful and played so well with others that
153 we decided to remove their experimental status and admit them as full, stable
154 features in the world of Perl, lavishing all the benefits and luxuries thereof.
155 They are also awarded +5 Stability and +3 Charisma.
156
157 =over 8
158
159 =item 64-bit support
160
161 Introduced in Perl 5.005
162
163 =item die accepts a reference
164
165 Introduced in Perl 5.005
166
167 =item DB module
168
169 Introduced in Perl 5.6.0
170
171 See also L<perldebug>, L<perldebtut>
172
173 =item Weak references
174
175 Introduced in Perl 5.6.0
176
177 =item Internal file glob
178
179 Introduced in Perl 5.6.0
180
181 =item fork() emulation
182
183 Introduced in Perl 5.6.1
184
185 See also L<perlfork>
186
187 =item -Dusemultiplicity -Duseithreads
188
189 Introduced in Perl 5.6.0
190
191 Accepted in Perl 5.8.0
192
193 =item Support for long doubles
194
195 Introduced in Perl 5.6.0
196
197 Accepted in Perl 5.8.1
198
199 =item The C<\N> regex character class
200
201 The C<\N> character class, not to be confused with the named character
202 sequence C<\N{NAME}>, denotes any non-newline character in a regular
203 expression.
204
205 Introduced in Perl 5.12
206
207 Exact version of acceptance unclear, but no later than Perl 5.18.
208
209 =item C<(?{code})> and C<(??{ code })>
210
211 Introduced in Perl 5.6.0
212
213 Accepted in Perl 5.20.0
214
215 See also L<perlre>
216
217 =item Linux abstract Unix domain sockets
218
219 Introduced in Perl 5.9.2
220
221 Accepted before Perl 5.20.0.  The Socket library is now primarily maintained
222 on CPAN, rather than in the perl core.
223
224 See also L<Socket>
225
226 =item Lvalue subroutines
227
228 Introduced in Perl 5.6.0
229
230 Accepted in Perl 5.20.0
231
232 See also L<perlsub>
233
234 =item Backtracking control verbs
235
236 C<(*ACCEPT)>
237
238 Introduced in Perl 5.10
239
240 Accepted in Perl 5.20.0
241
242 =item The <:pop> IO pseudolayer
243
244 See also L<perlrun>
245
246 Accepted in Perl 5.20.0
247
248 =item C<\s> in regexp matches vertical tab
249
250 Accepted in Perl 5.22.0
251
252 =item Postfix dereference syntax
253
254 Introduced in Perl 5.20.0
255
256 Accepted in Perl 5.24.0
257
258 =item Lexical subroutines
259
260 Introduced in Perl 5.18.0
261
262 Accepted in Perl 5.26.0
263
264 =item String- and number-specific bitwise operators
265
266 Introduced in Perl 5.22.0
267
268 Accepted in Perl 5.28.0
269
270 =back
271
272 =head2 Removed features
273
274 These features are no longer considered experimental and their functionality
275 has disappeared. It's your own fault if you wrote production programs using
276 these features after we explicitly told you not to (see L<perlpolicy>).
277
278 =over 8
279
280 =item 5.005-style threading
281
282 Introduced in Perl 5.005
283
284 Removed in Perl 5.10
285
286 =item perlcc
287
288 Introduced in Perl 5.005
289
290 Moved from Perl 5.9.0 to CPAN
291
292 =item The pseudo-hash data type
293
294 Introduced in Perl 5.6.0
295
296 Removed in Perl 5.9.0
297
298 =item GetOpt::Long Options can now take multiple values at once (experimental)
299
300 C<Getopt::Long> upgraded to version 2.35
301
302 Removed in Perl 5.8.8
303
304 =item Assertions
305
306 The C<-A> command line switch
307
308 Introduced in Perl 5.9.0
309
310 Removed in Perl 5.9.5
311
312 =item Test::Harness::Straps
313
314 Moved from Perl 5.10.1 to CPAN
315
316 =item C<legacy>
317
318 The experimental C<legacy> pragma was swallowed by the C<feature> pragma.
319
320 Introduced in Perl 5.11.2
321
322 Removed in Perl 5.11.3
323
324 =item Lexical C<$_>
325
326 Using this feature triggered warnings in the category
327 C<experimental::lexical_topic>.
328
329 Introduced in Perl 5.10.0
330
331 Removed in Perl 5.24.0
332
333 =item Array and hash container functions accept references
334
335 Using this feature triggered warnings in the category
336 C<experimental::autoderef>.
337
338 Superseded by L</Postfix dereference syntax>.
339
340 Introduced in Perl 5.14.0
341
342 Removed in Perl 5.24.0
343
344 =item C<our> can have an experimental optional attribute C<unique>
345
346 Introduced in Perl 5.8.0
347
348 Deprecated in Perl 5.10.0
349
350 Removed in Perl 5.28.0
351
352 =back
353
354 =head1 SEE ALSO
355
356 For a complete list of features check L<feature>.
357
358 =head1 AUTHORS
359
360 brian d foy C<< <brian.d.foy@gmail.com> >>
361
362 SE<eacute>bastien Aperghis-Tramoni C<< <saper@cpan.org> >>
363
364 =head1 COPYRIGHT
365
366 Copyright 2010, brian d foy C<< <brian.d.foy@gmail.com> >>
367
368 =head1 LICENSE
369
370 You can use and redistribute this document under the same terms as Perl
371 itself.
372
373 =cut