1=encoding utf-8 2 3=head1 NAME 4 5perlexperiment - A listing of experimental features in Perl 6 7=head1 DESCRIPTION 8 9This document lists the current and past experimental features in the perl 10core. Although all of these are documented with their appropriate topics, 11this succinct listing gives you an overview and basic facts about their 12status. 13 14So far we've merely tried to find and list the experimental features and infer 15their inception, versions, etc. There's a lot of speculation here. 16 17=head2 Current experiments 18 19=over 8 20 21=item Smart match (C<~~>) 22 23Introduced in Perl 5.10.0 24 25Modified in Perl 5.10.1, 5.12.0 26 27Deprecated in 5.38.0 28 29Will be removed in 5.42.0 30 31Using this feature triggers warnings in the category 32C<deprecated>. 33 34The ticket for this experiment is 35L<[perl #13173]|https://github.com/Perl/perl5/issues/13173>. 36 37=item Pluggable keywords 38 39Introduced in Perl 5.11.2 40 41See L<perlapi/PL_keyword_plugin> for the mechanism. 42 43The ticket for this experiment is 44L<[perl #13199]|https://github.com/Perl/perl5/issues/13199>. 45 46=item Aliasing via reference 47 48Introduced in Perl 5.22.0 49 50Using this feature triggers warnings in the category 51C<experimental::refaliasing>. 52 53The ticket for this experiment is 54L<[perl #14150]|https://github.com/Perl/perl5/issues/14150>. 55 56See also: L<perlref/Assigning to References> 57 58=item use re 'strict'; 59 60Introduced in Perl 5.22.0 61 62Using this feature triggers warnings in the category 63C<experimental::re_strict>. 64 65The ticket for this experiment is 66L<[perl #18755]|https://github.com/Perl/perl5/issues/18755> 67 68See L<re/'strict' mode> 69 70=item Declaring a reference to a variable 71 72Introduced in Perl 5.26.0 73 74Using this feature triggers warnings in the category 75C<experimental::declared_refs>. 76 77The ticket for this experiment is 78L<[perl #15458]|https://github.com/Perl/perl5/issues/15458>. 79 80See also: L<perlref/Declaring a Reference to a Variable> 81 82=item There is an C<installhtml> target in the Makefile. 83 84The ticket for this experiment is 85L<[perl #12726]|https://github.com/Perl/perl5/issues/12726>. 86 87=item (Limited) Variable-length look-behind 88 89Introduced in Perl 5.30.0. 90 91Variability of up to 255 characters is handled. 92 93Using this feature triggers warnings in the category 94C<experimental::vlb>. 95 96The ticket for this experiment is 97L<[perl #18756]|https://github.com/Perl/perl5/issues/18756>. 98 99See also: L<perlre/(*positive_lookbehind:I<pattern>)> and 100L<perlre/(*negative_lookbehind:I<pattern>)> 101 102=item Unicode private use character hooks 103 104Introduced in Perl 5.30.0. 105 106This feature is part of an interface intended for internal and experimental 107use by the perl5 developers. You are unlikely to encounter it in the wild. 108 109Using this feature triggers warnings in the category 110C<experimental::private_use>. 111 112The ticket for this experiment is 113L<[perl #18758]|https://github.com/Perl/perl5/issues/18758>. 114 115=item Unicode property wildcards 116 117Introduced in Perl 5.30.0. 118 119This feature allows regular expression matching against Unicode character 120properties to be expressed more concisely. 121 122Using this feature triggers warnings in the category 123C<experimental::uniprop_wildcards>. 124 125The ticket for this experiment is 126L<[perl #18759]|https://github.com/Perl/perl5/issues/18759>. 127 128=item try/catch control structure 129 130Introduced in Perl 5.34.0. 131 132Using the optional C<finally> block part of this feature triggers warnings in 133the category C<experimental::try>. 134 135The ticket for this experiment is 136L<[perl #18760]|https://github.com/Perl/perl5/issues/18760> 137 138=item Use of C<@_> within subroutine signatures 139 140Introduced in Perl 5.36.0 as part of a reduction in the scope of experimental 141subroutine signatures. 142 143Using the default arguments array (C<@_>) within a subroutine that uses 144signatures will emit a warning in the category 145C<experimental::args_array_with_signatures>. This includes C<@_> directly, 146elements of it such as C<$_[$index]>, or situations where the default 147arguments array is accessed implicitly such as C<shift> or C<pop> without 148arguments. 149 150=item The builtin namespace 151 152Introduced in Perl 5.36.0. 153 154Using certain functions of this feature triggers warnings in the category 155C<experimental::builtin>. 156 157In Perl 5.36.0, a new namespace, C<builtin>, was created for new core functions 158that will not be present in every namespace, but will be available for 159importing. The namespace itself was considered experimental until Perl 5.39.2. 160Some specific functions within it remain experimental. 161 162The ticket for this experiment is 163L<[perl #19764]|https://github.com/Perl/perl5/issues/19764>. 164 165=item The defer block modifier 166 167Introduced in Perl 5.36.0 168 169Using this feature triggers warnings in the category C<experimental::defer>. 170 171This feature adds a new kind of block, a C<defer> block, which will not be 172executed until the containing block is being exited. 173 174The ticket for this experiment is 175L<[perl #17949]|https://github.com/Perl/perl5/issues/17949>. 176 177=item Extra paired delimiters for quote-like operators 178 179Introduced in Perl 5.36.0 180 181Using this feature triggers warnings in the category 182C<experimental::extra_paired_delimiters>. 183 184This feature allows for many non-ASCII pairs of mirroring delimiters, for 185example: 186 187 my @array = qw« tinker tailor soldier spy »; 188 189The ticket for this experiment is 190L<[perl #19765]|https://github.com/Perl/perl5/issues/19765>. 191 192=back 193 194=head2 Accepted features 195 196These features were so wildly successful and played so well with others that 197we decided to remove their experimental status and admit them as full, stable 198features in the world of Perl, lavishing all the benefits and luxuries thereof. 199They are also awarded +5 Stability and +3 Charisma. 200 201=over 8 202 203=item 64-bit support 204 205Introduced in Perl 5.005 206 207=item die accepts a reference 208 209Introduced in Perl 5.005 210 211=item DB module 212 213Introduced in Perl 5.6.0 214 215See also L<perldebug>, L<perldebtut> 216 217=item Weak references 218 219Introduced in Perl 5.6.0 220 221=item Internal file glob 222 223Introduced in Perl 5.6.0 224 225=item fork() emulation 226 227Introduced in Perl 5.6.1 228 229See also L<perlfork> 230 231=item -Dusemultiplicity -Duseithreads 232 233Introduced in Perl 5.6.0 234 235Accepted in Perl 5.8.0 236 237=item Support for long doubles 238 239Introduced in Perl 5.6.0 240 241Accepted in Perl 5.8.1 242 243=item The C<\N> regex character class 244 245The C<\N> character class, not to be confused with the named character 246sequence C<\N{NAME}>, denotes any non-newline character in a regular 247expression. 248 249Introduced in Perl 5.12 250 251Exact version of acceptance unclear, but no later than Perl 5.18. 252 253=item C<(?{code})> and C<(??{ code })> 254 255Introduced in Perl 5.6.0 256 257Accepted in Perl 5.20.0 258 259See also L<perlre> 260 261=item Linux abstract Unix domain sockets 262 263Introduced in Perl 5.9.2 264 265Accepted before Perl 5.20.0. The Socket library is now primarily maintained 266on CPAN, rather than in the perl core. 267 268See also L<Socket> 269 270=item Lvalue subroutines 271 272Introduced in Perl 5.6.0 273 274Accepted in Perl 5.20.0 275 276See also L<perlsub> 277 278=item Backtracking control verbs 279 280C<(*ACCEPT)> 281 282Introduced in Perl 5.10 283 284Accepted in Perl 5.20.0 285 286=item The C<:pop> IO pseudolayer 287 288See also L<perlrun/PERLIO> 289 290Accepted in Perl 5.20.0 291 292=item C<\s> in regexp matches vertical tab 293 294Accepted in Perl 5.22.0 295 296=item Postfix dereference syntax 297 298Introduced in Perl 5.20.0 299 300Accepted in Perl 5.24.0 301 302=item Lexical subroutines 303 304Introduced in Perl 5.18.0 305 306Accepted in Perl 5.26.0 307 308=item String- and number-specific bitwise operators 309 310Introduced in Perl 5.22.0 311 312Accepted in Perl 5.28.0 313 314=item Alphabetic assertions 315 316Introduced in Perl 5.28.0 317 318Accepted in Perl 5.32.0 319 320=item Script runs 321 322Introduced in Perl 5.28.0 323 324Accepted in Perl 5.32.0 325 326=item The infix C<isa> operator 327 328Introduced in Perl 5.32.0 329 330Accepted in Perl 5.36.0 331 332=item Subroutine signatures 333 334Introduced in Perl 5.20.0 335 336Accepted in Perl 5.36.0 337 338=item Regular Expression Set Operations 339 340Introduced in Perl 5.18 341 342Accepted in Perl 5.36 343 344See : L<perlrecharclass/Extended Bracketed Character Classes> 345 346=item try/catch control structure 347 348Introduced in Perl 5.34.0. 349 350Accepted in Perl 5.40 when not using the optional C<finally> block. 351 352=item The "const" attribute 353 354Introduced in Perl 5.22.0 355 356Accepted in Perl 5.40 357 358See also: L<perlsub/Constant Functions> 359 360=item for loop with multiple iteration variables 361 362Introduced in Perl 5.36.0. 363 364Accepted in Perl 5.40. 365 366This feature enables a parenthesized list of iteration variables for C<for> 367rather than a single variable. 368 369=back 370 371=head2 Removed features 372 373These features are no longer considered experimental and their functionality 374has disappeared. It's your own fault if you wrote production programs using 375these features after we explicitly told you not to (see L<perlpolicy>). 376 377=over 8 378 379=item 5.005-style threading 380 381Introduced in Perl 5.005 382 383Removed in Perl 5.10 384 385=item perlcc 386 387Introduced in Perl 5.005 388 389Moved from Perl 5.9.0 to CPAN 390 391=item The pseudo-hash data type 392 393Introduced in Perl 5.6.0 394 395Removed in Perl 5.9.0 396 397=item GetOpt::Long Options can now take multiple values at once (experimental) 398 399C<Getopt::Long> upgraded to version 2.35 400 401Removed in Perl 5.8.8 402 403=item Assertions 404 405The C<-A> command line switch 406 407Introduced in Perl 5.9.0 408 409Removed in Perl 5.9.5 410 411=item Test::Harness::Straps 412 413Moved from Perl 5.10.1 to CPAN 414 415=item C<legacy> 416 417The experimental C<legacy> pragma was swallowed by the C<feature> pragma. 418 419Introduced in Perl 5.11.2 420 421Removed in Perl 5.11.3 422 423=item Lexical C<$_> 424 425Using this feature triggered warnings in the category 426C<experimental::lexical_topic>. 427 428Introduced in Perl 5.10.0 429 430Removed in Perl 5.24.0 431 432=item Array and hash container functions accept references 433 434Using this feature triggered warnings in the category 435C<experimental::autoderef>. 436 437Superseded by L</Postfix dereference syntax>. 438 439Introduced in Perl 5.14.0 440 441Removed in Perl 5.24.0 442 443=item C<our> can have an experimental optional attribute C<unique> 444 445Introduced in Perl 5.8.0 446 447Deprecated in Perl 5.10.0 448 449Removed in Perl 5.28.0 450 451=item The C<:win32> IO pseudolayer 452 453Introduced in Perl 5.8.0 (or before) 454 455Removed in Perl 5.36.0 456 457=back 458 459=head1 SEE ALSO 460 461For a complete list of features check L<feature>. 462 463=head1 AUTHORS 464 465brian d foy C<< <brian.d.foy@gmail.com> >> 466 467SE<eacute>bastien Aperghis-Tramoni C<< <saper@cpan.org> >> 468 469=head1 COPYRIGHT 470 471Copyright 2010, brian d foy C<< <brian.d.foy@gmail.com> >> 472 473=head1 LICENSE 474 475You can use and redistribute this document under the same terms as Perl 476itself. 477 478=cut 479