Thorn: robust, concurrent, extensible scripting on the JVM

  • Authors:
  • Bard Bloom;John Field;Nathaniel Nystrom;Johan Östlund;Gregor Richards;Rok Strniša;Jan Vitek;Tobias Wrigstad

  • Affiliations:
  • IBM Research, Yorktown Heights, NY, USA;IBM Research, Yorktown Heights, NY, USA;University of Texas at Arlington, Arlington, TX, USA;Purdue University, West Lafayette, IN, USA;Purdue University, West Lafayette, IN, USA;University of Cambridge, Cambridge, UNK, United Kingdom;Purdue University, West Lafayette, IN, USA;Stockholm University, Stockolm, Sweden

  • Venue:
  • Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
  • Year:
  • 2009

Quantified Score

Hi-index 0.00

Visualization

Abstract

Scripting languages enjoy great popularity due to their support for rapid and exploratory development. They typically have lightweight syntax, weak data privacy, dynamic typing, powerful aggregate data types, and allow execution of the completed parts of incomplete programs. The price of these features comes later in the software life cycle. Scripts are hard to evolve and compose, and often slow. An additional weakness of most scripting languages is lack of support for concurrency - though concurrency is required for scalability and interacting with remote services. This paper reports on the design and implementation of Thorn, a novel programming language targeting the JVM. Our principal contributions are a careful selection of features that support the evolution of scripts into industrial grade programs - e.g., an expressive module system, an optional type annotation facility for declarations, and support for concurrency based on message passing between lightweight, isolated processes. On the implementation side, Thorn has been designed to accommodate the evolution of the language itself through a compiler plugin mechanism and target the Java virtual machine.