Revision history for Perl extension Class-MOP.
0.35 Sat. Sept. 30, 2006
* scripts/class_browser.pl
- initial prototype of a class browser, more
on this to come. Comments and patches are
very much welcome.
* Class::MOP
- All Class::MOP::* accessors are no longer
re-generated in the bootstrap, instead
they are aliased from the originals
- fixed tests to reflect
- added Class::MOP::Method (and its subclasses)
to the bootstrap
- adjusted tests for this
- added the Class::MOP::Instance attributes
to the bootstrap
* Class::MOP::Method
*** API CHANGE ***
- methods are no longer blessed CODE refs
but are actual objects which can be CODE-ified
- adjusted tests to compensate
- adjusted docs for this
* Class::MOP::Class
- changed how methods are dealt with to
encapsulate most of the work into the
&get_method_map method
- made several adjustments for the change
in Class::MOP::Method
- &add_attribute now checks if you are adding
a duplicate name, and properly removes the
old one before installing the new one
- added tests for this
- adjusted docs for this
* Class::MOP::Class::Immutable
- added caching of &get_method_map
- fixed issue with &get_package_symbol
- cleaned up the methods that die (patch by David Wheeler)
* Class::MOP::Package
- added filtering capabilities to
&list_all_package_symbols
0.34 Sat. Aug. 26, 2006
* Class::MOP::Class
- added the %:methods attribute, which like
the $:version and such just actually goes
to the symbol table to get it's stuff.
However, it makes the MOP more complete.
** API CHANGE **
- The &create method now requires that all
but the package name now is passed in as
named parameters. See docs for more info.
- updated docs and tests for this
* Class::MOP::Object
- added &dump method to easily Data::Dumper
an object
* Class::MOP
- cleaned up the initialization of attributes
which do not store things in the instance
- added the %:methods attribute definition to
the bootstrap
~ lots of misc. test cleanup
0.33 Sat. Aug. 19, 2006
* Class::MOP::Class
- moved the metaclass cache out of here
and it is now in Class::MOP itself.
* Class::MOP
- moved all the metaclass cache stuff here
- fixed all tests for this
* Class::MOP::Attribute
- reference values (other than CODE refs)
are no longer allowed for defaults
- added tests for this
* Class::MOP::Package
- fixed an issue with perl 5.8.1 and how it deals
with symbol tables. The namespace hash is now
always reloaded from the symbol table.
~ lots of misc. documentation cleanup
0.32 Sat. Aug. 12, 2006
+ added Class::MOP::Object so that the
metamodel is more complete (and closer
to what Perl 6 will probably be).
* Class::MOP::Package
- refactored entire class, this is now
the primary gateway between the metaclass
and the Perl 5 symbol table
- added many tests for this
- this class is now a subclass of
Class::MOP::Object
- added some tests to reflect this
* Class::MOP::Class
- refactored all symbol table access to
use Class::MOP::Package methods instead
* Class::MOP::Module
- adding the $:version attribute in the bootstrap
so that Module has a version as an attribute
- see comment in Class::MOP for details
- added the $:authority attribute to this module
as well as an &identifier method, to bring us
ever closer to Perl 6 goodness
- I have added $AUTHORITY to all the modules
- added tests for this
* Class::MOP::Instance
- added &deinitialize_slot for removing slots
from an instance
- added tests for this
* Class::MOP::Attribute
- added support for &deinitialize_slot for removing
slots from an instance
- added tests for this
0.31 Sat. July 15, 2006
* Class::MOP::Class
- added &find_method_by_name to locate a method
anywhere within the class hierarchy
* Class::MOP::Attribute
- added &set_value and &get_value for getting
the value of the attribute for a particular
instance.
0.30 Wed. July 5, 2006
---------------------------------------
This is the first version of Class::MOP
to introduce the immutable features which
will be used for optimizating the MOP.
This support should still be considered
experimental, but moving towards stability.
---------------------------------------
* Created Class::MOP::Class::Immutable
* Created the Class::MOP::Package and
Class::MOP::Module classes to more
closely conform to Perl 6's meta-model
* Class::MOP::Class
- now inherits from Class::MOP::Module
- several methods moved to ::Module and
::Package and now inherited
- added tests for this
* Class::MOP::Instance
- added an is_inlinable method to allow other
classes to check before they attempt to optimize.
- added an inline_create_instance to inline
instance creation (of course)
** API CHANGE **
- the Class::MOP::Class::*_package_variable
methods are all now methods of Class::MOP::Package
and called *_package_symbol instead. This is
because they are now more general purpose symbol
table manipulation methods.
0.29_02 Thurs. June 22, 2006
++ DEVELOPER RELEASE ++
* Class::MOP::Class
- small change in &create so that it behaves
properly when inherited
- small fix to &clone_instance
0.29_01 Fri. May 12, 2006
++ DEVELOPER RELEASE ++
- This release works in combination with
Moose 0.09_01, it is a developer release
because it introduces a new instance
sub-protocol and has not yet been
optimized.
* Class::MOP::Class
- anon-classes are now properly garbage collected
- added tests for this
- improved method modifier wrapping
* Class::MOP::Instance
- added new instance protocol
- added tests for this
- changed all relevant modules and examples
- Class::MOP::Class
- Class::MOP::Attribute
- examples/*
* metaclass
- you no longer need to specify the metaclass
itself, if it is not there, Class::MOP::Class
is just assumed
- updated tests for this
* examples/
- added ArrayBasedStorage example to show
instance storage using ARRAY refs instead of
HASH refs.
- added tests for this
- InsideOutClass is totally revised using the
new instance protocol
- added more tests for this
0.26 Mon. April 24, 2006
* Class::MOP::Class
- added find_attribute_by_name method
- added tests and docs for this
- some small optimizations
* Class::MOP::Attribute
- some small optimizations
0.25 Thurs. April 20, 2006
* Class::MOP::Class
- added create_anon_class for creating anonymous classes
- added tests for this
- added get_all_metaclasses, get_all_metaclass_names
and get_all_metaclass_instances method to allow
access to all the cached metaclass objects.
- attribute slot initialization is now the responsibility
of the attribute itself, and construct_instance now
delegates appropriately
* Class::MOP::Attribute
- attribute slot initialization is now the responsibility
of the attribute itself, so we added a method for it
called initialize_instance_slot
* examples/
- adjusted all the examples to use the new attribute
initialize_instance_slot method
0.24 Tues. April 11, 2006
* Class::MOP::Class
- cleaned up how the before/after/around method
modifiers get named with Sub::Name
0.23 Thurs. March 30, 2006
* Class::MOP::Class
- fixed the way attribute defaults are handled
during instance construction (bug found by chansen)
* Class::MOP::Attribute
- read-only accessors ('reader') will now die if
passed more than one argument (attempting to write
to them basically)
- added tests for this
- adjusted all /example files to comply
0.22 Mon. March 20, 2006
* Class::MOP::Class
- localized $@ in the *_package_variable functions
because otherwise, it does ugly things in Moose.
- added test case for this
0.21 Wed. March 15, 2006
* Class::MOP::Class
- fixed issue where metaclasses are reaped from
our cache in global destruction, and so are not
available in DESTORY calls
0.20 Thurs. March 2, 2006
- removed the dependency for Clone since
we no longer to deep-cloning by default.
* Class::MOP::Method
- added &package_name, &name and
&fully_qualified_name methods, some of
which were formerly private subs in
Class::MOP::Class
* Class::MOP::Method::Wrapped
- allows for a method to be wrapped with
before, after and around modifiers
- added tests and docs for this feature
* Class::MOP::Class
- improved &get_package_symbol
- &version and &superclasses now use it
- methods are now blessed into Class::MOP::Method
whenever possible
- added methods to install CLOS-style method modifiers
- &add_before_method_modifier
- &add_after_method_modifier
- &add_around_method_modifier
- added tests and docs for these
- added &find_next_method_by_name which finds the
equivalent of SUPER::method_name
0.12 Thurs. Feb 23, 2006
- reduced the dependency on B, no need to always
have the latest
* examples/
- added docs to the C3 method dispatch order test
- fixed missing Algorithm::C3 dependency by making
the test skip if it is not installed
0.11 Mon Feb. 20, 2006
* examples/
- added example of changing method dispatch order to C3
* Class::MOP::Class
- changed how clone_instance behaves, it now only does a
shallow clone (see docs for more details)
- added docs and tests
0.10 Tues Feb. 14, 2006
** This release was mostly about writing more tests and
cleaning out old and dusty code, the MOP should now
be considered "ready to use".
- adding more tests to get coverage up a little higher,
mostly testing errors and edge cases.
- test coverage is now at 99%
* Class::MOP
- no longer optionally exports to UNIVERSAL::meta or
creates a custom metaclass generator, use the
metaclass pragma instead.
* Class::MOP::Class
- fixed a number of minor issues which came up in the
error/edge-case tests
* Class::MOP::Attribute
- fixed a number of minor issues which came up in the
error/edge-case tests
* examples/
- fixing the AttributesWithHistory example, it was broken.
0.06 Thurs Feb. 9, 2006
* metaclass
- adding new metaclass pragma to make setting up the
metaclass a little more straightforward
* Class::MOP
- clean up bootstrapping to include more complete
attribute definitions for Class::MOP::Class and
Class::MOP::Attribute (accessors, readers, writers,
etc.) ... it is redundant, but is useful meta-info
to have around.
* Class::MOP::Class
- fixing minor meta-circularity issue with &meta, it
is now more useful for subclasses
- added &get_attribute_map as an accessor for the
hash of attribute meta objects
- &compute_all_applicable_attributes now just returns
the attribute meta-object, rather than the HASH ref
since all the same info can be gotten from the
attribute meta-object itself
- updated docs & tests to reflect
- added &clone_instance method which does a deep clone
of the instance structure created by &construct_instance
- added docs & tests for this
- added Clone as a dependency
- added &new_object and &clone_object convience methods to
return blessed new or cloned instances
- they handle Class::MOP::Class singletons correctly too
- added docs & tests for this
- cleaned up the &constuct_class_instance so that it behaves
more like &construct_instance (and managed the singletons too)
- added the &check_metaclass_compatibility method to make sure
that metaclasses are upward and downward compatible.
- added tests and docs for this
* examples/
- adjusting code to use the &Class::MOP::Class::meta
fix detailed above
- adjusting code to use the metaclass pragma
0.05 Sat Feb. 4, 2006
* Class::MOP::Class
- added the &attribute_metaclass and &method_metaclass
attributes which contain a metaclass name to use for
attributes/methods respectively
* Class::MOP
- bootstrap additional attributes for Class::MOP::Class
* examples/
- adjusted the example code and tests to use the new
&attribute_metaclass feature of Class::MOP::Class
- added new example:
- LazyClass
0.04 Fri Feb. 3, 2006
* Class::MOP::Class
- some documentation suggestions from #perl6
* Class::MOP::Attribute
- improved error messages
* examples/
- added new examples:
- AttributesWithHistory
- ClassEncapsultedAttributes
0.03 Fri Feb. 3, 2006
- converted to Module::Build instead of EU::MM
* Class::MOP::Attribute
- refactored method generation code
- attributes are now associated with class directly
* examples/
- refactored the InsideOut example to take advantage
of the Class::MOP::Attribute refactoring
- changed example files to .pod files and hide thier
package names from PAUSE (I don't want to own these
namespaces really, they are just examples)
0.02 Thurs Feb. 2, 2006
- moving examples from t/lib/* to examples/*
- adding POD documentation to the examples
0.01 Thurs Feb. 2, 2006
- Initial release