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