This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 2384afee9 / #123553
[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 C<our> can now have an experimental optional attribute C<unique>
20
21 Introduced in Perl 5.8.0
22
23 Deprecated in Perl 5.10.0
24
25 The ticket for this feature is
26 L<[perl #119313]|https://rt.perl.org/rt3/Ticket/Display.html?id=119313>.
27
28 =item Smart match (C<~~>)
29
30 Introduced in Perl 5.10.0
31
32 Modified in Perl 5.10.1, 5.12.0
33
34 Using this feature triggers warnings in the category
35 C<experimental::smartmatch>.
36
37 The ticket for this feature is
38 L<[perl #119317]|https://rt.perl.org/rt3/Ticket/Display.html?id=119317>.
39
40 =item Lexical C<$_>
41
42 Introduced in Perl 5.10.0
43
44 Using this feature triggers warnings in the category
45 C<experimental::lexical_topic>.
46
47 The ticket for this feature is
48 L<[perl #119315]|https://rt.perl.org/rt3/Ticket/Display.html?id=119315>.
49
50 =item Pluggable keywords
51
52 The ticket for this feature is
53 L<[perl #119455]|https://rt.perl.org/rt3/Ticket/Display.html?id=119455>.
54
55 See L<perlapi/PL_keyword_plugin> for the mechanism.
56
57 Introduced in: Perl 5.11.2
58
59 =item Array and hash container functions accept references
60
61 Introduced in Perl 5.14.0
62
63 The ticket for this feature is
64 L<[perl #119437]|https://rt.perl.org/rt3/Ticket/Display.html?id=119437>.
65
66 =item Lexical subroutines
67
68 Introduced in: Perl 5.18
69
70 See also: L<perlsub/Lexical Subroutines>
71
72 Using this feature triggers warnings in the category
73 C<experimental::lexical_subs>.
74
75 The ticket for this feature is
76 L<[perl #120085]|https://rt.perl.org/rt3/Ticket/Display.html?id=120085>.
77
78 =item Regular Expression Set Operations
79
80 Introduced in: Perl 5.18
81
82 The ticket for this feature is
83 L<[perl #119451]|https://rt.perl.org/rt3/Ticket/Display.html?id=119451>.
84
85 See also: L<perlrecharclass/Extended Bracketed Character Classes>
86
87 Using this feature triggers warnings in the category
88 C<experimental::regex_sets>.
89
90 =item C<\s> in regexp matches vertical tab
91
92 Introduced in Perl 5.18
93
94 =item Subroutine signatures
95
96 Introduced in Perl 5.20.0
97
98 Using this feature triggers warnings in the category
99 C<experimental::signatures>.
100
101 The ticket for this feature is
102 L<[perl #121481]|https://rt.perl.org/Ticket/Display.html?id=121481>.
103
104 =item Postfix dereference syntax
105
106 Introduced in Perl 5.20.0
107
108 Using this feature triggers warnings in the category
109 C<experimental::postderef>.
110
111 The ticket for this feature is
112 L<[perl #120162]|https://rt.perl.org:443/rt3/Ticket/Display.html?id=120162>.
113
114 =item Aliasing via reference
115
116 Introduced in Perl 5.22.0
117
118 Using this feature triggers warnings in the category
119 C<experimental::refaliasing>.
120
121 The ticket for this feature is
122 L<[perl #122947]|https://rt.perl.org/rt3/Ticket/Display.html?id=122947>.
123
124 See also: L<perlref/Assigning to References>
125
126 =item The <:win32> IO pseudolayer
127
128 The ticket for this feature is
129 L<[perl #119453]|https://rt.perl.org/rt3/Ticket/Display.html?id=119453>.
130
131 See also L<perlrun>
132
133 =item There is an C<installhtml> target in the Makefile.
134
135 The ticket for this feature is
136 L<[perl #116487]|https://rt.perl.org/rt3/Ticket/Display.html?id=116487>.
137
138 =item Unicode in Perl on EBCDIC
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>
237
238 Accepted in Perl 5.20.0
239
240 =back
241
242 =head2 Removed features
243
244 These features are no longer considered experimental and their functionality
245 has disappeared. It's your own fault if you wrote production programs using
246 these features after we explicitly told you not to (see L<perlpolicy>).
247
248 =over 8
249
250 =item 5.005-style threading
251
252 Introduced in Perl 5.005
253
254 Removed in Perl 5.10
255
256 =item perlcc
257
258 Introduced in Perl 5.005
259
260 Moved from Perl 5.9.0 to CPAN
261
262 =item The pseudo-hash data type
263
264 Introduced in Perl 5.6.0
265
266 Removed in Perl 5.9.0
267
268 =item GetOpt::Long Options can now take multiple values at once (experimental)
269
270 C<Getopt::Long> upgraded to version 2.35
271
272 Removed in Perl 5.8.8
273
274 =item Assertions
275
276 The C<-A> command line switch
277
278 Introduced in Perl 5.9.0
279
280 Removed in Perl 5.9.5
281
282 =item Test::Harness::Straps
283
284 Moved from Perl 5.10.1 to CPAN
285
286 =item C<legacy>
287
288 The experimental C<legacy> pragma was swallowed by the C<feature> pragma.
289
290 Introduced in: 5.11.2
291
292 Removed in: 5.11.3
293
294 =back
295
296 =head1 SEE ALSO
297
298 For a complete list of features check L<feature>.
299
300 =head1 AUTHORS
301
302 brian d foy C<< <brian.d.foy@gmail.com> >>
303
304 SE<eacute>bastien Aperghis-Tramoni C<< <saper@cpan.org> >>
305
306 =head1 COPYRIGHT
307
308 Copyright 2010, brian d foy C<< <brian.d.foy@gmail.com> >>
309
310 =head1 LICENSE
311
312 You can use and redistribute this document under the same terms as Perl
313 itself.
314
315 =cut