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