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.