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