I've found the vision of a simple, open and evolutionary adaptable programming language substrate, as described in Albert [1], tantalizing. I especially like the idea of dynamically evolving a language 'from within' a fluid substrate. I am left wondering the extent to which this vision was realized and its actual benefits.

The commit log of idst [2] shows that work has been done up until 2009 (minus the minor commit in 2010). The 2009 and 2010 NSF reports make no mention of the COLA system, the latter report mentions Nothing as the target for all the other DSLs. No comment has been made on the language(s) used to explore the VMs design. The git mirror for idst and ocean are not accessible on Micheal FIG website anymore. The latest papers citing [1] dates from 2009 [3]. Based on Alan's comment that "it is not an incremental project [...]. We actually throw away much of our code and rewrite with new designs pretty often" [4], I would assume that there is no interest in pursuing the COLA project anymore.

However, I would still be interested in lessons learned from developing and using COLA for implementing VMs:

Was a fully bootstrapped dynamic implementation ever realized (Coke-based implementation of the Pepsi compiler and Coke compiler/evaluator)?

Was the system used to implement major subsystems (Worlds, Continuations, On Stack Replacement, Multi-Threading, Network-Transparent and Fault-Tolerant Distributed semantic)?

What were the major gains in the practice of developing a new VM when using a dynamic substrate? What was not significant in practice?

Was the "evolve from within" strategy truly fruitful? If not, was it a problem in the vision or in its implementation?

Was there still a need to start from scratch instead of using COLA to prototype new implementation techniques or bootstrap a new system? Why?

I understand that the VPRI team is probably racing against the clock to put the final touches to Frank and producing paperwork for the NSF, so I guess more detailed answers might come next year (or hopefully in the last report) but I am still interested in relevant pointers to article/documentation/code and experience from members of this list which might provide elements of answer to those questions.

In the present, I am interested in developing a COLA-like system that could serve as an exploration vehicle for research on high-performance meta-circular VMs for dynamic languages. The main objective would be to drastically reduce the amount of effort needed to test new ideas about object representations, calling conventions, memory management, compiler optimizations, etc. and pave the way for more dynamic optimizations.

I would like the system to:
1. allow interactive and safe development of multiple natively-running object representations and dynamic compilers with full tool support (debugger, profiler, inspector)
2. easily migrate the system to a different implementation language

The first property would serve to bring the benefits of a live programming environment to VM development (as possible in Squeak, through simulation) and the second would serve a) to facilitate the dissemination of the implementation techniques (including meta-circular VM construction) in existing language communities (Python, JavaScript, Scheme, etc.) and b) obtain expressive and performant notation(s) for VM research without having to start from scratch each time.

Answers to the aforementioned questions would guide my own implementation strategy. I am also interested in pointers to past work that might be relevant to such a pursuit.

Erick

[1] http://piumarta.com/papers/albert.pdf
[2] http://piumarta.com/svn2/idst/trunk
[3] http://scholar.google.com/scholar?cites=8937759201081236471&as_sdt=2005&sciodt=1,5&hl=en
[4] http://vpri.org/mailman/private/fonc/2010/001352.html


_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc

Reply via email to