Novidades no MPS 2021.3

O MPS 2021.3 vem com Coderules, suporte experimental para Kotlin, lambdas Java, várias melhorias no VCS e muito mais.

Coderules

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.

Accessar o curso

Suporte experimental para a linguagem Kotlin

Suporte experimental para a linguagem Kotlin

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.

Saiba mais.

Ação Hide revision ao anotar

Ação Hide revision ao anotar

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.

Saiba mais.

Otimização dos resultados da ação Annotate revision

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.

Caixa de diálogo de detalhes em raízes de merges

Caixa de diálogo de detalhes em raízes de merges

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.

Descrições curtas de alterações nas dicas de ferramentas da caixa de diálogo Diff

Descrições curtas de alterações nas dicas de ferramentas da caixa de diálogo Diff

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.

Dicas de ferramentas aprimoradas no editor
Patrocinado pelo cliente

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.

Novo algoritmo de diff no processo de merge

Novo algoritmo de diff no processo de merge
Patrocinado pelo cliente

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.

Saiba mais.

Alterações aninhadas de empacotamento ou desempacotamento detectadas na caixa de diálogo Diff

Alterações aninhadas de empacotamento ou desempacotamento detectadas na caixa de diálogo Diff
Patrocinado pelo cliente

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.

Configurações de VCS reorganizadas

Configurações de VCS reorganizadas

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.

Geração de closures compatíveis em lambdas Java

Geração de closures compatíveis em lambdas Java
Patrocinado pelo cliente

Os closures do MPS agora são gerados em expressões lambda Java quando compatíveis. As incompatibilidades incluem o uso do seguinte:

  • Operações yield
  • Classes abstratas "funcionais"
  • Anotações
  • Variáveis locais em conflito com o escopo pai

Saiba mais.

Rótulo de mapeamento para tuplas

Rótulo de mapeamento para tuplas
Patrocinado pelo cliente

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.

Saiba mais.

Acesso a todos os valores de dois mapeamentos de chave em geradores
Patrocinado pelo cliente

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).

O rastreamento de desempenho relata o tempo gasto com a resolução de referências dinâmicas

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.

Melhorias na migração de projetos

Melhorias na migração de projetos

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.

Melhorias na tarefa Ant <migrate>

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.

Checkout and Rebase onto Current para branches remotos

Checkout and Rebase onto Current para branches remotos

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.

Nova janela de ferramentas Changes

Nova janela de ferramentas Changes

No MPS 2021.3, o IDE mostra a diferença entre commits em uma janela de ferramenta Changes separada, localizada à esquerda do editor.

Nova ação Push All up to Here

Nova ação Push All up to Here

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.

Guia de migração para a versão 2021.3

Como em todos os lançamentos, preparamos o Guia de migração para uma transição suave de uma versão mais antiga.