Show HN: Lux – Lua를 위한 고급 패키지 관리자 Lux
(mrcjkb.dev)- 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.nvim
과lazy.nvim
의 Luarocks 지원으로 인한 인기 증가 - Lux는 비파괴적이며 Neovim 플러그인 배포 방식에 간섭하지 않음
-
--nvim
플래그로 Neovim과 호환되는 트리 구조로 패키지 설치 가능
Nix
- Neovim 플러그인이 Luarocks 패키지로 존재할 경우
nixpkgs
에서 이를 사용 - Lux의
lux.lock
은 각 의존성의 소스 및 rockspec 해시 저장
다음 단계
- 버그 수정 및 오류 메시지 개선에 집중
-
rocks.nvim
을 Lux 기반으로 재작성 예정 - 성공적인 재작성 시 Neovim 생태계에 긍정적인 영향 예상
문서
- Lux의 문서 웹사이트에서 튜토리얼 및 가이드 제공
- GitHub 토론 및 이슈 트래커를 통해 질문 및 문제 해결 가능
라이선스
- Lux는 MIT 라이선스 하에 제공됨
- Lux 로고는 CC BY-NC-SA 4.0 라이선스 하에 제공됨
Hacker News 의견
- 스크립트 언어의 실행 환경은 약점임. 개인적으로 Neovim을 사용하지 않지만, Lua의 발전을 촉진할 것이라는 느낌이 있었음. Bryan Cantrill은 Javascript를 "C의 옷을 입은 LISP"이라고 불렀음. Lua는 그 반대라고 느끼며, 그런 이유로 Lua를 좋아함 (참고: 업무에서 사용한 적은 없음)
- Koreader 같은 프로젝트는 Lua를 주요 애플리케이션 언어로 사용함. 그들이 전환하도록 설득할 수 있다면, 아이디어의 성숙도와 인기에 대한 확신을 줄 수 있을 것임
- 흥미로운 프로젝트임. Pixi에서 Lua 지원을 개선하기 위해 함께 일하고 싶음 (conda-forge 생태계를 통해). 이미 Lua와 몇 가지 C 확장을 패키징하고 있음. C 확장은 Pixi의 핵심이므로 잘 맞을 것 같음
- pixi.sh (문서)
- 레지스트리의 lua 패키지: https://prefix.dev/channels/conda-forge/packages/lua
- 놀라운 소리임. Lua를 많이 사용하지만, luarocks는 너무 의견이 강해서 거의 쓸모가 없음. "로컬 시스템에서 직접 실행하기 위한 라이브러리 설치" 이상의 것이나 그 주변의 것은 시작도 못함. Lua 패키지와 함께 작동하는 내장 스크립팅 환경이 있고, 거기서 사용할 스크립트를 의존성과 함께 패키징하고 싶음? 포기해야 함
- 이 사용 사례에 더 나은지는 모르겠지만, 그렇지 않더라도 luarocks는 사용하기에 불편하고 짜증남
- 개인적으로 모든 언어별 패키지 관리자에 지침. 올바른 방향이 아니라고 느낌. nix 같은 것이 훨씬 나은 접근법이라고 생각함
- Rust에 의존하는 Lua의 패키지 관리자
- 좋음! Lua는 패키지를 더 쉽게 만들기 위해 이런 것이 필요했음
- 좋음. 여러 기기에서 Lua 패키지를 설치할 수 있는 재현 가능한 방법을 원하고 있었음
- TOML 대신 Lua를 설정에 사용하지 않는 이유는? 기억에 따르면 Lua는 원래 데이터 스키마 언어였으므로 적합할 것임
- Neovim 생태계를 일급으로 대우해줘서 고마움. 플러그인 개발 중에 Rust와 Typescript 같은 제3자 라이브러리의 사용 용이성을 놓쳤음