One of my favorite techy-geeky subjects is about meta type stuff i.e. issues dealing with reflection, AOP, etc.
Reflex was developed as part of PhD thesis. To quote its creator:
“Reflex is an efficient and flexible reflective system for Java that I developed during my PhD thesis (which is about to end). It is evolving right now to what we call an “AOP kernel”, supporting multiple approaches to AOP to coexist and collaborate.
One of the limitations of the actual implementation of Reflex is that it is in standard Java (via load-time bytecode transformation), and therefore does not support really dynamic stuff (a class definition in Java cannot be changed after runtime, the instantiation link of an object neither, etc.). These restrictions in the Java world do not exist in Smalltalk, where moreover, the type system is pretty “cool”, to say the least. Therefore an interesting perspective … is to work on a version of Reflex for Smalltalk, in which the complete dynamicity of the environment would be used.”
I’m going to try to follow this one closely. BTW, there are already other related implementations in Smalltalk. Robert Hirshfeld has been working on AspectS (AOP) which is both available in VisualWorks and Squeak.
I think that I will add a page to the NYC Smalltalk Wiki which I will dedicate to these issues.