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