Checking in changes prior to tagging of version 0.68.
[gitmo/Mouse.git] / lib / Mouse / Spec.pm
1 package Mouse::Spec;
2 use strict;
3 use warnings;
4
5 our $VERSION = '0.68';
6
7 our $MouseVersion = $VERSION;
8 our $MooseVersion = '1.10';
9
10 sub MouseVersion{ $MouseVersion }
11 sub MooseVersion{ $MooseVersion }
12
13 1;
14 __END__
15
16 =head1 NAME
17
18 Mouse::Spec - To what extent Mouse is compatible with Moose
19
20 =head1 VERSION
21
22 This document describes Mouse version 0.68
23
24 =head1 SYNOPSIS
25
26     use Mouse::Spec;
27
28     printf "Mouse/%s is compatible with Moose/%s\n",
29         Mouse::Spec->MouseVersion, Mouse::Spec->MooseVersion;
30
31 =head1 DESCRIPTION
32
33 Mouse is a subset of Moose. This document describes to what extend Mouse is
34 compatible (and incompatible) with Moose.
35
36 =head2 Compatibility with Moose
37
38 The sugary API is highly compatible with Moose. Methods which have the
39 same name as Moose's are expected to be compatible with Moose's.
40
41 =head2 Incompatibility with Moose
42
43 =head3 Meta object protocols
44
45 Meta object protocols are a subset of the counterpart of Moose.
46 Their methods which have the same name as Moose's are expected to be
47 compatible with Moose's. Feel free to use these methods even if they
48 are not documented.
49
50 However, meta object protocols in Mouse have no attributes by default,
51 so C<< $metaclass->meta->make_immutable() >> will not work as you expect.
52 B<Don not make metaclasses immutable>.
53
54 =head3 Mouse::Meta::Instance
55
56 Meta instance mechanism is not implemented.
57
58 =head3 Role exclusion
59
60 Role exclusion, C<exclude()>, is not implemented.
61
62 =head3 -metaclass in Mouse::Exporter
63
64 C<< use Mouse -metaclass => ... >> are not implemented.
65 Use C<< use Mouse -traits => ... >> instead.
66
67 =head3 Mouse::Meta::Attribute::Native
68
69 Native traits are not supported directly, but C<MouseX::NativeTraits> is
70 available on CPAN. Once you have installed it, you can use it as the same way
71 in Moose. That is, native traits are automatically loaded by Mouse.
72
73 See L<MouseX::NativeTraits> for details.
74
75 =head2 Notes about Moose::Cookbook
76
77 Many recipes in L<Moose::Cookbook> fit L<Mouse>, including:
78
79 =over 4
80
81 =item *
82
83 L<Moose::Cookbook::Basics::Recipe1> - The (always classic) B<Point> example
84
85 =item *
86
87 L<Moose::Cookbook::Basics::Recipe2> - A simple B<BankAccount> example
88
89 =item *
90
91 L<Moose::Cookbook::Basics::Recipe3> - A lazy B<BinaryTree> example
92
93 =item *
94
95 L<Moose::Cookbook::Basics::Recipe4> - Subtypes, and modeling a simple B<Company> class hierarchy
96
97 =item *
98
99 L<Moose::Cookbook::Basics::Recipe5> - More subtypes, coercion in a B<Request> class
100
101 =item *
102
103 L<Moose::Cookbook::Basics::Recipe6> - The augment/inner example
104
105 =item *
106
107 L<Moose::Cookbook::Basics::Recipe7> - Making Moose fast with immutable
108
109 =item *
110
111 L<Moose::Cookbook::Basics::Recipe8> - Builder methods and lazy_build
112
113 =item *
114
115 L<Moose::Cookbook::Basics::Recipe9> - Operator overloading, subtypes, and coercion
116
117 =item *
118
119 L<Moose::Cookbook::Basics::Recipe10> - Using BUILDARGS and BUILD to hook into object construction
120
121 =item *
122
123 L<Moose::Cookbook::Roles::Recipe1> - The Moose::Role example
124
125 =item *
126
127 L<Moose::Cookbook::Roles::Recipe2> - Advanced Role Composition - method exclusion and aliasing
128
129 =item *
130
131 L<Moose::Cookbook::Roles::Recipe3> - Applying a role to an object instance
132
133 =item *
134
135 L<Moose::Cookbook::Meta::Recipe2> - A meta-attribute, attributes with labels
136
137 =item *
138
139 L<Moose::Cookbook::Meta::Recipe3> - Labels implemented via attribute traits
140
141 =item *
142
143 L<Moose::Cookbook::Extending::Recipe3> - Providing an alternate base object class
144
145 =back
146
147 =head1 SEE ALSO
148
149 L<Mouse>
150
151 L<Moose>
152
153 L<Moose::Manual>
154
155 L<Moose::Cookbook>
156
157 =cut
158