Principais mudanças no Kotlin 2.0.0
(kotlinlang.org)- O compilador Kotlin K2 se tornou versão estável. Em comparação com o compilador anterior, oferece melhor desempenho, maior velocidade no desenvolvimento de novos recursos da linguagem e melhorias estruturais para projetos multiplataforma
- Houve melhorias no smart cast em variáveis locais e escopos mais amplos, verificação de tipo com operador lógico or, funções
inline, propriedades do tipo função, tratamento de exceções, operadores de incremento/decremento e mais - Em projetos multiplataforma, a compilação do código-fonte comum e do código-fonte de plataforma passou a ser estritamente separada. Declarações
expect/actualagora podem ter níveis de visibilidade diferentes - O Kotlin/Wasm recebeu melhorias como suporte padrão a otimização com Binaryen, suporte a named export, suporte a tipos primitivos sem sinal em funções
@JsExporte suporte a captura de exceções de JS - O Kotlin/JS recebeu melhorias como novo alvo de compilação
es2015, compilação de funçõessuspendpara geradores ES, passagem de argumentos para a funçãomain, compilação por arquivo, melhorias de interop com coleções e o pluginjs-plain-objects - O Kotlin Multiplatform recebeu melhorias como configuração de opções do compilador via Gradle DSL, integração do plugin do compilador Compose, alteração da pasta de dados do Kotlin e download do compilador Kotlin/Native apenas quando necessário
- Na biblioteca padrão, a função genérica
valuesde classesenumfoi substituída, e a interfaceAutoCloseablee funções de extensão comuns passaram a ser estáveis
1 comentários
Este é um benchmark simples (e extremo) de desempenho do compilador.
https://github.com/ganadist/kotlin_build_performance
Cada projeto inclui 200 classes, e cada classe contém 2000 campos
java : 2 segundos
kotlin 1.9.24 : 1 minuto e 20 segundos
kotlin 2.0.0 : 1 minuto e 1 segundo
Confirmado em um Macbook Pro M1 Max.
O projeto acima é um caso um pouco extremo e, em geral, parece que a velocidade de compilação do Kotlin 2.0 é cerca de 2x maior em comparação com o Kotlin 1.9.