Lix 2.95, Nix 환경의 안정성과 성능을 향상시키다!
Lix 2.95는 버그 수정, 성능 개선, Cap’n’Proto 통합에 중점을 둔 릴리스
Flakes 기능의 플러그인화를 통해 Lix 코어에서 분리하는 작업 진행
Nix 언어의 오래된 기능(Deprecated Features) 제거 및 개선을 통해 안정성 강화
daemon 캐시 디렉토리 변경 및 새로운 빌트인(builtins.warn) 추가 등 사용자 편의성 증대
Flakes 플러그인화 및 CLI 개선
Lix 2.95는 Flakes 기능을 플러그인(Plugin)으로 분리하는 작업을 시작하여, Lix 코어의 복잡성을 줄이고 확장성을 높였다. 특히, Flakes 관련 코드를 분리하는 과정에서 CLI 파서(Parser) 및 설정 시스템(Configuration System)과의 상호 의존성으로 어려움을 겪고 있다고 언급했다. 궁극적으로는 Flakes를 플러그인으로 제공하여 사용자 정의 인터페이스를 지원하고, CLI 기능을 개선할 계획이다.
Nix 언어의 오래된 기능 제거 및 개선
Lix는 Nix 언어의 오래된 기능(Deprecated Features)을 제거하고 개선하여 안정성을 강화하고 있다. 특히, `rec` 세트의 병합, 동적 속성, 토큰화 문제와 관련된 기능들이 문제점으로 지적되었다. 이러한 변경 사항은 기존 사용자에 대한 영향을 최소화하면서 언어의 일관성을 높이는 방향으로 진행되고 있으며, Nixpkgs 기여자와 협력하여 호환성을 유지할 계획이다.
daemon 캐시 디렉토리 변경 및 시스템 설정 존중
Lix 2.95에서는 daemon이 캐시를 저장하는 디렉토리를 `/root/.cache/nix`에서 `/var/cache/nix`로 변경했다. 이는 root 사용자의 홈 디렉토리에 캐시를 저장하는 것이 의도적이지 않았고, 설정의 유연성이 부족했기 때문이다. 이제 Lix는 systemd에 의해 설정된 `CacheDirectory`와 같은 시스템 설정(System Settings)을 존중하여, 시스템 관리의 편의성을 높였다.
Rust 통합 및 성능 개선
Lix는 Rust를 활용하여 코드베이스의 성능과 안정성을 향상시키고 있다. 2.95 버전에서는 Rust-monocrate를 도입하여 C++ 또는 C API를 호출하거나, C ABI를 통해 C++에서 호출할 수 있도록 했다. 또한, Rust 기반의 CLI 파서 및 설정 시스템을 개발하기 위한 실험을 진행 중이다. 이러한 Rust 통합을 통해 사용자에게 더 나은 라이브러리 생태계를 제공하고, 안정적인 컴포넌트(Components)를 구축할 수 있을 것으로 기대된다.
커뮤니티의 질문과 우려 사항
커뮤니티에서는 Nix 언어의 파싱 동작과 `rec` 세트 내 동적 속성 사용에 대한 의문을 제기했다. 특히, `[ 00.123 ]`이 `[ 0 0.123 ]`으로 파싱되는 동작과 `rec` 세트 내 동적 속성의 평가 순서에 대한 이해 부족을 지적했다. 이러한 질문은 Nix 언어의 복잡성(Complexity)과 예상치 못한 동작(Unexpected Behavior)에 대한 우려를 반영하며, Lix 팀은 이러한 문제에 대한 명확한 설명과 개선을 제공해야 할 것이다.