I would like to view this page in
MPS 2022.2 incorpora anotaciones en Inspector, mejor compatibilidad con Kotlin, API de SModel mejorada, y mucho más.
Las anotaciones son ahora accesibles desde la ventana Inspector, y el proceso de anotación se iniciará para toda la raíz. Se puede acceder a esta acción haciendo clic con el botón derecho del ratón en el extremo izquierdo de la ventana Inspector. La anotación se abrirá tanto en el editor de Inspector como en el editor principal.
Se han corregido muchos problemas de edición para ofrecer una mejor experiencia de escritura, como por ejemplo:
T.() -> R
que se cargaba incorrectamente como (T) -> R
). it
. Receiver.() -> Unit
) utilizarán correctamente ese tipo de receptor como un this
implícito dentro del cuerpo de la lambda. La compatibilidad con SModel está ahora disponible en MPS Kotlin con el nuevo lenguaje jetbrains.mps.kotlin.smodel. Junto con la compatibilidad con compilación mejorada, permite el uso de código Kotlin en módulos del lenguaje (como clases de ayudantes, por ejemplo).
Además de los tipos normales (nodos, conceptos, enlaces y referencias), aprovecha la mayor flexibilidad de MPS Kotlin para aportar parámetros de tipo Concept. Las funciones, variables y clases ahora pueden declarar y utilizar dichos parámetros y reutilizarlos en sus tipos internos, lo que permite una escritura más fácil y aprovecha los castings inteligentes de Kotlin.
Se ha mejorado la compatibilidad con la compilación de Kotlin con una mejor persistencia. Como resultado, las clases Kotlin ya no se borran cuando se reinicia MPS.
Se ha añadido una nueva opción en los scripts de compilación para marcar un módulo para que se compile con el compilador de Kotlin. La inserción de este marcador es manual; actualmente no hay ninguna comprobación automática para establecerla como verdadera. El marcador se debe añadir cuando un módulo que contiene archivos Kotlin va a ser compilado a JVM.
Al añadir comentarios a BaseLanguage, ahora es posible personalizarlos aún más con el estilo del texto. Los comentarios admiten los estilos de negrita (Ctrl + B), no cursiva (Ctrl + I), subrayado (Ctrl + U), y estilos de negrita y no cursiva (Ctrl + B -> Ctrl + I).
En BaseLanguage, ahora es posible efectuar transformaciones post-fix que le permiten transformar el código añadiendo algún texto a la expresión. Esto ahorra tiempo a los desarrolladores, ya que no tienen que mover el signo de intercalación al frente de la expresión ni seleccionar la expresión para aplicar una transformación.
MPS solía descubrir los modelos en el momento en que se registraban en un repositorio. Descubrir un modelo en un módulo de proyecto normal significaba recorrer el sistema de archivos para encontrar los archivos y sus tipos, y leer al menos la información de encabezado del modelo.
Ahora, los módulos no participan en el descubrimiento de modelos a menos que se soliciten. Hay una nueva API de SModule (SModule.forEachRegisteredModel()) para acceder solo a los modelos ya conocidos por un módulo, sin activar el descubrimiento o la carga de modelos. Si utiliza clientes de la API SModel, especialmente las subclases SRepositoryContentAdapter, es posible que desee adoptar la nueva API para sacar partido de la mejora.
MPS cuenta ahora con una API coherente para crear referencias, así como una representación interna de estas actualizada. Estos cambios tienen como objetivo mejorar el sistema de referencia/persistencia de los modelos, que está previsto para posteriores versiones. No obstante, el cambio ya permite reducir el almacenamiento en memoria de cualquier modelo en aproximadamente un 5 %.
MPS ahora respeta las entradas jar versionadas y expondrá las clases Java con una versión que coincida con el tiempo de ejecución real de Java.
Aunque MPS y la plataforma IntelliJ utilizaban una versión reducida de la biblioteca Log4j sin problemas de seguridad conocidos, ambos han cambiado el registro al paquete estándar java.util.logging. Se implementa una capa de compatibilidad (basada en SLF4J) para redirigir las peticiones de la API Log4j a una implementación de Java Util Logging (JUL).
La acción Debug Log Settings permite configurar los niveles de DEBUG y TRACE para las categorías. Además, ahora también hay un archivo de configuración bin/log.properties que utiliza el conocido formato de configuración JUL. A diferencia del log.xml de versiones anteriores, este archivo de configuración no se lee de forma predeterminada, pero los usuarios pueden solicitar el acceso a esta (o cualquier otra configuración externa) utilizando la propiedad del sistema idea.log.config.properties.file.
Los scripts de build de Ant que MPS genera a partir de las declaraciones lang.build utilizan tareas por separado para generar y compilar las fuentes (<generate> propia de MPS y <javac> regular de Ant). Ahora hay una nueva tarea <mps.make> que corresponde al proceso Make lanzado desde el IDE. Es responsable de la transición completa de un modelo a código compilado. La tarea combina tanto la generación de código como la compilación, lo que ahorra tiempo ya que MPS necesita clases compiladas de todos modos para sus propósitos de carga de clases de módulo (ya que las tareas de <javac> a menudo duplican los esfuerzos de compilación ya completados durante <generate>). También hace que las compilaciones de línea de comandos de Ant y el proceso de Make lanzado desde el IDE sean mucho más similares entre sí, aumentando así la fiabilidad de su proceso de compilación.
Se han mejorado las pruebas del generador con opciones coincidentes que permiten ignorar el orden de los nodos. También hay una nueva acción para reordenar las raíces de los modelos, que ayuda a llevar los modelos de prueba de referencia al estado deseado.
MPS limita el tiempo empleado en la parte de transformación de Modelo a Texto (M2T) para solucionar posibles errores en los aspectos de TextGen. El límite previamente estaba incluido en el código. Sin embargo, últimamente algunos modelos grandes han llegado al límite, provocando una excepción de tiempo de espera no deseada. Así que ahora, hay una configuración del IDE que puede definir para controlar el tiempo de espera. Está previsto que en futuras versiones se puedan utilizar los builds de línea de comando.
MPS solía registrar las dependencias entre las clases generadas de BaseLanguage en el archivo «dependencies». El compilador de Java se basa en ellas para averiguar si las clases dependientes de la compilación necesitan una actualización. Pero cuando las dependencias se cambiaron en la versión 2021.2 para contener las dependencias de nivel superior, ya no era necesario recoger y almacenar los nombres de las clases por raíz. Esto ayudó a MPS a mejorar el tiempo de TextGen tanto para el código de BaseLanguage (puesto que ya no necesita recoger las dependencias individuales) como para el proceso de compilación de Java (ya que no necesita analizar las dependencias individuales de los archivos, atribuir las dependencias de los archivos a módulos y a ruta de clase, y propagar el estado «dirty»).
Un nuevo archivo deps.cp almacena ahora las dependencias por módulo para permitir que MPS deduzca el gráfico de compilación del módulo. El archivo mantiene el estado de la transformación, lo que lo deja «sellado» y a medida (no enumera las dependencias que no se utilizaron en la transformación); esto contrasta con el gráfico de dependencias recogido en tiempo de ejecución, que se basa en las dependencias reales de los módulos.
MPS ya no crea soluciones de tiempo de ejecución/entorno de pruebas anidadas bajo un módulo de lenguaje. De forma predeterminada, estos módulos serían hermanos del módulo de lenguaje. Renombrar el módulo de lenguaje «main» seguiría reconociendo estos módulos como «related» y los renombraría junto con el módulo «main».
Para mejorar la funcionalidad de la clave de etiqueta compuesta introducida en versiones anteriores, MPS admite el mantenimiento de claves compuestas en modelos de puntos de control.
La barra de progreso Cloning repository aparece ahora en la pantalla de bienvenida y se muestra directamente en la lista de proyectos, lo que la hace más clara y fácil de usar.
Ahora es posible generar rápidamente tablas de contenido en archivos Markdown basadas en los encabezados del documento.
Ahora es posible realizar una firma GPG en una confirmación. La firma aparecerá en la sección Commit Details de la ventana de herramientas de Git.
Al trabajar con archivos Markdown que contengan instrucciones con comandos para ejecutar, puede ejecutar dichos comandos directamente desde el archivo utilizando los iconos de ejecución en el medianil.
En cada uno de nuestros grandes lanzamientos, elaboramos instrucciones para migrar desde versiones más antiguas de MPS y asegurarse de que todo funciona correctamente. Léalas atentamente.