2 poin oleh GN⁺ 2025-04-09 | 1 komentar | Bagikan ke WhatsApp
  • Lux, yang bertujuan membangun ekosistem yang cocok untuk Lua, adalah manajer paket baru untuk membuat, memelihara, dan mendistribusikan kode Lua
  • Lux menyediakan CLI yang sederhana dan intuitif, terinspirasi dari manajer paket terkenal seperti cargo

Fitur

  • Portabilitas penuh antar sistem
  • Dukungan build dan instalasi paralel 🚀
  • Penanganan otomatis instalasi header Lua
  • Dapat mengekspos API Lua melalui crate lux-lib
  • Manajemen proyek melalui file lux.toml
  • Pembuatan rockspec otomatis
  • Dukungan lockfile yang kuat
  • Build dan lingkungan pengembangan yang sepenuhnya reproducible
  • Integrasi pemformatan kode dan linting
  • Dukungan menjalankan pengujian melalui busted
  • Dapat menggunakan Neovim sebagai interpreter Lua
  • Pengaturan lingkungan murni
  • Kompatibel dengan ekosistem luarocks

Motivasi

Lua

  • Luarocks memiliki sejarah 20 tahun sehingga kurang cocok untuk pengembangan Lua modern
  • Lux bertujuan menjadi awal yang baru
    • Menggunakan TOML sebagai format manifest utama untuk mengelola dependensi
    • Dapat membangun dan menginstal proyek dari direktori proyek dengan perintah build
    • Memaksa kepatuhan terhadap SemVer
    • Mendukung build paralel

Neovim

  • Popularitas meningkat berkat dukungan Luarocks dari manajer plugin Neovim rocks.nvim dan lazy.nvim
  • Lux bersifat non-destruktif dan tidak mengganggu cara distribusi plugin Neovim
  • Dengan flag --nvim, paket dapat diinstal dalam struktur tree yang kompatibel dengan Neovim

Nix

  • Jika plugin Neovim tersedia sebagai paket Luarocks, nixpkgs akan menggunakannya
  • lux.lock milik Lux menyimpan sumber dan hash rockspec untuk setiap dependensi

Langkah berikutnya

  • Fokus pada perbaikan bug dan peningkatan pesan kesalahan
  • rocks.nvim akan ditulis ulang berbasis Lux
  • Jika penulisan ulang berhasil, dampaknya diperkirakan positif bagi ekosistem Neovim

Dokumentasi

  • Tutorial dan panduan tersedia di situs dokumentasi web Lux
  • Pertanyaan dan penyelesaian masalah dapat dilakukan melalui diskusi GitHub dan issue tracker

Lisensi

  • Lux tersedia di bawah lisensi MIT
  • Logo Lux tersedia di bawah lisensi CC BY-NC-SA 4.0

1 komentar

 
GN⁺ 2025-04-09
Komentar Hacker News
  • Lingkungan runtime bahasa skrip adalah titik lemah. Saya pribadi tidak memakai Neovim, tetapi saya merasa ini akan mendorong perkembangan Lua. Bryan Cantrill pernah menyebut Javascript sebagai "LISP yang mengenakan pakaian C". Menurut saya Lua terasa seperti kebalikannya, dan itu alasan saya menyukai Lua (catatan: saya belum pernah memakainya di pekerjaan)
    • Proyek seperti Koreader menggunakan Lua sebagai bahasa aplikasi utama. Jika mereka bisa diyakinkan untuk beralih, itu akan memberi keyakinan pada tingkat kematangan dan popularitas gagasan ini
  • Proyek yang menarik. Saya ingin bekerja sama untuk meningkatkan dukungan Lua di Pixi (melalui ekosistem conda-forge). Saya sudah memaketkan Lua dan beberapa ekstensi C. Ekstensi C adalah inti dari Pixi, jadi sepertinya sangat cocok
  • Terdengar luar biasa. Saya sering memakai Lua, tetapi luarocks terlalu kaku soal opininya sehingga nyaris tidak berguna. Untuk hal-hal di luar "menginstal library agar berjalan langsung di sistem lokal" atau yang berada di sekitarnya, bahkan memulai pun sulit. Punya lingkungan scripting bawaan yang bekerja bersama paket Lua, dan ingin memaketkan skrip yang akan dipakai di sana beserta dependensinya? Lupakan saja
    • Saya tidak tahu apakah ini lebih baik untuk use case tersebut, tetapi meskipun tidak, luarocks tetap tidak enak dipakai dan menjengkelkan
  • Secara pribadi saya sinis terhadap semua package manager khusus per bahasa. Rasanya itu bukan arah yang tepat. Saya pikir sesuatu seperti nix adalah pendekatan yang jauh lebih baik
  • Package manager Lua yang bergantung pada Rust
  • Bagus! Lua memang membutuhkan sesuatu seperti ini agar pembuatan paket jadi lebih mudah
  • Bagus. Saya sudah lama menginginkan cara yang reproducible untuk memasang paket Lua di banyak perangkat
  • Kenapa tidak memakai Lua untuk konfigurasi alih-alih TOML? Kalau saya ingat benar, Lua pada awalnya adalah bahasa skema data, jadi seharusnya cocok
  • Terima kasih sudah memperlakukan ekosistem Neovim sebagai warga kelas satu. Saat mengembangkan plugin, saya merindukan kemudahan penggunaan library pihak ketiga seperti Rust dan Typescript