Domain-Specific Language Protocols

by Pierre Jeanjean
DiverSE Coffee
Rennes, France


Protocols were defined by IDE manufacturers to reuse environment-agnostic language components. The most notable is the Language Server Protocol (LSP) for textual editors and the Debug Adapter Protocol (DAP) for debugging facilities. These are well suited for most general purpose languages that share a common set of fixed capabilities (e.g., textual syntax, explicit control flow), but they are limited in the support of the very heterogeneous services commonly found in domain-specific languages (DSL). In order to manage the interactions between a generic development environment and the language components available for a DSL, we explore the ability to establish domain-specific language protocols. We consider an approach in which a language server is defined by a microservices architecture, taking into account concerns about distribution, extensibility and scalability, and in which the protocol emerges from the orchestration.