Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

표준 라이브러리 유의적 버전 호환성 깨짐 검사

test-x86_64-gnu-stdlib-semver-check 작업은 의도하지 않은 유의적 버전(semver) 호환성 깨짐을 찾아내기 위해 표준 라이브러리(core, alloc, std)에 대해 cargo-semver-checks(c-s-c) 도구를 실행합니다. 이를 위해 부모 병합 커밋과 현재 병합되는 커밋의 rustdoc JSON 출력(rust-docs-json 컴포넌트에서 생성됨)을 분석합니다. 이 검사를 실행하면 다음 다섯 가지 중 하나가 일어날 수 있습니다.

  1. 모든 것이 정상적으로 진행되고, c-s-c가 호환성 깨짐을 전혀 발견하지 않습니다.
  2. 최근에 rustdoc JSON 버전이 올라갔는데 c-s-c가 아직 이를 처리하지 못합니다. 이 경우 테스트는 성공으로 끝나며, c-s-c를 업데이트해야 한다는 경고를 출력합니다. c-s-c가 새 JSON 형식을 지원하는 버전을 릴리스하면 다시 1번 상황으로 돌아갈 것입니다.
    • 현재 이 작업에서는 c-s-c의 최신 릴리스 버전을 설치하므로, rust-lang/rust 저장소에서 버전을 수동으로 업데이트할 필요가 없습니다.
  3. c-s-c가 호환성 문제를 감지했지만 거짓 양성인 경우입니다. 이 경우에는 거짓 양성을 이 Zulip 토픽에 보고하고 스탬프 파일을 갱신하십시오.
  4. c-s-c가 실제 호환성 깨짐을 감지했고, 덕분에 의도하지 않은 호환성 깨짐을 찾을 수 있었습니다. 잘됐습니다! 이 경우 이 Zulip 토픽에 성공 사례를 보고해 주시기 바랍니다.
  5. c-s-c가 실제 호환성 문제를 감지했지만 그래도 병합하려는 경우입니다(FCP를 거친 엣지 케이스일 수 있습니다). 이 경우 스탬프 파일을 갱신하십시오.

표준 라이브러리 semver 스탬프 파일 갱신하기

c-s-c가 호환성 깨짐을 감지한 PR에서 CI를 통과시키려면(실제 깨짐인지 여부와 관계없이) src/bootstrap/stdlib-semver-check-stamp 파일을 수정해야 합니다. 파일 맨 아래에 이 파일을 수정하는 PR 번호를 기입하십시오. 이렇게 하면 c-s-c가 무엇을 감지하든 테스트가 계속 통과 상태로 유지됩니다.

검사를 수동으로 실행하기

./x test std-semver-check --set rust.stdlib-semver-baseline=${PARENT}를 사용하여 로컬에서 semver 검사를 수동으로 실행할 수 있습니다. 여기서 PARENT는 트리 내 표준 라이브러리와 비교할 커밋 SHA입니다. 이를 지정하지 않으면 bootstrap이 로컬 git 기록에서 찾은 가장 최근의 업스트림 커밋을 선택합니다.