Lançada linguagem Nim v2.0 |
Nim é uma linguagem de programação de tipagem estática que combina conceitos de outras linguagens como Python, Ada e Modula. É uma linguagem focada paradigma de programação imperativa e reforçada com sistema de macros. Seu gerenciamento de memória personalizável a torna adequada para domínios implacáveis, como sistemas em tempo real e programação de sistemas em geral.
Eu conheci a linguagem Nim no ultimo lançamento do Glaucus (glaucus-s6-x86-64-v3-28042023) ao ler as notas de lançamento e descobri que seu gerenciador de pacotes (o Radula) foi reescrito de Rust para Nim. Os resultados foram simplesmente incríveis:
- O código e razoavelmente mais legível (mais do que a versão em Rust)
- Muito menos LOC mesmo com mais recursos adicionados (comparado com a versão Rust)
- O código foi escrito um montante de tempo razoável (muito menos do que a versão Rust, novamente a reescrita em si levou em torno de um mês, mas a velocidade que recursos mais novos foram adicionados é algo entre 4 a 8 vezes mais reapido do que o tempo que leva para implementa-los em Rust, provavelmente por conta que eu me aborreço em Rust mesmo depois de um ano de uso, mas quem sabe...)
- Uso de menos recursos do sistema (1/3 do que a versão em Rus utiliza)
- Executável muito menor (200 a 300 KB. Comparado a versão em Rust que é de 3 MB)*.
- Pode ser construído utilizando toolchain existente no Glaucus porque Nim transpilha a C; assim, tornando o uso de toolchain otimizada pelo Glaucus (diferente de Rust que é muito difícil de fazer bootstrap**, e não funciona tudo tão bem assim com musl compartilhada...)
- Um pouco mais rápida (em analise, é por volta de 6 - 20% mais rapido no geral. Provavelmente porque eu odeio Rust mesmo depois de um ano utilizando, mas novamente eu estou escrevendo em Nim em apenas um mês ou dois...)
radula, o gerenciador de pacotes do Glaucus Linux |
*Em minha experiência como sysadmin utilizando programas escritos na linguagem Rust, eu realmente reparei que executáveis em Rust são maiores. No artigo uutils: Um coreutils escrito na linguagem Rust eu acabei fazendo a observação que o uutils, com apenas 87 comandos (e sendo linkado dinamicamente) ocupa mais de 12MB enquanto que o toybox é 17 vezes menor (contendo 233 comandos, linkado estaticamente e ocupando apenas 724KB).
**Exatamente o mesmo motivo que Linus Torvalds não queria aceitar Rust no Linux.
Foi anunciado no dia primeiro de Agosto o lançamento da versão 2.0 da linguagem Nim que traz suporte a gerenciamento de memória ORC por padrão melhor Tuple unpacking para variáveis, melhor type inference chamado Top-down type inference, Tag tracking com suporte a forbidden tags, novos módulos de bibliotecas, Default values for objects, Strict effects, melhorias no JavaScript codegen, e muito mais.
A linguagem está disponível para Linux, MacOS e Windows sob a licença MIT.
Nenhum comentário:
Postar um comentário
Viu algum erro e quer compartilhar seu conhecimento? então comente aí.
Observação: somente um membro deste blog pode postar um comentário.