O MPS 2021.3 vem com Coderules, suporte experimental para Kotlin, lambdas Java, várias melhorias no VCS e muito mais.
Não é nenhum segredo que estamos trabalhando em um novo sistema de tipos há alguns anos. O caminho para alcançar esse objetivo não foi fácil ou direto, mas finalmente temos algo para mostrar. O Coderules ainda está na fase Beta, e é por isso que ele não está integrado ao MPS.
Como se trata de um subsistema completo, preparamos um curso online que orientará você sobre os princípios básicos.
Uma implementação experimental do Kotlin agora está incluída com o MPS. Embora esse recurso seja compatível com a maioria dos elementos de estrutura da linguagem (e sua geração de texto), ele permanece apenas com suporte parcial.
A nova ação Hide Revision permite excluir uma revisão do resultado da anotação no local e mostrar esse resultado no editor e na medianiz. As revisões excluídas podem ser restauradas com a ação oposta Restore Hidden Revisions.
A ação Annotate no MPS não é tão rápida quanto a operação git blame para arquivos de texto. Isso ocorre porque o resultado da anotação é construído para os modelos. As ações Annotate revision e Annotate previous revision usam o mesmo algoritmo de construção do resultado que a ação Annotate e também eram lentas. O resultado para as ações Annotate revision e Annotate previous revision pode ser construído instantaneamente usando o resultado obtido das ações Annotate iniciais.
A ação Show Details foi introduzida para fornecer mais detalhes sobre os branches durante um merge. A ação pode ser acessada na janela Merge revision.
Introduzimos uma nova ação que pode alterar a descrição das alterações nas dicas de ferramentas da caixa de diálogo Diff. A descrição é mais curta e legível.
Agora, é possível clicar nos links dentro das dicas de ferramentas e a janela pop-up das dicas de ferramentas permanece dentro da janela principal da aplicação. Você também poderá rolar dentro de uma dica de ferramenta se ela contiver muito texto.
O novo algoritmo foi desenvolvido para encontrar alterações conflitantes, não conflitantes e simétricas para alterações de novos tipos. Introduzimos um mecanismo de interface do usuário para alternar entre os algoritmos com e sem rastreamento de movimento de nós na janela Merge.
Embora anteriormente fosse possível detectar inserções, exclusões e movimentações internas dentro de alterações de empacotamento e desempacotamento, alterações de empacotamento aninhadas não eram detectadas. Agora é possível detectar alterações aninhadas de empacotamento e desempacotamento.
As configurações do VCS foram reorganizadas para deixá-las mais detectáveis e utilizáveis. Em Preferences/Settings | Version Control, você agora encontra uma lista das configurações disponíveis para configurar seu VCS. Além disso, adicionamos um nó separado para Directory mappings, e as operações de segundo plano agora estão ativadas por default.
Se você for para o nó Git, perceberá que dividimos as configurações em seções que representam os processos mais importantes: Commit, Push e Update.
Os closures do MPS agora são gerados em expressões lambda Java quando compatíveis. As incompatibilidades incluem o uso do seguinte:
Introduzimos a funcionalidade experimental de usar um par de nós como chave para o mapeamento: node<>, node<> --> node<>
. Isso é útil em situações em que você precisa oferecer suporte a dois conceitos de fonte. Se você quiser experimentar esse recurso, ele é usado da mesma maneira que você usa rótulos com um único nó de chave.
Além do recurso de Rótulo de mapeamento para tuplas, agora oferecemos suporte a uma consulta para acessar todos os mapeamentos conhecidos para duas chaves definidas: genContext.get output list LABEL for (node1, node2)
.
Devido às inúmeras avaliações de escopo, a resolução de referências dinâmicas geralmente retarda a transformação de modelo para modelo. O rastreamento do desempenho oculta essas informações vitais sob um título vago “restoring references” (“restaurando referências”). Agora, o tempo gasto com a restauração de referências dinâmicas é relatado separadamente do tempo gasto na restauração de referências regulares ou estáticas.
Simplificamos o processo de criação de migrações de projeto neste lançamento. Você só precisa criar uma solução de plug-in, escrever o código de migração e a raiz do plug-in da aplicação e incluir essa solução de plug-in no script de build.
Agora, a tarefa Ant <migrate> oferece suporte a várias especificações de projeto e pode migrar vários projetos de uma só vez. Você pode usar <project path="”/>elementos aninhados ou elementos comuns do Ant<dirset> para enumerar localizações de projetos para a tarefa.
A ação Checkout and Rebase onto Current permite que você faça o check-out do branch selecionado e o realoque adicionalmente a um branch que já esteja em check-out. Antes, isso era possível apenas para branches locais, mas, no MPS 2021.3 você também pode usar essa ação com branches remotos.
No MPS 2021.3, o IDE mostra a diferença entre commits em uma janela de ferramenta Changes separada, localizada à esquerda do editor.
Esse recurso permite fazer push apenas dos commits nos quais você está confiante e deixar o restante para depois. Para usá-la, selecione o commit no qual você deseja interromper o processo, clique nele com o botão direito para chamar o menu de contexto e selecione a nova ação Push All up to Here.
Como em todos os lançamentos, preparamos o Guia de migração para uma transição suave de uma versão mais antiga.