This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
5dbbdcc2fb75d18fad21d6bcea182869313253ae
[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 The ticket for this feature is
26 L<[perl #119313]|https://rt.perl.org/rt3/Ticket/Display.html?id=119313>.
27
28 =item Smart match (C<~~>)
29
30 Introduced in Perl 5.10.0
31
32 Modified in Perl 5.10.1, 5.12.0
33
34 Using this feature triggers warnings in the category
35 C<experimental::smartmatch>.
36
37 The ticket for this feature is
38 L<[perl #119317]|https://rt.perl.org/rt3/Ticket/Display.html?id=119317>.
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 The ticket for this feature is
48 L<[perl #119315]|https://rt.perl.org/rt3/Ticket/Display.html?id=119315>.
49
50 =item Pluggable keywords
51
52 See L<perlapi/PL_keyword_plugin> for the mechanism.
53
54 Introduced in: Perl 5.11.2
55
56 =item Array and hash container functions accept references
57
58 Introduced in Perl 5.14.0
59
60 The ticket for this feature is
61 L<[perl #119437]|https://rt.perl.org/rt3/Ticket/Display.html?id=119437>.
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 <:win32> IO pseudolayer
86
87 See also L<perlrun>
88
89 =item There is an C<installhtml> target in the Makefile.
90
91 The ticket for this feature is
92 L<[perl #116487]|https://rt.perl.org/rt3/Ticket/Display.html?id=116487>.
93
94 =item Unicode in Perl on EBCDIC
95
96 See also: L<perlre/"Special Backtracking Control Verbs">
97
98 =back
99
100 =head2 Accepted features
101
102 These features were so wildly successful and played so well with others that
103 we decided to remove their experimental status and admit them as full, stable
104 features in the world of Perl, lavishing all the benefits and luxuries thereof.
105 They are also awarded +5 Stability and +3 Charisma.
106
107 =over 8
108
109 =item 64-bit support
110
111 Introduced in Perl 5.005
112
113 =item die accepts a reference
114
115 Introduced in Perl 5.005
116
117 =item DB module
118
119 Introduced in Perl 5.6.0
120
121 See also L<perldebug>, L<perldebtut>
122
123 =item Weak references
124
125 Introduced in Perl 5.6.0
126
127 =item Internal file glob
128
129 Introduced in Perl 5.6.0
130
131 =item fork() emulation
132
133 Introduced in Perl 5.6.1
134
135 See also L<perlfork>
136
137 =item -Dusemultiplicity -Duseithreads
138
139 Introduced in Perl 5.6.0
140
141 Accepted in Perl 5.8.0
142
143 =item Support for long doubles
144
145 Introduced in Perl 5.6.0
146
147 Accepted in Perl 5.8.1
148
149 =item The C<\N> regex character class
150
151 The C<\N> character class, not to be confused with the named character
152 sequence C<\N{NAME}>, denotes any non-newline character in a regular
153 expression.
154
155 Introduced in Perl 5.12
156
157 Exact version of acceptance unclear, but no later than Perl 5.18.
158
159 =item C<(?{code})> and C<(??{ code })>
160
161 Introduced in Perl 5.6.0
162
163 Accepted in Perl 5.20.0
164
165 See also L<perlre>
166
167 =item Linux abstract Unix domain sockets
168
169 Introduced in Perl 5.9.2
170
171 Accepted before Perl 5.20.0.  The Socket library is now primarily maintained
172 on CPAN, rather than in the perl core.
173
174 See also L<Socket>
175
176 =item Lvalue subroutines
177
178 Introduced in Perl 5.6.0
179
180 Accepted in Perl 5.20.0
181
182 See also L<perlsub>
183
184 =item Backtracking control verbs
185
186 C<(*ACCEPT)>
187
188 Introduced in: Perl 5.10
189
190 Accepted in Perl 5.20.0
191
192 =item The <:pop> IO pseudolayer
193
194 See also L<perlrun>
195
196 Accepted in Perl 5.20.0
197
198 =back
199
200 =head2 Removed features
201
202 These features are no longer considered experimental and their functionality
203 has disappeared. It's your own fault if you wrote production programs using
204 these features after we explicitly told you not to (see L<perlpolicy>).
205
206 =over 8
207
208 =item 5.005-style threading
209
210 Introduced in Perl 5.005
211
212 Removed in Perl 5.10
213
214 =item perlcc
215
216 Introduced in Perl 5.005
217
218 Moved from Perl 5.9.0 to CPAN
219
220 =item The pseudo-hash data type
221
222 Introduced in Perl 5.6.0
223
224 Removed in Perl 5.9.0
225
226 =item GetOpt::Long Options can now take multiple values at once (experimental)
227
228 C<Getopt::Long> upgraded to version 2.35
229
230 Removed in Perl 5.8.8
231
232 =item Assertions
233
234 The C<-A> command line switch
235
236 Introduced in Perl 5.9.0
237
238 Removed in Perl 5.9.5
239
240 =item Test::Harness::Straps
241
242 Moved from Perl 5.10.1 to CPAN
243
244 =item C<legacy>
245
246 The experimental C<legacy> pragma was swallowed by the C<feature> pragma.
247
248 Introduced in: 5.11.2
249
250 Removed in: 5.11.3
251
252 =back
253
254 =head1 AUTHORS
255
256 brian d foy C<< <brian.d.foy@gmail.com> >>
257
258 SE<eacute>bastien Aperghis-Tramoni C<< <saper@cpan.org> >>
259
260 =head1 COPYRIGHT
261
262 Copyright 2010, brian d foy C<< <brian.d.foy@gmail.com> >>
263
264 =head1 LICENSE
265
266 You can use and redistribute this document under the same terms as Perl
267 itself.
268
269 =cut