2 puntos por GN⁺ 2025-04-09 | 1 comentarios | Compartir por WhatsApp
  • Lux es un nuevo gestor de paquetes con el objetivo de construir un ecosistema adecuado para Lua, pensado para la creación, el mantenimiento y la distribución de código Lua
  • Lux ofrece una CLI simple e intuitiva inspirada en gestores de paquetes bien conocidos como cargo

Funciones

  • Portabilidad completa entre sistemas
  • Soporte para compilación e instalación en paralelo 🚀
  • Manejo automático de la instalación de headers de Lua
  • Exposición de la API de Lua a través del crate lux-lib
  • Gestión de proyectos mediante el archivo lux.toml
  • Generación automática de rockspec
  • Sólido soporte de lockfile
  • Entornos de compilación y desarrollo completamente reproducibles
  • Integración de formateo y linting de código
  • Soporte para ejecutar pruebas con busted
  • Posibilidad de usar Neovim como intérprete de Lua
  • Configuración de entornos puros
  • Compatibilidad con el ecosistema de luarocks

Motivación

Lua

  • Luarocks tiene 20 años de historia, por lo que no se adapta bien al desarrollo moderno en Lua
  • Lux apunta a ser un nuevo comienzo
    • Uso de TOML como formato principal de manifiesto para gestionar dependencias
    • Posibilidad de compilar e instalar proyectos desde el directorio del proyecto con el comando build
    • Aplicación obligatoria del cumplimiento de SemVer
    • Soporte para compilación en paralelo

Neovim

  • Aumento de popularidad debido al soporte de Luarocks en los gestores de plugins de Neovim rocks.nvim y lazy.nvim
  • Lux es no destructivo y no interfiere con la forma en que se distribuyen los plugins de Neovim
  • Con la bandera --nvim, es posible instalar paquetes en una estructura de árbol compatible con Neovim

Nix

  • Si un plugin de Neovim existe como paquete de Luarocks, nixpkgs lo utiliza
  • lux.lock de Lux almacena la fuente y el hash del rockspec de cada dependencia

Próximos pasos

  • Enfocarse en corregir bugs y mejorar los mensajes de error
  • Se planea reescribir rocks.nvim sobre la base de Lux
  • Si la reescritura tiene éxito, se espera un impacto positivo en el ecosistema de Neovim

Documentación

  • El sitio web de documentación de Lux ofrece tutoriales y guías
  • Es posible resolver preguntas y problemas mediante las discusiones de GitHub y el issue tracker

Licencia

  • Lux se ofrece bajo la licencia MIT
  • El logo de Lux se ofrece bajo la licencia CC BY-NC-SA 4.0

1 comentarios

 
GN⁺ 2025-04-09
Comentarios de Hacker News
  • Los entornos de ejecución de lenguajes de scripting son un punto débil. Personalmente no uso Neovim, pero tenía la sensación de que esto impulsaría el desarrollo de Lua. Bryan Cantrill llamó a Javascript "LISP con ropa de C". Siento que Lua es lo contrario, y por eso me gusta Lua (aclaro: nunca lo he usado en el trabajo)
    • Proyectos como Koreader usan Lua como lenguaje principal de la aplicación. Si pueden convencerlos de migrar, eso daría confianza en la madurez y popularidad de la idea
  • Es un proyecto interesante. Me gustaría colaborar para mejorar el soporte de Lua en Pixi (a través del ecosistema de conda-forge). Ya estamos empaquetando Lua y algunas extensiones en C. Las extensiones en C son clave para Pixi, así que parece una muy buena combinación
  • Suena increíble. Uso mucho Lua, pero luarocks es tan rígido en sus decisiones que casi no sirve. Cualquier cosa que vaya más allá de "instalar una biblioteca para ejecutarla directamente en el sistema local", o incluso lo que está alrededor de eso, ya ni arranca. ¿Tienes un entorno de scripting integrado que funciona con paquetes de Lua y quieres empaquetar scripts para usar ahí junto con sus dependencias? Mejor ni lo intentes
    • No sé si esto sea mejor para ese caso de uso, pero aunque no lo sea, luarocks es incómodo y frustrante de usar
  • Personalmente desconfío de todos los gestores de paquetes específicos por lenguaje. Siento que no van en la dirección correcta. Creo que algo como nix es un enfoque mucho mejor
  • Un gestor de paquetes para Lua que depende de Rust
  • ¡Bien! Lua necesitaba algo así para facilitar más el manejo de paquetes
  • Bien. Quería una forma reproducible de instalar paquetes de Lua en varios dispositivos
  • ¿Por qué no usar Lua para la configuración en lugar de TOML? Si mal no recuerdo, Lua originalmente era un lenguaje de esquemas de datos, así que debería encajar bien
  • Gracias por tratar al ecosistema de Neovim como de primera clase. Mientras desarrollaba plugins, extrañé la facilidad de uso de bibliotecas de terceros como Rust y Typescript