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