News

O compilador K2 será estável no Kotlin 2.0

Read this post in other languages:

Já faz um bom tempo que estamos trabalhando em um novo front-end para o compilador Kotlin (codinome “K2”). Esse front-end é a parte do compilador que analisa seu código e executa a análise semântica, a análise de fluxo de dados, a resolução de chamadas e a inferência de tipos. Essa é a parte do compilador com a qual você, o desenvolvedor, mais interage. É também a parte do compilador que é executada continuamente dentro do seu IDE, relata todas as mensagens de erro e de advertência e ajuda você com tarefas como complementação automática, inspeções com reconhecimento semântico, intenções e refatorações. O novo front-end já está disponível para visualização. Estamos aprimorando-o e estabilizando-o continuamente e planejamos torná-lo o front-end do compilador padrão numa versão futura do Kotlin. Decidimos chamar essa versão futura de Kotlin 2.0. Continue lendo para saber mais sobre o roteiro de lançamento do Kotlin 2.0, nossa motivação e o que esperar dele.

Qual é o roteiro de lançamento do Kotlin 2.0?

Planejamos lançar mais uma versão no formato tradicional como Kotlin 1.9, que também incluirá atualizações do desenvolvimento contínuo do front-end do compilador K2 à medida que ele se aproxima da estabilização. Não haverá o Kotlin 1.10. A próxima versão principal depois do Kotlin 1.9 será o Kotlin 2.0.

Por que Kotlin 2.0?

O front-end é uma parte importante do compilador, e o front-end do compilador K2 não é apenas uma refatoração do antigo front-end de compilador, mas sim uma total reformulação do zero com base na nova arquitetura. Publicamos detalhes técnicos sobre as diferenças em vários blogs, vídeos e conferências. O artigo The Road to the K2 Compiler é um bom lugar para começar se você deseja obter mais informações. Resumindo, a nova arquitetura é mais rápida e mais extensível por design, soluciona problemas técnicos no antigo front-end do compilador, corrige bugs e casos complicados em vários lugares e abre caminho para futuras extensões da linguagem. 

Para linguagens de programação, a versão principal geralmente é incrementada quando recursos de grande porte ou alterações importantes são introduzidos. No entanto, para programas de software, uma versão principal pode ser incrementada sempre que algo é substancialmente reformulado a ponto de significar um grande retrabalho, mesmo que o conjunto de recursos permaneça basicamente o mesmo. Apesar de o Kotlin ser uma linguagem, decidimos seguir essa prática de software. Antes de mais nada, o compilador Kotlin é um grande software. A versão da linguagem Kotlin é definida pela versão de seu compilador. Fornecemos especificações Kotlin como uma referência à linguagem, mas não como sua definição. 

Isso vai quebrar meu código?

O Kotlin muda a cada atualização da versão da linguagem. Novos recursos de linguagem são introduzidos, e bugs antigos são corrigidos. Sempre tentamos minimizar o número e o impacto das alterações importantes e seguir o processo de evolução da linguagem Kotlin. O Kotlin 2.0 não será diferente nesse aspecto. 

Estamos evitando conscientemente introduzir novos recursos no Kotlin 2.0. Por si só, a reformulação do front-end do compilador Kotlin é uma mudança considerável e introduz uma série de melhorias. Por um lado, o novo algoritmo de análise de fluxo de dados é mais preciso e resulta em melhores conversões inteligentes do que antes. Confira estes issues com exemplos concretos. Isso transforma o código vermelho que não compila no Kotlin 1.9 no front-end antigo em código verde que compila no Kotlin 2.0. Tecnicamente, este é um aspecto definidor do novo recurso da linguagem Kotlin. No entanto, aqui ele é simplesmente um efeito colateral de uma nova arquitetura de compilador.

Além disso, vários bugs de longa data foram corrigidos e, inevitavelmente, algumas dessas correções podem quebrar o código que acidentalmente dependia do comportamento incorreto do compilador. Estamos estudando cuidadosamente o impacto de todas as alterações de comportamento entre o front-end antigo e o novo front-end K2 e fazendo esforços adicionais para replicar o comportamento antigo sempre que possível, mesmo quando isso não nos agrada, se esse comportamento for afetar um número considerável de usuários do Kotlin. 

Estamos empenhados em minimizar o impacto da migração do seu código do Kotlin 1.9 para o Kotlin 2.0. Manteremos você em dia sobre o processo de estabilização do Kotlin 2.0 e forneceremos tempo suficiente para você experimentar o Kotlin 2.0 em seus projetos com antecedência para poder relatar quaisquer regressões que possamos ter perdido em nossos testes. Nosso trabalho atual está focado em um lançamento de qualidade beta do front-end do compilador K2 ainda este ano, que você pode acompanhar neste issue do roadmap.

E quanto ao suporte do IDE para o Kotlin 2.0? 

O plug-in Kotlin IDE está incluído nas atualizações do IntelliJ IDEA e do Android Studio. Ele inclui uma cópia do front-end do compilador Kotlin para a análise semântica do seu código, mas essa não é a versão do compilador Kotlin que irá realmente compilar seu código: a versão real do compilador é determinada pelas configurações nos seus arquivos de build. Portanto, ao compilar seu código com a versão 2.0 da linguagem Kotlin, você usará o novo front-end do compilador e obterá todos os benefícios de desempenho da nova arquitetura do compilador. No entanto, o IDE ainda poderá estar usando o front-end antigo para inspecionar seu código. 

Para oferecer a você os benefícios de desempenho do novo front-end do compilador no seu IDE, estamos escrevendo uma versão completamente nova do plug-in Kotlin IDE, desenvolvida sobre o front-end do compilador K2. No momento, estamos trabalhando para ter uma versão prévia pública desse novo plug-in de IDE. Você pode acompanhar este issue para ficar a par das atualizações.

O que esperar depois do Kotlin 2.0?

A nova arquitetura do front-end do compilador Kotlin 2.0 permite a implementação limpa de muitos novos recursos interessantes. Alguns desses recursos, como os receptores de contexto KT-10468, já estão disponíveis para visualização no front-end do compilador antigo, mas não estarão ativados no Kotlin 2.0 por padrão. Em vez disso, eles permanecerão no estágio de versão prévia. A estabilização de novos recursos acontecerá em versões futuras do Kotlin 2.x, juntamente com a implementação de outras coisas novas que temos no nosso pipeline. Como de costume, compartilharemos atualizações regulares sobre nossos planos por meio do roadmap do Kotlin

Quando teremos o Kotlin 3.0? Ainda não sabemos. Estamos discutindo provisoriamente muitas grandes mudanças futuras na linguagem, especialmente as solicitações mais populares da nossa última Pesquisa sobre recursos do Kotlin. Certamente, é possível que algumas dessas mudanças sejam significativas o suficiente para justificar a próxima versão principal do Kotlin.

Como você pode ajudar?

Experimente o novo front-end do compilador e deixe seu feedback! A partir do Kotlin 1.8.20, você pode habilitar uma prévia da versão da linguagem Kotlin 2.0 através do sinalizador de versão da linguagem Kotlin.

Habilitar o compilador Kotlin K2

Saiba mais

 

Artigo original em inglês por:

Luiz Di Bella

Roman Elizarov

image description

Discover more