archives

Module systems for Lisp like language

Our application use a lisp like language as extension language. We'd like to add a module/package/namespace system (chose the name you want, if the choice of name implies difference in characteristics for you, the choice hasn't probably be made yet).

I'd like not to repeat known mistakes, so I'm looking for a critical review of the design space with trade-off to be made, tempting choices that have be proven bad choices, and so on. Obviously, I'm also taker for recommendations on related specific points for which you'd have an experience you want to share.

VMKit: a Substrate for Managed Runtime Environments, VEE '10

VMKit: a Substrate for Managed Runtime Environments, VEE '10

Managed Runtime Environments (MREs), such as the JVM and the CLI, form an attractive environment for program execution, by providing portability and safety, via the use of a bytecode language and automatic memory management, as well as good performance, via just-in-time (JIT) compilation. Nevertheless, developing a fully featured MRE, including e.g. a garbage collector and JIT compiler, is a herculean task. As a result, new languages cannot easily take advantage of the benefits of MREs, and it is difficult to experiment with extensions of existing MRE based languages.

This paper describes and evaluates VMKit, a first attempt to build a common substrate that eases the development of high-level MREs. We have successfully used VMKit to build two MREs: a Java Virtual Machine and a Common Language Runtime. We provide an extensive study of the lessons learned in developing this infrastructure, and assess the ease of implementing new MREs or MRE extensions and the resulting performance. In particular, it took one of the authors only one month to develop a Common Language Runtime using VMKit. VMKit furthermore has performance comparable to the well established open source MREs Cacao, Apache Harmony and Mono, and is 1.2 to 3 times slower than JikesRVM on most of the DaCapo benchmarks.

So... One person built a CLR using VMKit in one month. One consequence of such faster development speeds is that language designers do not have to feel so restricted when targeting a Managed Runtime Environment for their language. If the MRE they want to target has restrictions, they can fork it. If the MRE specification has a gray area, then they can quickly prototype a solution to clarify what the behavior should be for that gray area of the specification. If you are a researcher/student and want to experiment with a new language design and implementation, then you can do so incrementally by first augmenting the MRE and then targeting your language to that new MRE; you can then benchmark the improvements by using the original MRE as a baseline.

In the wild

Haskell spotted in a mobile apps startup?!

And I saw what is probably a snippet of Clojure on a whiteboard in Techshop.

On the other hand, the other day I talked to two practicing software engineers, both intelligent and successful and coming from different backgrounds. Neither of them has ever heard of Clojure or Scala (or, indeed, Ocaml). There's more work to be done!