피드로 돌아가기
Call for Testing: Build Dir Layout v2
Rust BlogRust Blog
Backend

Call for Testing: Build Dir Layout v2

Cargo가 빌드 디렉토리 레이아웃을 콘텐츠 타입 기반에서 패키지명 기반으로 재구성해 크로스 워크스페이스 캐싱 지원 가능화

Ed Page2026년 3월 13일9intermediate

Context

현재 Cargo의 빌드 디렉토리는 내부 구현 세부사항이지만 많은 프로젝트가 Cargo의 누락된 기능으로 인해 이러한 미지정 세부사항에 의존하고 있다. 빌드 디렉토리 구조의 변경은 이러한 의존성을 갖는 도구와 프로세스에 영향을 미칠 수 있어 사전 테스트와 피드백이 필수적이다.

Technical Solution

  • 빌드 아티팩트 조직 방식 변경: 콘텐츠 타입 기반(.fingerprint/, build/, deps/) 구조에서 패키지명과 빌드 유닛 해시 기반 구조로 전환
  • 빌드 스크립트 관련 파일 구조 재편성: 기존의 bin-[HASH], lib-[HASH] 방식에서 bin/[HASH]/, lib/[HASH]/ 패키지 디렉토리 계층화
  • 빌드 캐시 추적 이동: .fingerprint/ 디렉토리를 별도 루트에서 각 빌드 유닛별 fingerprint/ 디렉토리로 재배치
  • 빌드 스크립트 실행 결과 격리: OUT_DIR과 빌드 스크립트 캐시를 [RUN_HASH]/out/[RUN_HASH]/run/으로 구분 저장
  • Cargo 1.91부터 CARGO_BUILD_BUILD_DIR 환경변수로 빌드 아티팩트와 최종 아티팩트 저장소 분리 가능화

Key Takeaway

빌드 시스템의 내부 구조를 패키지 단위의 자체 포함 디렉토리로 재설계하면 크로스 워크스페이스 캐싱과 같은 고급 기능을 활성화할 수 있으며, 사전 테스트 기간을 통해 기존 도구와의 호환성 문제를 사전에 파악하고 대응할 수 있다.


Cargo를 사용하는 Rust 프로젝트에서 `cargo test -Zbuild-dir-new-layout` 플래그로 nightly 2026-03-10 이상 버전을 테스트하면, 빌드 디렉토리 레이아웃 변경으로 인한 잠재적 호환성 문제를 조기에 발견하고 빌드 스크립트나 타겟 디렉토리 참조 로직을 사전에 업데이트할 수 있다.

원문 읽기