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