Commit | Line | Data |
---|---|---|
42e73e1c | 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 | |
d1558b3e | 8 | core. Although all of these are documented with their appropriate topics, |
42e73e1c | 9 | this succinct listing gives you an overview and basic facts about their |
10 | status. | |
11 | ||
fe8d2675 | 12 | So far we've merely tried to find and list the experimental features and infer |
d1558b3e | 13 | their inception, versions, etc. There's a lot of speculation here. |
42e73e1c | 14 | |
15 | =head2 Current experiments | |
16 | ||
17 | =over 8 | |
18 | ||
42e73e1c | 19 | =item C<our> can now have an experimental optional attribute C<unique> |
20 | ||
21 | Introduced in Perl 5.8.0 | |
22 | ||
d1558b3e FC |
23 | Deprecated in Perl 5.10.0 |
24 | ||
42e73e1c | 25 | =item Linux abstract Unix domain sockets |
26 | ||
27 | Introduced in Perl 5.9.2 | |
28 | ||
29 | See also L<Socket> | |
30 | ||
51c34fa4 RS |
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 | ||
51c34fa4 RS |
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 | ||
3602d7b6 RS |
75 | =item C<\s> in regexp matches vertical tab |
76 | ||
77 | Introduced in Perl 5.18 | |
51c34fa4 | 78 | |
706c19b7 | 79 | =item The <:win32> IO pseudolayer |
42e73e1c | 80 | |
81 | See also L<perlrun> | |
82 | ||
42e73e1c | 83 | =item internal functions with M flag |
84 | ||
85 | See also L<perlguts> | |
86 | ||
87 | =item lex_start API | |
88 | ||
89 | Introduced in Perl 5.13.7 | |
90 | ||
fe8d2675 | 91 | =item internal API for C<%^H> |
42e73e1c | 92 | |
93 | Introduced in Perl 5.13.7 | |
94 | ||
95 | See also C<cophh_> in L<perlapi>. | |
96 | ||
fe8d2675 AT |
97 | =item alloccopstash |
98 | ||
99 | Introduced in Perl 5.18.0 | |
100 | ||
42e73e1c | 101 | =item av_create_and_push |
102 | ||
103 | =item av_create_and_unshift_one | |
104 | ||
105 | =item av_create_and_unshift_one | |
106 | ||
fe8d2675 AT |
107 | =item cop_store_label |
108 | ||
109 | Introduced in Perl 5.16.0 | |
110 | ||
42e73e1c | 111 | =item PL_keyword_plugin |
112 | ||
fe8d2675 AT |
113 | =item gv_fetchmethod_*_flags |
114 | ||
115 | Introduced in Perl 5.16.0 | |
116 | ||
42e73e1c | 117 | =item hv_iternext_flags |
118 | ||
119 | =item lex_bufutf8 | |
120 | ||
121 | =item lex_discard_to | |
122 | ||
123 | =item lex_grow_linestr | |
124 | ||
125 | =item lex_next_chunk | |
126 | ||
127 | =item lex_peek_unichar | |
128 | ||
129 | =item lex_read_space | |
130 | ||
131 | =item lex_read_to | |
132 | ||
133 | =item lex_read_unichar | |
134 | ||
135 | =item lex_stuff_pv | |
136 | ||
137 | =item lex_stuff_pvn | |
138 | ||
139 | =item lex_stuff_pvs | |
140 | ||
141 | =item lex_stuff_sv | |
142 | ||
143 | =item lex_unstuff | |
144 | ||
fe8d2675 AT |
145 | =item op_scope |
146 | ||
147 | =item op_lvalue | |
148 | ||
42e73e1c | 149 | =item parse_fullstmt |
150 | ||
151 | =item parse_stmtseq | |
152 | ||
153 | =item PL_parser-E<gt>bufend | |
154 | ||
155 | =item PL_parser-E<gt>bufptr | |
156 | ||
157 | =item PL_parser-E<gt>linestart | |
158 | ||
159 | =item PL_parser-E<gt>linestr | |
160 | ||
161 | =item Perl_signbit | |
162 | ||
163 | =item pad_findmy | |
164 | ||
165 | =item sv_utf8_decode | |
166 | ||
167 | =item sv_utf8_downgrade | |
168 | ||
169 | =item bytes_from_utf8 | |
170 | ||
171 | =item bytes_to_utf8 | |
172 | ||
173 | =item utf8_to_bytes | |
174 | ||
42e73e1c | 175 | =item There is an C<installhtml> target in the Makefile. |
176 | ||
177 | =item Unicode in Perl on EBCDIC | |
178 | ||
42e73e1c | 179 | See also: L<perlre/"Special Backtracking Control Verbs"> |
180 | ||
181 | =item Code expressions, conditional expressions, and independent expressions in regexes | |
182 | ||
42e73e1c | 183 | =item gv_try_downgrade |
184 | ||
185 | See also L<perlintern> | |
186 | ||
187 | =item Experimental Support for Sun Studio Compilers for Linux OS | |
188 | ||
189 | See also L<perllinux> | |
190 | ||
42e73e1c | 191 | =back |
192 | ||
193 | =head2 Accepted features | |
194 | ||
195 | These features were so wildly successful and played so well with others that | |
196 | we decided to remove their experimental status and admit them as full, stable | |
51c34fa4 | 197 | features in the world of Perl, lavishing all the benefits and luxuries thereof. |
42e73e1c | 198 | They are also awarded +5 Stability and +3 Charisma. |
199 | ||
200 | =over 8 | |
201 | ||
51c34fa4 | 202 | =item 64-bit support |
42e73e1c | 203 | |
51c34fa4 | 204 | Introduced in Perl 5.005 |
fe8d2675 | 205 | |
51c34fa4 | 206 | =item die accepts a reference |
fe8d2675 | 207 | |
51c34fa4 | 208 | Introduced in Perl 5.005 |
fe8d2675 AT |
209 | |
210 | =item DB module | |
211 | ||
212 | Introduced in Perl 5.6.0 | |
213 | ||
214 | See also L<perldebug>, L<perldebtut> | |
215 | ||
216 | =item Weak references | |
217 | ||
218 | Introduced in Perl 5.6.0 | |
219 | ||
220 | =item Internal file glob | |
221 | ||
222 | Introduced in Perl 5.6.0 | |
223 | ||
51c34fa4 | 224 | =item fork() emulation |
fe8d2675 | 225 | |
51c34fa4 | 226 | Introduced in Perl 5.6.1 |
fe8d2675 | 227 | |
51c34fa4 | 228 | See also L<perlfork> |
fe8d2675 | 229 | |
3a0e7915 RS |
230 | =item -Dusemultiplicity -Duseithreads |
231 | ||
232 | Introduced in Perl 5.6.0 | |
233 | ||
234 | Accepted in Perl 5.8.0 | |
235 | ||
36d2f798 RS |
236 | =item Support for long doubles |
237 | ||
238 | Introduced in Perl 5.6.0 | |
239 | ||
240 | Accepted in Perl 5.8.1 | |
241 | ||
51c34fa4 RS |
242 | =item The C<\N> regex character class |
243 | ||
244 | The C<\N> character class, not to be confused with the named character | |
245 | sequence C<\N{NAME}>, denotes any non-newline character in a regular | |
246 | expression. | |
247 | ||
3cb3bd66 RS |
248 | Introduced in Perl 5.12 |
249 | ||
250 | Exact version of acceptance unclear, but no later than Perl 5.18. | |
fe8d2675 | 251 | |
83f32aba RS |
252 | =item C<(?{code})> and C<(??{ code })> |
253 | ||
254 | Introduced in Perl 5.6.0 | |
255 | ||
256 | Accepted in Perl 5.20.0 | |
257 | ||
258 | See also L<perlre> | |
259 | ||
af7c9f88 RS |
260 | =item Lvalue subroutines |
261 | ||
262 | Introduced in Perl 5.6.0 | |
263 | ||
264 | Accepted in Perl 5.20.0 | |
265 | ||
266 | See also L<perlsub> | |
267 | ||
b387afbc RS |
268 | =item Backtracking control verbs |
269 | ||
270 | C<(*ACCEPT)> | |
271 | ||
272 | Introduced in: Perl 5.10 | |
273 | ||
274 | Accepted in Perl 5.20.0 | |
275 | ||
8a7bc862 RS |
276 | =item The <:pop> IO pseudolayer |
277 | ||
278 | See also L<perlrun> | |
279 | ||
280 | Accepted in Perl 5.20.0 | |
281 | ||
42e73e1c | 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 | ||
51c34fa4 | 292 | =item 5.005-style threading |
42e73e1c | 293 | |
51c34fa4 | 294 | Introduced in Perl 5.005 |
42e73e1c | 295 | |
51c34fa4 | 296 | Removed in Perl 5.10 |
42e73e1c | 297 | |
51c34fa4 | 298 | =item perlcc |
fe8d2675 | 299 | |
51c34fa4 | 300 | Introduced in Perl 5.005 |
fe8d2675 | 301 | |
51c34fa4 | 302 | Moved from Perl 5.9.0 to CPAN |
fe8d2675 | 303 | |
51c34fa4 | 304 | =item The pseudo-hash data type |
fe8d2675 | 305 | |
51c34fa4 | 306 | Introduced in Perl 5.6.0 |
fe8d2675 | 307 | |
51c34fa4 | 308 | Removed in Perl 5.9.0 |
fe8d2675 AT |
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 | ||
51c34fa4 | 316 | =item Assertions |
fe8d2675 | 317 | |
51c34fa4 | 318 | The C<-A> command line switch |
fe8d2675 | 319 | |
51c34fa4 | 320 | Introduced in Perl 5.9.0 |
fe8d2675 | 321 | |
51c34fa4 | 322 | Removed in Perl 5.9.5 |
fe8d2675 | 323 | |
51c34fa4 | 324 | =item Test::Harness::Straps |
fe8d2675 | 325 | |
51c34fa4 | 326 | Moved from Perl 5.10.1 to CPAN |
fe8d2675 | 327 | |
51c34fa4 | 328 | =item C<legacy> |
fe8d2675 | 329 | |
51c34fa4 | 330 | The experimental C<legacy> pragma was swallowed by the C<feature> pragma. |
fe8d2675 | 331 | |
51c34fa4 RS |
332 | Introduced in: 5.11.2 |
333 | ||
334 | Removed in: 5.11.3 | |
fe8d2675 | 335 | |
42e73e1c | 336 | =back |
337 | ||
338 | =head1 AUTHORS | |
339 | ||
340 | brian d foy C<< <brian.d.foy@gmail.com> >> | |
341 | ||
fe8d2675 AT |
342 | SE<eacute>bastien Aperghis-Tramoni C<< <saper@cpan.org> >> |
343 | ||
42e73e1c | 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 |