This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: Note that utf8_hop_safe is for XS code
[perl5.git] / pod / perlexperiment.pod
index e64728a..5e734b6 100644 (file)
@@ -9,292 +9,338 @@ core. Although all of these are documented with their appropriate topics,
 this succinct listing gives you an overview and basic facts about their
 status.
 
-So far I've merely tried to find and list the experimental features and infer
+So far we've merely tried to find and list the experimental features and infer
 their inception, versions, etc. There's a lot of speculation here.
 
 =head2 Current experiments
 
 =over 8
 
-=item fork() emulation
+=item C<our> can now have an experimental optional attribute C<unique>
 
-Introduced in Perl 5.6.1
+Introduced in Perl 5.8.0
 
-See also L<perlfork>
+Deprecated in Perl 5.10.0
 
-=item Weak references
+The ticket for this feature is
+L<[perl #119313]|https://rt.perl.org/rt3/Ticket/Display.html?id=119313>.
 
-Introduced in Perl 5.6.0
+=item Smart match (C<~~>)
 
-=item Internal file glob
+Introduced in Perl 5.10.0
 
-Introduced in Perl 5.6.0
+Modified in Perl 5.10.1, 5.12.0
 
-Accepted in XXX
+Using this feature triggers warnings in the category
+C<experimental::smartmatch>.
 
-=item 64-bit support
+The ticket for this feature is
+L<[perl #119317]|https://rt.perl.org/rt3/Ticket/Display.html?id=119317>.
 
-Introduced in Perl 5.005
+=item Pluggable keywords
 
-Accepted in XXX
+The ticket for this feature is
+L<[perl #119455]|https://rt.perl.org/rt3/Ticket/Display.html?id=119455>.
 
-=item die accepts a reference
+See L<perlapi/PL_keyword_plugin> for the mechanism.
 
-Introduced in Perl 5.005
+Introduced in Perl 5.11.2
 
-Accecpted in Perl XXX
+=item Regular Expression Set Operations
 
-=item Unicode support
+Introduced in Perl 5.18
 
-Introduced in Perl 5.6.0
+The ticket for this feature is
+L<[perl #119451]|https://rt.perl.org/rt3/Ticket/Display.html?id=119451>.
 
-Accepted in Perl 5.8.0 XXX
+See also: L<perlrecharclass/Extended Bracketed Character Classes>
 
-=item -Dusemultiplicity -Dusethreads
+Using this feature triggers warnings in the category
+C<experimental::regex_sets>.
 
-Introduced in Perl 5.6.0
+=item Subroutine signatures
 
-=item Long Doubles Still Don't Work In Solaris
+Introduced in Perl 5.20.0
 
-Introduced in Perl 5.7.0
+Using this feature triggers warnings in the category
+C<experimental::signatures>.
 
-=item GetOpt::Long Options can now take multiple values at once (experimental)
+The ticket for this feature is
+L<[perl #121481]|https://rt.perl.org/Ticket/Display.html?id=121481>.
 
-C<Getopt::Long> upgraded to version 2.35
+=item Aliasing via reference
 
-Removed in Perl 5.8.8
+Introduced in Perl 5.22.0
 
-=item 5.005-style threading
+Using this feature triggers warnings in the category
+C<experimental::refaliasing>.
 
-Introduced in Perl 5.005
+The ticket for this feature is
+L<[perl #122947]|https://rt.perl.org/rt3/Ticket/Display.html?id=122947>.
 
-Removed in Perl 5.10 XXX
+See also: L<perlref/Assigning to References>
 
-=item Test::Harness::Straps
+=item The "const" attribute
 
-Removed in Perl 5.10.1
+Introduced in Perl 5.22.0
 
-=item perlcc
+Using this feature triggers warnings in the category
+C<experimental::const_attr>.
 
-Introduced in Perl 5.005
+The ticket for this feature is
+L<[perl #123630]|https://rt.perl.org/rt3/Ticket/Display.html?id=123630>.
 
-Removed in Perl 5.9.0
+See also: L<perlsub/Constant Functions>
 
-See also L<perlcompile>
+=item use re 'strict';
 
-=item C<our> can now have an experimental optional attribute C<unique>
+Introduced in Perl 5.22.0
 
-Introduced in Perl 5.8.0
+Using this feature triggers warnings in the category
+C<experimental::re_strict>.
 
-Deprecated in Perl 5.10.0
+See L<re/'strict' mode>
 
-=item Assertions
+=item String- and number-specific bitwise operators
 
-The C<-A> command line switch
+Introduced in Perl 5.22.0
 
-Introduced in Perl 5.9.0
+See also: L<perlop/Bitwise String Operators>
 
-Removed in Perl 5.9.5
+Using this feature triggers warnings in the category
+C<experimental::bitwise>.
 
-=item Linux abstract Unix domain sockets
+The ticket for this feature is
+L<[perl #123707]|https://rt.perl.org/rt3/Ticket/Display.html?id=123707>.
 
-Introduced in Perl 5.9.2
+=item The <:win32> IO pseudolayer
 
-See also L<Socket>
+The ticket for this feature is
+L<[perl #119453]|https://rt.perl.org/rt3/Ticket/Display.html?id=119453>.
 
-=item L<Pod::HTML2Pod|Pod::HTML2Pod>
+See also L<perlrun>
 
-=item L<Pod::PXML|Pod::PXML>
+=item Declaring a reference to a variable
 
-=item threads
+Introduced in Perl 5.26.0
 
-=item The <:pop> IO psuedolayer
+Using this feature triggers warnings in the category
+C<experimental::declared_refs>.
 
-See also L<perlrun>
+The ticket for this feature is
+L<[perl #128654]|https://rt.perl.org/rt3/Ticket/Display.html?id=128654>.
 
-=item The <:win32> IO psuedolayer
+See also: L<perlref/Declaring a Reference to a Variable>
 
-See also L<perlrun>
+=item There is an C<installhtml> target in the Makefile.
 
-=item MLDBM
+The ticket for this feature is
+L<[perl #116487]|https://rt.perl.org/rt3/Ticket/Display.html?id=116487>.
 
-See also L<perldsc>
+=item Unicode in Perl on EBCDIC
 
-=item internal functions with M flag
+=back
 
-See also L<perlguts>
+=head2 Accepted features
 
-=item lex_start API
+These features were so wildly successful and played so well with others that
+we decided to remove their experimental status and admit them as full, stable
+features in the world of Perl, lavishing all the benefits and luxuries thereof.
+They are also awarded +5 Stability and +3 Charisma.
 
-Introduced in Perl 5.13.7
+=over 8
 
-=item internal API for C<%H>
+=item 64-bit support
 
-Introduced in Perl 5.13.7
+Introduced in Perl 5.005
 
-See also C<cophh_> in L<perlapi>.
+=item die accepts a reference
 
-=item av_create_and_push
+Introduced in Perl 5.005
 
-=item av_create_and_unshift_one
+=item DB module
 
-=item av_create_and_unshift_one
+Introduced in Perl 5.6.0
 
-=item PL_keyword_plugin
+See also L<perldebug>, L<perldebtut>
 
-=item hv_iternext_flags
+=item Weak references
 
-=item lex_bufutf8
+Introduced in Perl 5.6.0
 
-=item lex_discard_to
+=item Internal file glob
 
-=item lex_grow_linestr
+Introduced in Perl 5.6.0
 
-=item lex_next_chunk
+=item fork() emulation
 
-=item lex_peek_unichar
+Introduced in Perl 5.6.1
 
-=item lex_read_space
+See also L<perlfork>
 
-=item lex_read_to
+=item -Dusemultiplicity -Duseithreads
 
-=item lex_read_unichar
+Introduced in Perl 5.6.0
 
-=item lex_stuff_pv
+Accepted in Perl 5.8.0
 
-=item lex_stuff_pvn
+=item Support for long doubles
 
-=item lex_stuff_pvs
+Introduced in Perl 5.6.0
 
-=item lex_stuff_sv
+Accepted in Perl 5.8.1
 
-=item lex_unstuff
+=item The C<\N> regex character class
 
-=item parse_fullstmt
+The C<\N> character class, not to be confused with the named character
+sequence C<\N{NAME}>, denotes any non-newline character in a regular
+expression.
 
-=item parse_stmtseq
+Introduced in Perl 5.12
 
-=item PL_parser-E<gt>bufend
+Exact version of acceptance unclear, but no later than Perl 5.18.
 
-=item PL_parser-E<gt>bufptr
+=item C<(?{code})> and C<(??{ code })>
 
-=item PL_parser-E<gt>linestart
+Introduced in Perl 5.6.0
 
-=item PL_parser-E<gt>linestr
+Accepted in Perl 5.20.0
 
-=item Perl_signbit
+See also L<perlre>
 
-=item pad_findmy
+=item Linux abstract Unix domain sockets
 
-=item sv_utf8_decode
+Introduced in Perl 5.9.2
 
-=item sv_utf8_downgrade
+Accepted before Perl 5.20.0.  The Socket library is now primarily maintained
+on CPAN, rather than in the perl core.
 
-=item bytes_from_utf8
+See also L<Socket>
 
-=item bytes_to_utf8
+=item Lvalue subroutines
 
-=item utf8_to_bytes
+Introduced in Perl 5.6.0
 
-=item DB module
+Accepted in Perl 5.20.0
 
-Introduced in Perl 5.6.0
+See also L<perlsub>
 
-See also L<perldebug>, L<perldebtut>
+=item Backtracking control verbs
 
-=item The pseudo-hash data type
+C<(*ACCEPT)>
 
-Introduced in Perl 5.6.0
+Introduced in Perl 5.10
 
-=item Lvalue subroutines
+Accepted in Perl 5.20.0
 
-Introduced in Perl 5.6.0
+=item The <:pop> IO pseudolayer
 
-See also L<perlsub>
+See also L<perlrun>
 
-=item There is an C<installhtml> target in the Makefile.
+Accepted in Perl 5.20.0
 
-=item Unicode in Perl on EBCDIC
+=item C<\s> in regexp matches vertical tab
 
-=item C<(?{code})>
+Accepted in Perl 5.22.0
 
-See also L<perlre>
+=item Postfix dereference syntax
 
-=item C<(??{ code })>
+Introduced in Perl 5.20.0
 
-See also L<perlre>
+Accepted in Perl 5.24.0
 
-=item Backtracking control verbs
+=item Lexical subroutines
 
-C<(*ACCEPT)>
+Introduced in Perl 5.18.0
 
-Introduced in: Perl 5.10
+Accepted in Perl 5.26.0
 
-See also: L<perlre/"Special Backtracking Control Verbs">
+=back
 
-=item Code expressions, conditional expressions, and independent expressions in regexes
+=head2 Removed features
 
-=item The C<\N> regex character class
+These features are no longer considered experimental and their functionality
+has disappeared. It's your own fault if you wrote production programs using
+these features after we explicitly told you not to (see L<perlpolicy>).
 
-The C<\N> character class, not to be confused with the named character
-sequence C<\N{NAME}>, denotes any non-newline character in a regular
-expression.
+=over 8
 
-Introduced in: Perl 5.12
+=item 5.005-style threading
 
-See also: 
+Introduced in Perl 5.005
 
-=item gv_try_downgrade
+Removed in Perl 5.10
 
-See also L<perlintern>
+=item perlcc
 
-=item Experimental Support for Sun Studio Compilers for Linux OS
+Introduced in Perl 5.005
 
-See also L<perllinux>
+Moved from Perl 5.9.0 to CPAN
 
-=item Pluggable keywords
+=item The pseudo-hash data type
 
-See L<perlapi/PL_keyword_plugin> for the mechanism.
+Introduced in Perl 5.6.0
 
-Introduced in: Perl 5.11.2
+Removed in Perl 5.9.0
 
-=back
+=item GetOpt::Long Options can now take multiple values at once (experimental)
 
-=head2 Accepted features
+C<Getopt::Long> upgraded to version 2.35
 
-These features were so wildly successful and played so well with others that
-we decided to remove their experimental status and admit them as full, stable
-features in the world of Perl, lavishing all the benefits and luxuries thereof. 
-They are also awarded +5 Stability and +3 Charisma.
+Removed in Perl 5.8.8
 
-=over 8
+=item Assertions
 
-=item (none yet identified)
+The C<-A> command line switch
 
-=back
+Introduced in Perl 5.9.0
 
-=head2 Removed features
+Removed in Perl 5.9.5
 
-These features are no longer considered experimental and their functionality
-has disappeared. It's your own fault if you wrote production programs using
-these features after we explicitly told you not to (see L<perlpolicy>).
+=item Test::Harness::Straps
 
-=over 8
+Moved from Perl 5.10.1 to CPAN
 
 =item C<legacy>
 
 The experimental C<legacy> pragma was swallowed by the C<feature> pragma.
 
-Introduced in: 5.11.2
+Introduced in Perl 5.11.2
+
+Removed in Perl 5.11.3
+
+=item Lexical C<$_>
+
+Using this feature triggered warnings in the category
+C<experimental::lexical_topic>.
 
-Removed in: 5.11.3
+Introduced in Perl 5.10.0
+
+Removed in Perl 5.24.0
+
+=item Array and hash container functions accept references
+
+Using this feature triggered warnings in the category
+C<experimental::autoderef>.
+
+Superseded by L</Postfix dereference syntax>.
+
+Introduced in Perl 5.14.0
+
+Removed in Perl 5.24.0
 
 =back
 
+=head1 SEE ALSO
+
+For a complete list of features check L<feature>.
+
 =head1 AUTHORS
 
 brian d foy C<< <brian.d.foy@gmail.com> >>
 
+SE<eacute>bastien Aperghis-Tramoni C<< <saper@cpan.org> >>
+
 =head1 COPYRIGHT
 
 Copyright 2010, brian d foy C<< <brian.d.foy@gmail.com> >>