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, ounull
se 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: