Foi lançada uma nova versão da linguagem de programação Nim. Ela apresenta uma compatibilidade parcial com a versão 1.0, por exemplo, devido à conversão de tipos mais rigorosa. Mas, para isso, há uma flag —useVersion:1.0.
A principal novidade é o novo coletor de lixo, ativado pela opção —gc:arc. O autor da linguagem, Andreas Rumpf, pretende escrever um artigo detalhado sobre as vantagens do ARC, mas por enquanto, oferece a oportunidade de conhecer sua apresentação no FOSDEM, onde os resultados dos benchmarks são mostrados.
- O compilador agora suporta a opção —asm para facilitar o estudo do código assembly gerado.
- A pragma align pode ser usada para variáveis e campos de objeto, semelhante ao alignas em C/C++.
- =sink agora é opcional. O compilador pode usar a combinação =destroy e copyMem para mover objetos de forma eficiente.
- As conversões para inteiros sem sinal não são verificadas em tempo de execução. Detalhes em https://github.com/nim-lang/RFCs/issues/175
- Nova sintaxe para lvalue: var b {.byaddr.} = expr, habilitada através do import std/decls
- O compilador suporta a nova chave —panics:on, que transforma erros de tempo de execução como IndexError ou OverflowError em erros fatais que não podem ser capturados via try. Isso pode melhorar a eficiência do tempo de execução e o tamanho do programa.
- O código JS gerado usa apenas espaços em vez de uma mistura de espaços e tabs.
- O compilador adicionou suporte para a pragma .localPassc, que permite processar opções especiais de backend C(++) para arquivos C(++) que são gerados a partir do módulo Nim atual.
- Nimpretty agora não aceita um argumento negativo para a configuração de indentação, pois isso quebrava arquivos.
- Novos macros (collect, dup, capture) foram adicionados, habilitados através do import sugar.
Além disso, foram adicionadas várias mudanças à biblioteca padrão e diversas correções de bugs.
Fonte: linux.org.ru
