dependency on Class::Inspector
- Simplify superclass traversal done by the 'inherited' group type
- Fix incorrect quoting of unusual hash keys (fieldnames)
+ - Depend on newer bugfixed Class::XSAccessor 1.15
- Improve text of ro/wo violation exceptions
- Sanity-check accessor names for well-formedness
(qr/[A-Z_a-z][0-9A-Z_a-z]*/)
requires 'Sub::Name' => '0.05';
# when changing don't forget to adjust lib/Class/Accessor/Grouped.pm as well
- requires 'Class::XSAccessor' => '1.13'
+ requires 'Class::XSAccessor' => '1.15'
if $] > '5.008'; # CXSA does not work on 5.6
}
# when changing minimum version don't forget to adjust Makefile.PL as well
our $__minimum_xsa_version;
-BEGIN { $__minimum_xsa_version = '1.13' }
+BEGIN { $__minimum_xsa_version = '1.15' }
our $USE_XS;
# the unless defined is here so that we can override the value
Module::Runtime::require_module('Sub::Name')
} ? 0 : "$@" );
+ my $found_cxsa;
constant->import( NO_CXSA => ( !NO_SUBNAME() and eval {
- Module::Runtime::use_module('Class::XSAccessor' => $__minimum_xsa_version)
+ Module::Runtime::require_module('Class::XSAccessor');
+ $found_cxsa = Class::XSAccessor->VERSION;
+ Class::XSAccessor->VERSION($__minimum_xsa_version);
} ) ? 0 : "$@" );
+ if (NO_CXSA() and $found_cxsa and !$ENV{CAG_OLD_XS_NOWARN}) {
+ warn(
+ 'The installed version of Class::XSAccessor is too old '
+ . "(v$found_cxsa < v$__minimum_xsa_version). Please upgrade "
+ . "to instantly quadruple the performance of 'simple' accessors. "
+ . 'Set $ENV{CAG_OLD_XS_NOWARN} if you wish to disable this '
+ . "warning.\n"
+ );
+ }
+
constant->import( BROKEN_GOTO => ($] < '5.008009') ? 1 : 0 );
constant->import( UNSTABLE_DOLLARAT => ($] < '5.013002') ? 1 : 0 );
custom_field => "lr2'field",
},
fieldname_torture => {
- custom_field => join ('', map { chr($_) } (1..255) ), # FIXME after RT#80569 is fixed 0..255 should work
+ custom_field => join ('', map { chr($_) } (0..255) ),
is_xs => $use_xs,
},
};
custom_field => "lr2'field",
},
fieldname_torture => {
- custom_field => join ('', map { chr($_) } (1..255) ), # FIXME after RT#80569 is fixed 0..255 should work
+ custom_field => join ('', map { chr($_) } (0..255) ),
is_xs => $use_xs,
},
};
__PACKAGE__->mk_group_ro_accessors('simple', 'singlefield');
__PACKAGE__->mk_group_ro_accessors('multiple', qw/multiple1 multiple2/);
__PACKAGE__->mk_group_ro_accessors('listref', [qw/lr1name lr1;field/], [qw/lr2name lr2'field/]);
-__PACKAGE__->mk_group_ro_accessors('simple', [ fieldname_torture => join ('', map { chr($_) } (1..255) ) ]);
+__PACKAGE__->mk_group_ro_accessors('simple', [ fieldname_torture => join ('', map { chr($_) } (0..255) ) ]);
sub new {
return bless {}, shift;
__PACKAGE__->mk_group_wo_accessors('simple', 'singlefield');
__PACKAGE__->mk_group_wo_accessors('multiple', qw/multiple1 multiple2/);
__PACKAGE__->mk_group_wo_accessors('listref', [qw/lr1name lr1;field/], [qw/lr2name lr2'field/]);
-__PACKAGE__->mk_group_wo_accessors('simple', [ fieldname_torture => join ('', map { chr($_) } (1..255) ) ]);
+__PACKAGE__->mk_group_wo_accessors('simple', [ fieldname_torture => join ('', map { chr($_) } (0..255) ) ]);
sub new {
return bless {}, shift;