Lançada linguagem Nim v2.0

Lançada linguagem Nim v2.0

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
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.


Comente com o Facebook:

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.

Marcadores

A pior história sobre Linux que já ouvi (5) A.I (2) ambiente gráfico (19) AMD (14) analise (10) Andriod (16) android (7) Apple (1) arm (5) artigo (5) aws (1) bc (23) benchmark (6) BetrFS (1) blackhat (1) BSDs (30) btrfs (32) bugs (2) Caixa de Ferramentas do UNIX (19) canto do Diego Lins (2) certificações Linux (7) Código Fonte (54) comandos (32) comp (1) compressores (6) container (7) CPU (19) cracker (1) criptografia (5) crowdfunding (9) cursos (24) daemons (13) Debian (31) desempenho (1) desenvolvimento (91) desktop (19) DevOps (3) DevSecOps (4) dic (1) Dica de leitura (90) dica DLins (2) dicas do Flávio (27) Dicas TechWarn (1) diet libc (3) diocast (1) dioliunx (3) distribuições Linux (14) Docker (12) DragonflyBSD (22) driver (1) dropbear (3) ead Diolinux (2) edição de vídeo (5) embarcados (1) EMMI Linux (4) emuladores (9) endless (5) English interview (3) Enless OS (2) entrevista (17) espaço aberto (82) evento (6) facebook (1) Fedora (11) filesystem (82) financiamento coletivo (2) fork (4) fox n forests (4) FreeBSD (20) Funtoo Linux (13) games (94) gerenciadores de pacotes (4) glaucus (4) GOG (3) google (9) gpu (3) hacker (2) hardware (104) hash (1) helenos (3) I.A (1) init system (12) Intel (15) inteligencia artificial (2) IoT (1) ispconfig (1) jogos (38) kde (1) kernel (138) lançamento (64) leis (1) LFCS (1) libs (2) licenças (8) Linus (16) linus torvalds (2) Linux (194) linux foundation (3) linux para leigos (1) live (5) LPI (8) LTS (1) Mac (1) machine learning (1) matemática (9) mesa redonda (27) microcontroladores (1) microsoft (6) microst (1) muito além do GNU (167) musl (3) não viva de boatos (9) navegadores (5) NetBSD (7) newlib (1) nim (1) nintendo (1) novatec (17) novidades (1) nuvem (1) o meu ambiente de trabalho (3) off-topic (12) open source (84) OpenBSD (7) OpenShift (1) oracle (1) os vários sabores de Linux (43) padrim (2) palestras e eventos (5) partições (6) pentest (8) performance (1) pipewire (1) plan9 (1) playstation (1) processadores (30) professor Augusto Manzano (11) Programação (64) promoção (1) propagandas com Linux (8) ps4 (1) real-time. (1) Red Hat (23) redes (4) resenha nerd (4) Resumo da Semana do Dlins (2) resumo do Tux (19) retrospectiva Linux (1) risc-V (14) RISCV (13) rtos (1) runlevel (2) rust (12) segurança digital (24) servidor web (2) servidores (3) shell (9) shell script (8) sistema operacional (25) skarnet (1) smartphones (3) Software livre e de código aberto (151) sorteio (3) Steam (10) Steam no Linux (8) supercomputadores (4) suse (6) systemd (8) terminal (89) terminal de comandos (18) toca do tux (1) toybox (27) tutorial (6) Tux (3) unboxing (7) UNIX (17) UNIX Toolbox (14) vartroy (1) vga (1) virtualização (2) vulnerabilidade (6) wayland (5) web (1) whatsapp (1) whitehat (1) Windows Subsystem for Linux (2) wine (14) WoT (1) yash (1) ZFS (15) zsh (3)