ABSTRACT
Polyglot programming provides software developers with a broader choice in terms of software libraries and frameworks available for building applications. Previous research and engineering activities have focused on language interoperability and the design and implementation of fast polyglot runtimes. To make polyglot programming more approachable for developers, novel software development tools are needed that help them build polyglot applications. We believe a suitable prototyping platform helps to more quickly evaluate new ideas for such tools. In this paper we present GraalSqueak, a Squeak/Smalltalk virtual machine implementation for the GraalVM. We report our experience implementing GraalSqueak, evaluate the performance of the language and the programming environment, and discuss how the system can be used as a tooling platform for polyglot programming.
- Clément Béra, Eliot Miranda, Tim Felgentreff, Marcus Denker, and Stéphane Ducasse. 2017. Sista: Saving Optimized Code in Snapshots for Fast Start-Up. In Proceedings of the 14th International Conference onGoogle ScholarDigital Library
- Carl Friedrich Bolz, Lukas Diekmann, and Laurence Tratt. 2013. Storage Strategies for Collections in Dynamically Typed Languages. In Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages & Applications (OOPSLA ’13). ACM, New York, NY, USA, 167–182. Google ScholarDigital Library
- Carl Friedrich Bolz, Adrian Kuhn, Adrian Lienhard, Nicholas D. Matsakis, Oscar Nierstrasz, Lukas Renggli, Armin Rigo, and Toon Verwaest. 2008. Back to the Future in One Week — Implementing a Smalltalk VM in PyPy. Springer-Verlag, Berlin, Heidelberg, 123–139. Google ScholarDigital Library
- Michael L. Van de Vanter, Chris Seaton, Michael Haupt, Christian Humer, and Thomas Würthinger. 2018. Fast, Flexible, Polyglot Instrumentation Support for Debuggers and other Tools. The Art, Science, and Engineering of Programming 2, Article 14 (2018), 30 pages. Issue 3.Google Scholar
- Lukas Diekmann and Laurence Tratt. 2014. Eco: A Language Composition Editor. In Software Language Engineering (SLE). Springer, 82–101. Google ScholarCross Ref
- ECMA-335 2012. ECMA-335: Common Language Infrastructure (CLI). Technical Report ECMA-335. Ecma International, Geneva, Switzerland. Also ISO/IEC 23271.Google Scholar
- Tim Felgentreff, Tobias Pape, Patrick Rein, and Robert Hirschfeld. 2016. How to Build a High-Performance VM for Squeak/Smalltalk in Your Spare Time: An Experience Report of Using the RPython Toolchain. In Proceedings of the 11th Edition of the International Workshop on Smalltalk Technologies (IWST ’16). ACM, New York, NY, USA, Article 21, 10 pages. Google ScholarDigital Library
- Bert Freudenberg, Dan Ingalls, Tim Felgentreff, Tobias Pape, and Robert Hirschfeld. 2014. SqueakJS: A Modern and Practical Smalltalk That Runs in Any Browser. In Proceedings of the 10th ACM Symposium on Dynamic Languages (DLS ’14). ACM, New York, NY, USA, 57–66. Google ScholarDigital Library
- Adele Goldberg and David Robson. 1983. Smalltalk-80: The Language and Its Implementation. Addison-Wesley Longman, Boston, MA, USA.Google Scholar
- David Leopoldseder, Lukas Stadler, Manuel Rigger, Thomas Würthinger, and Hanspeter Mössenböck. 2018. A Cost Model for a Graph-based Intermediate-representation in a Dynamic Compiler. In Proceedings of the 10th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages (VMIL 2018). ACM, New York, NY, USA, 26–35. Google ScholarDigital Library
- Stefan Marr, Benoit Daloze, and Hanspeter Mössenböck. 2016. Crosslanguage Compiler Benchmarking: Are We Fast Yet?. In Proceedings of the 12th Symposium on Dynamic Languages (DLS 2016). ACM, New York, NY, USA, 120–131. Google ScholarDigital Library
- Stefan Marr and Stéphane Ducasse. 2015. Tracing vs. Partial Evaluation: Comparing Meta-compilation Approaches for Self-optimizing Interpreters. In Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2015). ACM, New York, NY, USA, 821–839. Google ScholarDigital Library
- Stefan Marr, Carmen Torres Lopez, Dominik Aumayr, Elisa Gonzalez Boix, and Hanspeter Mössenböck. 2017. A Concurrency-Agnostic Protocol for Multi-Paradigm Concurrent Debugging Tools. In Proceedings of the 13th ACM SIGPLAN International Symposium on Dynamic Languages (DLS’17). ACM, 12. Google ScholarDigital Library
- Robert McGill, John W. Tukey, and Wayne A. Larsen. 1978. Variations of Box Plots. The American Statistician 32, 1 (1978), 12–16. Google ScholarCross Ref
- Eliot Miranda, Clément Béra, Elisa Gonzalez Boix, and Dan Ingalls. 2018. Two Decades of Smalltalk VM Development: Live VM Development Through Simulation Tools. In Proceedings of the 10th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages (VMIL 2018). ACM, New York, NY, USA, 57–66. Google ScholarDigital Library
- Sarah Mount and Laurence Tratt. 2017. Simple Visualisation of Profiling Data. Project report.Google Scholar
- Fabio Niephaus, Tim Felgentreff, and Robert Hirschfeld. 2018. GraalSqueak: A Fast Smalltalk Bytecode Interpreter Written in an AST Interpreter Framework. In Proceedings of the 13th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS ’18). ACM, New York, NY, USA, 30–35. Google ScholarDigital Library
- Fabio Niephaus, Tim Felgentreff, Tobias Pape, and Robert Hirschfeld. 2019. Efficient Implementation of Smalltalk Activation Records in Language Implementation Frameworks. In Proceedings of the 3rd International Companion Conference on Art, Science, and Engineering of Programming (Programming ’19). ACM, New York, NY, USA, Article 6, 3 pages. Google ScholarDigital Library
- Fabio Niephaus, Tim Felgentreff, Tobias Pape, Robert Hirschfeld, and Marcel Taeumel. 2018. Live Multi-language Development and Runtime Environments. The Art, Science, and Engineering of Programming 2, Article 8 (2018), 30 pages. Issue 3.Google Scholar
- Fabio Niephaus, Eva Krebs, Christian Flach, Jens Lincke, and Robert Hirschfeld. 2019. PolyJuS: A Squeak/Smalltalk-based Polyglot Notebook System for the GraalVM. In Proceedings of the 3rd International Companion Conference on Art, Science, and Engineering of Programming (Programming ’19). ACM, New York, NY, USA, Article 24, 6 pages. Google ScholarDigital Library
- Oracle Corporation and/or its affiliates. 2019. Loom - Fibers, Continuations and Tail-Calls for the JVM. https://openjdk.java.net/projects/ loom/Google Scholar
- Manuel Rigger, Matthias Grimmer, Christian Wimmer, Thomas Würthinger, and Hanspeter Mössenböck. 2016. Bringing Low-level Languages to the JVM: Efficient Execution of LLVM IR on Truffle. In Proceedings of the 8th International Workshop on Virtual Machines and Intermediate Languages (VMIL 2016). ACM, New York, NY, USA, 6–15. Google ScholarDigital Library
- Daniel Stolpe, Tim Felgentreff, Fabio Niephaus, and Robert Hirschfeld. 2019. Language-independent Development Environment Support for Dynamic Runtimes. In Proceedings of the 15th ACM SIGPLAN International Symposium on Dynamic Languages (DLS ’19). ACM, New York, NY, USA, 11. Google ScholarCross Ref
- Marcel Taeumel, Michael Perscheid, Bastian Steinert, Jens Lincke, and Robert Hirschfeld. 2014. Interleaving of Modification and Use in Data-driven Tool Development. In Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software (Onward! 2014). ACM, New York, NY, USA, 185–200. Google ScholarDigital Library
- Thuan L. Thai and Hoang Q. Lam. 2003. .NET Framework Essentials (3rd ed.). O’Reilly Media.Google Scholar
- Andreas Wöß, Christian Wirth, Daniele Bonetta, Chris Seaton, Christian Humer, and Hanspeter Mössenböck. 2014. An Object Storage Model for the Truffle Language Implementation Framework. In Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools (PPPJ ’14). ACM, New York, NY, USA, 133–144. Google ScholarDigital Library
- Thomas Würthinger, Christian Wimmer, Christian Humer, Andreas Wöß, Lukas Stadler, Chris Seaton, Gilles Duboscq, Doug Simon, and Matthias Grimmer. 2017. Practical Partial Evaluation for Highperformance Dynamic Language Runtimes. In Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2017). ACM, New York, NY, USA, 662–676. Google ScholarDigital Library
- Thomas Würthinger, Andreas Wöß, Lukas Stadler, Gilles Duboscq, Doug Simon, and Christian Wimmer. 2012. Self-optimizing AST Interpreters. In Proceedings of the 8th Symposium on Dynamic Languages (DLS ’12). ACM, New York, NY, USA, 73–82. Google ScholarDigital Library
- Thomas Würthinger, Christian Wimmer, Andreas Wöß, Lukas Stadler, Gilles Duboscq, Christian Humer, Gregor Richards, Doug Simon, and Mario Wolczko. 2013. One VM to Rule Them All. In Proceedings of the 2013 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software (Onward! 2013). ACM, New York, NY, USA, 187–204. Google ScholarDigital Library
Index Terms
- GraalSqueak: toward a smalltalk-based tooling platform for polyglot programming
Recommendations
Towards polyglot adapters for the GraalVM
Programming '19: Companion Proceedings of the 3rd International Conference on the Art, Science, and Engineering of ProgrammingToday, there are many different programming languages and even more software libraries and frameworks for various use cases. Polyglot runtime environments such as GraalVM allow developers to build and extend applications using multiple languages, which ...
PolyJuS: a Squeak/Smalltalk-based polyglot notebook system for the GraalVM
Programming '19: Companion Proceedings of the 3rd International Conference on the Art, Science, and Engineering of ProgrammingJupyter notebooks are used by data scientists to publish their research in an executable format. These notebooks are usually limited to a single programming language. Current polyglot notebooks extend this concept by allowing multiple languages per ...
GraalSqueak: A Fast Smalltalk Bytecode Interpreter Written in an AST Interpreter Framework
ICOOOLPS '18: Proceedings of the 13th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and SystemsLanguage implementation frameworks aim to provide everything that is needed to build interpreters, simplify the process by making certain design decisions in advance, and suggest implementation strategies to virtual machine creators. Truffle, the ...
Comments