MPS 2022.3 incluye mejoras en las reglas de restricción, migración de sincronización con extensiones MPS, stubs de Kotlin para JVM y mucho más.
Hemos creado el lenguaje de las reglas de restricción para solucionar las deficiencias del lenguaje de restricciones. Para esta versión, hemos mejorado las reglas de restricción respecto de la usabilidad del lenguaje.
Los módulos de MPS tienen varias funciones, que van desde un entorno donde hacer pruebas con el lenguaje hasta un complemento de código activo para alterar el comportamiento de MPS o de la plataforma IntelliJ IDEA. En MPS 2022.3, las hemos reunido todas bajo un mismo paraguas. Se ha modificado la página Java Facet del módulo Solution para que pueda albergar todas las configuraciones relevantes e identificar escenarios comunes para que los diseñadores y usuarios de lenguajes reconozcan fácilmente el uso previsto de un módulo. El complemento de IDEA Module Facet ha quedado obsoleto y ya no se utilizará. Hemos expuesto los ajustes solo para los módulos Solution. Los módulos Language y Generator tienen el mismo enfoque, pero con los ajustes configurados de forma implícita. Más información.
MPS siempre ha contado con una comunidad activa que aporta valor al ecosistema y siempre hemos animado a los usuarios a utilizar bibliotecas externas para enriquecer la funcionalidad del producto. Third-party libraries, such as MPS Extensions, have been key to improving the user experience for products built with MPS. Aunque esto ha aportado muchos beneficios a la comunidad, hay un inconveniente importante: el usuario tiene que esperar a la migración de la biblioteca de terceros para actualizar la versión de MPS. Hemos estado trabajando con itemis, nuestro socio oficial y principal mantenedor de extensiones de MPS, para sincronizar nuestras versiones y facilitar la migración a la versión más reciente del producto.
Ahora, los diseñadores de lenguajes pueden reducir la cantidad de código repetitivo extrayéndolo en métodos de ayuda dentro del nodo raíz de la definición. Estos métodos adicionales pueden definirse en:
Las intenciones también permiten que los campos adicionales conserven los valores calculados en el método isApplicable para utilizarlos en el método execute.
Ahora, es posible importar stubs de bibliotecas compiladas de Kotlin/JVM, mientras que antes solo era posible importar bibliotecas de Kotlin/Common. Con esta mejora, es posible usar bibliotecas compiladas en JVM (Java, Kotlin o mixtas) a través de la raíz del modelo Kotlin JVM en las opciones del módulo. Más información.
Con esta nueva versión de MPS, hemos incluido varios cambios menores y mejoras:
this
puede referirse correctamente a una etiqueta (por ejemplo, this@SomeClass
). $kotlinc_home
en lugar de una ubicación previamente codificada. Ahora, es posible crear una llamada a un constructor a partir de un tipo con una transformación a la derecha escribiendo paréntesis a la izquierda. Esto funciona para cualquier tipo de Kotlin compatible con esta operación (esto es extensible para tipos de usuario) y facilita la creación de una expresión por defecto para un tipo dado, como cuando se crea una lambda a partir de un tipo de interfaz funcional.
Se han cambiado las funciones de extensión de los ámbitos para no excluir métodos compatibles en estos, a costa de que haya algunos elementos en ámbitos que no son aplicables debido al rendimiento del tipo actual de implementación del sistema.
La resolución automática de referencias a funciones puede solucionar las referencias en caso de que se seleccione una función no aplicable.
Una nueva intención actualiza el nodo MPSStartupScript y establece las opciones de la máquina virtual y los valores de la ruta de clase a los valores actuales de MPS. Las opciones de la máquina virtual y los valores de la ruta de clase de MPS cambian con cada nueva versión. Antes, el usuario tenía que actualizar de forma manual los proyectos de compilación para un IDE independiente.
En cada uno de nuestros grandes lanzamientos, elaboramos instrucciones para migrar desde versiones más antiguas de MPS y asegurar que todo funciona correctamente. Léalas atentamente.