Radu's research diary
28-29/01/2008 Tried to run my Dylan introspection tool on Dylan apps other than the Gwydion compiler. It seems there is not much code (apart from the Gwydion compiler) that compiles with Gwydion out there :(. Managed to compile the OpenDylan compiler. I hope to be able to hack it as well.
21-25/01/2008 Mainly read and re-read some of the relevant papers on multiple dispatch. Wrote a short history of multiple dispatch.
17-18/01/2008 Gathered numbers on multimethods in the Cecil and Diesel compilers.
15-16/01/2008 Hacked the Vortex compiler to print out the information we need about methods and argument specializers. Gather some data is next.
14/01/2008 compiled the Vortex compiler infrastructure including Cecil and Diesel front-ends and played with the introspection tools provided. I think it should be possible to extract the information we need (methods and specialised argument positions).
11/11/2007 - 10/01/2008 long vacation
5-9/11/2007 Learning Cecil and exploring how to extract information from method declarations. Revising my SIENZ paper - which has been accepted :-). Packing my things at home since I have to move out of the hall of residence at the end of this week. And I managed to break my glasses :(.
1-2/11/2007 Wrote down my ideas on the
degree of dispatch metric and gathered figures for CMUCL and Dylan (1.8% and 2.7% of multiple dispatch respectively).
28-29/10/2007 Looking into developing a metric that takes into account the depth of the inheritance hierarchy.
23-24/10/2007 I'm trying to tackle the ''binary method ratio'' for CLOS, i.e. assess just how many methods within a generic function expect arguments that are of the same type.
22/10/2007 Looked a bit into MultiJava. Although there is not much to see as it is written in Java and I couldn't find anything that is actually written in MultiJava.
17-19/10/2007
I wrote a paper for SIENZ'07 that basically summarizes my research so far. It was a good opportunity to reflect, refocus and get a bit more organized.
15-16/10/2007
Refined the CLOS figures. By loading the McCLIM package, the generic function count is up to 7000 (method count is 11000). Now the multimethod ratio is up to 7.3%. Dispatch ratio is 1.57 (for the Dylan compiler it is 2.35).
09-11/10/2007
mainly learned to program Lisp (and Emacs), which is very different from any language (and editor) I have used before. As of now, I managed to write code that measures the multimethod ratio in the CMUCL programming environment to the same standard that I have been able to to it for Dylan (i.e. no subtype relationships yet).
08/10/2007 more lisp mop programming.
01-05/09/2007 installed CMUCL, Emacs and SLIME, learning to use Common Lisp esp. the metaobject protocol.
27/09/2007 installing and playing with GNU CLISP (an ANSI Common Lisp Implementation)
26/09/2007 mainly playing with my samples in Matlab.
25/09/2007 long, insightful #dylan IRC session. Plotting my samples to verify the power law hypothesis.
24/09/2007 Read two papers on power law
1
2.
Further investigating the inheritance relationships problem.
20/09/2007 Trying to figure out inheritance relationships between argument types. It seems complicated to extract that information.
19/09/2007 Finally managed to extract the types (and number) of arguments for each generic function.
18/09/2007 Looking into how to find out the number and types of arguments to a generic function.
17/09/2007 Set up new computer.
12/09/2007 I've read a lot about parsers over the last days; only to decide that for now I'm doing the simplest thing that could possibly work to analyze MM definitions in the d2c generated C code.
11/09/2007 Writing a script to count multimethod declarations in the C code generated by the Dylan-to-C compiler.
05/09/2007 Finally I have an idea how to use the C code from d2c to hunt down those multimethods. Now I need to write a simple/specialized parser for this (maybe in Perl).
04/09/2007 Trying to comprehend machine generated C code is no fun at all...
03/09/2007 Still investigating where to draw the boundary between multimethods and 'regular' methods in Dylan.
19/08/2007 I will be away, travelling and will be back on Wed 29/08/2007.
17/08/2007 still with the C code, trying to figure out how exactly dylan methods are mapped to C code.
16/08/2007 looking at the C code generated by the d2c compiler.
15/08/2007 a meeting today. Compiling the Dylan compiler.
13/08/2007 Looking into MultiJava multimethod semantics.
09/08/2007 Set up a
Wiki to track my research progress
08/08/2007 Trying to figure out how to tackle multimethod detection.
07/08/2007 Set up a
blog to note down ideas I come across when reading papers.
06/08/2007 Looking into how compilers treat multiple dispatch and how we can reliably detect when md takes place i.e. distinguish it from single dispatch or dispatching at compile-time. I'm inclined to think we cannot do this by merely analyzing the source code.
02/08/2007 Submitted my research proposal along with the application for a MSc thesis. I am officially enrolled now

And got hold of a key for the office :-)) The objectives for the next days are now:
- clarify "what are we after" (and what not?)
- method/multimethod ratio in corpus?
- number of mm invocations?
- avg. number of methods in a generic function?
- ...?
- elaborate on the methodology - how to conduct the experiment
- start with Dylan
01/08/2007 Reading "Understanding the Shape of Java software" (Baxter et al. 2006), "Micro Patterns in Java Code" (Gil, Maman 2005). Still hunting after a key for my office :-/
31/07/2007 Finalized my project proposal. Did some background reading on type systems and covariance/contravariance.
27/07/2007 Installed and played a bit with the Gwyndion Dylan compiler on linux. No success yet in compiling it, though. Attended Elvis meeting.
26/07/2007 Reading "Walkabout revisited: The Runabout" (Grothoff 2003). Writing my project proposal. Attended a talk about (Computer) Science and Technology by Steve Reeves (University of Waikato).
25/07/2007 Reading "Efficient Multimethods in a Single Dispatch Language" (Foote, Johnson, Noble 2005), "Object-Oriented Multimethods in Cecil" (Chambers 1992), "Multijava: Modular Open Classes and Symmetric Multiple Dispatch" (Clifton et al. 2000). Writing on the project proposal.
24/07/2007 Settling in the new office. Doing some reading, mostly learning about Dylan syntax and the implementation of multimethods in Dylan. Started writing my project proposal.
23/07/2007 First entry. Reading about multiple dispatch and related topics today. Thinking about how to structure my research proposal. Right now I feel that I should get a solid idea about multiple dispatch first. Which means more reading.