Checking in changes prior to tagging of version 0.40_06. Changelog diff is: 0.40_06
gfx [Mon, 16 Nov 2009 11:20:53 +0000 (20:20 +0900)]
diff --git a/Changes b/Changes
index 84d9e90..2156189 100644
--- a/Changes
+++ b/Changes
@@ -1,11 +1,12 @@
 Revision history for Mouse

 0.40_06
-    * Implement many in XS (gfx)
-
+    * Shipped with Module::Install::XSUtil 0.17 (gfx)
     * Mouse::Object
         - BUILDALL and DMELISHALL are no longer called by the default ctr/dtr,
-          because generated ctrs/dtrs have never call them (gfx)
+          because generated ctrs/dtrs have never call them anyway (gfx)
+        - new and DESTROY are now in XS (gfx)
+

 0.40_05 Mon Nov  2 11:59:01 2009
     * Shipped with Module::Install::XSUtil 0.16 (gfx)

23 files changed:
Changes
benchmarks/vs_caf.pl [new file with mode: 0644]
lib/Mouse.pm
lib/Mouse/Exporter.pm
lib/Mouse/Meta/Attribute.pm
lib/Mouse/Meta/Class.pm
lib/Mouse/Meta/Method.pm
lib/Mouse/Meta/Method/Accessor.pm
lib/Mouse/Meta/Method/Constructor.pm
lib/Mouse/Meta/Method/Delegation.pm
lib/Mouse/Meta/Method/Destructor.pm
lib/Mouse/Meta/Module.pm
lib/Mouse/Meta/Role.pm
lib/Mouse/Meta/Role/Composite.pm
lib/Mouse/Meta/Role/Method.pm
lib/Mouse/Meta/TypeConstraint.pm
lib/Mouse/Object.pm
lib/Mouse/PurePerl.pm
lib/Mouse/Role.pm
lib/Mouse/Spec.pm
lib/Mouse/Util.pm
lib/Mouse/Util/TypeConstraints.pm
lib/Mouse/XS.pod

diff --git a/Changes b/Changes
index 84d9e90..2156189 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,11 +1,12 @@
 Revision history for Mouse
 
 0.40_06
-    * Implement many in XS (gfx)
-
+    * Shipped with Module::Install::XSUtil 0.17 (gfx)
     * Mouse::Object
         - BUILDALL and DMELISHALL are no longer called by the default ctr/dtr,
-          because generated ctrs/dtrs have never call them (gfx)
+          because generated ctrs/dtrs have never call them anyway (gfx)
+        - new and DESTROY are now in XS (gfx)
+
 
 0.40_05 Mon Nov  2 11:59:01 2009
     * Shipped with Module::Install::XSUtil 0.16 (gfx)
diff --git a/benchmarks/vs_caf.pl b/benchmarks/vs_caf.pl
new file mode 100644 (file)
index 0000000..569b78f
--- /dev/null
@@ -0,0 +1,72 @@
+#!perl
+
+### MODULES
+
+
+{
+    package PlainMoose;
+    use Moose;
+    has foo => (is => 'rw');
+    __PACKAGE__->meta->make_immutable();
+}
+{
+    package PlainMouse;
+    use Mouse;
+    has foo => (is => 'rw');
+    __PACKAGE__->meta->make_immutable();
+}
+{
+    package ClassAccessorFast;
+    use warnings;
+    use strict;
+    use base 'Class::Accessor::Fast';
+    __PACKAGE__->mk_accessors(qw(foo));
+}
+
+use Benchmark qw(cmpthese);
+
+my $moose                = PlainMoose->new;
+my $mouse                = PlainMouse->new;
+my $caf                  = ClassAccessorFast->new;
+
+
+print "\nSETTING\n";
+cmpthese(-1, {
+    Moose                       => sub { $moose->foo(23) },
+    Mouse                       => sub { $mouse->foo(23) },
+    ClassAccessorFast           => sub { $caf->foo(23) },
+}, 'noc');
+
+print "\nGETTING\n";
+cmpthese(-1, {
+    Moose                       => sub { $moose->foo },
+    Mouse                       => sub { $mouse->foo },
+    ClassAccessorFast           => sub { $caf->foo },
+}, 'noc');
+
+my (@moose, @moose_immut, @mouse, @mouse_immut, @caf_stall);
+print "\nCREATION\n";
+cmpthese(1_000_000, {
+    Moose                       => sub { push @moose, PlainMoose->new(foo => 23) },
+    Mouse                       => sub { push @mouse, PlainMouse->new(foo => 23) },
+    ClassAccessorFast           => sub { push @caf_stall, ClassAccessorFast->new({foo => 23}) },
+}, 'noc');
+
+my ( $moose_idx, $mouse_idx, $caf_idx ) = ( 0, 0, 0, 0 );
+print "\nDESTRUCTION\n";
+cmpthese(1_000_000, {
+    Moose => sub {
+        $moose[$moose_idx] = undef;
+        $moose_idx++;
+    },
+    Mouse => sub {
+        $mouse[$mouse_idx] = undef;
+        $mouse_idx++;
+    },
+    ClassAccessorFast   => sub {
+        $caf_stall[$caf_idx] = undef;
+        $caf_idx++;
+    },
+}, 'noc');
+
+
index 0765630..04be220 100644 (file)
@@ -3,7 +3,7 @@ use 5.006_002;
 
 use Mouse::Exporter; # enables strict and warnings
 
-our $VERSION = '0.40_05';
+our $VERSION = '0.40_06';
 
 use Carp         qw(confess);
 use Scalar::Util qw(blessed);
@@ -160,7 +160,7 @@ Mouse - Moose minus the antlers
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 SYNOPSIS
 
index d2bf45e..18a3387 100644 (file)
@@ -258,7 +258,7 @@ Mouse::Exporter - make an import() and unimport() just like Mouse.pm
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 SYNOPSIS
 
index 2ac284a..c513a8d 100644 (file)
@@ -435,7 +435,7 @@ Mouse::Meta::Attribute - The Mouse attribute metaclass
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 METHODS
 
index 1aee61d..ae69e32 100644 (file)
@@ -410,7 +410,7 @@ Mouse::Meta::Class - The Mouse class metaclass
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 METHODS
 
index dd11d1f..561051a 100755 (executable)
@@ -39,7 +39,7 @@ Mouse::Meta::Method - A Mouse Method metaclass
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 SEE ALSO
 
index b05e267..a71266a 100755 (executable)
@@ -172,7 +172,7 @@ Mouse::Meta::Method::Accessor - A Mouse method generator for accessors
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 SEE ALSO
 
index 1f40a3c..2e848a7 100644 (file)
@@ -193,7 +193,7 @@ Mouse::Meta::Method::Constructor - A Mouse method generator for constructors
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 SEE ALSO
 
index 5877cf7..022cb98 100644 (file)
@@ -34,7 +34,7 @@ Mouse::Meta::Method::Delegation - A Mouse method generator for delegation method
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 SEE ALSO
 
index 5ffcd5c..f61e354 100644 (file)
@@ -53,7 +53,7 @@ Mouse::Meta::Method::Destructor - A Mouse method generator for destructors
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 SEE ALSO
 
index fd7d6d5..ab2fd6a 100755 (executable)
@@ -298,7 +298,7 @@ Mouse::Meta::Module - The base class for Mouse::Meta::Class and Mouse::Meta::Rol
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 SEE ALSO
 
index cd7fdd8..225ed0b 100644 (file)
@@ -330,7 +330,7 @@ Mouse::Meta::Role - The Mouse Role metaclass
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 SEE ALSO
 
index 51fb947..1eb91a7 100644 (file)
@@ -120,7 +120,7 @@ Mouse::Meta::Role::Composite - An object to represent the set of roles
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 SEE ALSO
 
index d74454a..b476751 100755 (executable)
@@ -20,7 +20,7 @@ Mouse::Meta::Role::Method - A Mouse Method metaclass for Roles
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 SEE ALSO
 
index 1e19143..a29edfe 100644 (file)
@@ -210,7 +210,7 @@ Mouse::Meta::TypeConstraint - The Mouse Type Constraint metaclass
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 DESCRIPTION
 
index 94a73d7..787cc17 100644 (file)
@@ -49,7 +49,7 @@ Mouse::Object - The base object for Mouse classes
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 METHODS
 
index dcac898..1ce720d 100644 (file)
@@ -477,7 +477,7 @@ Mouse::PurePerl - A Mouse guts in pure Perl
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 SEE ALSO
 
index 9148284..635c936 100644 (file)
@@ -1,7 +1,7 @@
 package Mouse::Role;
 use Mouse::Exporter; # enables strict and warnings
 
-our $VERSION = '0.40_05';
+our $VERSION = '0.40_06';
 
 use Carp         qw(confess);
 use Scalar::Util qw(blessed);
@@ -143,7 +143,7 @@ Mouse::Role - The Mouse Role
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 SYNOPSIS
 
index ac462aa..30a49ae 100644 (file)
@@ -2,7 +2,7 @@ package Mouse::Spec;
 use strict;
 use warnings;
 
-our $VERSION = '0.40_05';
+our $VERSION = '0.40_06';
 
 our $MouseVersion = $VERSION;
 our $MooseVersion = '0.90';
@@ -19,7 +19,7 @@ Mouse::Spec - To what extent Mouse is compatible with Moose
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 SYNOPSIS
 
index cf26fe3..4d15fb2 100644 (file)
@@ -5,7 +5,7 @@ BEGIN{
     # Because Mouse::Util is loaded first in all the Mouse sub-modules,
     # XS loader is placed here, not in Mouse.pm.
 
-    our $VERSION = '0.40_05';
+    our $VERSION = '0.40_06';
 
     my $xs = !(exists $INC{'Mouse/PurePerl.pm'} || $ENV{MOUSE_PUREPERL});
 
@@ -336,7 +336,7 @@ Mouse::Util - Features, with or without their dependencies
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 IMPLEMENTATIONS FOR
 
index df0b56a..b47a93b 100644 (file)
@@ -351,7 +351,7 @@ Mouse::Util::TypeConstraints - Type constraint system for Mouse
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head2 SYNOPSIS
 
index 32ad53a..f09fbd1 100644 (file)
@@ -5,7 +5,7 @@ Mouse::XS - A Mouse guts in XS
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_05
+This document describes Mouse version 0.40_06
 
 =head1 DESCRIPTION