archives

Ruby .NET compiler released

Queensland University of Technology Programming Languages and Systems Research Group, which was behind Component Pascal and Modula compilers for CLR and JVM, has released a Ruby compiler for CLR and JVM. The compiler reportedly passes all 800+ tests in the Ruby 1.8.2 test.rb test suite.

On their web site the group stresses that this is a compiler, not a Ruby/.NET bridge, although further reading indicates there's a runtime library that mirrors the structure of the Ruby interpreter. The group is apparently looking for Ruby and/or .NET users to do testing and development; the full source is available under a liberal license.

The group's web site contains some comments about the implementation approach and some loot for programming language implementors: a YACC-compatible parser generator for C#, and a library for manipulating PE files.

PLT web server used in "real life"

This is, to our knowledge, the first large site to run the PLT Scheme web server continuously for any length of time. Over the next few days we'll provide a few more details about the more intricate parts of our setup so other intrepid pioneers can learn from our work.

It's always good to hear of success stories of non-mainstream languages (well, non-mainstream outside LtU that is), so this project is worth keeping an eye on. Maybe Noel will be able to provide more technical details at some point.

Petition for adding garbage collection to C++.

Dear fellow LtU members,

I took the initiative and started a petition for adding garbage collection to C++. You can find it here:

petition for adding garbage collection to C++.

Maybe if we get too many, the C++ standards committee will hear us!

Delimited dynamic binding

We are seeking comments on the final draft of our ICFP 2006 paper: Delimited dynamic binding, by Oleg Kiselyov, Chung-chieh Shan, and Amr Sabry.

Dynamic binding and delimited control are useful together in many settings, including Web applications, database cursors, and mobile code. We examine this pair of language features to show that the semantics of their interaction is ill-defined yet not expressive enough for these uses.

We solve this open and subtle problem. We formalise a typed language DB+DC that combines a calculus DB of dynamic binding and a calculus DC of delimited control. We argue from theoretical and practical points of view that its semantics should be based on delimited dynamic binding: capturing a delimited continuation closes over part of the dynamic environment, rather than all or none of it; reinstating the captured continuation supplements the dynamic environment, rather than replacing or inheriting it. We introduce a type- and reduction-preserving translation from DB+DC to DC, which proves that delimited control macro-expresses dynamic binding. We use this translation to implement DB+DC in Scheme, OCaml, and Haskell.

We extend DB+DC with mutable dynamic variables and a facility to obtain not only the latest binding of a dynamic variable but also older bindings. This facility provides for stack inspection and (more generally) folding over the execution context as an inductive data structure.

The paper comes with a large amount of accompanying code—in Scheme, OCaml, SML, and Haskell. The code (described in the paper's appendix) uses realistic examples to show how the joint behavior of delimited continuations and dynamic binding is ill-defined in various PL systems, and solves the problem by a full-fledged implementation of dynamic binding in all these systems. Any comments or suggestions would be very welcome!