MPS 2022.3 bietet verbesserte Constraint-Regeln, Migrationssynchronisierung mit MPS-Erweiterungen, Kotlin-Stubs für die JVM und mehr.
Die Constraint Rules-Sprache wurde geschaffen, um die Unzulänglichkeiten der Constraint-Sprache zu beheben. Durch Constraint Rules macht dieses Release einen Schritt nach vorn in Bezug auf die Nutzbarkeit der Sprache.
MPS-Module dienen unterschiedlichen Zwecken – sie können eine Sandbox zum Experimentieren mit Ihrer Sprache bereitstellen oder aktiven Plugin-Code enthalten, der das Verhalten von MPS oder der IntelliJ-IDEA-Plattform modifiziert. In MPS 2022.3 haben wir all diese Einsatzzwecke unter einem Dach vereint. Die Java-Facet-Seite des Solution-Moduls wurde überarbeitet, um alle relevanten Einstellungen zusammenzuführen und häufige Szenarien zu identifizieren, damit Sprachentwickler*innen und Anwender*innen den Verwendungszweck eines Moduls leicht erkennen können. Das IDEA-Plugin „Module Facet“ wurde als veraltet gekennzeichnet und wird nicht mehr verwendet. Wir haben nur die Einstellungen für Solution-Module zugänglich gemacht – Language- und Generator-Module verfolgen zwar den gleichen Ansatz, ihre Einstellungen werden jedoch implizit konfiguriert. Mehr erfahren.
Das MPS-Ökosystem wurde schon immer durch eine aktive Community bereichert, und wir haben unsere Anwender*innen stets ermutigt, die Funktionalität des Produkts mit externen Bibliotheken zu erweitern. Third-party libraries, such as MPS Extensions, have been key to improving the user experience for products built with MPS. Neben den zahlreichen Vorteilen hat dies für die Gemeinschaft jedoch auch einen signifikanten Nachteil – Anwender*innen müssen die Migration der Drittanbieter-Bibliotheken abwarten, bevor sie die MPS-Version aktualisieren können. Wir haben mit itemis, unserem offiziellen Partner und Haupt-Maintainer von MPS-Erweiterungen, gemeinsam daran gearbeitet, unsere Releases zu synchronisieren, um eine reibungslosere Migration auf die neueste Produktversion zu ermöglichen.
Sprachdesigner*innen können jetzt den Umfang des sich wiederholenden Codes reduzieren, indem sie diesen Code in Hilfsmethoden extrahieren, die sich direkt innerhalb des Root-Knotens der Definition befinden. Diese zusätzlichen Methoden können an folgenden Orten definiert werden:
Intentions erlauben auch zusätzliche Felder für die Erhaltung der in der Methode isApplicable berechneten Werte, damit diese in der Methode execute verwendet werden können.
Sie können jetzt Stubs aus kompilierten Kotlin/JVM-Bibliotheken importieren – bisher konnten nur Kotlin/Common-Bibliotheken importiert werden. Dank dieser Verbesserung können Sie Bibliotheken, die für die JVM (Java, Kotlin oder gemischt) kompiliert wurden, in Ihren Moduloptionen über den Modell-Root Kotlin JVM verwenden. Mehr erfahren.
Diese neue MPS-Version enthält verschiedene kleinere Änderungen und Verbesserungen:
this
kann korrekt auf ein Label verweisen (z. B. this@EineKlasse
). $kotlinc_home
-Makro, anstatt wie bisher einen fest kodierten Speicherort zu verwenden. Sie können jetzt einen Konstruktor-Aufruf für einen bestimmten Aufruf mit einer Rechtstransformation erstellen, indem Sie eine öffnende Klammer eingeben. Dies funktioniert mit jedem Kotlin-Typ, der diese Operation unterstützt (dies kann Benutzertypen einschließen), und dadurch wird die Erstellung eines Standardausdrucks für einen bestimmten Typ erleichtert, z. B. bei der Erstellung eines Lambdas aus einem funktionalen Schnittstellentyp.
Erweiterungsfunktionen in Scopes wurden geändert, um kompatible Methoden in Scopes nicht auszuschließen. Der Preis dafür ist, dass einige Elemente in Scopes enthalten sind, die aufgrund der Performance der aktuellen Systemimplementierung nicht anwendbar sind.
Durch die automatische Auflösung von Funktionsreferenzen können Referenzen korrigiert werden, wenn eine nicht anwendbare Funktion ausgewählt wird.
Eine neue Intention aktualisiert den MPSStartupScript-Knoten und setzt VM-Optionen und Klassenpfadwerte auf die aktuellen MPS-Werte. MPS-VM-Optionen und Klassenpfadwerte ändern sich mit jeder neuen Version. Bisher mussten Benutzer*innen Build-Projekte für eine eigenständige IDE manuell aktualisieren.
Für jede Hauptversion erstellen wir eine Anleitung für die Migration von älteren MPS-Versionen, um einen reibungslosen Ablauf zu gewährleisten. Bitte lesen Sie diese sorgfältig durch.