Uma nova versão da linguagem de programação de sistemas Nim foi lançada, tendo celebrado seu primeiro aniversário em setembro. primeira versão estávelA linguagem é semelhante ao Python em sintaxe e quase como C++ em desempenho. De acordo com Perguntas frequentes A linguagem se inspira fortemente em (em ordem de contribuição): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.
Funciona em qualquer lugar graças à capacidade de compilar para C/C++/Objective-C/JS. Ele oferece suporte a diversas linguagens. macros, OOP, genéricos, exceções, troca de código quente e muito mais. Licença: MIT.
As mudanças mais significativas:
-
Um novo coletor de lixo, ORC, foi adicionado. Ele usa o algoritmo ARC, mas lida com referências circulares de uma maneira especial. Pode ser ativado com a opção --gc:orc. Diferenças entre ARC e ORC. Existe um ótimo artigo sobre isso..
Adicionado um modo de definição de funções estritas, que permite verificação adicional de mutabilidade de objetos. Habilitado através do pragma {.experimental: "strictFuncs".} ou da chave --experimental:strictFuncs.
A palavra-chave "from" agora pode ser usada como um operador.
O pragma .noalias foi adicionado. Ele mapeia para a palavra-chave restrict da linguagem C para melhorar a eficiência que esta palavra-chave pode proporcionar.
Avisos específicos agora podem ser transformados em erros através de --warningAsError[X]:on|off.
Novo comando: `nim r main.nim [args…]`, que compila e executa o arquivo `main.nim`, e inclui a opção `--usenimcache` para que o resultado seja armazenado em `$nimcache/main$exeExt`, usando a mesma lógica de `nim c -r` para evitar a recompilação quando as fontes não foram alteradas. Exemplo:
nim r compilador/nim.nim --help # compilado pela primeira vez
echo 'import os; echo getCurrentCompilerExe()' | nim r — # isso também funciona
nim r compilador/nim.nim --fullhelp # sem recompilar
nim r --nimcache:/tmp main # o binário é salvo em /tmp/main
Uma nova dica foi adicionada, hint:msgOrigin, que mostra onde o compilador gerou mensagens de erro/aviso. Isso é útil quando a origem de uma mensagem não é óbvia.
Adicionada a opção --backend:js|c|cpp|objc (ou -b:js etc.) para alterar o backend.
Adicionada a flag --usenimcache para gerar arquivos binários no nimcache.
Chaves removidas: --oldNewlines, --laxStrings, --oldast, --oldgensym
O utilitário nimsuggest agora mostra não apenas a declaração antecipada, mas também a localização da implementação para uma consulta def.
Além disso, muitas alterações foram adicionadas à biblioteca padrão e muitas correções de bugs.
Fonte: linux.org.ru
