skip to main content
10.1145/1640089.1640098acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Thorn: robust, concurrent, extensible scripting on the JVM

Published:25 October 2009Publication History

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.

References

  1. Erlang Reference Manual. http://erlang.org/doc/, 2008. Version 5.6.5.Google ScholarGoogle Scholar
  2. The Python Tutorial - Modules. http://docs.python.org/3.0/tutorial/modules.html, 2009. Version 3.0.1.Google ScholarGoogle Scholar
  3. Eric Allen, David Chase, Joe Hallett, Victor Luchangco, Jan-Willem Maessen, Sukyoung Ryu, Guy L. Steele, Jr., and Sam Tobin-Hochstadt. The Fortress language specification, version 1.0, March 2008.Google ScholarGoogle Scholar
  4. Christopher Anderson and Sophia Drossopoulou. Babyj: from object based to class based programming via types. Electr. Notes Theor. Comput. Sci., 82(7), 2003.Google ScholarGoogle Scholar
  5. Chris Andreae, James Noble, Shane Markstrum, and Todd Millstein. A framework for implementing pluggable type systems. In OOPSLA '06: Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications, October 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Timothy Andrews and Craig Harris. Combining language and database advances in an object-oriented development environment. In Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, volume 22, pages 430--440, December 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. David F. Bacon. Kava: a Java dialect with a uniform object model for lightweight classes. In JGI '01: Proceedings of the 2001 joint ACM-ISCOPE conference on Java Grande, pages 68--77, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Kenneth Barclay and John Savage, editors. Groovy Programming. Morgan Kaufmann, December 2006.Google ScholarGoogle Scholar
  9. Kent Beck and et al. Principles behind the agile manifesto, 2007. http://agilemanifesto.org/principles.html.Google ScholarGoogle Scholar
  10. Gilad Bracha. Pluggable type systems. In OOPSLA'04 Workshop on Revival of Dynamic Languages, October 2004.Google ScholarGoogle Scholar
  11. Gilad Bracha and William R. Cook. Mixin-based Inheritance. In Proceedings of OOPSLA, volume 25(10) of ACM SIGPLAN Notices, pages 303--311. ACM Press, October 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Bradford L. Chamberlain, David Callahan, and Hans P. Zima. Parallel programmability and the Chapel language. International Journal of High Performance Computing Applications, 21(3):291--312, August 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Donald D. Chamberlin and Raymond F. Boyce. Sequel: A structured english query language. In FIDET '74: Proceedings of the 1974 ACM SIGFIDET (now SIGMOD) workshop on Data description, access and control, pages 249--264, New York, NY, USA, 1974. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Philippe Charles, Christian Grothoff, Vijay Saraswat, Christopher Donawa, Allan Kielstra, Kemal Ebcioglu, Christoph von Praun, and Vivek Sarkar. X10: an object-oriented approach to non-uniform cluster computing. In OOPSLA '05: Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 519--538, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Clojure. http://clojure.org/.Google ScholarGoogle Scholar
  16. The Computer Language Benchmarks Game. http://shootout.alioth.debian.org/.Google ScholarGoogle Scholar
  17. Burak Emir, Martin Odersky, and John Williams. Matching objects with patterns. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP), volume 4609 of LNCS, pages 273--298. Springer Verlag, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Matthew Flatt and Robert Bruce Findler. PLT Scheme Guide - Modules. http://docs.plt-scheme.org/guide/modules.html, 2009. Version 4.1.5.1.Google ScholarGoogle Scholar
  19. Bryan Ford. Parsing expression grammars: a recognition-based syntactic foundation. In Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL '04), January 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Jesse James Garrett. Ajax: A new approach to web applications, February 2005. http://www.adaptivepath.com/ideas/essays/archives/000385.php.Google ScholarGoogle Scholar
  21. Niklaus Haldiman, Marcus Denker, and Oscar Nierstrasz. Practical, pluggable types for a dynamic language. Computer Languages, Systems&Structures, ESUG 2007 International Conference on Dynamic Languages (ESUG/ICDL 2007), 35(1):48--62, April 2009.Google ScholarGoogle Scholar
  22. A. Hejlsberg, S. Wiltamuth, and P. Golde. C# language specification. 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Martin Hirzel, Nathaniel Nystrom, Bard Bloom, and Jan Vitek. Matchete: Paths through the pattern matching jungle. In Practical Aspects of Declarative Languages (PADL 2008), pages 150--166, January 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Simon P. Jones. Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, May 2003.Google ScholarGoogle Scholar
  25. Java powered Ruby implementation. http://jruby.codehaus.org/.Google ScholarGoogle Scholar
  26. Introducing JSON. http://www.json.org/.Google ScholarGoogle Scholar
  27. The Jython Project. http://www.jython.org/.Google ScholarGoogle Scholar
  28. The Kawa language framework. http://www.gnu.org/software/kawa.Google ScholarGoogle Scholar
  29. Xavier Leroy, Damien Doligez, Jacques Garrigue, Didier Rmy, and Jrme Vouillon. The objective caml system, release 3.11. Documentation and user's manual, 2004. http://caml.inria.fr/pub/docs/manual-ocaml/.Google ScholarGoogle Scholar
  30. Barbara Liskov and John V. Guttag. Abstraction and Specification in Program Development. MIT Press/McGraw-Hill, 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Donna Malayeri and Jonathan Aldrich. CZ: Multiple inheritance without diamonds. In OOPSLA '09: Proceedings of the 24th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, October 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Erik Meijer, Brian Beckman, and Gavin Bierman. LINQ: reconciling object, relations and XML in the .NET framework. In SIGMOD '06: Proceedings of the 2006 ACM SIGMOD international conference on Management of data, pages 706--706, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Robin Milner, Mads Tofte, and Robert Harper. The Definition of Standard ML. MIT Press, Cambridge, MA, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Nathaniel Nystrom, Michael Clarkson, and Andrew C. Myers. Polyglot: An extensible compiler framework for Java. In Görel Hedin, editor, 12th International Conference on Compiler Construction (CC 2003), number 2622 in Lecture Notes in Computer Science, pages 128--152, Warsaw, Poland, April 2003. Springer-Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Nathaniel Nystrom and Vijay Saraswat. An annotation and compiler plugin system for X10. Technical Report RC24198, IBM T.J. Watson Research Center, 2007.Google ScholarGoogle Scholar
  36. Nathaniel Nystrom, Vijay Saraswat, Jens Palsberg, and Christian Grothoff. Constrained types for object-oriented languages. In Proceedings of the 2008 ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA), October 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Martin Odersky, Philippe Altherr, Vincent Cremet, Iulian Dragos Gilles Dubochet, Burak Emir, Sean McDirmid, Stéphane Micheloud, Nikolay Mihaylov, Michel Schinz, Erik Stenman, Lex Spoon, and Matthias Zenger. An overview of the Scala programming language, second edition. Technical report, École Polytechnique Fédérale de Lausanne (EPFL), 2006.Google ScholarGoogle Scholar
  38. J. K. Ousterhout. Scripting: Higher-level programming for the 21st century. Computer, 31(3):23--30, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Lutz Prechelt. An empirical comparison of seven programming languages. IEEE Computer, 33(10):23--29, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. J. H. Reppy and Y. Xiao. Specialization of CML Message-passing Primitives. In Proceedings of the 35th ACM SIGPLAN--SIGACT Symposium on Principles of Programming Languages (POPL '07), pages 315--326, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Vijay Saraswat et al. The X10 language specification. Technical report, IBM T.J. Watson Research Center, 2008.Google ScholarGoogle Scholar
  42. N. Scharli, S. Ducasse, O. Nierstrasz, and A. Black. Traits: Composable units of behaviour. In Proceedings of the 17th European Conference on Object-Oriented Programming (ECOOP 2003), volume 2743 of Lecture Notes in Computer Science, pages 248--274, 2003.Google ScholarGoogle ScholarCross RefCross Ref
  43. J. T. Schwartz, R. B. Dewar, E. Schonberg, and E. Dubinsky. Programming with sets; an introduction to SETL. Springer-Verlag, New York, 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Jeremy Siek and Walid Taha. Gradual typing for objects. In ECOOP 2007-Object-Oriented Programming, volume 4609 of Lecture Notes in Computer Science, pages 2--27. Springer Berlin / Heidelberg, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Jeremy G. Siek. Gradual typing for functional languages. In In Scheme and Functional Programming Workshop, pages 81--92, 2006.Google ScholarGoogle Scholar
  46. M. Sperber, R.K. Dybvig, M. Flatt, A. Van Straaten, R. Kelsey, W. Clinger, and J. Rees. Revised 6 report on the algorithmic language Scheme, 2007.Google ScholarGoogle Scholar
  47. Sriram Srinivasan and Alan Mycroft. Kilim: Isolation-typed actors for java. In ECOOP 2008-Object-Oriented Programming, volume 5142/2008 of LNCS, pages 104--128. Springer Berlin / Heidelberg, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Guy L. Steele and Richard P. Gabriel. The evolution of Lisp. In HOPL-II: The second ACM SIGPLAN conference on History of programming languages, pages 231--270, New York, NY, USA, 1993. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Rok Strnisa. Fixing the Java Module System, in Theory and in Practice. In Proceedings of FTfJP, pages 88--99. Radboud University, July 2008.Google ScholarGoogle Scholar
  50. Sun. Core Java J2SE 5.0. Sun Microsystems Inc., http://java.sun.com/j2se/1.5.0/, 2005.Google ScholarGoogle Scholar
  51. Sun Microsystems, Inc. JSR-277: Java#8482; Module System. http://jcp.org/en/jsr/detail?id=277, October 2006. Early Draft.Google ScholarGoogle Scholar
  52. Sun Microsystems, Inc. JSR-294: Improved Modularity Support in the Java#8482; Programming Language. http://jcp.org/en/jsr/detail?id=294, 2007.Google ScholarGoogle Scholar
  53. Don Syme. An upcoming experimental feature: Active patterns in F#, August 2006. http://blogs.msdn.com/dsyme/archive/2006/08/16/activepatterns.aspx.Google ScholarGoogle Scholar
  54. David Thomas and Andrew Hunt. Programming Ruby: the pragmatic programmer's guide. The Pragmatic Programmers, LLC., Raleigh, NC, USA, 2 edition, August 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Sam Tobin-Hochstadt and Matthias Felleisen. Interlanguage migration: from scripts to programs. In OOPSLA '06: Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications, pages 964--974, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Sam Tobin--Hochstadt and Matthias Felleisen. The design and implementation of typed scheme. In POPL '08: Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 395--406, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Guido van Rossum and Fred L. Drake Jr., editors. The Python Language Reference Manual (version 2.5). Network Theory Ltd, 2006.Google ScholarGoogle Scholar
  58. Philip Wadler. Views: a way for pattern matching to cohabit with data abstraction. In Proceedings of the 14th ACM Symposium on Principles of Programming Languages, January 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Alessandro Warth, James R. Douglass, and Todd Millstein. Packrat parsers can support left recursion. In Workshop on Partial Evaluation and Program Manipulation (PEPM '08), January 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Thorn: robust, concurrent, extensible scripting on the JVM

                  Recommendations

                  Comments

                  Login options

                  Check if you have access through your login credentials or your institution to get full access on this article.

                  Sign in

                  PDF Format

                  View or Download as a PDF file.

                  PDF

                  eReader

                  View online with eReader.

                  eReader
                  About Cookies On This Site

                  We use cookies to ensure that we give you the best experience on our website.

                  Learn more

                  Got it!