This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add @_ in signatured sub being experimental to perldelta.pod
[perl5.git] / pod / perlexperiment.pod
CommitLineData
42e73e1c 1=head1 NAME
2
3perlexperiment - A listing of experimental features in Perl
4
5=head1 DESCRIPTION
6
7This document lists the current and past experimental features in the perl
d1558b3e 8core. Although all of these are documented with their appropriate topics,
42e73e1c 9this succinct listing gives you an overview and basic facts about their
10status.
11
fe8d2675 12So far we've merely tried to find and list the experimental features and infer
d1558b3e 13their inception, versions, etc. There's a lot of speculation here.
42e73e1c 14
15=head2 Current experiments
16
17=over 8
18
7896dde7 19=item Smart match (C<~~>)
51c34fa4
RS
20
21Introduced in Perl 5.10.0
22
7896dde7 23Modified in Perl 5.10.1, 5.12.0
51c34fa4
RS
24
25Using this feature triggers warnings in the category
26C<experimental::smartmatch>.
27
7725a6a2 28The ticket for this experiment is
8034715d 29L<[perl #13173]|https://github.com/Perl/perl5/issues/13173>.
c77be11b 30
51c34fa4
RS
31=item Pluggable keywords
32
7725a6a2 33Introduced in Perl 5.11.2
57b503da 34
51c34fa4
RS
35See L<perlapi/PL_keyword_plugin> for the mechanism.
36
7725a6a2
RS
37The ticket for this experiment is
38L<[perl #13199]|https://github.com/Perl/perl5/issues/13199>.
51c34fa4 39
51c34fa4
RS
40=item Regular Expression Set Operations
41
aec1aee9 42Introduced in Perl 5.18
51c34fa4 43
7725a6a2
RS
44Using this feature triggers warnings in the category
45C<experimental::regex_sets>.
46
47The ticket for this experiment is
8034715d 48L<[perl #13197]|https://github.com/Perl/perl5/issues/13197>.
ca888027 49
51c34fa4
RS
50See also: L<perlrecharclass/Extended Bracketed Character Classes>
51
afdb3b14
RS
52=item Subroutine signatures
53
54Introduced in Perl 5.20.0
55
56Using this feature triggers warnings in the category
57C<experimental::signatures>.
58
7725a6a2 59The ticket for this experiment is
8034715d 60L<[perl #13681]|https://github.com/Perl/perl5/issues/13681>.
afdb3b14 61
baabe3fb 62=item Aliasing via reference
82848c10
FC
63
64Introduced in Perl 5.22.0
65
66Using this feature triggers warnings in the category
baabe3fb 67C<experimental::refaliasing>.
82848c10 68
7725a6a2 69The ticket for this experiment is
8034715d 70L<[perl #14150]|https://github.com/Perl/perl5/issues/14150>.
82848c10
FC
71
72See also: L<perlref/Assigning to References>
73
99734069
FC
74=item The "const" attribute
75
76Introduced in Perl 5.22.0
77
78Using this feature triggers warnings in the category
79C<experimental::const_attr>.
80
7725a6a2 81The ticket for this experiment is
8034715d 82L<[perl #14428]|https://github.com/Perl/perl5/issues/14428>.
99734069
FC
83
84See also: L<perlsub/Constant Functions>
85
1eac213a
KW
86=item use re 'strict';
87
88Introduced in Perl 5.22.0
89
90Using this feature triggers warnings in the category
91C<experimental::re_strict>.
92
7725a6a2
RS
93The ticket for this experiment is
94L<[perl #18755]|https://github.com/Perl/perl5/issues/18755>
95
1eac213a
KW
96See L<re/'strict' mode>
97
5c703779
FC
98=item Declaring a reference to a variable
99
100Introduced in Perl 5.26.0
101
102Using this feature triggers warnings in the category
103C<experimental::declared_refs>.
104
7725a6a2 105The ticket for this experiment is
8034715d 106L<[perl #15458]|https://github.com/Perl/perl5/issues/15458>.
5c703779
FC
107
108See also: L<perlref/Declaring a Reference to a Variable>
109
42e73e1c 110=item There is an C<installhtml> target in the Makefile.
afb63838 111
7725a6a2 112The ticket for this experiment is
8034715d 113L<[perl #12726]|https://github.com/Perl/perl5/issues/12726>.
42e73e1c 114
49e19b77
KW
115=item (Limited) Variable-length look-behind
116
7725a6a2
RS
117Introduced in Perl 5.30.0.
118
119Variability of up to 255 characters is handled.
49e19b77
KW
120
121Using this feature triggers warnings in the category
122C<experimental::vlb>.
123
7725a6a2
RS
124The ticket for this experiment is
125L<[perl #18756]|https://github.com/Perl/perl5/issues/18756>.
126
49e19b77
KW
127See also: L<perlre/(*positive_lookbehind:I<pattern>)> and
128L<perlre/(*negative_lookbehind:I<pattern>)>
129
503b1dd8
RS
130=item Unicode private use character hooks
131
132Introduced in Perl 5.30.0.
133
134This feature is part of an interface intended for internal and experimental
135use by the perl5 developers. You are unlikely to encounter it in the wild.
136
137Using this feature triggers warnings in the category
138C<experimental::private_use>.
139
140The ticket for this experiment is
141L<[perl #18758]|https://github.com/Perl/perl5/issues/18758>.
142
f7d87d09
RS
143=item Unicode property wildcards
144
145Introduced in Perl 5.30.0.
146
147This feature allows regular expression matching against Unicode character
148properties to be expressed more concisely.
149
150Using this feature triggers warnings in the category
151C<experimental::uniprop_wildcards>.
152
153The ticket for this experiment is
154L<[perl #18759]|https://github.com/Perl/perl5/issues/18759>.
155
8e8b6c17
RB
156=item isa infix operator
157
158Introduced in Perl 5.32.0.
159
160Using this feature triggers warnings in the category
161C<experimental::isa>.
162
7725a6a2 163The ticket for this experiment is
b3a4b25c 164L<[perl #18754]|https://github.com/Perl/perl5/issues/18754>
8e8b6c17 165
2314e06e
RS
166=item try/catch control structure
167
168Introduced in Perl 5.34.0.
169
170Using this feature triggers warnings in the category C<experimental::try>.
171
172The ticket for this experiment is
173L<[perl #18760]|https://github.com/Perl/perl5/issues/18760>
174
42e73e1c 175=back
176
177=head2 Accepted features
178
179These features were so wildly successful and played so well with others that
180we decided to remove their experimental status and admit them as full, stable
51c34fa4 181features in the world of Perl, lavishing all the benefits and luxuries thereof.
42e73e1c 182They are also awarded +5 Stability and +3 Charisma.
183
184=over 8
185
51c34fa4 186=item 64-bit support
42e73e1c 187
51c34fa4 188Introduced in Perl 5.005
fe8d2675 189
51c34fa4 190=item die accepts a reference
fe8d2675 191
51c34fa4 192Introduced in Perl 5.005
fe8d2675
AT
193
194=item DB module
195
196Introduced in Perl 5.6.0
197
198See also L<perldebug>, L<perldebtut>
199
200=item Weak references
201
202Introduced in Perl 5.6.0
203
204=item Internal file glob
205
206Introduced in Perl 5.6.0
207
51c34fa4 208=item fork() emulation
fe8d2675 209
51c34fa4 210Introduced in Perl 5.6.1
fe8d2675 211
51c34fa4 212See also L<perlfork>
fe8d2675 213
3a0e7915
RS
214=item -Dusemultiplicity -Duseithreads
215
216Introduced in Perl 5.6.0
217
218Accepted in Perl 5.8.0
219
36d2f798
RS
220=item Support for long doubles
221
222Introduced in Perl 5.6.0
223
224Accepted in Perl 5.8.1
225
51c34fa4
RS
226=item The C<\N> regex character class
227
228The C<\N> character class, not to be confused with the named character
229sequence C<\N{NAME}>, denotes any non-newline character in a regular
230expression.
231
3cb3bd66
RS
232Introduced in Perl 5.12
233
234Exact version of acceptance unclear, but no later than Perl 5.18.
fe8d2675 235
83f32aba
RS
236=item C<(?{code})> and C<(??{ code })>
237
238Introduced in Perl 5.6.0
239
240Accepted in Perl 5.20.0
241
242See also L<perlre>
243
e48e70eb
RS
244=item Linux abstract Unix domain sockets
245
246Introduced in Perl 5.9.2
247
248Accepted before Perl 5.20.0. The Socket library is now primarily maintained
249on CPAN, rather than in the perl core.
250
251See also L<Socket>
252
af7c9f88
RS
253=item Lvalue subroutines
254
255Introduced in Perl 5.6.0
256
257Accepted in Perl 5.20.0
258
259See also L<perlsub>
260
b387afbc
RS
261=item Backtracking control verbs
262
263C<(*ACCEPT)>
264
aec1aee9 265Introduced in Perl 5.10
b387afbc
RS
266
267Accepted in Perl 5.20.0
268
7be3852b 269=item The C<:pop> IO pseudolayer
8a7bc862 270
028611fa 271See also L<perlrun/PERLIO>
8a7bc862
RS
272
273Accepted in Perl 5.20.0
274
779cf272
KW
275=item C<\s> in regexp matches vertical tab
276
277Accepted in Perl 5.22.0
278
2ad792cd
AC
279=item Postfix dereference syntax
280
281Introduced in Perl 5.20.0
282
283Accepted in Perl 5.24.0
284
06c4bad0
FC
285=item Lexical subroutines
286
287Introduced in Perl 5.18.0
288
289Accepted in Perl 5.26.0
290
193789ac
FC
291=item String- and number-specific bitwise operators
292
293Introduced in Perl 5.22.0
294
295Accepted in Perl 5.28.0
296
b98b4594
KW
297=item Alphabetic assertions
298
299Introduced in Perl 5.28.0
300
301Accepted in Perl 5.32.0
302
37fc2e9a
KW
303=item Script runs
304
305Introduced in Perl 5.28.0
306
307Accepted in Perl 5.32.0
308
42e73e1c 309=back
310
311=head2 Removed features
312
313These features are no longer considered experimental and their functionality
314has disappeared. It's your own fault if you wrote production programs using
315these features after we explicitly told you not to (see L<perlpolicy>).
316
317=over 8
318
51c34fa4 319=item 5.005-style threading
42e73e1c 320
51c34fa4 321Introduced in Perl 5.005
42e73e1c 322
51c34fa4 323Removed in Perl 5.10
42e73e1c 324
51c34fa4 325=item perlcc
fe8d2675 326
51c34fa4 327Introduced in Perl 5.005
fe8d2675 328
51c34fa4 329Moved from Perl 5.9.0 to CPAN
fe8d2675 330
51c34fa4 331=item The pseudo-hash data type
fe8d2675 332
51c34fa4 333Introduced in Perl 5.6.0
fe8d2675 334
51c34fa4 335Removed in Perl 5.9.0
fe8d2675
AT
336
337=item GetOpt::Long Options can now take multiple values at once (experimental)
338
339C<Getopt::Long> upgraded to version 2.35
340
341Removed in Perl 5.8.8
342
51c34fa4 343=item Assertions
fe8d2675 344
51c34fa4 345The C<-A> command line switch
fe8d2675 346
51c34fa4 347Introduced in Perl 5.9.0
fe8d2675 348
51c34fa4 349Removed in Perl 5.9.5
fe8d2675 350
51c34fa4 351=item Test::Harness::Straps
fe8d2675 352
51c34fa4 353Moved from Perl 5.10.1 to CPAN
fe8d2675 354
51c34fa4 355=item C<legacy>
fe8d2675 356
51c34fa4 357The experimental C<legacy> pragma was swallowed by the C<feature> pragma.
fe8d2675 358
aec1aee9 359Introduced in Perl 5.11.2
51c34fa4 360
aec1aee9 361Removed in Perl 5.11.3
fe8d2675 362
f8b823eb
DIM
363=item Lexical C<$_>
364
74a78c10
AC
365Using this feature triggered warnings in the category
366C<experimental::lexical_topic>.
367
f8b823eb
DIM
368Introduced in Perl 5.10.0
369
370Removed in Perl 5.24.0
371
372=item Array and hash container functions accept references
373
74a78c10
AC
374Using this feature triggered warnings in the category
375C<experimental::autoderef>.
376
f8b823eb
DIM
377Superseded by L</Postfix dereference syntax>.
378
379Introduced in Perl 5.14.0
380
381Removed in Perl 5.24.0
382
85cd139f
DIM
383=item C<our> can have an experimental optional attribute C<unique>
384
385Introduced in Perl 5.8.0
386
387Deprecated in Perl 5.10.0
388
389Removed in Perl 5.28.0
390
c712ff8f 391=item The C<:win32> IO pseudolayer
25662648
RS
392
393Introduced in Perl 5.8.0 (or before)
394
395Removed in Perl 5.36.0
396
42e73e1c 397=back
398
2b0121e1
AS
399=head1 SEE ALSO
400
401For a complete list of features check L<feature>.
402
42e73e1c 403=head1 AUTHORS
404
405brian d foy C<< <brian.d.foy@gmail.com> >>
406
fe8d2675
AT
407SE<eacute>bastien Aperghis-Tramoni C<< <saper@cpan.org> >>
408
42e73e1c 409=head1 COPYRIGHT
410
411Copyright 2010, brian d foy C<< <brian.d.foy@gmail.com> >>
412
413=head1 LICENSE
414
415You can use and redistribute this document under the same terms as Perl
416itself.
417
418=cut