Der Generator für Programmiersprachen Langium wird schneller und schlanker

Das Eclipse-Project Langium zur Erzeugung domänen-spezifischer Programmiersprachen parst in Version 3.0 schneller und bekommt eine schlankere Struktur.

In Pocket speichern vorlesen Druckansicht 8 Kommentare lesen

(Bild: iX/Heise Medien)

Lesezeit: 3 Min.

Version 3.0 des Language Development Frameworks (LDF) Eclipse Langium bietet eine Reihe größerer Verbesserungen, die das Parsen neuer Sprachen und die Einbindung in Entwicklungswerkzeuge betreffen. Bei großen Projekten macht sich die erhöhte Geschwindigkeit durch asynchrones Parsen bemerkbar, und die Langium-Pakete sind granularer aufgeteilt, sodass Entwicklerinnen und Entwickler eine gezielte Auswahl treffen können.

Beim asynchronen Parsen ist es nun möglich, Parsing-Aufgaben in verschiedene Node Worker Threads aufzuteilen, sodass ein Parser unabhängig gestoppt werden kann. Das Einbinden erfolgt über das Interface WorkerThreadAsyncParser, wobei das Langium-Team darauf hinweist, dass die Parallelisierung die Start- und Ladezeit verzögern kann und sich nur bei größeren Code-Mengen positiv auf die Geschwindigkeit auswirkt.

Dank der differenzierteren Aufteilung der Langium-Pakete können Entwicklerinnen und Entwickler nun die Funktionen zusammenstellen, die sie für ihre Anwendung benötigen (z. B. mit Language Service Protocol (LSP) oder ohne). Das erhöht auch die Startgeschwindigkeit für die Endanwender. Neue Unterpakete sind beispielsweise /generate für die Logik des Generators, /grammer für die Sprachstruktur von Langium oder /lsp für LSP. Auch die Größe des Gesamtpakets hat sich durch Ausmisten (tree shaking) verringert.

Verbessert hat das Entwicklungsteam ferner den Umgang mit Dateien, die Endanwender bearbeiten, durch einen eigenständigen Dienst, den Document Update Handler (DocuemetUpdateHandler). Kleinere Änderungen betreffen den JSONSerializer und das Fehler-Reporting.

Viele der Neuerungen erfordern LSP, sodass Entwicklerinnen und Entwickler verstärkt auf das neue /langium/lsp-Paket zugreifen müssen, wobei das Langium-Team versucht hat, die allgemeine API ähnlich zur Vorgängerversion zu halten, aber eben weiter ausdifferenziert.

Das Eclipse-Projekt Langium dient der Erzeugung von Domain Specific Languages (DSL), also Programmiersprachen, die speziellen Zwecken dienen sollen, ein Konzept, das dem Low-Code-Umfeld zugerechnet wird. Fachspezifische Endanwenderinnen und -anwender sollen mit der einfachen, entworfenen Sprache simple Aufgaben erfüllen, zum Beispiel für Diagramme, Modellierung, Promt-Erzeugung oder im Finanzbereich. Beispiele sind MermaidJS, ZenStack, oder Jayvee. Die DSL-Scripte laufen in einem JavaScript-Interpreter oder lassen sich als Executable erzeugen.

Eine domänen-spezifische Sprache prüft die Syntax (hier Groß-Klein-Schreibweise) und lässt sich mit Highlighting besser coden.

(Bild: Langium)

Langium basiert auf TypeScript und arbeitet in einer Node.js-Umgebung oder im Browser. Die Kommunikation mit dem Editor erfolgt über LSP. Durch die Einbindung in Entwicklungsumgebungen wie Eclipse oder VS Code erhalten die neuen Sprachen Funktionen wie Syntaxprüfung oder Highlighting.

Im Blog der Firma finden sich weitere Infos zu den Funktionen von Langium und zu den Neuerungen der Version 3.0. Die Quellen unter MIT-Lizenz stehen auf GitHub bereit.

(who)