ABSTRACT
Modern IDEs support multiple programming languages via plug-ins, but developing a high-quality language plug-in is a huge development effort and individual plug-ins are not reusable in other IDEs. We call this the IDE portability problem.
In this paper, we present a solution to the IDE portability problem based on a language-independent and IDE-independent intermediate representation (IR) for editor-service products. This IR enables IDE-independent language services to provide editor services for arbitrary IDEs, using language-independent IDE plug-ins. We combine the IR with a service-oriented architecture to facilitate the modular addition of language services, the decomposition of language services into smaller interdependent services, and the use of arbitrary implementation languages for services.
To evaluate the feasibility of our design, we have implemented the IR and architecture in a framework called Monto. We demonstrate the generality of our design by constructing language services for Java, JavaScript, Python, and Haskell and show that they are reusable in the Eclipse IDE and in a web-based IDE. We also evaluate the performance of Monto and show that Monto is responsive and has admissible performance overhead.
Supplemental Material
Available for Download
The auxiliary material contains the artifact submitted to the SLE'16 artifact submission.
- Dorian Birsan. On plug-ins and extensible architectures. ACM Queue, 3(2):40–46, 2005. Google ScholarDigital Library
- Philippe Charles, Robert M Fuhrer, and Stanley M Sutton Jr. Imp: a meta-tooling platform for creating language-specific ides in eclipse. In Proceedings of IEEE/ACM international conference on Automated software engineering, pages 485– 488, 2007. Google ScholarDigital Library
- Sergey Dmitriev. Language oriented programming: The next programming paradigm. JetBrains onBoard, 1(2), 2004.Google Scholar
- Sebastian Erdweg, Moritz Lichter, and Manuel Weiel. A sound and optimal incremental build system with dynamic dependencies. In Proceedings of Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 89–106. ACM, 2015. Google ScholarDigital Library
- 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 D. P. Konat, Pedro J. Molina, Martin Palatnik, Risto Pohjonen, Eugen Schindler, Klemens Schindler, Riccardo Solmi, Vlad A. Vergu, Eelco Visser, Kevin van der Vlist, Guido Wachsmuth, and Jimi van der Woning. Evaluating and comparing language workbenches: Existing results and benchmarks for the future. Computer Languages, Systems & Structures, 44:24–47, 2015. Google ScholarDigital Library
- Moritz Eysholdt and Heiko Behrens. Xtext: Implement your language faster than the quick and dirty way. In Proceedings of ACM international conference companion on Object oriented programming systems languages and applications companion, pages 307–309, 2010. Google ScholarDigital Library
- Lennart C. L. Kats and Eelco Visser. The Spoofax language workbench: Rules for declarative specification of languages and IDEs. In Proceedings of Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 444–463. ACM, 2010. Google ScholarDigital Library
- Jakob Nielsen. Usability engineering. Elsevier, 1994.Google ScholarDigital Library
- Martin Richards. The portability of the bcpl compiler. Software: Practice and Experience, 1971.Google ScholarCross Ref
- Scott Buckley Tony Sloane, Matt Roberts and Shaun Muscat. Monto: A disintegrated development environment. Software Language Engineering, pages 211–220, 2014.Google ScholarCross Ref
- Eelco Visser, Guido Wachsmuth, Andrew P. Tolmach, Pierre Neron, Vlad A. Vergu, Augusto Passalaqua, and Gabrieël Konat. A language designer’s workbench: A one-stop-shop for implementation and verification of language designs. In Proceedings of International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software (ONWARD), pages 95–111. ACM, 2014. Google ScholarDigital Library
- Markus Völter and Vaclav Pech. Language modularity with the MPS language workbench. In Proceedings of International Conference on Software Engineering (ICSE), pages 1449–1450, 2012. Google ScholarDigital Library
- Martin P Ward. Language-oriented programming. Software-Concepts and Tools, 15(4):147–161, 1994.Google Scholar
Index Terms
- The IDE portability problem and its solution in Monto
Comments