Kotlin
A concise multiplatform language developed by JetBrains
Lançamento do Kotlin 1.7.0-Beta
A primeira demonstração da versão 1.7.0 já está disponível. Apresentando o Kotlin 1.7.0-Beta! Alguns destaques desta versão de demonstração:
- Alterações na inferência de construtor.
- O retorno das funções de coleção min() e max().
- Estabilização de tipos definitivamente não anuláveis.
- Atualizações para o novo Kotlin/Native Memory Manager.
Instale o 1.7.0-Beta para experimentar esses recursos e informe quaisquer issues que você encontrar para nos ajudar a melhorar o Kotlin 1.7.0.
Divulgaremos outros recursos empolgantes em postagens futuras. Fique ligado!
A partir da versão 1.7.0, estamos atualizando nossa terminologia de cadência, alterando “Milestone” para “Beta”. Existem algumas razões por detrás dessa decisão:
- Queremos que a terminologia dos builds do Kotlin esteja mais alinhada com a terminologia padrão do ciclo de lançamento de software. Para sermos mais precisos, “Beta” significa que terminamos de acrescentar novos recursos a essa versão específica e estamos trabalhando na sua estabilização. Até o final do processo, serão implementadas alterações, incluindo aquelas baseadas no feedback dos usuários.
- Algum tempo atrás, compiladores de versão M estavam produzindo código “pré-lançamento”, o que tornava essas versões mais difíceis de testar. Agora já não é assim. Queremos evitar qualquer confusão e enfatizar que testar as versões do Kotlin Beta é um processo simples e altamente recomendado pela equipe do Kotlin.
- Por último, mas não menos importante, o termo “Beta” propriamente dito é um pedido de feedback à comunidade. Nós o usamos para que você saiba que queremos que você compartilhe seu feedback conosco.
Avalie o Kotlin 1.7.0-Beta e compartilhe seu feedback conosco no YouTrack e no Slack (para novos membros do Slack: inscreva-se para ser convidado).
Alterações na inferência de construtor
A inferência de construtor é um tipo especial de inferência de tipo que é útil ao chamar funções genéricas de construtor. Ela ajuda o compilador a inferir os argumentos de tipo de uma chamada usando as informações de tipo sobre outras chamadas dentro do seu argumento lambda.
O Kotlin 1.7.0-Beta inclui outras alterações na inferência de construtor. Isto nos aproxima da estabilização da inferência de construtor e da conclusão de um dos itens do nosso roteiro.
Com este lançamento, a inferência de construtor é ativada automaticamente quando uma inferência de tipo regular não pode obter informações suficientes sobre um tipo sem especificar a opção de compilador -Xenable-builder-inference, que introduzimos na versão 1.6.0.
Isto significa que, agora, você pode escrever seus próprios construtores que usam a inferência de tipo de construtor sem precisar aplicar nenhuma anotação ou opção adicional. Saiba como escrever construtores genéricos personalizados.
O retorno das funções de coleção min() e max()
No Kotlin 1.4, renomeamos as funções de coleção min() e max() para minOrNull() e maxOrNull(). Esses novos nomes refletem melhor seu comportamento: retornando null se a coleção receptora estiver vazia. Isso também ajudou a alinhar o comportamento das funções com convenções de nomenclatura usadas em toda a API de coleções do Kotlin.
O mesmo aconteceu com minBy(), maxBy(), minWith() e maxWith(), que ganharam seus sinônimos *OrNull() no Kotlin 1.4. Funções mais antigas afetadas por essa mudança foram deprecadas gradualmente.
O Kotlin 1.7.0-Beta reintroduz os nomes de funções originais, mas com um tipo de retorno não anulável. Os novos métodos min(), max(), minBy(), maxBy(), minWith() e maxWith() agora retornam estritamente o elemento da coleção ou lançam uma exceção.
Consulte este issue do YouTrack para obter detalhes.
Estabilização de tipos definitivamente não anuláveis
O Kotlin 1.7.0 terá tipos estáveis definitivamente não anuláveis, que foram introduzidos no Kotlin 1.6.20.
Esses tipos foram adicionados para fornecer melhor interoperabilidade ao estender classes e interfaces Java genéricas.
A partir do Kotlin 1.6.20, você pode usar a nova sintaxe T & Any para especificar parâmetros de tipo genéricos como absolutamente não anuláveis onde são usados. A forma sintática vem de uma notação de tipos de interseção e agora está limitada a um parâmetro de tipo com limites superiores anuláveis no lado esquerdo de & e Any não anulável no lado direito:
Tipos definitivamente não anuláveis são habilitados por padrão nesta versão Beta. Nenhuma etapa adicional é necessária.
Saiba mais sobre tipos definitivamente não anuláveis no KEEP.
Correspondência com Regex em uma posição específica
As funções Regex.matchAt() e Regex.matchesAt(), introduzidas na versão 1.5.30, agora estão estáveis. Elas fornecem uma maneira de verificar se uma expressão regular tem uma correspondência exata em uma posição específica em uma String ou CharSequence.
matchesAt()verifica se há uma correspondência e retorna um resultado booleano:
matchAt()retorna a correspondência, se for encontrada, ounullse não for encontrada:
Agradecemos por deixar seu feedback neste issue do YouTrack.
Novo Kotlin/Native Memory Manager
Continuamos a coletar feedback e a melhorar o novo Kotlin/Native Memory Manager. No momento, você pode experimentar a versão Alpha nos seus projetos. O Kotlin 1.7.0-Beta traz melhorias de desempenho adicionais que tornarão a esperiência dos desenvolvedores ainda melhor.
O novo gerenciador de memória elimina as diferenças entre as plataformas JVM e Native. Ele fornece uma experiência consistente ao desenvolvedor em projetos multiplataforma. Por exemplo, você terá muito mais facilidade para criar novos aplicativos móveis multiplataforma que funcionem no Android e no iOS.
O novo Kotlin/Native Memory Manager elimina as restrições de compartilhamento de objetos entre threads. Ele também fornece primitivas de programação simultânea sem vazamentos que são seguras e não requerem nenhum gerenciamento ou anotações especiais.
O novo gerenciador de memória se tornará o padrão em versões futuras, então recomendamos que você experimente agora. Saiba mais sobre o novo gerenciador de memória e explore projetos de demonstração ou vá direto para as instruções de migração para experimentar você mesmo.
Tente usar o novo gerenciador de memória em seus projetos para ver como ele funciona e compartilhe seus comentários em nosso rastreador de issues, o YouTrack.
Suporte para grupos de captura nomeados em JS e Native
Desde o Kotlin 1.7.0-Beta, grupos de captura nomeados têm suporte não apenas em JVM (1.8 e posterior), mas também em JS e Native.
Para dar um nome a um grupo de captura, use a sintaxe (?<name>group) na sua expressão regular. Para obter o texto correspondente a um grupo, chame a recém-introduzida função MatchGroupCollection.get() e passe o nome do grupo.
Recuperar o valor do grupo correspondente por nome
Considere este exemplo para fazer correspondência com as coordenadas da cidade. Para obter uma coleção de grupos correspondidos pela expressão regular, use groups. Compare a recuperação do conteúdo de um grupo por seu número (índice) e por seu nome usando value:
Referência de retorno nomeada
Agora, você também pode usar nomes de grupos ao fazer referência de retorno a grupos. As referências de retorno correspondem ao mesmo texto anteriormente correspondido por um grupo de captura. Para isso, use a sintaxe \k<name> em sua expressão regular:
Grupos nomeados em expressões de substituição
Finalmente, referências nomeadas para grupos podem ser usadas com expressões de substituição. Considere a função replace(), que substitui todas as ocorrências da expressão regular na entrada por uma expressão de substituição, e a função replaceFirst(), que troca apenas a primeira correspondência.
As ocorrências de ${name} na string de substituição são substituídas pelas subsequências correspondentes aos grupos capturados com o nome especificado. Compare as substituições na referência do grupo por nome e por índice:
Experimente novos recursos e deixe seu feedback
Esses novos recursos estão disponíveis na versão de demonstração 1.7.0: o Kotlin 1.7.0-Beta. Você pode instalá-lo facilmente no IDE IntelliJ IDEA ou Android Studio.
Devido à renomeação dos plug-ins do Android Studio (Beta), a instalação de plug-ins está disponível a partir das versões 1.6.20+.
Instale o Kotlin 1.7.0-Beta de uma das seguintes maneiras:
- Se você usar o canal de atualização Early Access Preview, o IDE sugerirá a atualização automática para 1.7.0-Beta assim que ela estiver disponível.
- Se você usar o canal de atualização Stable, poderá alterar o canal para Early Access Preview a qualquer momento, selecionando Tools | Kotlin | Configure Kotlin Plugin Updates no seu IDE. Você poderá então instalar a mais recente versão de demonstração. Confira estas instruções para mais detalhes.
Sempre existe a chance de baixar as versões mais recentes desses IDEs para obter amplo suporte para o Kotlin:
- IntelliJ IDEA para desenvolver aplicações Kotlin para várias plataformas.
- Android Studio para o desenvolvimento de aplicações móveis Android e multiplataforma.
Depois de instalar a versão 1.7.0-Beta, não se esqueça de alterar a versão do Kotlin para 1.7.0-Beta nos seus scripts de build.
Se você tiver algum problema:
- Informe issues no nosso rastreador de issues, o YouTrack.
- Encontre ajuda no canal #eap no Kotlin Slack (receber um convite).
- Reverta para a versão estável mais recente. Saiba como.
Leia mais
Artigo original em inglês por: