Tool Demo: Scala-Virtualized

This paper describes Scala-Virtualized, which extends the Scala language and compiler with a small number of features that enable combining the benefits of shallow and deep embeddings of DSLs. We demonstrate our approach by showing how to embed three different domain-specific languages in Scala. Moreover, we summarize how others have been using our extended compiler in their own research and teaching. Supporting artifacts of our tool include web-based tutorials, nightly builds, and an Eclipse update site hosting an up-to-date version of the Scala IDE for Eclipse based on the Virtualized Scala compiler and standard library.

[1]  Gilles Dubochet Embedded Domain-Specific Languages using Libraries and Dynamic Metaprogramming , 2011 .

[2]  Christian Hofer,et al.  Polymorphic embedding of dsls , 2008, GPCE '08.

[3]  Martin Odersky,et al.  Scala Actors: Unifying thread-based and event-based programming , 2009, Theor. Comput. Sci..

[4]  Kunle Olukotun,et al.  Language virtualization for heterogeneous parallel computing , 2010, OOPSLA.

[5]  Martin Odersky,et al.  Parser combinators in Scala , 2008 .

[6]  Martin Odersky,et al.  Lightweight modular staging: a pragmatic approach to runtime code generation and compiled DSLs , 2010, GPCE '10.

[7]  Kunle Olukotun,et al.  A Heterogeneous Parallel Framework for Domain-Specific Languages , 2011, 2011 International Conference on Parallel Architectures and Compilation Techniques.

[8]  Martin Odersky,et al.  Type classes as objects and implicits , 2010, OOPSLA.

[9]  Kunle Olukotun,et al.  OptiML: An Implicitly Parallel Domain-Specific Language for Machine Learning , 2011, ICML.

[10]  Jacques Carette,et al.  Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages , 2007, Journal of Functional Programming.

[11]  Martin Odersky,et al.  Fighting bit Rot with Types (Experience Report: Scala Collections) , 2009, FSTTCS.

[12]  Jeremy G. Siek General purpose languages should be metalanguages , 2010, PEPM '10.

[13]  John C. Reynolds User-defined types and procedural data structures as complementary approaches to data abstraction , 1994 .

[14]  Kunle Olukotun,et al.  Building-Blocks for Performance Oriented DSLs , 2011, DSL.