2 pontos por GN⁺ 2025-04-09 | 1 comentários | Compartilhar no WhatsApp
  • O Lux é um novo gerenciador de pacotes com o objetivo de construir um ecossistema adequado para Lua, voltado à criação, manutenção e distribuição de código Lua
  • O Lux oferece uma CLI simples e intuitiva, inspirada em gerenciadores de pacotes bem conhecidos como cargo

Recursos

  • Portabilidade completa entre sistemas
  • Suporte a builds e instalações em paralelo 🚀
  • Tratamento automático da instalação de headers do Lua
  • Possibilidade de expor a API do Lua por meio do crate lux-lib
  • Gerenciamento de projetos com o arquivo lux.toml
  • Geração automática de rockspec
  • Suporte robusto a lockfile
  • Builds e ambientes de desenvolvimento totalmente reproduzíveis
  • Integração de formatação de código e linting
  • Suporte à execução de testes com busted
  • Possibilidade de usar o Neovim como interpretador Lua
  • Configuração de ambiente puro
  • Compatibilidade com o ecossistema do luarocks

Motivação

Lua

  • O Luarocks tem 20 anos de história e não é adequado ao desenvolvimento moderno em Lua
  • O Lux busca um novo começo
    • Usa TOML como formato principal de manifesto para gerenciamento de dependências
    • Permite fazer build e instalar projetos a partir do diretório do projeto com o comando build
    • Impõe conformidade com SemVer
    • Suporta builds em paralelo

Neovim

  • Crescimento de popularidade devido ao suporte do Luarocks nos gerenciadores de plugins do Neovim rocks.nvim e lazy.nvim
  • O Lux é não destrutivo e não interfere na forma como plugins do Neovim são distribuídos
  • Com a flag --nvim, é possível instalar pacotes em uma estrutura de árvore compatível com o Neovim

Nix

  • Quando plugins do Neovim existem como pacotes Luarocks, o nixpkgs os utiliza
  • O lux.lock do Lux armazena a origem e o hash do rockspec de cada dependência

Próximos passos

  • Foco em corrigir bugs e melhorar mensagens de erro
  • Há planos para reescrever o rocks.nvim com base no Lux
  • Se a reescrita for bem-sucedida, espera-se um impacto positivo no ecossistema do Neovim

Documentação

  • Tutoriais e guias estão disponíveis no site de documentação do Lux
  • É possível tirar dúvidas e resolver problemas por meio das discussões no GitHub e do issue tracker

Licença

  • O Lux é disponibilizado sob a licença MIT
  • O logotipo do Lux é disponibilizado sob a licença CC BY-NC-SA 4.0

1 comentários

 
GN⁺ 2025-04-09
Comentários no Hacker News
  • O ambiente de execução das linguagens de script é um ponto fraco. Pessoalmente não uso Neovim, mas sempre tive a sensação de que ele impulsionaria a evolução do Lua. Bryan Cantrill chamou o Javascript de "LISP vestido de C". Sinto que Lua é o oposto, e é por isso que gosto dele (obs.: nunca usei no trabalho)
    • Projetos como o Koreader usam Lua como principal linguagem da aplicação. Se conseguirem convencê-los a migrar, isso daria confiança na maturidade da ideia e na sua popularidade
  • Projeto interessante. Gostaria de trabalhar junto para melhorar o suporte a Lua no Pixi (via ecossistema conda-forge). Já estamos empacotando Lua e algumas extensões em C. Extensões em C são centrais para o Pixi, então parece uma boa combinação
  • Parece incrível. Uso bastante Lua, mas o luarocks é tão cheio de opiniões que chega a ser quase inútil. Qualquer coisa além de "instalar bibliotecas para rodar diretamente no sistema local", ou em torno disso, já nem dá para começar. Você tem um ambiente de scripting embutido que funciona com pacotes Lua e quer empacotar scripts para usar ali, junto com dependências? Pode desistir
    • Não sei se isso é melhor para esse caso de uso, mas, mesmo que não seja, o luarocks é desconfortável e irritante de usar
  • Pessoalmente, sou contra todos os gerenciadores de pacotes específicos por linguagem. Tenho a sensação de que não é a direção certa. Acho que algo como o nix é uma abordagem muito melhor
  • Um gerenciador de pacotes para Lua que depende de Rust
  • Bom! Lua precisava de algo assim para tornar os pacotes mais fáceis
  • Legal. Eu queria uma forma reproduzível de instalar pacotes Lua em vários dispositivos
  • Por que não usar Lua na configuração em vez de TOML? Pelo que me lembro, Lua originalmente era uma linguagem de esquema de dados, então serviria bem
  • Obrigado por tratar o ecossistema do Neovim como algo de primeira classe. Ao desenvolver plugins, senti falta da facilidade de uso de bibliotecas de terceiros como Rust e Typescript