samskivert: Thorn—Robust, Concurrent, Extensible Scripting on the JVM – Vitek, et al.

22 January 2010

Describes design and implementation of a new JVM-based language: Thorn. Features include: static and dynamic typing, aggregate data types (lists, records, tables), OOP (constrained multiple inheritance), first-class functions, pattern-matching, immutable data types, CSP-style concurrency support, module system, annotations, extensible compiler.

Thorn seems to be a language guided by practicality rather than some particular linguistic ideal. Many of the choices seem motivated by a “batteries included” philosophy like built-in support for lists, records and tables (a hybrid between a map and a full-fledged object). In this case, batteries for concurrency are also included in the form of isolated components that communicate by message passing. The enforcement of isolation by the language sounds great, though one of the examples in the paper seems to pass mutable data from one component to another, so either I’m misreading something or the isolation is not so strong as I thought.

It’s hard to tell where such a language might find a niche in the vast and sprawling landscape. Java interoperability is pretty limited owing to the design of the language (good for them for making bold language choices). However, without smooth interoperability and lacking some flag around which a hard-core group of language enthusiasts can rally, it may never progress beyond an interesting experiment. Maybe they’ll implement a translator to JavaScript and relaunch it as a web client language.

Source: PDF ACM

©1999–2022 Michael Bayne