Injecting Language Workbench Technology into Mainstream Languages

Authors Michael Ballantyne, Matthias Felleisen



PDF
Thumbnail PDF

File

OASIcs.EVCS.2023.3.pdf
  • Filesize: 406 kB
  • 11 pages

Document Identifiers

Author Details

Michael Ballantyne
  • PLT at Northeastern University, Boston, MA, USA
Matthias Felleisen
  • PLT at Northeastern University, Boston, MA, USA

Acknowledgements

The authors are grateful for technical feedback from Michael Delmonaco, Siddhartha Kasivajhula, and Alexis King. Also thanks to William Byrd and Siddhartha Kasivajhula for helpful comments on early drafts, and to Shriram Krishnamurthi and Ryan Culpepper for rubbing Matthias’s nose in Spoofax and language workbench ideas.

Cite AsGet BibTex

Michael Ballantyne and Matthias Felleisen. Injecting Language Workbench Technology into Mainstream Languages. In Eelco Visser Commemorative Symposium (EVCS 2023). Open Access Series in Informatics (OASIcs), Volume 109, pp. 3:1-3:11, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2023)
https://doi.org/10.4230/OASIcs.EVCS.2023.3

Abstract

Eelco Visser envisioned a future where DSLs become a commonplace abstraction in software development. He took strides towards implementing this vision with the Spoofax language workbench. However, his vision is far from the mainstream of programming today. How will the many mainstream programmers encounter and adopt language workbench technology? We propose that the macro systems found in emerging industrial languages open a path towards delivering language workbenches as easy-to-adopt libraries. To develop the idea, we sketch an implementation of a language workbench as a macro-library atop Racket and identify the key features of the macro system needed to enable this evolution path.

Subject Classification

ACM Subject Classification
  • Software and its engineering → Macro languages
  • Software and its engineering → Domain specific languages
  • Software and its engineering → Development frameworks and environments
Keywords
  • Language workbenches
  • macro systems
  • language adoption

Metrics

  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    0
    PDF Downloads

References

  1. Leif Andersen, Michael Ballantyne, and Matthias Felleisen. Adding interactive visual syntax to textual code. Proc. ACM Program. Lang., 4(OOPSLA), November 2020. URL: https://doi.org/10.1145/3428290.
  2. Michael Ballantyne, Alexis King, and Matthias Felleisen. Macros for domain-specific languages. Proc. ACM Program. Lang., 4(OOPSLA), November 2020. URL: https://doi.org/10.1145/3428297.
  3. Langston Barrett, David Thrane Christiansen, and Samuel Gélineau. Predictable macros for Hindley-Milner. In The Workshop on Type-Driven Development, TyDe '20, 2020. URL: https://davidchristiansen.dk/pubs/tyde2020-predictable-macros-abstract.pdf.
  4. Hendrik Bünder and Herbert Kuchen. Towards multi-editor support for domain-specific languages utilizing the language server protocol. In Model-Driven Engineering and Software Development, MODELSWARD 2019, pages 225-245, 2020. URL: https://doi.org/10.1007/978-3-030-37873-8_10.
  5. Stephen Chang, Michael Ballantyne, Milo Turner, and William J. Bowman. Dependent type systems as macros. Proc. ACM Program. Lang., 4(POPL), December 2019. URL: https://doi.org/10.1145/3371071.
  6. Stephen Chang, Alex Knauth, and Ben Greenman. Type systems as macros. In Proc. Principles of Programming Languages, POPL 2017, pages 694-705, 2017. URL: https://doi.org/10.1145/3009837.3009886.
  7. Microsoft Corporation. Language server protocol. URL: https://microsoft.github.io/language-server-protocol/.
  8. Ryan Culpepper. Fortifying macros. Journal of Functional Programming, 22(4-5):439-476, 2012. URL: https://doi.org/10.1017/S0956796812000275.
  9. Joe Darcy and Oracle. Java specification request 269: pluggable annotation processing. URL: https://jcp.org/en/jsr/detail?id=269.
  10. Sebastian Erdweg, Lennart C. L. Kats, Tillmann Rendel, Christian Kästner, Klaus Ostermann, and Eelco Visser. Growing a language environment with editor libraries. In Proc. Generative Programming and Component Engineering, GPCE '11, pages 167-176, 2011. URL: https://doi.org/10.1145/2047862.2047891.
  11. Sebastian Erdweg, Tillmann Rendel, Christian Kästner, and Klaus Ostermann. SugarJ: library-based syntactic language extensibility. In Proc. Object-Oriented Programming Systems, Languages & Applications, OOPSLA '11, pages 391-406, 2011. URL: https://doi.org/10.1145/2048066.2048099.
  12. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay, Jay McCarthy, and Sam Tobin-Hochstadt. A programmable programming language. Communications of the ACM, 61(3):62-71, February 2018. URL: https://doi.org/10.1145/3127323.
  13. Daniel Feltey, Spencer P. Florence, Tim Knutson, Vincent St-Amour, Ryan Culpepper, Matthew Flatt, Robert Bruce Findler, and Matthias Felleisen. Languages the Racket way. Language Workbench Challenge, 2016. URL: https://users.cs.northwestern.edu/~robby/pubs/papers/lwc2016-ffkscfff.pdf.
  14. Matthew Flatt. Composable and compilable macros: you want it when? In Proc. International Conference on Functional Programming, ICFP '02, pages 72-83, 2002. URL: https://doi.org/10.1145/581478.581486.
  15. Matthew Flatt. Binding as sets of scopes. In Proc. Principles of Programming Languages, POPL '16, pages 705-717, 2016. URL: https://doi.org/10.1145/2837614.2837620.
  16. Matthew Flatt, Ryan Culpepper, David Darais, and Robert Bruce Findler. Macros that work together: compile-time bindings, partial expansion, and definition contexts. Journal of Functional Programming, 22(2):181-216, March 2012. URL: https://doi.org/10.1017/S0956796812000093.
  17. Jeremy Gibbons and Nicolas Wu. Folding domain-specific languages: deep and shallow embeddings. In Proc. International Conference on Functional Programming, ICFP '14, pages 339-347, 2014. URL: https://doi.org/10.1145/2628136.2628138.
  18. Lennart C. L. Kats and Eelco Visser. The Spoofax language workbench: rules for declarative specification of languages and IDEs. In Proc. Object-Oriented Programming Systems, Languages & Applications, OOPSLA '10, pages 444-463, 2010. URL: https://doi.org/10.1145/1869459.1869497.
  19. Cyrus Omar, David Moon, Andrew Blinn, Ian Voysey, Nick Collins, and Ravi Chugh. Filling typed holes with live GUIs. In Proc. Programming Language Design and Implementation, PLDI '21, pages 511-525, 2021. URL: https://doi.org/10.1145/3453483.3454059.
  20. Daniel A. A. Pelsmaeker, Hendrik van Antwerpen, Casper Bach Poulsen, and Eelco Visser. Language-parametric static semantic code completion. Proc. ACM Program. Lang., 6(OOPSLA1), April 2022. URL: https://doi.org/10.1145/3527329.
  21. The Rust Project. The Rust reference: Procedural macros. URL: https://doc.rust-lang.org/reference/procedural-macros.html.
  22. Sam Tobin-Hochstadt, Vincent St-Amour, Ryan Culpepper, Matthew Flatt, and Matthias Felleisen. Languages as libraries. In Proc. Programming Language Design and Implementation, PLDI '11, pages 132-141, 2011. URL: https://doi.org/10.1145/1993498.1993514.
  23. Hendrik van Antwerpen, Casper Bach Poulsen, Arjen Rouvoet, and Eelco Visser. Scopes as types. Proc. ACM Program. Lang., 2(OOPSLA), October 2018. URL: https://doi.org/10.1145/3276484.
  24. Eelco Visser. WebDSL: a case study in domain-specific language engineering. In Generative and Transformational Techniques in Software Engineering II, International Summer School, GTTSE '07, pages 291-373, 2007. URL: https://doi.org/10.1007/978-3-540-88643-3_7.
  25. Eelco Visser, Guido Wachsmuth, Andrew Tolmach, Pierre Neron, Vlad Vergu, Augusto Passalaqua, and Gabrieël Konat. A language designer’s workbench: a one-stop-shop for implementation and verification of language designs. In Proc. International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software, Onward! 2014, pages 95-111, 2014. URL: https://doi.org/10.1145/2661136.2661149.
  26. Markus Voelter and Sascha Lisson. Supporting diverse notations in MPS' projectional editor. In Proc. International Workshop on The Globalization of Modeling Languages, GEMOC 2014, pages 7-16, 2014. URL: http://ceur-ws.org/Vol-1236/paper-03.pdf.
  27. Martin P Ward. Language-oriented programming. Software Concepts and Tools, 15(4):147-161, 1994. URL: https://doi.org/10.1007/978-1-4302-2390-0-12.
Questions / Remarks / Feedback
X

Feedback for Dagstuhl Publishing


Thanks for your feedback!

Feedback submitted

Could not send message

Please try again later or send an E-mail