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