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