1f8e02f909cce8d02b6768e9a9621eb0a9de8732
[gitmo/Moose.git] / Changes
1 Revision history for Perl extension Moose
2
3 0.13
4     * Moose
5       - Removed the use of UNIVERSAL::require to be a better
6         symbol table citizen and remove a dependency.
7
8     * Moose::Cookbook
9       - added a FAQ and WTF files to document frequently 
10         asked questions and common problems
11         
12     * Moose::Meta::Role
13       - added basic support for runtime role composition
14         but this is still highly experimental
15         - added tests for this
16
17     * Moose::Meta::TypeCoercion
18       - properly capturing error when type constraint 
19         is not found
20
21     * Build.PL
22       - Scalar::Util 1.18 is bad on Win32, so temporarily
23         only require version 1.17 for Win32 and cygwin.
24
25 0.12 Sat. Sept. 1, 2006
26     * Moose::Cookbook
27       - Recipe5 (subtypes & coercion) has been written
28       
29     * Moose
30       - fixed "bad meta" error message to be more descriptive      
31       - fixed &unimport to not remove the &inner and &super  
32         keywords because we need to localize them.
33       - fixed number of spelling/grammer issues, thanks Theory :)
34       
35       **~~ experimental & undocumented feature ~~**
36       - added the method and self keywords, they are basically 
37         just sugar, and they may not stay around.
38         
39     * Moose::Object
40       - added &dump method to easily Data::Dumper 
41         an object
42         
43     * Moose::Meta::TypeConstraint
44       - added the &is_a_type_of method to check both the current
45         and the subtype of a method (similar to &isa with classes)
46
47     * Moose::Meta::Role
48       - this is now a subclass of Class::MOP::Module, and no longer
49         creates the _role_meta ugliness of before. 
50         - fixed tests to reflect this change
51     
52 0.11 Wed. July 12, 2006
53     * Moose
54       - added an &unimport method to remove all the keywords
55         that Moose will import, simply add 'no Moose' to the 
56         bottom of your class file. 
57         
58     * t/
59       - fixed some test failures caused by a forgotten test 
60         dependency.
61
62 0.10 Thurs. July 6, 2006
63     * Moose
64       - improved error message when loading modules so
65         it is less confusing when you load a role.
66       - added &calculate_all_roles method to 
67         Moose::Meta::Class and Moose::Meta::Role
68         
69     NOTE:
70     This module has been tested against Class::MOP 0.30
71     but it does not yet utilize the optimizations 
72     it makes available. Stay tuned for that ;)
73     
74 0.09_03 Fri. June 23, 2006
75     ++ DEVELOPER RELEASE ++
76     * Moose
77       - 'use strict' and 'use warnings' are no longer
78          needed in Moose classes, Moose itself will 
79          turn them on for you.
80          - added tests for this
81       - moved code from exported subs to private methods
82         in Moose::Meta::Class
83          
84     * Moose::Role
85       - as with Moose, strict and warnings are 
86         automatically turned on for you.
87          - added tests for this        
88         
89     * Moose::Meta::Role
90       - now handles an edge case for override errors
91         - added tests for this
92       - added some more edge case tests
93
94 0.09_02 Tues. May 16, 2006
95     ++ DEVELOPER RELEASE ++
96     * Moose
97       - added prototypes to the exported subs
98       - updated docs
99       
100     * Moose::Role
101       - added prototypes to the exported subs      
102       - updated docs
103       
104     * Moose::Util::TypeConstraints
105       - cleaned up prototypes for the subs      
106       - updated docs      
107
108 0.09_01 Fri. May 12, 2006
109     ++ DEVELOPER RELEASE ++
110       - This release works in combination with 
111         Class::MOP 0.29_01, it is a developer 
112         release because it uses the a new 
113         instance sub-protocol and a fairly
114         complete Role implementation. It has 
115         not yet been optimized, so it slower
116         the the previous CPAN version. This 
117         release also lacks good updated docs, 
118         the official release will have updated docs.
119
120     * Moose 
121       - refactored the keyword exports
122         - 'with' now checks Role validaity and 
123           accepts more than one Role at a time
124         - 'extends' makes metaclass adjustments as 
125            needed to ensure metaclass compatability
126           
127     * Moose::Role
128       - refactored the keyword exports
129         - 'with' now checks Role validaity and 
130           accepts more than one Role at a time
131           
132     * Moose::Util::TypeConstraints
133       - added the 'enum' keyword for simple 
134         string enumerations which can be used as 
135         type constraints
136         - see example of usage in t/202_example.t
137         
138     * Moose::Object
139       - more careful checking of params to new()
140       
141     * Moose::Meta::Role
142       - much work done on the role composition
143         - many new tests for conflict detection 
144           and composition edge cases
145         - not enough documentation, I suggest 
146           looking at the tests    
147       
148     * Moose::Meta::Instance
149       - added new Instance metaclass to support 
150         the new Class::MOP instance protocol
151         
152     * Moose::Meta::Class
153       - some small changes to support the new 
154         instance protocol
155       - some small additions to support Roles
156         
157     * Moose::Meta::Attribute
158       - some improvements to the accessor generation code
159         by nothingmuch
160       - some small changes to support the new 
161         instance protocol
162       - (still somewhat) experimental delegation support 
163         with the 'handles' option
164         - added several tests for this
165         - no docs for this yet
166
167 0.05 Thurs. April 27, 2006
168     * Moose
169       - keywords are now exported with Sub::Exporter
170         thanks to chansen for this commit
171       - has keyword now takes a 'metaclass' option 
172         to support custom attribute meta-classes 
173         on a per-attribute basis
174         - added tests for this  
175       - the 'has' keyword not accepts inherited slot
176         specifications (has '+foo'). This is still an 
177         experimental feature and probably not finished
178         see t/038_attribute_inherited_slot_specs.t for 
179         more details, or ask about it on #moose
180         - added tests for this
181         
182     * Moose::Role
183       - keywords are now exported with Sub::Exporter
184
185     * Moose::Utils::TypeConstraints
186       - reorganized the type constraint hierarchy, thanks
187         to nothingmuch and chansen for his help and advice 
188         on this
189         - added some tests for this
190       - keywords are now exported with Sub::Exporter
191         thanks to chansen for this commit
192
193     * Moose::Meta::Class
194       - due to changes in Class::MOP, we had to change
195         construct_instance (for the better)
196         
197     * Moose::Meta::Attribute
198       - due to changes in Class::MOP, we had to add the 
199         initialize_instance_slot method (it's a good thing)
200         
201     * Moose::Meta::TypeConstraint
202       - added type constraint unions 
203         - added tests for this
204       - added the is_subtype_of predicate method
205         - added tests for this
206
207 0.04 Sun. April 16th, 2006
208     * Moose::Role
209       - Roles can now consume other roles
210         - added tests for this
211       - Roles can specify required methods now with 
212         the requires() keyword
213         - added tests for this
214
215     * Moose::Meta::Role
216       - ripped out much of it's guts ,.. much cleaner now
217       - added required methods and correct handling of 
218         them in apply() for both classes and roles
219         - added tests for this
220       - no longer adds a does() method to consuming classes 
221         it relys on the one in Moose::Object
222       - added roles attribute and some methods to support 
223         roles consuming roles
224
225     * Moose::Meta::Attribute
226       - added support for triggers on attributes
227         - added tests for this
228       - added support for does option on an attribute 
229         - added tests for this
230         
231     * Moose::Meta::Class
232       - added support for attribute triggers in the 
233         object construction
234         - added tests for this
235     
236     * Moose
237       - Moose no longer creates a subtype for your class 
238         if a subtype of the same name already exists, this 
239         should DWIM in 99.9999% of all cases
240         
241     * Moose::Util::TypeConstraints
242       - fixed bug where incorrect subtype conflicts were 
243         being reported
244         - added test for this
245         
246     * Moose::Object
247       - this class can now be extended with 'use base' if
248         you need it, it properly loads the metaclass class now
249         - added test for this
250
251 0.03_02 Wed. April 12, 2006
252     * Moose
253       - you must now explictly use Moose::Util::TypeConstraints
254         it no longer gets exported for you automatically
255         
256     * Moose::Object
257       - new() now accepts hash-refs as well as key/value lists
258       - added does() method to check for Roles
259         - added tests for this
260
261     * Moose::Meta::Class
262       - added roles attribute along with the add_role() and 
263         does_role() methods
264         - added tests for this 
265
266     * Moose::Meta::Role
267       - now adds a does() method to consuming classes 
268         which tests the class's hierarchy for roles
269         - added tests for this
270
271 0.03_01 Mon. April 10, 2006
272     * Moose::Cookbook
273       - added new Role recipe (no content yet, only code)
274       
275     * Moose
276       - added 'with' keyword for Role support
277         - added test and docs for this
278       - fixed subtype quoting bug
279         - added test for this 
280
281     * Moose::Role
282       - Roles for Moose
283         - added test and docs
284
285     * Moose::Util::TypeConstraints
286       - added the message keyword to add custom
287         error messages to type constraints        
288       
289     * Moose::Meta::Role
290       - the meta role to support Moose::Role
291         - added tests and docs
292         
293     * Moose::Meta::Class
294       - moved a number of things from Moose.pm 
295         to here, they should have been here 
296         in the first place
297
298     * Moose::Meta::Attribute
299       - moved the attribute option macros here
300         instead of putting them in Moose.pm
301
302     * Moose::Meta::TypeConstraint
303       - added the message attributes and the 
304         validate method
305         - added tests and docs for this
306
307 0.03 Thurs. March 30, 2006
308     * Moose::Cookbook
309       - added the Moose::Cookbook with 5 recipes, 
310         describing all the stuff Moose can do.
311
312     * Moose
313       - fixed an issue with &extends super class loading
314         it now captures errors and deals with inline 
315         packages correctly (bug found by mst, solution 
316         stolen from alias)
317       - added super/override & inner/augment features
318         - added tests and docs for these
319     
320     * Moose::Object
321       - BUILDALL now takes a reference of the %params 
322         that are passed to &new, and passes that to 
323         each BUILD as well.
324         
325     * Moose::Util::TypeConstraints
326       - Type constraints now survive runtime reloading
327         - added test for this
328
329         * Moose::Meta::Class
330           - fixed the way attribute defaults are handled 
331             during instance construction (bug found by chansen)
332
333     * Moose::Meta::Attribute
334       - read-only attributes now actually enforce their
335         read-only-ness (this corrected in Class::MOP as 
336         well)
337
338 0.02 Tues. March 21, 2006
339     * Moose
340       - many more tests, fixing some bugs and  
341         edge cases
342       - &extends now loads the base module with
343         UNIVERSAL::require 
344         - added UNIVERSAL::require to the 
345           dependencies list
346       ** API CHANGES **
347       - each new Moose class will also create 
348         and register a subtype of Object which 
349         correspond to the new Moose class.      
350       - the 'isa' option in &has now only 
351         accepts strings, and will DWIM in 
352         almost all cases
353     
354     * Moose::Util::TypeConstraints
355       - added type coercion features
356         - added tests for this
357         - added support for this in attributes 
358           and instance construction
359       ** API CHANGES **
360       - type construction no longer creates a 
361         function, it registers the type instead.
362         - added several functions to get the 
363           registered types 
364
365     * Moose::Object
366       - BUILDALL and DEMOLISHALL were broken 
367         because of a mis-named hash key, Whoops :)
368     
369     * Moose::Meta::Attribute
370       - adding support for coercion in the
371         autogenerated accessors
372         
373     * Moose::Meta::Class
374       - adding support for coercion in the
375         instance construction  
376
377     * Moose::Meta::TypeConstraint
378     * Moose::Meta::TypeCoercion
379           - type constraints and coercions are now 
380             full fledges meta-objects
381
382 0.01 Wed. March 15, 2006
383     - Moooooooooooooooooose!!!