Skip to content

[rustjava-adopt-javac-fixture-provenance-verified-p0] test(fixtures): 다섯 픽스처가 재빌드되지 않는 이유는 -g 다 - #68

Merged
Jun025 merged 2 commits into
mainfrom
feat/rustjava-fixture-provenance-five
Sep 18, 2026
Merged

Jun025 merged 2 commits into
mainfrom
feat/rustjava-fixture-provenance-five

Conversation

@Jun025

@Jun025 Jun025 commented Sep 17, 2026

Copy link
Copy Markdown
Owner

채택 제안 2026-09-17-javac-fixture-provenance-verified#p0 — 「루트 픽스처 다섯이 왜 커밋된 바이트로 재빌드되지 않는지 알아내라」의 처분.

답 — -g

커밋본은 디버그 정보를 달고 컴파일됐고 검증 스크립트는 그것 없이 재빌드했다. javac 기본은 -g:lines,source 라 LocalVariableTable 이 나오지 않는다. -g 를 주면 다섯 전건 바이트 동일.

제안이 댄 두 설명은 둘 다 틀렸다

  • 다른 컴파일러 아니다 — 같은 다섯이 javac 26.0.1 과 26.0.2.1 에서 똑같이 다르고, 둘 다 -g 면 똑같이 동일하다(두 판본 각각 직접 실행).
  • 소스 발산 아니다 — -g 만 주면 지금 소스가 커밋 바이트를 정확히 낸다.

⇒ 제안 tradeoff 의 「재컴파일이 동작 변경이 될 수 있다」는 성립하지 않는다 — 재컴파일이 불요이고, 커밋된 .class 바이트는 0 변경이다.

고친 한 자리

스크립트가 이미 --release 를 픽스처에서 읽으므로 -g 도 같은 자리에서 읽게 했다(상수풀의 LocalVariableTable 유무). 배선 전에 판별력을 쟀다 — 보유 5 · 미보유 107 · 5/5 · 오탐 0.

검증(양방향)

결과
정상 109 rebuilt / 109 reproduced / 0 differed
개악 — -g 파생 한 줄 no-op 104 / 5 differed(✗ 목록이 원래 다섯과 동일)
복원 0 differed

cargo test --all 579 passed / 0 failed / 1 ignored(불변 — Rust 무접촉) · check-dod-ci-parity OK.

잃는 것

스크립트는 여전히 rc=1 — 재빌드 불가 3건(형제 참조 소스 · -sourcepath 미사용)은 제안이 미해결로 적은 별 축이라 넓히지 않았다. 그리고 판정이 한 속성의 유무에 걸린다(-g:none 재생성은 조용히 드리프트로 읽힌다).

jun0 added 2 commits September 18, 2026 05:28
… 다섯 픽스처가 재빌드되지 않는 이유는 `-g` 다

채택 제안 2026-09-17-javac-fixture-provenance-verified#p0 의 처분.
커밋본은 디버그 정보를 달고 컴파일됐고 스크립트는 그것 없이 재빌드하고 있었다 — javac 기본은
`-g:lines,source` 라 LocalVariableTable 이 안 나온다. `-g` 를 주면 다섯 전건 바이트 동일.

★제안이 댄 두 설명은 둘 다 틀렸다:
· 다른 컴파일러 아니다 — 같은 다섯이 26.0.1·26.0.2.1 에서 똑같이 다르고 둘 다 -g 면 똑같이 동일하다.
· 소스 발산 아니다 — -g 만 주면 지금 소스가 커밋 바이트를 정확히 낸다.
⇒ 제안 tradeoff 의 「재컴파일이 동작 변경이 될 수 있다」는 성립하지 않는다(재컴파일 불요 ·
   커밋된 .class 바이트 0 변경).

고친 한 자리: 스크립트가 --release 를 픽스처에서 읽듯 -g 도 픽스처에서 읽는다(상수풀의
LocalVariableTable 유무). 배선 전 판별력 실측 — 보유 5 · 미보유 107 · 5/5 · 오탐 0.

양방향: 정상 109 rebuilt / 109 reproduced / 0 differed ↔ 개악(-g 파생 한 줄 no-op) 104 / 5 differed
(✗ 목록이 원래 다섯과 동일) · 복원 0.
잃는 것: 스크립트는 여전히 rc=1(재빌드 불가 3건 = 제안이 미해결로 적은 별 축 · 넓히지 않았다).

cargo test --all 579/0/1(불변 — Rust 무접촉) · check-dod-ci-parity OK.
…in — 원장 2파일 합집합(theirs 순서 무재배치 · 시각 순 삽입)
@Jun025
Jun025 merged commit 0c4f89f into main Sep 18, 2026
10 checks passed
@Jun025
Jun025 deleted the feat/rustjava-fixture-provenance-five branch September 18, 2026 05:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant