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