2 ポイント 投稿者 GN⁺ 2025-04-09 | 1件のコメント | WhatsAppで共有
  • Luaに適したエコシステムの構築を目指すLuxは、Luaコードの作成、保守、配布のための新しいパッケージマネージャー
  • Luxはcargoのようなよく知られたパッケージマネージャーに着想を得た、シンプルで直感的なCLIを提供

機能

  • システム間で完全に移植可能
  • 並列ビルドとインストールをサポート 🚀
  • Luaヘッダーのインストールを自動処理
  • lux-libクレートを通じてLua APIを公開可能
  • lux.tomlファイルによるプロジェクト管理
  • rockspecの自動生成
  • 強力なlockfileサポート
  • 完全に再現可能なビルドおよび開発環境
  • コードフォーマットとリンティングの統合
  • bustedによるテスト実行をサポート
  • NeovimをLuaインタプリタとして利用可能
  • 純粋な環境設定
  • luarocksエコシステムと互換性あり

動機

Lua

  • Luarocksは20年の歴史があり、現代のLua開発には適していない
  • Luxは新たな出発を目指す
    • TOMLを主要なマニフェスト形式として使用し、依存関係を管理
    • プロジェクトディレクトリでbuildコマンドによりプロジェクトのビルドとインストールが可能
    • SemVer準拠を強制
    • 並列ビルドをサポート

Neovim

  • Neovimプラグインマネージャーrocks.nvimlazy.nvimのLuarocksサポートにより人気が上昇
  • Luxは非破壊的であり、Neovimプラグインの配布方式に干渉しない
  • --nvimフラグでNeovim互換のツリー構造にパッケージをインストール可能

Nix

  • NeovimプラグインがLuarocksパッケージとして存在する場合、nixpkgsでそれを利用
  • Luxのlux.lockは各依存関係のソースとrockspecハッシュを保存

次のステップ

  • バグ修正とエラーメッセージ改善に注力
  • rocks.nvimをLuxベースで再実装予定
  • 再実装が成功すればNeovimエコシステムに好影響が見込まれる

ドキュメント

  • LuxのドキュメントWebサイトでチュートリアルとガイドを提供
  • GitHub DiscussionsとIssue Trackerを通じて質問や問題解決が可能

ライセンス

  • LuxはMITライセンスの下で提供
  • LuxロゴはCC BY-NC-SA 4.0ライセンスの下で提供

1件のコメント

 
GN⁺ 2025-04-09
Hacker Newsのコメント
  • スクリプト言語の実行環境は弱点だ。個人的にはNeovimは使っていないが、Luaの発展を後押しするだろうという感触はあった。Bryan CantrillはJavascriptを「Cの服を着たLISP」と呼んでいた。Luaはその逆のように感じるので、そういう理由でLuaが好きだ(参考までに、仕事で使ったことはない)
    • KoreaderのようなプロジェクトはLuaを主要なアプリケーション言語として使っている。彼らを移行する気にさせられるなら、そのアイデアの成熟度と人気に対する確信につながるはずだ
  • 興味深いプロジェクトだ。PixiでLuaサポートを改善するために一緒に取り組みたい(conda-forgeエコシステム経由で)。すでにLuaといくつかのC拡張をパッケージ化している。C拡張はPixiの中核なので、相性が良さそうだ
  • すばらしい話だ。Luaはよく使うが、luarocksはあまりにも癖が強くて、ほとんど役に立たない。「ローカルシステムで直接実行するためのライブラリのインストール」以上のこと、あるいはその周辺のことは、手を付けることすらできない。Luaパッケージと一緒に動く組み込みのスクリプト環境があって、そこで使うスクリプトを依存関係ごとパッケージ化したい? 諦めるしかない
    • このユースケースにより向いているかは分からないが、そうでなかったとしてもluarocksは使いにくくていらいらする
  • 個人的には、あらゆる言語ごとのパッケージマネージャーに懐疑的だ。正しい方向ではない気がする。nixのようなものの方が、ずっと良いアプローチだと思う
  • Rustに依存するLuaのパッケージマネージャー
  • いいね! Luaには、パッケージ作成をもっと簡単にするためにこういうものが必要だった
  • いいね。複数のデバイスでLuaパッケージをインストールできる再現可能な方法を求めていた
  • なぜTOMLの代わりに設定にLuaを使わないのか? 記憶が正しければ、Luaはもともとデータスキーマ言語だったので、適しているはずだ
  • Neovimエコシステムを第一級として扱ってくれてありがとう。プラグイン開発中に、RustやTypescriptのようなサードパーティライブラリの使いやすさが恋しかった