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

GraalSqueak: toward a smalltalk-based tooling platform for polyglot programming

Published:21 October 2019Publication History

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle Scholar
  5. Lukas Diekmann and Laurence Tratt. 2014. Eco: A Language Composition Editor. In Software Language Engineering (SLE). Springer, 82–101. Google ScholarGoogle ScholarCross RefCross Ref
  6. ECMA-335 2012. ECMA-335: Common Language Infrastructure (CLI). Technical Report ECMA-335. Ecma International, Geneva, Switzerland. Also ISO/IEC 23271.Google ScholarGoogle Scholar
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. Adele Goldberg and David Robson. 1983. Smalltalk-80: The Language and Its Implementation. Addison-Wesley Longman, Boston, MA, USA.Google ScholarGoogle Scholar
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. Robert McGill, John W. Tukey, and Wayne A. Larsen. 1978. Variations of Box Plots. The American Statistician 32, 1 (1978), 12–16. Google ScholarGoogle ScholarCross RefCross Ref
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. Sarah Mount and Laurence Tratt. 2017. Simple Visualisation of Profiling Data. Project report.Google ScholarGoogle Scholar
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle Scholar
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. Oracle Corporation and/or its affiliates. 2019. Loom - Fibers, Continuations and Tail-Calls for the JVM. https://openjdk.java.net/projects/ loom/Google ScholarGoogle Scholar
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarCross RefCross Ref
  24. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. Thuan L. Thai and Hoang Q. Lam. 2003. .NET Framework Essentials (3rd ed.). O’Reilly Media.Google ScholarGoogle Scholar
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  28. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. GraalSqueak: toward a smalltalk-based tooling platform for polyglot programming

        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
        • Published in

          cover image ACM Conferences
          MPLR 2019: Proceedings of the 16th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes
          October 2019
          171 pages
          ISBN:9781450369770
          DOI:10.1145/3357390
          • General Chair:
          • Antony Hosking,
          • Program Chair:
          • Irene Finocchi

          Copyright © 2019 ACM

          Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 21 October 2019

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article

          Upcoming Conference

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader