Lançamento da linguagem de programação Nim 1.4.0

Uma nova versão da linguagem de programação Nim foi lançada, e em setembro fez um ano desde sua primeira versão estável. primeira versão estável. Em termos de sintaxe, a linguagem é semelhante ao Python, mas em desempenho é quase como C++. De acordo com FAQ a linguagem se inspira em grande parte de (na ordem de contribuição): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Funciona em qualquer lugar devido à capacidade de compilação em C/C++/Objective-C/JS. Ela suporta macros, OOP, genéricos, exceções, substituição de código em quente e muito mais. Licença — MIT.

As mudanças mais significativas:

  • Foi adicionado um novo coletor de lixo ORC, que utiliza um algoritmo do ARC, mas processa links cíclicos de maneira especial. Pode ser habilitado com a opção —gc:orc. Sobre as diferenças entre ARC/ORC, há um ótimo artigo.

  • Adicionado modo de definições estritas de funções, onde uma verificação adicional sobre a mutabilidade dos objetos é ativada. Pode ser acionado através da pragmática {.experimental: "strictFuncs".} ou pela chave —experimental:strictFuncs.

  • A palavra-chave from agora pode ser usada como um operador.

  • Adicionada a pragmática .noalias. Ela se relaciona com a palavra-chave C restrict, para aumentar a eficiência que essa palavra pode proporcionar.

  • Advertências específicas agora podem ser transformadas em erros através de —warningAsError[X]:on|off.

  • Novo comando: nim r main.nim [args…], que compila e executa main.nim, incluindo —usenimcache, assim o resultado é salvo em $nimcache/main$exeExt, utilizando a mesma lógica do nim c -r para evitar recompilações quando os arquivos-fonte não foram alterados. Exemplo:

nim r compiler/nim.nim —help # compilado pela primeira vez
echo ‘import os; echo getCurrentCompilerExe()’ | nim r — # isso também funciona
nim r compiler/nim.nim —fullhelp # sem recompilação
nim r —nimcache:/tmp main # binário salvo em /tmp/main

  • Adicionada uma nova dica —hint:msgOrigin, que mostrará de onde o compilador gerou mensagens de erro/advertência. Isso ajuda quando não está claro de onde veio a mensagem.

  • Adicionado a flag —backend:js|c|cpp|objc (ou -b:js e assim por diante) para mudar o backend.

  • Adicionado a flag —usenimcache para saída de binários em nimcache.

  • Removidas as chaves: —oldNewlines, —laxStrings, —oldast, —oldgensym

  • A utilidade nimsuggest agora mostra não apenas a declaração prévia, mas também a localização da implementação a pedido de def.

Além disso, foram adicionadas várias mudanças à biblioteca padrão e diversas correções de bugs.

Fonte: linux.org.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster