I would like to view this page in
O MPS 2022.2 vem com anotações no Inspector, suporte aprimorado para Kotlin, API SModel aprimorada e muito mais.
Agora, anotações podem ser acessadas na janela Inspector, e o processo de anotação será iniciado para a raiz inteira. Essa ação pode ser acessada clicando com o botão direito do mouse na borda esquerda da janela do Inspector. A anotação será aberta no editor do Inspector e no editor principal.
Muitos problemas de edição foram corrigidos para fornecer uma experiência de digitação muito melhor, como:
T.() -> R
que era carregado incorretamente como (T) -> R
). it
. Receiver.() -> Unit
) usarão adequadamente esse tipo de receptor como um this
implícito dentro do corpo do lambda. O suporte para SModel está agora disponível no MPS Kotlin com a nova linguagem jetbrains.mps.kotlin.smodel. Junto com o suporte para compilação aprimorado, ele permite o uso de código Kotlin em módulos de linguagem (como classes auxiliares, por exemplo).
Além dos tipos regulares (nós, conceitos, links e referências), ele aproveita a maior flexibilidade do MPS Kotlin para trazer parâmetros de tipos de Concept. Funções, variáveis e classes agora podem declarar e usar esses parâmetros e reutilizá-los em seus tipos internos, o que permite uma digitação mais fácil e aproveita as conversões inteligentes do Kotlin.
O suporte para compilação do Kotlin foi aprimorado com melhor persistência. Como resultado, as classes Kotlin não são mais apagadas quando o MPS é reiniciado.
Uma nova opção foi adicionada em scripts de build para marcar um módulo a ser compilado com o compilador do Kotlin. A inserção desse sinalizador é manual: nenhuma verificação automática está disponível no momento para defini-lo como "true". O sinalizador deve ser adicionado quando um módulo contendo arquivos Kotlin for compilado para a JVM.
Ao adicionar comentários a BaseLanguage, agora é possível personalizá-los ainda mais com estilos de texto. Comentários aceitam formatação em negrito (Ctrl + B), não-itálico (Ctrl + I), sublinhado (Ctrl + U) e negrito-não-itálico (Ctrl + B -> Ctrl + I).
Em BaseLanguage, agora é possível fazer transformações pós-correção que permitem transformar o código anexando algum texto à expressão. Isso economiza o tempo dos desenvolvedores, pois eles não precisam mover o cursor para a frente da expressão ou selecionar a expressão para aplicar uma transformação.
O MPS costumava descobrir modelos no momento em que eram registrados em um repositório. Descobrir um modelo em um módulo de projeto regular significava percorrer todo o sistema de arquivos para descobrir arquivos e seus tipos e ler pelo menos as informações de cabeçalho sobre o modelo.
Agora, os módulos não se envolvem mais na descoberta de modelos, a menos que modelos sejam solicitados. Há uma nova API do SModule (SModule.forEachRegisteredModel()) para acessar modelos já conhecidos por um módulo apenas, sem acionar a descoberta ou o carregamento dos modelos. Se você usa clientes da API SModel, especialmente as subclasses SRepositoryContentAdapter, convém adotar a nova API para se beneficiar dessa melhoria.
O MPS agora vem com uma API consistente para criar referências, além de uma apresentação interna atualizada. Essas mudanças visam melhorar o sistema de referência/persistência do modelo, que é esperado em versões futuras. No entanto, a mudança já permite reduzir o armazenamento na memória de qualquer modelo em aproximadamente 5%.
O MPS agora respeita os arquivos jar versionados e expõe classes Java com uma versão que corresponde ao runtime Java real.
Embora o MPS e a Plataforma IntelliJ estivessem usando uma versão simplificada da biblioteca Log4j sem problemas de segurança conhecidos, ambos mudaram o registro em log para o pacote padrão java.util.logging. Uma camada de compatibilidade é implementada (com base em SLF4J) para redirecionar solicitações da API Log4j para uma implementação do Java Util Logging (JUL).
A ação Configurações do Log de Depuração permite configurar níveis DEBUG e TRACE para categorias. Além disso, agora também existe um arquivo de configuração bin/log.properties que usa o conhecido formato de configuração JUL. Ao contrário de log.xml das versões anteriores, esse arquivo de configuração não é lido por padrão, mas os usuários podem solicitar acesso a essa configuração (ou a qualquer outra configuração externa) usando a propriedade do sistema idea.log.config.properties.file.
Scripts de build Ant gerados pelo MPS a partir de declarações lang.build usam tarefas separadas para gerar e compilar fontes (<generate> própria do MPS e <javac> regular do Ant). Agora, há uma nova tarefa <mps.make> que corresponde ao processo Make iniciado a partir do IDE. Ela é responsável pela transição completa de um modelo para código compilado. A tarefa combina geração e compilação de código, o que economiza tempo, pois o MPS precisa de classes compiladas de qualquer maneira para o carregamento das classes do módulo (já que as tarefas <javac> geralmente duplicam os esforços de compilação já concluídos durante <generate>). Ela também torna os builds de linha de comando Ant e o processo Make iniciado a partir do IDE muito mais semelhantes entre si, aumentando assim a confiabilidade do seu processo de build.
Testes de geradores foram aprimorados com opções de correspondência que permitem ignorar a ordenação dos nós. Há também uma nova ação para reordenar raízes de modelos, o que ajuda a levar modelos de teste de referência para o estado desejado.
O MPS limita o tempo gasto na parte da transformação M2T (Model-to-Text) para resolver possíveis erros nos aspectos de TextGen. Antes, o limite era codificado. No entanto, ultimamente, alguns modelos grandes têm atingindo o limite, causando uma indesejada exceção de timeout. Agora, há uma configuração de IDE que você pode definir para controlar o tempo limite. O suporte para builds de linha de comando está planejado para versões futuras.
MPS usado para registrar dependências entre classes BaseLanguage geradas no arquivo "dependencies". O compilador Java depende delas para descobrir se classes dependentes da compilação precisam de uma atualização. Porém, quando o arquivo "dependencies" foi alterado na versão 2021.2 para manter dependências de nível superior, não havia mais a necessidade de coletar e armazenar nomes de classes por raiz. Isto ajudou o MPS a melhorar o tempo de TextGen para o código BaseLanguage (já que ele não precisa mais coletar dependências individuais) e o processo de compilação Java (já que ele não precisa mais analisar dependências de arquivos individuais, atribuir dependências de arquivos a módulos e classpath e propagar o estado "dirty").
Um novo arquivo deps.cp agora armazena dependências por módulo, para permitir que o MPS deduza o gráfico de compilação do módulo. O arquivo mantém o estado da transformação, o que o torna "sealed" e personalizado (ele não lista as dependências que não foram utilizadas na transformação). Isso contrasta com o gráfico de dependências coletado em tempo de execução, que é baseado nas dependências reais do módulo.
O MPS não cria mais soluções de runtime/sandbox aninhadas sob um módulo de linguagem. Por padrão, esses módulos seriam irmãos do módulo de linguagem. Renomear o módulo de linguagem "main" ainda reconheceria esses módulos como "related" e os renomearia junto com o módulo "main".
Para aprimorar a funcionalidade de chaves compostas de rótulos, introduzida em versões anteriores, o MPS é compatível com a manutenção de chaves compostas em modelos de checkpoint.
A barra de progresso Cloning repository agora aparece na tela de boas-vindas e é mostrada diretamente na lista de projetos, o que a torna mais clara e fácil de usar.
Agora, é possível gerar sumários rapidamente em arquivos Markdown com base nos cabeçalhos de documentos.
Agora, é possível criar uma assinatura GPG em um commit. A assinatura aparecerá na seção Commit Details da janela de ferramentas Git.
Ao trabalhar com arquivos Markdown que contêm instruções com comandos a serem executados, você pode executar esses comandos diretamente do arquivo usando os ícones de execução na medianiz.
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.