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