This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Bump version to 5.33.5
[perl5.git] / lib / feature.pm
index b5ee2ec..7c60f1d 100644 (file)
@@ -5,34 +5,35 @@
 
 package feature;
 
-our $VERSION = '1.60';
+our $VERSION = '1.61';
 
 our %feature = (
-    fc              => 'feature_fc',
-    isa             => 'feature_isa',
-    say             => 'feature_say',
-    state           => 'feature_state',
-    switch          => 'feature_switch',
-    bitwise         => 'feature_bitwise',
-    indirect        => 'feature_indirect',
-    evalbytes       => 'feature_evalbytes',
-    signatures      => 'feature_signatures',
-    current_sub     => 'feature___SUB__',
-    refaliasing     => 'feature_refaliasing',
-    postderef_qq    => 'feature_postderef_qq',
-    unicode_eval    => 'feature_unieval',
-    declared_refs   => 'feature_myref',
-    unicode_strings => 'feature_unicode',
+    fc               => 'feature_fc',
+    isa              => 'feature_isa',
+    say              => 'feature_say',
+    state            => 'feature_state',
+    switch           => 'feature_switch',
+    bitwise          => 'feature_bitwise',
+    indirect         => 'feature_indirect',
+    evalbytes        => 'feature_evalbytes',
+    signatures       => 'feature_signatures',
+    current_sub      => 'feature___SUB__',
+    refaliasing      => 'feature_refaliasing',
+    postderef_qq     => 'feature_postderef_qq',
+    unicode_eval     => 'feature_unieval',
+    declared_refs    => 'feature_myref',
+    unicode_strings  => 'feature_unicode',
+    multidimensional => 'feature_multidimensional',
 );
 
 our %feature_bundle = (
-    "5.10"    => [qw(indirect say state switch)],
-    "5.11"    => [qw(indirect say state switch unicode_strings)],
-    "5.15"    => [qw(current_sub evalbytes fc indirect say state switch unicode_eval unicode_strings)],
-    "5.23"    => [qw(current_sub evalbytes fc indirect postderef_qq say state switch unicode_eval unicode_strings)],
-    "5.27"    => [qw(bitwise current_sub evalbytes fc indirect postderef_qq say state switch unicode_eval unicode_strings)],
-    "all"     => [qw(bitwise current_sub declared_refs evalbytes fc indirect isa postderef_qq refaliasing say signatures state switch unicode_eval unicode_strings)],
-    "default" => [qw(indirect)],
+    "5.10"    => [qw(indirect multidimensional say state switch)],
+    "5.11"    => [qw(indirect multidimensional say state switch unicode_strings)],
+    "5.15"    => [qw(current_sub evalbytes fc indirect multidimensional say state switch unicode_eval unicode_strings)],
+    "5.23"    => [qw(current_sub evalbytes fc indirect multidimensional postderef_qq say state switch unicode_eval unicode_strings)],
+    "5.27"    => [qw(bitwise current_sub evalbytes fc indirect multidimensional postderef_qq say state switch unicode_eval unicode_strings)],
+    "all"     => [qw(bitwise current_sub declared_refs evalbytes fc indirect isa multidimensional postderef_qq refaliasing say signatures state switch unicode_eval unicode_strings)],
+    "default" => [qw(indirect multidimensional)],
 );
 
 $feature_bundle{"5.12"} = $feature_bundle{"5.11"};
@@ -137,7 +138,7 @@ disable I<all> features (an unusual request!) use C<no feature ':all'>.
 
 =head2 The 'say' feature
 
-C<use feature 'say'> tells the compiler to enable the Perl 6 style
+C<use feature 'say'> tells the compiler to enable the Raku-inspired
 C<say> function.
 
 See L<perlfunc/say> for details.
@@ -161,7 +162,7 @@ explicitly disabled the warning:
 
     no warnings "experimental::smartmatch";
 
-C<use feature 'switch'> tells the compiler to enable the Perl 6
+C<use feature 'switch'> tells the compiler to enable the Raku
 given/when construct.
 
 See L<perlsyn/"Switch Statements"> for details.
@@ -374,6 +375,23 @@ previous versions, it was simply on all the time.  To disallow (or
 warn on) indirect object syntax on older Perls, see the L<indirect>
 CPAN module.
 
+=head2 The 'multidimensional' feature
+
+This feature enables multidimensional array emulation, a perl 4 (or
+earlier) feature that was used to emulate multidimensional arrays with
+hashes.  This works by converting code like C<< $foo{$x, y} >> into
+C<< $foo{join($;, $x, $y} >>.  It is enabled by default, but can be
+turned off to disable multidimensional array emulation.
+
+When this feature is disabled the syntax that is normally replaced
+will report a compilation error.
+
+This feature is available under this name from Perl 5.34 onwards. In
+previous versions, it was simply on all the time.
+
+You can use the L<multidimensional> module on CPAN to disable
+multidimensional array emulation for older versions of Perl.
+
 =head1 FEATURE BUNDLES
 
 It's possible to load multiple features together, using
@@ -386,49 +404,55 @@ The following feature bundles are available:
 
   bundle    features included
   --------- -----------------
-  :default  indirect
+  :default  indirect multidimensional
 
-  :5.10     indirect say state switch
+  :5.10     indirect multidimensional say state switch
 
-  :5.12     indirect say state switch unicode_strings
+  :5.12     indirect multidimensional say state switch
+            unicode_strings
 
-  :5.14     indirect say state switch unicode_strings
+  :5.14     indirect multidimensional say state switch
+            unicode_strings
 
-  :5.16     current_sub evalbytes fc indirect say state
-            switch unicode_eval unicode_strings
+  :5.16     current_sub evalbytes fc indirect
+            multidimensional say state switch
+            unicode_eval unicode_strings
 
-  :5.18     current_sub evalbytes fc indirect say state
-            switch unicode_eval unicode_strings
+  :5.18     current_sub evalbytes fc indirect
+            multidimensional say state switch
+            unicode_eval unicode_strings
 
-  :5.20     current_sub evalbytes fc indirect say state
-            switch unicode_eval unicode_strings
+  :5.20     current_sub evalbytes fc indirect
+            multidimensional say state switch
+            unicode_eval unicode_strings
 
-  :5.22     current_sub evalbytes fc indirect say state
-            switch unicode_eval unicode_strings
+  :5.22     current_sub evalbytes fc indirect
+            multidimensional say state switch
+            unicode_eval unicode_strings
 
   :5.24     current_sub evalbytes fc indirect
-            postderef_qq say state switch unicode_eval
-            unicode_strings
+            multidimensional postderef_qq say state
+            switch unicode_eval unicode_strings
 
   :5.26     current_sub evalbytes fc indirect
-            postderef_qq say state switch unicode_eval
-            unicode_strings
+            multidimensional postderef_qq say state
+            switch unicode_eval unicode_strings
 
   :5.28     bitwise current_sub evalbytes fc indirect
-            postderef_qq say state switch unicode_eval
-            unicode_strings
+            multidimensional postderef_qq say state
+            switch unicode_eval unicode_strings
 
   :5.30     bitwise current_sub evalbytes fc indirect
-            postderef_qq say state switch unicode_eval
-            unicode_strings
+            multidimensional postderef_qq say state
+            switch unicode_eval unicode_strings
 
   :5.32     bitwise current_sub evalbytes fc indirect
-            postderef_qq say state switch unicode_eval
-            unicode_strings
+            multidimensional postderef_qq say state
+            switch unicode_eval unicode_strings
 
   :5.34     bitwise current_sub evalbytes fc indirect
-            postderef_qq say state switch unicode_eval
-            unicode_strings
+            multidimensional postderef_qq say state
+            switch unicode_eval unicode_strings
 
 The C<:default> bundle represents the feature set that is enabled before
 any C<use feature> or C<no feature> declaration.