Revision history for Perl extension Class-MOP.
-0.51
+0.71_02 Fri, December 5, 2008
+ * Class::MOP::Immutable
+ - Added a new attribute, inlined_constructor, which is true if
+ the constructor was inlined.
+ * Class::MOP::Package
+ - Make get_all_package_symbols return a hash ref in scalar
+ context and deprecate calling it in list context with a
+ warning. (Florian Ragwitz)
+ * MOP.xs
+ - Various improvements and refactoring, making things more robust and
+ easier to maintain. (Florian Ragwitz)
+
+0.71_01 Wed, December 3, 2008
+ * Class::MOP::Method
+ - Add an "execute" method to invoke the body so
+ we can avoid using the coderef overload (Sartak)
+ * Class::MOP::Immutable
+ - When we memoize methods, get their results lazily
+ to remove some compile-time cost (Sartak)
+ - Small speedup from eliminating several method
+ calls (Sartak)
+ * Class::MOP::Class
+ - Some small internal tweaks to try to reduce the number of
+ times we call get_method_map when bootstrapping the MOP. This
+ might make loading Class::MOP (and Moose) a little
+ faster. (Dave Rolsky)
+ - Implemented an optional XS version of get_method_map. Mostly
+ taken from a patch by Goro Fuji (rt.cpan.org #41080), with
+ help form Florian Ragwitz. (Dave Rolsky)
+ - Make the behaviour of of get_all_package_symbols (and
+ therefore get_method_map) consistent for stub methods. Report
+ and test by Goro Fuji (rt.cpan.org #41255). (Florian Ragwitz)
+
+0.71 Wed November 26, 2008
+ * Class::MOP::Class
+ * Class::MOP::Module
+ - Actual package creation has moved upward from
+ Class to Module so that Moose roles can share
+ the code (Sartak)
+
+0.70_01 Mon, November 19, 2008
+ * Class::MOP
+ - Fixes for failures with blead (Florian Ragwitz)
+ - Silenced compiler warnings (Florian Ragwitz)
+
+0.70 Fri, November 14, 2008
+ * Class::MOP
+ - Fixed an odd corner case where the XS version of
+ get_all_package_symbols could cause a segfault. This only
+ happened with inlined constants in Perl 5.10.0 (Florian
+ Ragwitz)
+
+0.69 Fri, November 7, 2008
+ * Class::MOP::Method::Wrapped
+ - Added introspection methods for method modifiers (Dave Rolsky)
+
+
+0.68 Fri October 24, 2008
+ * Class::MOP
+ - Make load_class require by file name instead of module name.
+ This stops confusing error messages when loading '__PACKAGE__'.
+ (Florian Ragwitz)
+ - Add load_one_class_of function to enable you to load one of a
+ list of classes, rather than having to call load_class multiple
+ times in an eval. (t0m)
+
+0.67 Tue October 14, 2008
+ * Class::MOP::Class
+ - Call a method on the class after setting the superclass list
+ so that we can get Perl to detect cycles before MRO::Compat
+ spirals into an infinite loop (sartak)
+ - Reported by Schwern, [rt.cpan.org #39001]
+ - In create(), pass unused options on to initialize()
+ - added test for this
+
+0.66 Sat September 20, 2008
+ !! This release has an incompatible change regarding !!
+ introspection of a class's method with Class::MOP::Class !!
+
+ * Tests and XS
+ - We (us maintainers) now run all tests with XS and then without
+ XS, which should help us catch skew between the XS/pure Perl
+ code. (Dave Rolsky)
+
+ * Class::MOP::Class
+ ! The alias_method method has been deprecated. It now simply
+ calls add_method instead. There is no distinction between
+ aliased methods and "real" methods.
+
+ This means that methods added via alias_method now show up as
+ part of the class's method list/map. This is a backwards
+ incompatible change, but seems unlikely to break any
+ code. Famous last words. (Dave Rolsky)
+
+ * Class::MOP::Class
+ - Fixed the spelling of "compatibility", but we still have a
+ "check_metaclass_compatability" method for backwards
+ compatibility.
+
+0.65 Mon September 1, 2008
+ For those not following the series of dev releases, the changes
+ from 0.64 from 0.65 can mostly be summed up as a lot performance
+ improvements by nothingmuch, including new optional XS versions of
+ some methods. Also, Class::MOP now works _without_ any XS modules,
+ for sad systems without a compiler.
+
+ * Class::MOP::Method
+ - Added name and package_name XS accessors, and make sure all
+ the XS and Perl versions work the same way. (Dave Rolsky)
+
+ * MOP.xs
+ - The XS versions of various methods just returned undef when
+ called class methods, rather than dying like the pure Perl
+ versions. (Dave Rolsky)
+
+0.64_07 Fri August 29, 2008
+ * Class::MOP
+ - Silenced warnings that managed to break Moose tests when XS
+ was loaded. (Dave Rolsky)
+ - Some XS versions of methods were ignored because of typos in
+ MOP.xs. (Dave Rolsky)
+
+0.64_06 Mon August 25, 2008
+ * Class::MOP (MOP.xs)
+ - Another MS VC++ fix, cannot declare a variable in the middle
+ of a scope (Taro Nishino).
+
+0.64_05 Sun August 24, 2008
+ * Class::MOP
+ - None of the dev releases actually loaded the XS properly, but
+ we silently fell back to the pure Perl version of the
+ code. (Dave Rolsky)
+
+ * Class::MOP (MOP.xs)
+ - Replaced some code that used functions not available on Visual
+ C++ with some Perl XS API bits (Dave Rolsky).
+
+0.64_04 Sat August 23, 2008
+ * Class::MOP::Class
+ - Workaround a bug in 5.8.1's goto sub (nothingmuch)
+
+ * pod.t and pod_coveraget.t
+ - These are no longer shipped with the tarball because of bogus
+ failures from CPAN testers. (Dave Rolsky)
+
+0.64_03 Thu August 21, 2008
+ * Class::MOP::Package
+ - Some (legit) code was misparsed by earlier 5.8.x
+ releases. (nothingmuch)
+
+ * Class::MOP
+ - Fix a constant in void context warning (nothingmuch)
+
+0.64_02 Thu August 21, 2008
+ * Makefile.PL and Class::MOP
+ - Explicitly require Perl 5.8.0+ (Dave Rolsky)
+
+ * Makefile.PL
+ - Add missing prereqs that got lost in the switch away from
+ Module::Install.
+
+ * Class::MOP::Instance
+ - New method - get_all_attributes (nothingmuch)
+
+0.64_01 Wed August 20, 2008
+ * Makefile.PL
+ - We now check to see if you have a compiler. If you don't, the
+ module installs without some XS bits, but will work the same
+ as with XS. This should make it easier to install on platforms
+ without a compiler (like Windows). (Dave Rolsky)
+
+ * many modules
+ - Perl 6 style attribute naming replaced with sane style ('methods', not
+ '%!methods'). These changes should not impact any existing API uses.
+ (nothingmuch).
+
+ * many modules
+ - Quite a number of optimizations based on profiling, including
+ allowing constructors to take hash references instead of
+ hashes, duplicating some frequently used code in XS, and
+ making constructors immutable. These changes should not impact
+ any existing API uses. (nothingmuch)
+
+ * Many modules
+ - Constructors now respect the meta attributes of their subclasses,
+ facilitating MOP extensibility. More related changes will happen in the
+ next several releases. (nothingmuch)
+
+ * Class::MOP::Class
+ - New method - get_all_methods, replaces the deprecated
+ compute_all_applicable_methods. get_all_attributes provided for
+ consistency (nothingmuch)
+ - New method - wrap_method was refactored out of get_method_map
+ (nothingmuch)
+ - New API for meta instance invalidation - invalidate_meta_instance,
+ invalidate_meta_instances, add_dependent_meta_instance,
+ remove_dependent_meta_instance, called automatically when attribute
+ definitions change and allows notification of dependent subclasses.
+ (nothingmuch)
+
+0.64 Sun August 3, 2008
+ * Class::MOP::Immutable
+ - fixing subtle edge case in immutable when you
+ call ->meta (stevan)
+ - clean up option processing (nothingmuch)
+
+ * Class::MOP::Instance
+ - inlined initialize slot didn't match
+ non-inlined (nothingmuch)
+
+0.63 Mon July 7, 2008
+ * Class::MOP
+ - load_class will initialize a metaclass even if
+ the class is already loaded (sartak)
+ - load_class now returns the metaclass instance
+ instead of just 1 (sartak)
+
+ * elsewhere
+ - better error messages (sartak and Dave Rolsky)
+
+0.62 Wed June 18, 2008
+ - in is_class_loaded, recognize scalar references (as opposed to globs) in
+ the symbol table as methods (these are optimized constant subs)
+
+0.61 Fri. June 13, 2008
+ - Okay, lets give this another try and see if PAUSE
+ recognizes it correct this time.
+
+0.60 Thurs. Jun 12, 2008
+ - Fixed a version number issue by bumping all modules
+ to 0.60.
+
+0.59 Thurs. Jun 12, 2008
+ !! Several fixes resulting in yet another 25-30% speedup !!
+
+ * Class::MOP::Class
+ - now stores the instance of the instance
+ metaclass to avoid needless recomputation
+ and deletes it when the cache is blown
+ - introduce methods to query Class::MOP::Class for
+ the options used to make it immutable as well as
+ the proper immutable transformer. (groditi)
+
+ * Class::MOP::Package
+ - {add, has, get, remove}_package_symbol all
+ now accept a HASH ref argument as well as the
+ string. All internal usages now use the HASH
+ ref version.
+
+ * Class::MOP
+ - MOP.xs does sanity checks on the coderef
+ to avoid a segfault
+ - is_class_loaded check now uses code that
+ was improved in Moose's ClassName type
+ check (Sartak)
+ - nonsensical (undef, empty, reference) class
+ names now throw a more direct error in
+ load_class (Sartak)
+ - tests for this and other aspects of
+ load_class (Sartak)
+
+ * Class::MOP
+ Class::MOP::Class
+ Class::MOP::Method
+ Class::MOP::Method::Wrapped
+ Class::MOP::Attribute
+ - switched usage of reftype to ref because
+ it is much faster
+
+0.58 Thurs. May 29, 2008
+ (late night release engineering)--
+
+ - fixing the version is META.yml, no functional
+ changes in this release
+
+0.57 Wed. May 28, 2008
+ !! Several speedups resulting in 20-25% speedups !!
+ || (thanks to konobi, groditi, mst & CataMoose) !!
+
+ * Class::MOP::Class
+ - made get_method_map use list_all_package_symbols
+ instead of manually grabbing each symbol
+ - streamlining &initialize somewhat, since it gets
+ called so much
+
+ * Class::MOP::Package
+ - made {get, has}_package_symbol not call
+ &namespace so much
+ - inlining a few calls to &name with
+ direct HASH access key access
+ - added get_all_package_symbols to fetch
+ a HASH of items based on a type filter
+ similar to list_all_package_symbols
+ - added tests for this
+
+ * Class::MOP::Method
+ Class::MOP::Method::Constructor
+ Class::MOP::Method::Generated
+ Class::MOP::Method::Accessor
+ - added more descriptive error message to help
+ keep people from wasting time tracking an error
+ that is easily fixed by upgrading.
+
+ * Class::MOP::Immutable
+ - Don't inline a destructor unless the user actually
+ needs one
+ - added tests for this
+
+0.56 Saturday, May 24, 2008
+ * Class::MOP
+ - we now get the &check_package_cache_flag
+ function from MRO::Compat
+ - All XS based functionality now has a
+ Pure Perl alternative
+ - the CLASS_MOP_NO_XS environment variable
+ can now be used to force non-XS versions
+ to always be used
+
+ * Class::MOP::Attribute
+ - add has_read_method and has_write_method
+ - get_{read,write}_method_ref now wraps the
+ anon-sub ref in the method metaclass when
+ possible
+ - added tests for this
+
+ * Class::MOP::Immutable
+ - added the ability to "wrap" methods when
+ making the class immutable
+
+ * Class::MOP::Class
+ - now handling the edge case of ->meta->identifier
+ dying by wrapping add_package_symbol to specifically
+ allow for it to work.
+ - added tests for this
+
+ * Class::MOP::Attribute
+ Class::MOP::Class
+ Class::MOP::Immutable
+ - any time a method meta object is constructed
+ we make sure to pass the correct package and
+ method name information
+
+ * Class::MOP::Method
+ Class::MOP::Method::Wrapped
+ Class::MOP::Method::Generated
+ Class::MOP::Method::Accessor
+ Class::MOP::Method::Consructor
+ - the &wrap constructor method now requires that a
+ 'package_name' and 'name' attribute are passed. This
+ is to help support the no-XS version, and will
+ throw an error if these are not supplied.
+ - all these classes are now bootstrapped properly
+ and now store the package_name and name attributes
+ correctly as well
+
+ ~ Build.PL has been removed since the
+ Module::Install support has been removed
+
+0.55 Mon. April 28, 2008
+ - All classes now have proper C3 MRO support
+ - added MRO::Compat as a dependency to allow
+ for the C3 MRO support to Just Work in all
+ perl versions
+
+ * Class::MOP::Class
+ - rebless_instance now returns the instance
+ it has just blessed, this is mostly to
+ facilitate chaining
+ - set the attr correctly in rebless_instance
+ when it has no init_arg
+ - tweaked &linear_isa and &class_precedence_list
+ to support c3 classes.
+
+0.54 Fri. March, 14, 2008
+ * Class::MOP
+ metaclass.pm
+ - making sure that load_class never gets
+ passed a value from @_ or $_ to squash
+ Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
+
+ * Class::MOP::Class
+ - make_{immutable,mutable} now return 1
+ (cause Sartak asked)
+ - improved error handling in ->create method
+ - rebless_instance now takes extra params which
+ will be used to populate values
+ - added tests for this
+
+ * Class::MOP::Object
+ - localizing the Data::Dumper configurations so
+ that it does not pollute others (RT #33509)
+
+ * Class::MOP::Class
+ Class::MOP::Package
+ Class::MOP::Module
+ Class::MOP::Method
+ Class::MOP::Attribute
+ - these classes no longer define their own ->meta,
+ but instead just inherit from Class::MOP::Object
+
+ * Class::MOP::Instance
+ Class::MOP::Immutable
+ - these classes now inherit from Class::MOP::Object
+
+ * t/
+ - fixed the filename length on several
+ test files so we install on VMS better
+ (RT #32295)
+ - fixed incorrect use of catdir when it
+ should be catfile (RT #32385)
+
+0.53 Thurs. Feb. 14, 1008
+ ~~ several doc. fixes and updates ~~
+
+ * Class::MOP::Class
+ Class::MOP::Method::Constructor
+ Class::MOP::Attribute
+ - making init_arg accept an undefined value
+ to indicate that no constructor args can
+ be passed (thanks to nothingmuch)
+ - added tests for this
+ - added attribute initializer attribute (rjbs)
+
+ * Class::MOP.
+ - making this use the new init_arg => undef
+ feature instead of the silly hack from
+ before (thanks to nothingmuch)
+
+0.52 Tues. Jan. 22, 2008
+ * Class::MOP::Class
+ - fixed bug in rebless_instance
+ (discovered by ash)
+
+ * Class::MOP::Method::Constructor
+ - removed assumptions about the existence of
+ a &meta method
+
+0.51 Mon. Jan. 14, 2008
~~~ some misc. doc. fixes ~~~
~~ updated copyright dates ~~
+ * Class::MOP
+ - now sets the IS_RUNNING_ON_5_10
+ constant so that we can take advantage
+ of some of the nice bits of 5.10
+
+ * Class::MOP::Class
+ - uses the IS_RUNNING_ON_5_10 flag to
+ optimize the &linearized_isa method
+ and avoid the hack/check for circular
+ inheritence in &class_precedence_list
+ - added rebless_instance method (Sartak)
+ - added tests for this
+
+ * Class::MOP::Immutable
+ - the immutable class now keeps track of
+ the transformer which immutablized it
+
+ * Class::MOP::Instance
+ - added rebless_instance_structure method (Sartak)
+ - added tests for this
+
0.50 Fri. Dec. 21, 2007
* Class::MOP::Class
- - fixed bug in immutable to make sure that
- transformation arguments are saved
+ - fixed bug in immutable to make sure that
+ transformation arguments are saved
correctly (mst)
- added tests for this
-
+
* Class::MOP::Immutable
- fixed a bug (see above)
-
+
* Class::MOP::Attribute
- some doc updates
0.49 Fri. Dec. 14, 2007
!! Class::MOP now loads 2 x faster !!
!! with XS speedups (thanks konobi) !!
-
+
* Class::MOP
- removed the dependency on B
- added two XS functions (thanks konobi)
- get_code_info($code) which replaces all
the B fiddling we were doing with
faster/leaner XS level fiddling
- - check_package_cache_flag($pkg_name) which
- returns the PL_sub_generation variable to
+ - check_package_cache_flag($pkg_name) which
+ returns the PL_sub_generation variable to
be used to help manage method caching.
-
- NOTE:
- In 5.10 or greater this will actually
- use the mro::get_pkg_gen instead to give
- even more accurate caching information.
+
+ NOTE:
+ In 5.10 or greater this will actually
+ use the mro::get_pkg_gen instead to give
+ even more accurate caching information.
blblack++ for that stuff :)
-
+
* Class::MOP::Class
- added the &subclasses method (thanks rlb)
- - added the update_package_cache_flag and
- reset_package_cache_flag which help keep
- track of when we need to re-fetch the
- method map.
+ - added the update_package_cache_flag and
+ reset_package_cache_flag which help keep
+ track of when we need to re-fetch the
+ method map.
- Several small improvements to take advantage
of the new method map caching features
0.48 Mon. Nov. 26, 2007
* Class::MOP::Attribute
- - fixed get_read/write_method to handle the
- HASH ref case, which makes the
+ - fixed get_read/write_method to handle the
+ HASH ref case, which makes the
get_read/write_method_ref handle it too.
- added more tests for this
0.46 Fri. Nov. 23, 2007
* Class::MOP::Class
- - added the linearized_isa method instead of constantly
- pruning duplicate classes (this will be even more
+ - added the linearized_isa method instead of constantly
+ pruning duplicate classes (this will be even more
useful in the 5.10-compat version coming soon)
-
+
* Class::MOP::Attribute
- added the get_read_method_ref and get_write_method_ref
- methods which allow you to retrieve a CODE ref which
+ methods which allow you to retrieve a CODE ref which
can always be used to read or write an attribute.
0.45 Thurs. Nov. 13, 2007
- Add support for the 'builder' attribute (groditi)
* Class::MOP::Class
- - optimise metaclass-already-exists check in
+ - optimise metaclass-already-exists check in
construct_class_instance (groditi)
- - duplicate check into initialize to save a
+ - duplicate check into initialize to save a
call through (groditi)
* Class::MOP::Attribute
- Add support for the 'builder' attribute (groditi)
- - Make predicates check for the existence of a value, not whether
+ - Make predicates check for the existence of a value, not whether
it is defined (groditi)
* Class::MOP::Instance
- - Make predicates check for the existence of a value, not whether
+ - Make predicates check for the existence of a value, not whether
it is defined (groditi)
- * Class::MOP::Method::Accessor
+ * Class::MOP::Method::Accessor
- made this a subclass of Class::MOP::Method::Generated
- removed the relevant attributes
* Class::MOP::Method::Constructor
- fixed the cached values we had to be more sane
- made this a subclass of Class::MOP::Method::Generated
- - fixed generated constructor so it properly handles
+ - fixed generated constructor so it properly handles
subclasses now.
- added tests for this
- - added the option to allow for both inlined and
+ - added the option to allow for both inlined and
non-inlined constructors.
- Update inlined methods for builder and predicate changes (groditi)
* Class::MOP::Method::Generated
- - added this class as an abstract base for the
+ - added this class as an abstract base for the
Class::MOP::Method::{Constructor,Accessor} classes
- added tests for this
* Class::MOP::Package
- alter symbol table handling to deal with 5.8.x and 5.9.x
-
+
* t/
- Get rid of the crappy workaround from 0.40/41
0.41 Sun. July 15, 2007
* t/
Arghh!!! My TODO test didn't work, so I handle
- it manually now so that people can use this
+ it manually now so that people can use this
with 5.9.5/bleadperl without issue.
0.40 Tues, July 3, 2007
* t/
- ~ marked a test in 003_methods.t as TODO
- for perl 5.9.5 (this test is irrelvant to
- the module functioning on 5.9.5 for the most
+ ~ marked a test in 003_methods.t as TODO
+ for perl 5.9.5 (this test is irrelvant to
+ the module functioning on 5.9.5 for the most
part anyway)
0.39 Mon. June 18, 2007
- removed unused variable
- added create_immutable_transformer
necessary for sane overloading of immutable behavior
- - tests for this (groditi)
+ - tests for this (groditi)
* Class::MOP::Class
- Immutability can now be undone,
- Massive changes to the way Immutable is done
for details see comments next to make_immutable
This fixes a bug where custom metaclasses broke
- when made immutable. We are now keeping one immutable
- metaclass instance per metaclass instead of just one
+ when made immutable. We are now keeping one immutable
+ metaclass instance per metaclass instead of just one
to prevent isa hierarchy corruption. Memory use will go
up, but I suspect it will be neglible.
- New tests added for this behavior. (groditi)
0.38 Thurs. May 31, 2007
~~ More documentation updates ~~
-
+
* Class::MOP::Package
- we now deal with stub methods properly
- added tests for this
- fixed some tests failing on 5.9.5 (thanks blblack)
-
+
* Class::MOP::Attribute
- added get_read_method and get_write_method
- thanks to groditi for this code, tests
+ thanks to groditi for this code, tests
and docs.
- added tests and POD for this
-
+
* Class::MOP::Class
- - fixed RT issue #27329, clone object now
+ - fixed RT issue #27329, clone object now
handles undef values correctly.
- added tests for this
- - Corrected anon-class handling so that they
- will not get reaped when instances still
- exist which need to reference them. This is
- the correct behavior, hopefully this is an
- obscure enough feature that there are not too
+ - Corrected anon-class handling so that they
+ will not get reaped when instances still
+ exist which need to reference them. This is
+ the correct behavior, hopefully this is an
+ obscure enough feature that there are not too
many work arounds out in the wild.
- - added tests for this by groditi
+ - added tests for this by groditi
- updated docs to explain this
* metaclass
0.37 Sat. March 10, 2007
~~ Many, many documentation updates ~~
-
+
* Class::MOP
- - added &load_class and &is_class_loaded
+ - added &load_class and &is_class_loaded
- added tests and docs for these
* Class::MOP::Attribute
- - default now checks the instance with defined to
+ - default now checks the instance with defined to
avoid setting off bool-overloads (found by Carl Franks)
0.37_002
- * /t
- - bad name in a test, causing meaningless failuress.
+ * /t
+ - bad name in a test, causing meaningless failuress.
No other changes.
0.37_001
-
+
~~ GLOBAL CHANGES ~~
- - All attribute names are now consistent and follow Perl 6
- style (prefixed with the sigil, and ! as the twigil for
- private attrs). This should not affect any code, unless
- you broke encapsulation, in which case, it is your problem
+ - All attribute names are now consistent and follow Perl 6
+ style (prefixed with the sigil, and ! as the twigil for
+ private attrs). This should not affect any code, unless
+ you broke encapsulation, in which case, it is your problem
anyway.
-
+
!! Class::MOP::Class::Immutable has been removed
-
+
* Class::MOP::Method::Constructor
- - this has been moved out of Class::MOP::Class::Immutable
+ - this has been moved out of Class::MOP::Class::Immutable
and is a proper subclass of Class::MOP::Method now.
-
+
* Class::MOP::Class
- - this module now uses Class::MOP::Immutable for the
- immutable transformation instead of
+ - this module now uses Class::MOP::Immutable for the
+ immutable transformation instead of
Class::MOP::Class::Immutable.
-
- + Class::MOP::Immutable
- - this module now controls the transformation from a mutable
- to an immutable version of the class. Docs for this will
+
+ + Class::MOP::Immutable
+ - this module now controls the transformation from a mutable
+ to an immutable version of the class. Docs for this will
be coming eventually.
-
+
0.36 Sun. Nov. 5, 2006
* Class::MOP::Class
- - added a few 'no warnings' lines to keep annoying
- (and meaningless) warnings from chirping during
+ - added a few 'no warnings' lines to keep annoying
+ (and meaningless) warnings from chirping during
global destruction.
-
+
* Class::MOP
- - some more bootstrapping is now done on the new
+ - some more bootstrapping is now done on the new
classes
-
+
* Class::MOP::Class::Immutable
- *** API CHANGE ***
- - constructor generation is now handled by
+ *** API CHANGE ***
+ - constructor generation is now handled by
the Class::MOP::Method::Constructor class
-
+
* Class::MOP::Method::Constructor
- - created this to handle constructor generation
+ - created this to handle constructor generation
in Class::MOP::Class::Immutable
-
+
* Class::MOP::Attribute
- *** API CHANGE ***
- - attributes now delegate to the
- Class::MOP::Method::Accessor to generate
+ *** API CHANGE ***
+ - attributes now delegate to the
+ Class::MOP::Method::Accessor to generate
accessors
-
+
* Class::MOP::Method::Accessor
- - all accessor generation functions from
+ - all accessor generation functions from
Class::MOP::Attribute have been moved here
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
+ - 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
+ - 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)
+ - 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
+ - adjusted docs for this
* Class::MOP::Class
- - changed how methods are dealt with to
- encapsulate most of the work into the
+ - 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
+ - &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
+ - 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.
+ 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
+ - 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
+ - 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
+ - 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
+ - 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)
+ - 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.
+ - 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
+ + 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
+ - 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
+ - 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
+ - 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 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
+ - added &deinitialize_slot for removing slots
from an instance
- - added tests for this
-
- * Class::MOP::Attribute
+ - added tests for this
+
+ * Class::MOP::Attribute
- added support for &deinitialize_slot for removing
slots from an instance
- added tests for this
* Class::MOP::Class
- added &find_method_by_name to locate a method
- anywhere within the class hierarchy
-
+ anywhere within the class hierarchy
+
* Class::MOP::Attribute
- - added &set_value and &get_value for getting
- the value of the attribute for a particular
+ - 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
+ This is the first version of Class::MOP
to introduce the immutable features which
- will be used for optimizating the MOP.
+ 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
+
+ * 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
+ - 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
+ - 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)
-
+ - added an inline_create_instance to inline
+ instance creation (of course)
+
** API CHANGE **
- - the Class::MOP::Class::*_package_variable
+ - 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.
+ 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
+ - 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
+ - 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.
+ 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
+ - added tests for this
+ - improved method modifier wrapping
* Class::MOP::Instance
- added new instance protocol
- updated tests for this
* examples/
- - added ArrayBasedStorage example to show
+ - added ArrayBasedStorage example to show
instance storage using ARRAY refs instead of
- HASH refs.
+ HASH refs.
- added tests for this
- - InsideOutClass is totally revised using the
+ - InsideOutClass is totally revised using the
new instance protocol
- added more tests for this
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
+ 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
+ - 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
+ - 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
+ - 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
+ - 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
+ - adjusted all /example files to comply
0.22 Mon. March 20, 2006
* Class::MOP::Class
0.21 Wed. March 15, 2006
* Class::MOP::Class
- - fixed issue where metaclasses are reaped from
+ - 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
+ - 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
+ - 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
+ - allows for a method to be wrapped with
+ before, after and around modifiers
- added tests and docs for this feature
* Class::MOP::Class
- &version and &superclasses now use it
- methods are now blessed into Class::MOP::Method
whenever possible
- - added methods to install CLOS-style method modifiers
+ - added methods to install CLOS-style method modifiers
- &add_before_method_modifier
- - &add_after_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
+ - 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
+ - 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
+ - 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
+ ** 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
+ creates a custom metaclass generator, use the
metaclass pragma instead.
- * Class::MOP::Class
- - fixed a number of minor issues which came up in the
+ * 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
-
- * 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
+ - 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,
+ - 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
+ - fixing minor meta-circularity issue with &meta, it
is now more useful for subclasses
- - added &get_attribute_map as an accessor for the
+ - 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
+ 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
- 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 which contain a metaclass name to use for
attributes/methods respectively
-
+
* Class::MOP
- - bootstrap additional attributes for Class::MOP::Class
-
+ - 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
0.04 Fri Feb. 3, 2006
* Class::MOP::Class
- some documentation suggestions from #perl6
-
+
* Class::MOP::Attribute
- - improved error messages
-
+ - improved error messages
+
* examples/
- added new examples:
- AttributesWithHistory
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
+ - 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