This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
def35e0ed1ad6d3b008a9aff781965dd6dc3e8b1
[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 =item Smart match (C<~~>)
26
27 Introduced in Perl 5.10.0
28
29 Modified in Perl 5.10.1, 5.12.0
30
31 Using this feature triggers warnings in the category
32 C<experimental::smartmatch>.
33
34 =item Lexical C<$_>
35
36 Introduced in Perl 5.10.0
37
38 Using this feature triggers warnings in the category
39 C<experimental::lexical_topic>.
40
41 =item Pluggable keywords
42
43 See L<perlapi/PL_keyword_plugin> for the mechanism.
44
45 Introduced in: Perl 5.11.2
46
47 =item Array and hash container functions accept references
48
49 Introduced in Perl 5.14.0
50
51 =item Lexical subroutines
52
53 Introduced in: Perl 5.18
54
55 See also: L<perlsub/Lexical Subroutines>
56
57 Using this feature triggers warnings in the category
58 C<experimental::lexical_subs>.
59
60 =item Regular Expression Set Operations
61
62 Introduced in: Perl 5.18
63
64 See also: L<perlrecharclass/Extended Bracketed Character Classes>
65
66 Using this feature triggers warnings in the category
67 C<experimental::regex_sets>.
68
69 =item C<\s> in regexp matches vertical tab
70
71 Introduced in Perl 5.18
72
73 =item The <:win32> IO pseudolayer
74
75 See also L<perlrun>
76
77 =item internal functions with M flag
78
79 See also L<perlguts>
80
81 =item lex_start API
82
83 Introduced in Perl 5.13.7
84
85 =item internal API for C<%^H>
86
87 Introduced in Perl 5.13.7
88
89 See also C<cophh_> in L<perlapi>.
90
91 =item alloccopstash
92
93 Introduced in Perl 5.18.0
94
95 =item av_create_and_push
96
97 =item av_create_and_unshift_one
98
99 =item av_create_and_unshift_one
100
101 =item cop_store_label
102
103 Introduced in Perl 5.16.0
104
105 =item PL_keyword_plugin
106
107 =item gv_fetchmethod_*_flags
108
109 Introduced in Perl 5.16.0
110
111 =item hv_iternext_flags
112
113 =item lex_bufutf8
114
115 =item lex_discard_to
116
117 =item lex_grow_linestr
118
119 =item lex_next_chunk
120
121 =item lex_peek_unichar
122
123 =item lex_read_space
124
125 =item lex_read_to
126
127 =item lex_read_unichar
128
129 =item lex_stuff_pv
130
131 =item lex_stuff_pvn
132
133 =item lex_stuff_pvs
134
135 =item lex_stuff_sv
136
137 =item lex_unstuff
138
139 =item op_scope
140
141 =item op_lvalue
142
143 =item parse_fullstmt
144
145 =item parse_stmtseq
146
147 =item PL_parser-E<gt>bufend
148
149 =item PL_parser-E<gt>bufptr
150
151 =item PL_parser-E<gt>linestart
152
153 =item PL_parser-E<gt>linestr
154
155 =item Perl_signbit
156
157 =item pad_findmy
158
159 =item sv_utf8_decode
160
161 =item sv_utf8_downgrade
162
163 =item bytes_from_utf8
164
165 =item bytes_to_utf8
166
167 =item utf8_to_bytes
168
169 =item There is an C<installhtml> target in the Makefile.
170
171 =item Unicode in Perl on EBCDIC
172
173 See also: L<perlre/"Special Backtracking Control Verbs">
174
175 =item Code expressions, conditional expressions, and independent expressions in regexes
176
177 =item gv_try_downgrade
178
179 See also L<perlintern>
180
181 =item Experimental Support for Sun Studio Compilers for Linux OS
182
183 See also L<perllinux>
184
185 =back
186
187 =head2 Accepted features
188
189 These features were so wildly successful and played so well with others that
190 we decided to remove their experimental status and admit them as full, stable
191 features in the world of Perl, lavishing all the benefits and luxuries thereof.
192 They are also awarded +5 Stability and +3 Charisma.
193
194 =over 8
195
196 =item 64-bit support
197
198 Introduced in Perl 5.005
199
200 =item die accepts a reference
201
202 Introduced in Perl 5.005
203
204 =item DB module
205
206 Introduced in Perl 5.6.0
207
208 See also L<perldebug>, L<perldebtut>
209
210 =item Weak references
211
212 Introduced in Perl 5.6.0
213
214 =item Internal file glob
215
216 Introduced in Perl 5.6.0
217
218 =item fork() emulation
219
220 Introduced in Perl 5.6.1
221
222 See also L<perlfork>
223
224 =item -Dusemultiplicity -Duseithreads
225
226 Introduced in Perl 5.6.0
227
228 Accepted in Perl 5.8.0
229
230 =item Support for long doubles
231
232 Introduced in Perl 5.6.0
233
234 Accepted in Perl 5.8.1
235
236 =item The C<\N> regex character class
237
238 The C<\N> character class, not to be confused with the named character
239 sequence C<\N{NAME}>, denotes any non-newline character in a regular
240 expression.
241
242 Introduced in Perl 5.12
243
244 Exact version of acceptance unclear, but no later than Perl 5.18.
245
246 =item C<(?{code})> and C<(??{ code })>
247
248 Introduced in Perl 5.6.0
249
250 Accepted in Perl 5.20.0
251
252 See also L<perlre>
253
254 =item Linux abstract Unix domain sockets
255
256 Introduced in Perl 5.9.2
257
258 Accepted before Perl 5.20.0.  The Socket library is now primarily maintained
259 on CPAN, rather than in the perl core.
260
261 See also L<Socket>
262
263 =item Lvalue subroutines
264
265 Introduced in Perl 5.6.0
266
267 Accepted in Perl 5.20.0
268
269 See also L<perlsub>
270
271 =item Backtracking control verbs
272
273 C<(*ACCEPT)>
274
275 Introduced in: Perl 5.10
276
277 Accepted in Perl 5.20.0
278
279 =item The <:pop> IO pseudolayer
280
281 See also L<perlrun>
282
283 Accepted in Perl 5.20.0
284
285 =back
286
287 =head2 Removed features
288
289 These features are no longer considered experimental and their functionality
290 has disappeared. It's your own fault if you wrote production programs using
291 these features after we explicitly told you not to (see L<perlpolicy>).
292
293 =over 8
294
295 =item 5.005-style threading
296
297 Introduced in Perl 5.005
298
299 Removed in Perl 5.10
300
301 =item perlcc
302
303 Introduced in Perl 5.005
304
305 Moved from Perl 5.9.0 to CPAN
306
307 =item The pseudo-hash data type
308
309 Introduced in Perl 5.6.0
310
311 Removed in Perl 5.9.0
312
313 =item GetOpt::Long Options can now take multiple values at once (experimental)
314
315 C<Getopt::Long> upgraded to version 2.35
316
317 Removed in Perl 5.8.8
318
319 =item Assertions
320
321 The C<-A> command line switch
322
323 Introduced in Perl 5.9.0
324
325 Removed in Perl 5.9.5
326
327 =item Test::Harness::Straps
328
329 Moved from Perl 5.10.1 to CPAN
330
331 =item C<legacy>
332
333 The experimental C<legacy> pragma was swallowed by the C<feature> pragma.
334
335 Introduced in: 5.11.2
336
337 Removed in: 5.11.3
338
339 =back
340
341 =head1 AUTHORS
342
343 brian d foy C<< <brian.d.foy@gmail.com> >>
344
345 SE<eacute>bastien Aperghis-Tramoni C<< <saper@cpan.org> >>
346
347 =head1 COPYRIGHT
348
349 Copyright 2010, brian d foy C<< <brian.d.foy@gmail.com> >>
350
351 =head1 LICENSE
352
353 You can use and redistribute this document under the same terms as Perl
354 itself.
355
356 =cut