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