DLS ’22, December 07, 2022, Auckland, New Zealand Stefan Marr, Humphrey Burchell, and Fabio Niephaus
Combined with the execution-based approach, our ap-
proach has the potential to give highly precise and complete
information for an IDE with signicantly less code than nor-
mal language servers. Thus, we believe our approach is not
just practical, but even a desirable design for building tooling
for existing niche and research languages.
Furthermore, by itself, our design enables low-eort lan-
guage servers and would be an ideal complement to libraries
implementing the language server protocol to give develop-
ers the option to support many IDE features rapidly.
Future Work. In this work, we focused on dynamic lan-
guages. In a sense, they are more forgiving and user expec-
tations around the precision of code completion may also be
dierent than perhaps for statically-typed languages. Thus,
one of the next steps would be to explore how to benet
from type information in a language-agnostic way to expand
the proposed API to support such languages better.
With our support for basic language-agnostic linting, we
demonstrated that a useful correctness check can be done
with minimal eort. Since static analysis frameworks such
as Infer rst map to an abstract intermediate form, one could
investigate what a language-agnostic language server would
need to capture to enable more advanced analyses.
Acknowledgments
The authors would like to thank Owen Oclee for the initial
implementation of the SOM language server, paving the way
for this language-agnostic language server. We also thank
the DLS’22 reviewers for their detailed and constructive
suggestions.
This work was supported by the Engineering and Physi-
cal Sciences Research Council (EP/V007165/1) and a Royal
Society Industry Fellowship (INF\R1\211001).
References
Eugene Burmako. 2018. SemanticDB: A Common Data Model for Scala
Developer Tools. In Proceedings of the 3rd ACM SIGPLAN International
Workshop on Meta-Programming Techniques and Reection (Boston, MA,
USA) (META’18). ACM, 2. https://doi.org/10.1145/3281074. 3281076
Sebastian Erdweg, Tijs van der Storm, Markus Völter, Laurence Tratt, Remi
Bosman, William R. Cook, Albert Gerritsen, Angelo Hulshout, Steven
Kelly, Alex Loh, Gabriël Konat, Pedro J. Molina, Martin Palatnik, Risto Po-
hjonen, Eugen Schindler, Klemens Schindler, Riccardo Solmi, Vlad Vergu,
Eelco Visser, Kevin van der Vlist, Guido Wachsmuth, and Jimi van der
Woning. 2015. Evaluating and comparing language workbenches: Exist-
ing results and benchmarks for the future. Computer Languages, Systems
& Structures 44 (2015), 24–47. https://doi
.
org/10
.
1016/j
.
cl
.
2015
.
08
.
007
Special issue on the 6th and 7th International Conference on Software
Language Engineering (SLE 2013 and SLE 2014).
Moritz Eysholdt and Heiko Behrens. 2010. Xtext: Implement your Lan-
guage Faster than the Quick and Dirty way. In Proceedings of the ACM
international conference companion on Object oriented programming sys-
tems languages and applications companion (SPLASH ’10). ACM, 307–309.
https://doi. org/10.1145/1869542.1869625
Matthias Grimmer, Roland Schatz, Chris Seaton, Thomas Würthinger,
Mikel Luján, and Hanspeter Mössenböck. 2018. Cross-Language In-
teroperability in a Multi-Language Runtime. ACM Transactions on
Programming Languages and Systems 40, 2 (June 2018), 1–43. https:
//doi. org/10.1145/3201898
Michael Haupt, Michael Perscheid, and Robert Hirschfeld. 2011. Type
Harvesting: A Practical Approach to Obtaining Typing Information
in Dynamic Programming Languages. In Proceedings of the 2011 ACM
Symposium on Applied Computing - SAC '11. ACM, 1282–1289. https:
//doi. org/10.1145/1982185.1982464
Je Johnson. 2014. Designing with the Mind in Mind, Second Edition: Simple
Guide to Understanding User Interface Design Guidelines (2nd ed.). Morgan
Kaufmann Publishers Inc., San Francisco, CA, USA.
Lennart C.L. Kats and Eelco Visser. 2010. The Spoofax Language Work-
bench: Rules for Declarative Specication of Languages and IDEs. In
Proceedings of the ACM International Conference on Object Oriented Pro-
gramming Systems Languages and Applications (OOPSLA ’10). Association
for Computing Machinery (ACM), 444–463. https://doi
.
org/10
.
1145/
1932682. 1869497
Sven Keidel, Wulf Pfeier, and Sebastian Erdweg. 2016. The IDE Portability
Problem and Its Solution in Monto. In Proceedings of the 2016 ACM
SIGPLAN International Conference on Software Language Engineering
(Amsterdam, Netherlands) (SLE ’16). ACM, 152–162. https://doi
.
org
/10. 1145/2997364.2997368
Paul Klint, Tijs van der Storm, and Jurgen Vinju. 2009. RASCAL: A Domain
Specic Language for Source Code Analysis and Manipulation. In 2009
Ninth IEEE International Working Conference on Source Code Analysis and
Manipulation (SCAM ’09). IEEE, 168–177. https://doi
.
org/10
.
1109/SC
AM. 2009.28
Stefan Marr, Carmen Torres Lopez, Dominik Aumayr, Elisa Gonzalez Boix,
and Hanspeter Mössenböck. 2017. Kómpos: A Platform for Debugging
Complex Concurrent Applications. , 2 pages. https://doi
.
org/10
.
1145/
3079368. 3079378
Mauricio Verano Merino, Jurgen Vinju, and Tijs van der Storm. 2020. Bacatá:
Notebooks for DSLs, Almost for Free. The Art, Science, and Engineering
of Programming 4, 3 (Feb. 2020), 11:1–11:38. https://doi
.
org/10
.
22152/pr
ogramming-journal.org/2020/4/11
Terence Parr. 2013. The Denitive ANTLR 4 Reference (2nd ed.). Pragmatic
Bookshelf. 328 pages.
Daniel Stolpe, Tim Felgentre, Christian Humer, Fabio Niephaus, and Robert
Hirschfeld. 2019. Language-Independent Development Environment
Support for Dynamic Runtimes. In Proceedings of the 15th ACM SIGPLAN
International Symposium on D ynamic Languages (DLS’19). ACM, 80–90.
https://doi. org/10.1145/3359619.3359746
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. Programming Journal 2, 3 (March
2018), 30. https://doi
.
org/10
.
22152/programming-journal
.
org/2018/2/14
Thomas Würthinger, Andreas Wöß, Lukas Stadler, Gilles Duboscq, Doug Si-
mon, and Christian Wimmer. 2012. Self-Optimizing AST Interpreters. In
Proceedings of the 8th Dynamic Languages Symposium (Tucson, Arizona,
USA) (DLS’12). ACM, 73–82. https://doi.org/10.1145/2384577.2384587
14