MPS 2021.3 incorpora Coderules, compatibilidad experimental con Kotlin, lambdas de Java, un montón de mejoras de VCS, ¡y mucho más!
No es ningún secreto que llevamos varios años trabajando en un nuevo sistema de tipos. La trayectoria para conseguirlo no ha sido fácil ni directa, pero por fin tenemos algo que mostrar. Coderules aún está en fase Beta, por lo que no se incluye en MPS.
Como se trata de un subsistema completo, hemos preparado un curso online que le guiará por sus fundamentos.
MPS incorpora ahora una implementación experimental de Kotlin. Aunque admite la mayoría de los elementos estructurales del lenguaje (y su generación de texto), sigue siendo solo parcialmente compatible.
La nueva acción Hide Revision (Ocultar revisión) permite excluir una revisión del resultado de la anotación y mostrar el resultado tanto en el editor como en el medianil. Las revisiones excluidas pueden restaurarse con la acción opuesta Restore Hidden Revisions (Restaurar revisiones ocultas).
La acción Annotate (Anotar) en MPS no es tan rápida como la operación git blame para archivos de texto, ya que el resultado de la anotación se construye para los modelos. Las acciones Annotate revision (Anotar revisión) y Annotate previous revision (Anotar revisión previa) utilizan el mismo algoritmo para construir el resultado que la acción Annotate (Anotar), y también eran lentas. El resultado de Annotate revision y Annotate previous revision puede construirse instantáneamente utilizando el resultado obtenido de las acciones iniciales Annotate (Anotar).
Se ha introducido la acción Show Details (Mostrar detalles) para dar más detalles sobre las ramas durante la fusión. La acción es accesible desde la ventana de fusión de revisiones.
Hemos introducido una nueva acción que puede cambiar la descripción de los cambios en las descripciones emergentes del cuadro de diálogo Diff. La descripción es más corta y más legible.
Ahora puede hacer clic en los enlaces dentro de las descripciones emergentes, y la ventana emergente de las descripciones permanece dentro de la ventana principal de la aplicación. También puede desplazarse dentro de una descripción emergente si tiene mucho texto.
El nuevo algoritmo se desarrolló para encontrar cambios conflictivos, no conflictivos y simétricos para cambios de nuevos tipos. Hemos introducido un mecanismo de interfaz de usuario para cambiar entre los algoritmos con y sin seguimiento de movimiento de nodos en la ventana de fusión.
Aunque antes era posible detectar inserciones, eliminaciones y movimientos internos dentro del cambio de envoltura o desenvoltura, no se detectaban los cambios de envoltura anidados. Ahora ya puede detectarlos.
Los ajustes de VCS se han reorganizado para hacerlos más visibles y utilizables. En Preferences/Settings | Version Control (Preferencias/Configuración | Control de versiones) encontrará ahora una lista de los ajustes disponibles para configurar su VCS. Además, hemos añadido un nodo independiente para Directory mappings, y las operaciones en segundo plano están ahora activadas por defecto.
Si va al nodo Git, verá que hemos dividido todas las configuraciones en secciones que incluyen los procesos más importantes: Commit, Push y Update.
Los cierres MPS se generan ahora en expresiones lambda de Java si son compatibles. Las incompatibilidades incluyen el uso de:
Hemos introducido una funcionalidad experimental para utilizar un par de nodos como clave para la asignación, node<>, node<> --> node<>
. Esto es útil en situaciones en las que se necesita soporte para dos conceptos de origen. Si desea probarlo, se utiliza de la misma manera que las etiquetas con un nodo clave.
Además de la funcionalidad de etiqueta de asignación para tuplas, ahora admitimos una consulta para acceder a todas las asignaciones conocidas para dos claves dadas, genContext.get output list LABEL for (node1, node2)
.
Debido a las numerosas evaluaciones de ámbito, la resolución de las referencias dinámicas suele ralentizar la transformación de modelo a modelo. El rastreo de rendimiento oculta esta información vital bajo un vago título de «restauración de referencias». Ahora, el tiempo empleado en restaurar las referencias dinámicas se informa por separado del tiempo empleado en restaurar las referencias regulares o estáticas.
En esta versión hemos simplificado el proceso de creación de migraciones de proyectos. Solo tiene que crear una solución de complemento, escribir la raíz del complemento de migración y aplicación, e incluir esta solución de complemento con el script de build.
La tarea Ant <migrate> ahora es compatible con varias especificaciones de proyectos y puede migrar varios proyectos a la vez. Puede utilizar elementos anidados <project path="”/> o el <dirset> normal de Ant para enumerar las ubicaciones del proyecto para la tarea.
La acción Checkout and Rebase onto Current le permite extraer la rama seleccionada y volver a situarla sobre una rama que está actualmente extraída. Antes, esto solo era posible para las ramas locales, pero en MPS 2021.3 se puede aplicar también a las ramas remotas.
En MPS 2021.3, el IDE muestra la diferencia entre confirmaciones en una ventana de herramientas Changes por separado, situada a la izquierda del editor.
Esta funcionalidad le permite hacer push solo de las confirmaciones de las que está seguro, y dejar el resto para más adelante. Para utilizarla, elija la confirmación en la que desea detenerse, haga clic con el botón derecho del ratón para llamar al menú contextual y seleccione la nueva acción Push All up to Here.
Como en cada lanzamiento, hemos preparado la guía de migración para una transición sin problemas desde una versión anterior.