O MPS 2022.3 vem com melhorias em regras de restrição, migração de sincronização com extensões MPS, stubs Kotlin para a JVM e muito mais.
A linguagem das Regras de Restrição foi criada para resolver as deficiências na linguagem de restrições. Neste lançamento, as Regras de Restrição deram um passo adiante para melhorar a usabilidade da linguagem.
Os módulos do MPS atendem a propósitos diferentes, desde uma sandbox para experimentar com a sua linguagem até um código de plug-in ativo para alterar o comportamento do MPS ou da plataforma IntelliJ IDEA. No MPS 2022.3, agrupamos tudo isso em um único local. A página Java Facet do módulo Solution foi reformulada para abrigar todas as configurações relevantes e identificar cenários comuns para ajudar designers e usuários da linguagem a reconhecer facilmente o uso pretendido de um módulo. O IDEA Plugin Module Facet foi descontinuado e não será mais usado. Expusemos as configurações somente para os módulos Solution. Os módulos Language e Generator adotam a mesma abordagem, mas têm suas configurações definidas implicitamente. Saiba mais.
O MPS sempre teve uma comunidade ativa que agrega valor ao ecossistema, e sempre incentivamos os usuários a usar bibliotecas externas para enriquecer a funcionalidade do produto. Third-party libraries, such as MPS Extensions, have been key to improving the user experience for products built with MPS. Embora isso tenha trazido muitos benefícios para a comunidade, há uma desvantagem significativa: o usuário precisa aguardar a migração da biblioteca de terceiros para atualizar a versão do MPS. Estamos trabalhando em conjunto com a itemis, nossa parceira oficial e principal mantenedora de extensões MPS, para sincronizar nossos lançamentos e facilitar a migração para a versão mais recente do produto.
Agora, os designers de linguagens podem reduzir a quantidade de código repetitivo extraindo-o em métodos auxiliares diretamente no nó raiz da definição. Esses métodos adicionais podem ser definidos em:
Intenções também permitem campos adicionais para preservar os valores calculados no método isApplicable a ser usado no método execute.
Agora, é possível importar stubs de bibliotecas Kotlin/JVM compiladas, enquanto anteriormente apenas era possível importar bibliotecas Kotlin/Common. Com essa melhoria, é possível usar bibliotecas compiladas para JVM (Java, Kotlin ou mistas) por meio da raiz do modelo Kotlin JVM nas opções do módulo. Saiba mais.
Várias pequenas alterações e melhorias foram agrupadas com esta nova versão do MPS:
this
agora pode fazer referência corretamente a um rótulo (por exemplo, this@SomeClass
). $kotlinc_home
em vez de um local previamente codificado. Agora, é possível criar uma chamada de construtor para uma determinada chamada usando uma transformação à direita digitando o parêntese esquerdo. Isso funciona para qualquer tipo de Kotlin compatível com essa operação (extensível para tipos de usuário) e pode facilitar a criação de uma expressão padrão para um determinado tipo, como ao criar um Lambda a partir de um tipo de interface funcional.
As funções de extensão em escopos foram alteradas para não excluir métodos compatíveis em escopos. Isso vem com o custo de ter alguns itens em escopos que não são aplicáveis devido ao desempenho do tipo atual de implementação do sistema.
A resolução automática de referências de função pode corrigir referências caso uma função não aplicável seja selecionada.
Uma nova intenção atualiza o nó MPSStartupScript e configura as opções de VM e os valores de classpath com os valores atuais de MPS. As opções de VM e os valores de classpath de MPS mudam a cada nova versão. Antes, o usuário tinha que atualizar manualmente os projetos de build para um IDE stand-alone.
No lançamento de cada grande atualização, preparamos instruções para migrar a partir de versões mais antigas do MPS, para garantir que tudo corra sem problemas. Por favor, revise-as com cuidado.