MetaclassTalk 0.3 beta for Squeak 3.2
Reflective facilities (Explicit Metaclasses, MOP...) provided by MetaclassTalk have been extended to support for meta-objects. You can have meta-objects specific to a particular object or meta-objects shared among various objects (even instances from different classes).
A simple framework for meta-object composition is also available.
It allows chaining various meta-objects (As described chain of responsibility design pattern). Such meta-objects cooperate in order to control base-level objects.
Two examples of meta-objects use are provided. They show how
reflection can be used to separate concerns, and how reflection can be used to support AOP. They also show that the aspects built using meta-objects (and mixin metaclasses) are generic and hence reusable.
For more info, please have a look to the MetaclassTalkReadMe.txt file (included in the downloadable archives).
Download and install notes
- Unfold the archive into the image directory,
- Then, fileIn the file named: InstallMetaclassTalk.st
A ready to use image
MetaclassTalk 0.3 beta for Squeak 3.2-4956.image.zip(about 6.7Mb)
- Requires Squeak 3 VM and SqueakV3.source
For Windows: a comprehensive archive (includes all required files)
Bug fixs and Enhancements
I would like to "import" into MetaclassTalk a Smalltalk class hierarachy without loosing class methods and class instance variables
This patch allows doing this conversion. Once you've file it in, just send the message 'becomeMTClass' to the root class of the hierarchy you would like to convert from Smalltalk to MetaclassTaml world. For each class in the hierarchy an explicit metaclass will be created with all instance variables and methods copied from the orginal implicit metaclass. Last, the class will become instance of this new explicit metaclass. The resulting metaclasses are organized in an inheritance hierarchy parallel to the class one. The metaclass of the root class will inherit from StandardClass.
Note that subclasses that are already in the "MetaclassTalk world" remain unchanged. Particularily, the superclass of the metaclass of a such subclass will not be linked to the hierarchy of the generated explicit metaclasses.
When accepting a method I've got the following error: "(UndefinedObject)MessageNotUnderstood: introduceMTHook:".
Here is the fix
I've got a doesNotUnderstand: error when creating mixins
It's a silly bug, caused by the displayed definition that does not match with the mixin creation protocol. Here is the fix.
Method ClassWithInstanceLinkMetaObjects>>mixinInitialize is not performed for new classes
I have metaclass that inherits from the mixin ClassWithInstanceLinkMetaObjects. When I instantiate this metaclass, created classes are not initialized (ClassWithInstanceLinkMetaObjects>>mixinInitialize) is not run from them. There is a similar problem with mixins ClassWithInstanceMutableMetaObjects and ClassWithInstancePrivateMetaObjects. Here is the fix
When I add a mixin to a class, instances of subclasses are not initialized (mixinInitialize is not run on them)
Here is the fix. It also fixes the problem of applying a method to some object using the "valueWithReceiver:arguments:" message.