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