1=encoding utf-8
2
3=head1 NAME
4
5perlexperiment - A listing of experimental features in Perl
6
7=head1 DESCRIPTION
8
9This document lists the current and past experimental features in the perl
10core. Although all of these are documented with their appropriate topics,
11this succinct listing gives you an overview and basic facts about their
12status.
13
14So far we've merely tried to find and list the experimental features and infer
15their inception, versions, etc. There's a lot of speculation here.
16
17=head2 Current experiments
18
19=over 8
20
21=item Smart match (C<~~>)
22
23Introduced in Perl 5.10.0
24
25Modified in Perl 5.10.1, 5.12.0
26
27Deprecated in 5.38.0
28
29Will be removed in 5.42.0
30
31Using this feature triggers warnings in the category
32C<deprecated>.
33
34The ticket for this experiment is
35L<[perl #13173]|https://github.com/Perl/perl5/issues/13173>.
36
37=item Pluggable keywords
38
39Introduced in Perl 5.11.2
40
41See L<perlapi/PL_keyword_plugin> for the mechanism.
42
43The ticket for this experiment is
44L<[perl #13199]|https://github.com/Perl/perl5/issues/13199>.
45
46=item Aliasing via reference
47
48Introduced in Perl 5.22.0
49
50Using this feature triggers warnings in the category
51C<experimental::refaliasing>.
52
53The ticket for this experiment is
54L<[perl #14150]|https://github.com/Perl/perl5/issues/14150>.
55
56See also: L<perlref/Assigning to References>
57
58=item The "const" attribute
59
60Introduced in Perl 5.22.0
61
62Using this feature triggers warnings in the category
63C<experimental::const_attr>.
64
65The ticket for this experiment is
66L<[perl #14428]|https://github.com/Perl/perl5/issues/14428>.
67
68See also: L<perlsub/Constant Functions>
69
70=item use re 'strict';
71
72Introduced in Perl 5.22.0
73
74Using this feature triggers warnings in the category
75C<experimental::re_strict>.
76
77The ticket for this experiment is
78L<[perl #18755]|https://github.com/Perl/perl5/issues/18755>
79
80See L<re/'strict' mode>
81
82=item Declaring a reference to a variable
83
84Introduced in Perl 5.26.0
85
86Using this feature triggers warnings in the category
87C<experimental::declared_refs>.
88
89The ticket for this experiment is
90L<[perl #15458]|https://github.com/Perl/perl5/issues/15458>.
91
92See also: L<perlref/Declaring a Reference to a Variable>
93
94=item There is an C<installhtml> target in the Makefile.
95
96The ticket for this experiment is
97L<[perl #12726]|https://github.com/Perl/perl5/issues/12726>.
98
99=item (Limited) Variable-length look-behind
100
101Introduced in Perl 5.30.0.
102
103Variability of up to 255 characters is handled.
104
105Using this feature triggers warnings in the category
106C<experimental::vlb>.
107
108The ticket for this experiment is
109L<[perl #18756]|https://github.com/Perl/perl5/issues/18756>.
110
111See also: L<perlre/(*positive_lookbehind:I<pattern>)> and
112L<perlre/(*negative_lookbehind:I<pattern>)>
113
114=item Unicode private use character hooks
115
116Introduced in Perl 5.30.0.
117
118This feature is part of an interface intended for internal and experimental
119use by the perl5 developers.  You are unlikely to encounter it in the wild.
120
121Using this feature triggers warnings in the category
122C<experimental::private_use>.
123
124The ticket for this experiment is
125L<[perl #18758]|https://github.com/Perl/perl5/issues/18758>.
126
127=item Unicode property wildcards
128
129Introduced in Perl 5.30.0.
130
131This feature allows regular expression matching against Unicode character
132properties to be expressed more concisely.
133
134Using this feature triggers warnings in the category
135C<experimental::uniprop_wildcards>.
136
137The ticket for this experiment is
138L<[perl #18759]|https://github.com/Perl/perl5/issues/18759>.
139
140=item try/catch control structure
141
142Introduced in Perl 5.34.0.
143
144Using this feature triggers warnings in the category C<experimental::try>.
145
146The ticket for this experiment is
147L<[perl #18760]|https://github.com/Perl/perl5/issues/18760>
148
149=item Use of C<@_> within subroutine signatures
150
151Introduced in Perl 5.36.0 as part of a reduction in the scope of experimental
152subroutine signatures.
153
154Using the default arguments array (C<@_>) within a subroutine that uses
155signatures will emit a warning in the category
156C<experimental::args_array_with_signatures>. This includes C<@_> directly,
157elements of it such as C<$_[$index]>, or situations where the default
158arguments array is accessed implicitly such as C<shift> or C<pop> without
159arguments.
160
161=item for loop with multiple iteration variables
162
163Introduced in Perl 5.36.0.
164
165Using this feature triggers warnings in the category C<experimental::for_list>.
166
167This feature enables a parenthesized list of iteration variables for C<for>
168rather than a single variable.
169
170The ticket for this experiment is
171L<[perl #18744]|https://github.com/Perl/perl5/issues/18744>.
172
173=item The builtin namespace
174
175Introduced in Perl 5.36.0.
176
177Using this feature triggers warnings in the category C<experimental::builtin>.
178
179In Perl 5.36.0, a new namespace, C<builtin>, was created for new core functions
180that will not be present in every namespace, but will be available for
181importing.  The namespace itself is considered an experiment.  Specific
182functions within it may also be experimental.
183
184The ticket for this experiment is
185L<[perl #19764]|https://github.com/Perl/perl5/issues/19764>.
186
187=item The defer block modifier
188
189Introduced in Perl 5.36.0
190
191Using this feature triggers warnings in the category C<experimental::defer>.
192
193This feature adds a new kind of block, a C<defer> block, which will not be
194executed until the containing block is being exited.
195
196The ticket for this experiment is
197L<[perl #17949]|https://github.com/Perl/perl5/issues/17949>.
198
199=item Extra paired delimiters for quote-like operators
200
201Introduced in Perl 5.36.0
202
203Using this feature triggers warnings in the category
204C<experimental::extra_paired_delimiters>.
205
206This feature allows for many non-ASCII pairs of mirroring delimiters, for
207example:
208
209    my @array = qw« tinker tailer soldier spy »;
210
211The ticket for this experiment is
212L<[perl #19765]|https://github.com/Perl/perl5/issues/19765>.
213
214=back
215
216=head2 Accepted features
217
218These features were so wildly successful and played so well with others that
219we decided to remove their experimental status and admit them as full, stable
220features in the world of Perl, lavishing all the benefits and luxuries thereof.
221They are also awarded +5 Stability and +3 Charisma.
222
223=over 8
224
225=item 64-bit support
226
227Introduced in Perl 5.005
228
229=item die accepts a reference
230
231Introduced in Perl 5.005
232
233=item DB module
234
235Introduced in Perl 5.6.0
236
237See also L<perldebug>, L<perldebtut>
238
239=item Weak references
240
241Introduced in Perl 5.6.0
242
243=item Internal file glob
244
245Introduced in Perl 5.6.0
246
247=item fork() emulation
248
249Introduced in Perl 5.6.1
250
251See also L<perlfork>
252
253=item -Dusemultiplicity -Duseithreads
254
255Introduced in Perl 5.6.0
256
257Accepted in Perl 5.8.0
258
259=item Support for long doubles
260
261Introduced in Perl 5.6.0
262
263Accepted in Perl 5.8.1
264
265=item The C<\N> regex character class
266
267The C<\N> character class, not to be confused with the named character
268sequence C<\N{NAME}>, denotes any non-newline character in a regular
269expression.
270
271Introduced in Perl 5.12
272
273Exact version of acceptance unclear, but no later than Perl 5.18.
274
275=item C<(?{code})> and C<(??{ code })>
276
277Introduced in Perl 5.6.0
278
279Accepted in Perl 5.20.0
280
281See also L<perlre>
282
283=item Linux abstract Unix domain sockets
284
285Introduced in Perl 5.9.2
286
287Accepted before Perl 5.20.0.  The Socket library is now primarily maintained
288on CPAN, rather than in the perl core.
289
290See also L<Socket>
291
292=item Lvalue subroutines
293
294Introduced in Perl 5.6.0
295
296Accepted in Perl 5.20.0
297
298See also L<perlsub>
299
300=item Backtracking control verbs
301
302C<(*ACCEPT)>
303
304Introduced in Perl 5.10
305
306Accepted in Perl 5.20.0
307
308=item The C<:pop> IO pseudolayer
309
310See also L<perlrun/PERLIO>
311
312Accepted in Perl 5.20.0
313
314=item C<\s> in regexp matches vertical tab
315
316Accepted in Perl 5.22.0
317
318=item Postfix dereference syntax
319
320Introduced in Perl 5.20.0
321
322Accepted in Perl 5.24.0
323
324=item Lexical subroutines
325
326Introduced in Perl 5.18.0
327
328Accepted in Perl 5.26.0
329
330=item String- and number-specific bitwise operators
331
332Introduced in Perl 5.22.0
333
334Accepted in Perl 5.28.0
335
336=item Alphabetic assertions
337
338Introduced in Perl 5.28.0
339
340Accepted in Perl 5.32.0
341
342=item Script runs
343
344Introduced in Perl 5.28.0
345
346Accepted in Perl 5.32.0
347
348=item The infix C<isa> operator
349
350Introduced in Perl 5.32.0
351
352Accepted in Perl 5.36.0
353
354=item Subroutine signatures
355
356Introduced in Perl 5.20.0
357
358Accepted in Perl 5.36.0
359
360=item Regular Expression Set Operations
361
362Introduced in Perl 5.18
363
364Accepted in Perl 5.36
365
366See : L<perlrecharclass/Extended Bracketed Character Classes>
367
368=back
369
370=head2 Removed features
371
372These features are no longer considered experimental and their functionality
373has disappeared. It's your own fault if you wrote production programs using
374these features after we explicitly told you not to (see L<perlpolicy>).
375
376=over 8
377
378=item 5.005-style threading
379
380Introduced in Perl 5.005
381
382Removed in Perl 5.10
383
384=item perlcc
385
386Introduced in Perl 5.005
387
388Moved from Perl 5.9.0 to CPAN
389
390=item The pseudo-hash data type
391
392Introduced in Perl 5.6.0
393
394Removed in Perl 5.9.0
395
396=item GetOpt::Long Options can now take multiple values at once (experimental)
397
398C<Getopt::Long> upgraded to version 2.35
399
400Removed in Perl 5.8.8
401
402=item Assertions
403
404The C<-A> command line switch
405
406Introduced in Perl 5.9.0
407
408Removed in Perl 5.9.5
409
410=item Test::Harness::Straps
411
412Moved from Perl 5.10.1 to CPAN
413
414=item C<legacy>
415
416The experimental C<legacy> pragma was swallowed by the C<feature> pragma.
417
418Introduced in Perl 5.11.2
419
420Removed in Perl 5.11.3
421
422=item Lexical C<$_>
423
424Using this feature triggered warnings in the category
425C<experimental::lexical_topic>.
426
427Introduced in Perl 5.10.0
428
429Removed in Perl 5.24.0
430
431=item Array and hash container functions accept references
432
433Using this feature triggered warnings in the category
434C<experimental::autoderef>.
435
436Superseded by L</Postfix dereference syntax>.
437
438Introduced in Perl 5.14.0
439
440Removed in Perl 5.24.0
441
442=item C<our> can have an experimental optional attribute C<unique>
443
444Introduced in Perl 5.8.0
445
446Deprecated in Perl 5.10.0
447
448Removed in Perl 5.28.0
449
450=item The C<:win32> IO pseudolayer
451
452Introduced in Perl 5.8.0 (or before)
453
454Removed in Perl 5.36.0
455
456=back
457
458=head1 SEE ALSO
459
460For a complete list of features check L<feature>.
461
462=head1 AUTHORS
463
464brian d foy C<< <brian.d.foy@gmail.com> >>
465
466SE<eacute>bastien Aperghis-Tramoni C<< <saper@cpan.org> >>
467
468=head1 COPYRIGHT
469
470Copyright 2010, brian d foy C<< <brian.d.foy@gmail.com> >>
471
472=head1 LICENSE
473
474You can use and redistribute this document under the same terms as Perl
475itself.
476
477=cut
478