This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add link for the Coverity perl5 project.
[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 Subroutine signatures
91
92 Introduced in Perl 5.20.0
93
94 Using this feature triggers warnings in the category
95 C<experimental::signatures>.
96
97 The ticket for this feature is
98 L<[perl #121481]|https://rt.perl.org/Ticket/Display.html?id=121481>.
99
100 =item Aliasing via reference
101
102 Introduced in Perl 5.22.0
103
104 Using this feature triggers warnings in the category
105 C<experimental::refaliasing>.
106
107 The ticket for this feature is
108 L<[perl #122947]|https://rt.perl.org/rt3/Ticket/Display.html?id=122947>.
109
110 See also: L<perlref/Assigning to References>
111
112 =item The "const" attribute
113
114 Introduced in Perl 5.22.0
115
116 Using this feature triggers warnings in the category
117 C<experimental::const_attr>.
118
119 The ticket for this feature is
120 L<[perl #123630]|https://rt.perl.org/rt3/Ticket/Display.html?id=123630>.
121
122 See also: L<perlsub/Constant Functions>
123
124 =item use re 'strict';
125
126 Introduced in Perl 5.22.0
127
128 Using this feature triggers warnings in the category
129 C<experimental::re_strict>.
130
131 See L<re/'strict' mode>
132
133 =item String- and number-specific bitwise operators
134
135 Introduced in: Perl 5.22.0
136
137 See also: L<perlop/Bitwise String Operators>
138
139 Using this feature triggers warnings in the category
140 C<experimental::bitwise>.
141
142 The ticket for this feature is
143 L<[perl #123707]|https://rt.perl.org/rt3/Ticket/Display.html?id=123707>.
144
145 =item The <:win32> IO pseudolayer
146
147 The ticket for this feature is
148 L<[perl #119453]|https://rt.perl.org/rt3/Ticket/Display.html?id=119453>.
149
150 See also L<perlrun>
151
152 =item There is an C<installhtml> target in the Makefile.
153
154 The ticket for this feature is
155 L<[perl #116487]|https://rt.perl.org/rt3/Ticket/Display.html?id=116487>.
156
157 =item Unicode in Perl on EBCDIC
158
159 =back
160
161 =head2 Accepted features
162
163 These features were so wildly successful and played so well with others that
164 we decided to remove their experimental status and admit them as full, stable
165 features in the world of Perl, lavishing all the benefits and luxuries thereof.
166 They are also awarded +5 Stability and +3 Charisma.
167
168 =over 8
169
170 =item 64-bit support
171
172 Introduced in Perl 5.005
173
174 =item die accepts a reference
175
176 Introduced in Perl 5.005
177
178 =item DB module
179
180 Introduced in Perl 5.6.0
181
182 See also L<perldebug>, L<perldebtut>
183
184 =item Weak references
185
186 Introduced in Perl 5.6.0
187
188 =item Internal file glob
189
190 Introduced in Perl 5.6.0
191
192 =item fork() emulation
193
194 Introduced in Perl 5.6.1
195
196 See also L<perlfork>
197
198 =item -Dusemultiplicity -Duseithreads
199
200 Introduced in Perl 5.6.0
201
202 Accepted in Perl 5.8.0
203
204 =item Support for long doubles
205
206 Introduced in Perl 5.6.0
207
208 Accepted in Perl 5.8.1
209
210 =item The C<\N> regex character class
211
212 The C<\N> character class, not to be confused with the named character
213 sequence C<\N{NAME}>, denotes any non-newline character in a regular
214 expression.
215
216 Introduced in Perl 5.12
217
218 Exact version of acceptance unclear, but no later than Perl 5.18.
219
220 =item C<(?{code})> and C<(??{ code })>
221
222 Introduced in Perl 5.6.0
223
224 Accepted in Perl 5.20.0
225
226 See also L<perlre>
227
228 =item Linux abstract Unix domain sockets
229
230 Introduced in Perl 5.9.2
231
232 Accepted before Perl 5.20.0.  The Socket library is now primarily maintained
233 on CPAN, rather than in the perl core.
234
235 See also L<Socket>
236
237 =item Lvalue subroutines
238
239 Introduced in Perl 5.6.0
240
241 Accepted in Perl 5.20.0
242
243 See also L<perlsub>
244
245 =item Backtracking control verbs
246
247 C<(*ACCEPT)>
248
249 Introduced in: Perl 5.10
250
251 Accepted in Perl 5.20.0
252
253 =item The <:pop> IO pseudolayer
254
255 See also L<perlrun>
256
257 Accepted in Perl 5.20.0
258
259 =item C<\s> in regexp matches vertical tab
260
261 Accepted in Perl 5.22.0
262
263 =item Postfix dereference syntax
264
265 Introduced in Perl 5.20.0
266
267 Accepted in Perl 5.24.0
268
269 =back
270
271 =head2 Removed features
272
273 These features are no longer considered experimental and their functionality
274 has disappeared. It's your own fault if you wrote production programs using
275 these features after we explicitly told you not to (see L<perlpolicy>).
276
277 =over 8
278
279 =item 5.005-style threading
280
281 Introduced in Perl 5.005
282
283 Removed in Perl 5.10
284
285 =item perlcc
286
287 Introduced in Perl 5.005
288
289 Moved from Perl 5.9.0 to CPAN
290
291 =item The pseudo-hash data type
292
293 Introduced in Perl 5.6.0
294
295 Removed in Perl 5.9.0
296
297 =item GetOpt::Long Options can now take multiple values at once (experimental)
298
299 C<Getopt::Long> upgraded to version 2.35
300
301 Removed in Perl 5.8.8
302
303 =item Assertions
304
305 The C<-A> command line switch
306
307 Introduced in Perl 5.9.0
308
309 Removed in Perl 5.9.5
310
311 =item Test::Harness::Straps
312
313 Moved from Perl 5.10.1 to CPAN
314
315 =item C<legacy>
316
317 The experimental C<legacy> pragma was swallowed by the C<feature> pragma.
318
319 Introduced in: 5.11.2
320
321 Removed in: 5.11.3
322
323 =back
324
325 =head1 SEE ALSO
326
327 For a complete list of features check L<feature>.
328
329 =head1 AUTHORS
330
331 brian d foy C<< <brian.d.foy@gmail.com> >>
332
333 SE<eacute>bastien Aperghis-Tramoni C<< <saper@cpan.org> >>
334
335 =head1 COPYRIGHT
336
337 Copyright 2010, brian d foy C<< <brian.d.foy@gmail.com> >>
338
339 =head1 LICENSE
340
341 You can use and redistribute this document under the same terms as Perl
342 itself.
343
344 =cut