10cdace10069fb115e1a4c3fb0bf0df543ef6870
[gitmo/Moose.git] / Changes
1 Revision history for Perl extension Moose
2
3 0.18
4     
5
6 0.18_001
7     !! You must have Class::MOP 0.37_001  !!
8     !! for this developer release to work !!
9
10     Lots of changes really, too numerous to mention now,
11     I need to have people test/fiddle with this first.
12
13 0.17 Tues. Nov. 14, 2006
14     * Moose::Meta::Method::Accessor
15       - bugfix for read-only accessors which 
16         are have a type constraint and lazy.
17         Thanks to chansen for finding it.
18
19 0.16 Tues. Nov. 14, 2006
20     ++ NOTE ++
21     There are some speed improvements in this release, 
22     but they are only the begining, so stay tuned.
23     
24     * Moose::Object
25       - BUILDALL and DEMOLISHALL no longer get 
26         called unless they actually need to be.
27         This gave us a signifigant speed boost
28         for the cases when there is no BUILD or 
29         DEMOLISH method present.
30         
31     * Moose::Util::TypeConstraints
32     * Moose::Meta::TypeConstraint
33       - added an 'optimize_as' option to the 
34         type constraint, which allows for a
35         hand optimized version of the type 
36         constraint to be used when possible.
37       - Any internally created type constraints
38         now provide an optimized version as well.
39
40 0.15 Sun. Nov. 5, 2006
41     ++ NOTE ++
42     This version of Moose *must* have Class::MOP 0.36 in order 
43     to work correctly. A number of small internal tweaks have 
44     been made in order to be compatible with that release.
45
46     * Moose::Util::TypeConstraints
47       - added &unimport so that you can clean out 
48         your class namespace of these exported 
49         keywords
50     
51     * Moose::Meta::Class
52       - fixed minor issue which occasionally 
53         comes up during global destruction 
54         (thanks omega)
55       - moved Moose::Meta::Method::Overriden into 
56         its own file.
57       
58     * Moose::Meta::Role      
59       - moved Moose::Meta::Role::Method into 
60         its own file.
61               
62     * Moose::Meta::Attribute
63       - changed how we do type checks so that 
64         we reduce the overall cost, but still 
65         retain correctness.
66        *** API CHANGE ***
67       - moved accessor generation methods to 
68         Moose::Meta::Method::Accessor to 
69         conform to the API changes from 
70         Class::MOP 0.36
71           
72     * Moose::Meta::TypeConstraint
73       - changed how constraints are compiled
74         so that we do less recursion and more
75         iteration. This makes the type check 
76         faster :)
77       - moved Moose::Meta::TypeConstraint::Union
78         into its own file
79     
80     * Moose::Meta::Method::Accessor
81       - created this from methods formerly found in 
82         Moose::Meta::Attribute
83     
84     * Moose::Meta::Role::Method
85       - moved this from Moose::Meta::Role
86           
87     * Moose::Meta::Method::Overriden
88       - moved this from Moose::Meta::Class
89       
90     * Moose::Meta::TypeConstraint::Union
91       - moved this from Moose::Meta::TypeConstraint
92
93 0.14 Mon. Oct. 9, 2006
94
95     * Moose::Meta::Attribute
96       - fixed lazy attributes which were not getting 
97         checked with the type constraint (thanks ashley)
98         - added tests for this
99       - removed the over-enthusiastic DWIMery of the 
100         automatic ArrayRef and HashRef defaults, it 
101         broke predicates in an ugly way.
102         - removed tests for this
103
104 0.13 Sat. Sept. 30, 2006
105     ++ NOTE ++
106     This version of Moose *must* have Class::MOP 0.35 in order 
107     to work correctly. A number of small internal tweaks have 
108     been made in order to be compatible with that release.
109
110     * Moose
111       - Removed the use of UNIVERSAL::require to be a better
112         symbol table citizen and remove a dependency 
113         (thanks Adam Kennedy)
114
115       **~~ removed experimental & undocumented feature ~~**
116       - commented out the 'method' and 'self' keywords, see the 
117         comments for more info.
118
119     * Moose::Cookbook
120       - added a FAQ and WTF files to document frequently 
121         asked questions and common problems
122         
123     * Moose::Util::TypeConstraints
124       - added GlobRef and FileHandle type constraint
125         - added tests for this
126         
127     * Moose::Meta::Attribute
128       - if your attribute 'isa' ArrayRef of HashRef, and you have
129         not explicitly set a default, then make the default DWIM.
130         This will also work for subtypes of ArrayRef and HashRef 
131         as well.
132       - you can now auto-deref subtypes of ArrayRef or HashRef too.
133         - new test added for this (thanks to ashley)
134         
135     * Moose::Meta::Role
136       - added basic support for runtime role composition
137         but this is still *highly experimental*, so feedback 
138         is much appreciated :)
139         - added tests for this
140
141     * Moose::Meta::TypeConstraint
142       - the type constraint now handles the coercion process
143         through delegation, this is to support the coercion 
144         of unions
145         
146     * Moose::Meta::TypeConstraint::Union
147       - it is now possible for coercions to be performed 
148         on a type union
149         - added tests for this (thanks to konobi)
150
151     * Moose::Meta::TypeCoercion
152       - properly capturing error when type constraint 
153         is not found
154
155     * Build.PL
156       - Scalar::Util 1.18 is bad on Win32, so temporarily
157         only require version 1.17 for Win32 and cygwin.
158         (thanks Adam Kennedy)        
159
160 0.12 Sat. Sept. 1, 2006
161     * Moose::Cookbook
162       - Recipe5 (subtypes & coercion) has been written
163       
164     * Moose
165       - fixed "bad meta" error message to be more descriptive      
166       - fixed &unimport to not remove the &inner and &super  
167         keywords because we need to localize them.
168       - fixed number of spelling/grammer issues, thanks Theory :)
169       
170       **~~ experimental & undocumented feature ~~**
171       - added the method and self keywords, they are basically 
172         just sugar, and they may not stay around.
173         
174     * Moose::Object
175       - added &dump method to easily Data::Dumper 
176         an object
177         
178     * Moose::Meta::TypeConstraint
179       - added the &is_a_type_of method to check both the current
180         and the subtype of a method (similar to &isa with classes)
181
182     * Moose::Meta::Role
183       - this is now a subclass of Class::MOP::Module, and no longer
184         creates the _role_meta ugliness of before. 
185         - fixed tests to reflect this change
186     
187 0.11 Wed. July 12, 2006
188     * Moose
189       - added an &unimport method to remove all the keywords
190         that Moose will import, simply add 'no Moose' to the 
191         bottom of your class file. 
192         
193     * t/
194       - fixed some test failures caused by a forgotten test 
195         dependency.
196
197 0.10 Thurs. July 6, 2006
198     * Moose
199       - improved error message when loading modules so
200         it is less confusing when you load a role.
201       - added &calculate_all_roles method to 
202         Moose::Meta::Class and Moose::Meta::Role
203         
204     NOTE:
205     This module has been tested against Class::MOP 0.30
206     but it does not yet utilize the optimizations 
207     it makes available. Stay tuned for that ;)
208     
209 0.09_03 Fri. June 23, 2006
210     ++ DEVELOPER RELEASE ++
211     * Moose
212       - 'use strict' and 'use warnings' are no longer
213          needed in Moose classes, Moose itself will 
214          turn them on for you.
215          - added tests for this
216       - moved code from exported subs to private methods
217         in Moose::Meta::Class
218          
219     * Moose::Role
220       - as with Moose, strict and warnings are 
221         automatically turned on for you.
222          - added tests for this        
223         
224     * Moose::Meta::Role
225       - now handles an edge case for override errors
226         - added tests for this
227       - added some more edge case tests
228
229 0.09_02 Tues. May 16, 2006
230     ++ DEVELOPER RELEASE ++
231     * Moose
232       - added prototypes to the exported subs
233       - updated docs
234       
235     * Moose::Role
236       - added prototypes to the exported subs      
237       - updated docs
238       
239     * Moose::Util::TypeConstraints
240       - cleaned up prototypes for the subs      
241       - updated docs      
242
243 0.09_01 Fri. May 12, 2006
244     ++ DEVELOPER RELEASE ++
245       - This release works in combination with 
246         Class::MOP 0.29_01, it is a developer 
247         release because it uses the a new 
248         instance sub-protocol and a fairly
249         complete Role implementation. It has 
250         not yet been optimized, so it slower
251         the the previous CPAN version. This 
252         release also lacks good updated docs, 
253         the official release will have updated docs.
254
255     * Moose 
256       - refactored the keyword exports
257         - 'with' now checks Role validaity and 
258           accepts more than one Role at a time
259         - 'extends' makes metaclass adjustments as 
260            needed to ensure metaclass compatability
261           
262     * Moose::Role
263       - refactored the keyword exports
264         - 'with' now checks Role validaity and 
265           accepts more than one Role at a time
266           
267     * Moose::Util::TypeConstraints
268       - added the 'enum' keyword for simple 
269         string enumerations which can be used as 
270         type constraints
271         - see example of usage in t/202_example.t
272         
273     * Moose::Object
274       - more careful checking of params to new()
275       
276     * Moose::Meta::Role
277       - much work done on the role composition
278         - many new tests for conflict detection 
279           and composition edge cases
280         - not enough documentation, I suggest 
281           looking at the tests    
282       
283     * Moose::Meta::Instance
284       - added new Instance metaclass to support 
285         the new Class::MOP instance protocol
286         
287     * Moose::Meta::Class
288       - some small changes to support the new 
289         instance protocol
290       - some small additions to support Roles
291         
292     * Moose::Meta::Attribute
293       - some improvements to the accessor generation code
294         by nothingmuch
295       - some small changes to support the new 
296         instance protocol
297       - (still somewhat) experimental delegation support 
298         with the 'handles' option
299         - added several tests for this
300         - no docs for this yet
301
302 0.05 Thurs. April 27, 2006
303     * Moose
304       - keywords are now exported with Sub::Exporter
305         thanks to chansen for this commit
306       - has keyword now takes a 'metaclass' option 
307         to support custom attribute meta-classes 
308         on a per-attribute basis
309         - added tests for this  
310       - the 'has' keyword not accepts inherited slot
311         specifications (has '+foo'). This is still an 
312         experimental feature and probably not finished
313         see t/038_attribute_inherited_slot_specs.t for 
314         more details, or ask about it on #moose
315         - added tests for this
316         
317     * Moose::Role
318       - keywords are now exported with Sub::Exporter
319
320     * Moose::Utils::TypeConstraints
321       - reorganized the type constraint hierarchy, thanks
322         to nothingmuch and chansen for his help and advice 
323         on this
324         - added some tests for this
325       - keywords are now exported with Sub::Exporter
326         thanks to chansen for this commit
327
328     * Moose::Meta::Class
329       - due to changes in Class::MOP, we had to change
330         construct_instance (for the better)
331         
332     * Moose::Meta::Attribute
333       - due to changes in Class::MOP, we had to add the 
334         initialize_instance_slot method (it's a good thing)
335         
336     * Moose::Meta::TypeConstraint
337       - added type constraint unions 
338         - added tests for this
339       - added the is_subtype_of predicate method
340         - added tests for this
341
342 0.04 Sun. April 16th, 2006
343     * Moose::Role
344       - Roles can now consume other roles
345         - added tests for this
346       - Roles can specify required methods now with 
347         the requires() keyword
348         - added tests for this
349
350     * Moose::Meta::Role
351       - ripped out much of it's guts ,.. much cleaner now
352       - added required methods and correct handling of 
353         them in apply() for both classes and roles
354         - added tests for this
355       - no longer adds a does() method to consuming classes 
356         it relys on the one in Moose::Object
357       - added roles attribute and some methods to support 
358         roles consuming roles
359
360     * Moose::Meta::Attribute
361       - added support for triggers on attributes
362         - added tests for this
363       - added support for does option on an attribute 
364         - added tests for this
365         
366     * Moose::Meta::Class
367       - added support for attribute triggers in the 
368         object construction
369         - added tests for this
370     
371     * Moose
372       - Moose no longer creates a subtype for your class 
373         if a subtype of the same name already exists, this 
374         should DWIM in 99.9999% of all cases
375         
376     * Moose::Util::TypeConstraints
377       - fixed bug where incorrect subtype conflicts were 
378         being reported
379         - added test for this
380         
381     * Moose::Object
382       - this class can now be extended with 'use base' if
383         you need it, it properly loads the metaclass class now
384         - added test for this
385
386 0.03_02 Wed. April 12, 2006
387     * Moose
388       - you must now explictly use Moose::Util::TypeConstraints
389         it no longer gets exported for you automatically
390         
391     * Moose::Object
392       - new() now accepts hash-refs as well as key/value lists
393       - added does() method to check for Roles
394         - added tests for this
395
396     * Moose::Meta::Class
397       - added roles attribute along with the add_role() and 
398         does_role() methods
399         - added tests for this 
400
401     * Moose::Meta::Role
402       - now adds a does() method to consuming classes 
403         which tests the class's hierarchy for roles
404         - added tests for this
405
406 0.03_01 Mon. April 10, 2006
407     * Moose::Cookbook
408       - added new Role recipe (no content yet, only code)
409       
410     * Moose
411       - added 'with' keyword for Role support
412         - added test and docs for this
413       - fixed subtype quoting bug
414         - added test for this 
415
416     * Moose::Role
417       - Roles for Moose
418         - added test and docs
419
420     * Moose::Util::TypeConstraints
421       - added the message keyword to add custom
422         error messages to type constraints        
423       
424     * Moose::Meta::Role
425       - the meta role to support Moose::Role
426         - added tests and docs
427         
428     * Moose::Meta::Class
429       - moved a number of things from Moose.pm 
430         to here, they should have been here 
431         in the first place
432
433     * Moose::Meta::Attribute
434       - moved the attribute option macros here
435         instead of putting them in Moose.pm
436
437     * Moose::Meta::TypeConstraint
438       - added the message attributes and the 
439         validate method
440         - added tests and docs for this
441
442 0.03 Thurs. March 30, 2006
443     * Moose::Cookbook
444       - added the Moose::Cookbook with 5 recipes, 
445         describing all the stuff Moose can do.
446
447     * Moose
448       - fixed an issue with &extends super class loading
449         it now captures errors and deals with inline 
450         packages correctly (bug found by mst, solution 
451         stolen from alias)
452       - added super/override & inner/augment features
453         - added tests and docs for these
454     
455     * Moose::Object
456       - BUILDALL now takes a reference of the %params 
457         that are passed to &new, and passes that to 
458         each BUILD as well.
459         
460     * Moose::Util::TypeConstraints
461       - Type constraints now survive runtime reloading
462         - added test for this
463
464         * Moose::Meta::Class
465           - fixed the way attribute defaults are handled 
466             during instance construction (bug found by chansen)
467
468     * Moose::Meta::Attribute
469       - read-only attributes now actually enforce their
470         read-only-ness (this corrected in Class::MOP as 
471         well)
472
473 0.02 Tues. March 21, 2006
474     * Moose
475       - many more tests, fixing some bugs and  
476         edge cases
477       - &extends now loads the base module with
478         UNIVERSAL::require 
479         - added UNIVERSAL::require to the 
480           dependencies list
481       ** API CHANGES **
482       - each new Moose class will also create 
483         and register a subtype of Object which 
484         correspond to the new Moose class.      
485       - the 'isa' option in &has now only 
486         accepts strings, and will DWIM in 
487         almost all cases
488     
489     * Moose::Util::TypeConstraints
490       - added type coercion features
491         - added tests for this
492         - added support for this in attributes 
493           and instance construction
494       ** API CHANGES **
495       - type construction no longer creates a 
496         function, it registers the type instead.
497         - added several functions to get the 
498           registered types 
499
500     * Moose::Object
501       - BUILDALL and DEMOLISHALL were broken 
502         because of a mis-named hash key, Whoops :)
503     
504     * Moose::Meta::Attribute
505       - adding support for coercion in the
506         autogenerated accessors
507         
508     * Moose::Meta::Class
509       - adding support for coercion in the
510         instance construction  
511
512     * Moose::Meta::TypeConstraint
513     * Moose::Meta::TypeCoercion
514           - type constraints and coercions are now 
515             full fledges meta-objects
516
517 0.01 Wed. March 15, 2006
518     - Moooooooooooooooooose!!!