Welcome to the Reflectivity!
The Reflectivity is work on progress based on Squeak. It provides extensions to the standard reflection features of Smalltalk for both structural and behavioral reflection: - Structural reflection is extended by sub-method reflection: the structure of method bodies has as a first class and causally connected representation that can easily be extended and annotated.
- Behavioral Reflection is provided by a new and improved version of Geppetto, a realization of Partial Behavioral Reflection as pioneered by Reflex.
There are some slides from a demo at DYLA07 here
- Persephone. This provides Reflective Methods and a small "JIT" compiler (extensible with plugins) to generate bytecode for execution.
- Geppetto. Reflex for Squeak, redone. Simplified a lot from the original Geppetto, it uses annotations on method structure instead of bytecode manipulation.
Latest Release: 0.19, Ready to run image: Reflectivity.zip
How to install from Pharo (pre-closures) (more extensive description: INSTALL.txt):
- get Pharo from pharoproject.org
- install ReflectivityLoader from SqueakSource
- load packages with ReflectivityLoader new loadStablePackages
- Recompile the image using class PERecompiler
Refereed Papers in International Journals
- Practical, Pluggable Types for a Dynamic Language. In Journal of Computer Languages, Systems and Structures 35(1) p. 48—64, April 2009. . DOI PDF →
- Unanticipated Partial Behavioral Reflection: Adapting Applications at Runtime. In Journal of Computer Languages, Systems and Structures 34(2) p. 46—65, July 2008. . DOI PDF →
Refereed Papers in International Conferences
- Sub-Method Reflection. In Journal of Object Technology, Special Issue. Proceedings of TOOLS Europe 2007, 6 p. 231—251, ETH, October 2007. . DOI URL →
- The Meta in Meta-object Architectures. In Proceedings of TOOLS EUROPE 2008, LNBIP 11 p. 218—237, Springer-Verlag, 2008. . DOI PDF →
- Practical, Pluggable Types. In Proceedings of the 2007 International Conference on Dynamic Languages (ICDL 2007), p. 183—204, ACM Digital Library, 2007. . DOI PDF →
- Transactional Memory for Smalltalk. In Proceedings of the 2007 International Conference on Dynamic Languages (ICDL 2007), p. 207—221, ACM Digital Library, 2007. . DOI PDF →
- Unanticipated Partial Behavioral Reflection. In Advances in Smalltalk — Proceedings of 14th International Smalltalk Conference (ISC 2006), LNCS 4406 p. 47—65, Springer, 2007. . DOI PDF →
- Exploiting Runtime Information in the IDE. In Proceedings of the 16th International Conference on Program Comprehension (ICPC 2008), p. 63—72, IEEE Computer Society, Los Alamitos, CA, USA, 2008. . DOI PDF →
Refereed Papers in International Workshops
- Higher Abstractions for Dynamic Analysis. In 2nd International Workshop on Program Comprehension through Dynamic Analysis (PCODA 2006), p. 32—38, 2006. . PDF URL →
- Supporting Feature Analysis with Runtime Annotations. In Proceedings of the 3rd International Workshop on Program Comprehension through Dynamic Analysis (PCODA 2007), p. 29—33, Technische Universiteit Delft, 2007. . PDF →
- Model-Centric, Context-Aware Software Adaptation. In Betty H.C. Cheng, Rogerio Lemos, Holger Giese, Paola Inverardi, and Jeff Magee (Ed.), Software Engineering for Self-Adaptive Systems, LNCS 5525 p. 128-145, Springer-Verlag, 2009. . DOI PDF →
- Sub-method Structural and Behavioral Reflection. PhD thesis, University of Bern, May 2008. . PDF →
- TypePlug — Pluggable Type Systems for Smalltalk. Master's thesis, University of Bern, April 2007. . PDF →
- Persephone: Taking Smalltalk Reflection to the sub-method Level. Master's Thesis, University of Bern, December 2006. . PDF →
- Geppetto: Enhancing Smalltalk's Reflective Capabilities with Unanticipated Reflection. Master's Thesis, University of Bern, January 2006. . PDF →
Users of Reflectivity
Reflectivity has been used in some projects:
- Hermion: Exploiting Runtime Information in the IDE, Paper, (David Röthlisberger)
- TypePlug: Pluggable Types for Squeak, Paper, (Nik Haldiman)
- Transactional Memory for Smalltalk, Paper, (Lukas Renggli)
- HistOOry. Manage simply the past: Persistent Objects. HistOOry Website, (Frédéric Pluquet)