2 puan yazan GN⁺ 2025-04-09 | 1 yorum | WhatsApp'ta paylaş
  • Lua’ya uygun bir ekosistem kurmayı hedefleyen Lux, Lua kodunun oluşturulması, bakımı ve dağıtımı için yeni bir paket yöneticisidir
  • Lux, cargo gibi iyi bilinen paket yöneticilerinden ilham alan basit ve sezgisel bir CLI sunar

Özellikler

  • Sistemler arasında tam taşınabilirlik
  • Paralel derleme ve kurulum desteği 🚀
  • Lua header kurulumunun otomatik olarak ele alınması
  • lux-lib crate’i aracılığıyla Lua API’sini dışa açabilme
  • lux.toml dosyası üzerinden proje yönetimi
  • Otomatik rockspec oluşturma
  • Güçlü lockfile desteği
  • Tamamen yeniden üretilebilir derlemeler ve geliştirme ortamları
  • Kod biçimlendirme ve linting entegrasyonu
  • busted ile test çalıştırma desteği
  • Neovim’i Lua yorumlayıcısı olarak kullanabilme
  • Saf ortam yapılandırması
  • luarocks ekosistemiyle uyumluluk

Motivasyon

Lua

  • Luarocks 20 yıllık bir geçmişe sahip ve modern Lua geliştirme için uygun değil
  • Lux yeni bir başlangıcı hedefliyor
    • Bağımlılık yönetimi için ana manifest formatı olarak TOML kullanımı
    • Proje dizininde build komutuyla projeyi derleyip kurabilme
    • SemVer uyumunun zorunlu tutulması
    • Paralel derleme desteği

Neovim

  • Neovim eklenti yöneticileri rocks.nvim ve lazy.nvim için Luarocks desteği nedeniyle artan popülerlik
  • Lux yıkıcı değildir ve Neovim eklentilerinin dağıtım biçimine müdahale etmez
  • --nvim bayrağıyla paketleri Neovim ile uyumlu bir ağaç yapısında kurabilme

Nix

  • Neovim eklentileri Luarocks paketi olarak mevcutsa nixpkgs bunları kullanır
  • Lux’un lux.lock dosyası her bağımlılığın kaynak ve rockspec hash’ini saklar

Sonraki adımlar

  • Hata düzeltmeleri ve hata mesajlarını iyileştirmeye odaklanma
  • rocks.nvim Lux tabanlı olarak yeniden yazılacak
  • Yeniden yazım başarılı olursa Neovim ekosisteminde olumlu bir etki bekleniyor

Belgeler

  • Lux’un dokümantasyon sitesinde eğitimler ve kılavuzlar sunuluyor
  • GitHub Discussions ve issue tracker üzerinden soru sormak ve sorun çözmek mümkün

Lisans

  • Lux, MIT lisansı altında sunulmaktadır
  • Lux logosu, CC BY-NC-SA 4.0 lisansı altında sunulmaktadır

1 yorum

 
GN⁺ 2025-04-09
Hacker News görüşleri
  • Betik dillerinin çalışma ortamı zayıf bir nokta. Şahsen Neovim kullanmıyorum ama Lua'nın ilerlemesini teşvik edeceği hissine kapıldım. Bryan Cantrill, Javascript'i "C kıyafetleri giymiş bir LISP" olarak adlandırmıştı. Lua'nın bunun tersi olduğunu düşünüyorum ve bu yüzden Lua'yı seviyorum (not: işte hiç kullanmadım)
    • Koreader gibi projeler Lua'yı ana uygulama dili olarak kullanıyor. Onları geçiş yapmaya ikna edebilirseniz, bu fikrin olgunluğu ve popülerliği konusunda güven verebilir
  • İlginç bir proje. Pixi'de Lua desteğini geliştirmek için birlikte çalışmak isterim (conda-forge ekosistemi üzerinden). Zaten Lua'yı ve birkaç C uzantısını paketliyorum. C uzantıları Pixi'nin temel bir parçası, bu yüzden iyi bir eşleşme gibi görünüyor
  • Müthiş geliyor. Lua'yı çok kullanıyorum ama luarocks o kadar katı görüşlü ki neredeyse işe yaramaz. "Yerel sistemde doğrudan çalıştırılacak kütüphaneleri kurmak" ve onun ötesindeki veya çevresindeki hiçbir şey için başlangıç noktası bile sunmuyor. Lua paketleriyle çalışan gömülü bir betik ortamınız var ve orada kullanılacak betikleri bağımlılıklarıyla birlikte paketlemek mi istiyorsunuz? Vazgeçmeniz gerekir
    • Bu kullanım durumu için daha iyi olup olmadığını bilmiyorum ama olmasa bile luarocks kullanımı hantal ve sinir bozucu
  • Şahsen dil başına ayrı paket yöneticilerinin hepsine karşıyım. Bunun doğru yön olduğunu düşünmüyorum. Nix benzeri bir şeyin çok daha iyi bir yaklaşım olduğunu düşünüyorum
  • Rust'a bağımlı bir Lua paket yöneticisi
  • Güzel! Lua'nın paketlemeyi kolaylaştırmak için buna benzer bir şeye ihtiyacı vardı
  • Güzel. Lua paketlerini birden fazla cihaza kurmanın tekrarlanabilir bir yolunu istiyordum
  • Neden yapılandırma için TOML yerine Lua kullanılmıyor? Yanlış hatırlamıyorsam Lua başlangıçta bir veri şeması diliydi, bu yüzden uygun olurdu
  • Neovim ekosistemine birinci sınıf muamele yaptığınız için teşekkürler. Eklenti geliştirirken Rust ve Typescript gibi üçüncü taraf kütüphanelerin kullanım kolaylığını özlüyordum