hanseonc_high.c import 검색순서 수리 (#19)
개요
설계-컴파일러근본3작업.md §#19 — libs 밖 파일에서
가져오기 "X.한선"이 CROWNY_STD(CrownyTVM/std)를
crownyc/libs보다 먼저 검색해 정본 대신 그림자 사본을 로드하던 문제(libs∩std 중복 49개 중 11개 내용상이:
정규식 18920/3088·UUID·검증·큐·해시·Base64 등). 정본 수리를 무력화하는 함정으로 지목되어 최우선 착수.
무엇을 했는지
- 대상:
/Users/ef/CrownyOS/crownyc/hanseonc_high.c (crownyc.c는 건드리지 않음 — 다른 세션 S2 작업 중)
- 위치: 가져오기(import) fopen 폴백 경로 조합 배열 (구 라인 465-490 부근)
- 변경 전 순서: 호출 파일 디렉토리 → CROWNY_STD(env, 있으면) →
/Users/ef/Downloads/CrownyTVM/std(하드코딩) → crownyc/libs → crownyc/pkg/libs → apps → crownyc
- 변경 후 순서: 호출 파일 디렉토리 →
crownyc/libs → crownyc/pkg/libs → CROWNY_STD(env, 있으면) → /Users/ef/Downloads/CrownyTVM/std(하드코딩) → apps → crownyc
- libs가 항상 std보다 먼저 검색되며, CROWNY_STD는 libs에 없을 때만 폴백으로 사용됨(폴백 경로 자체는 유지, 순서만 재배열).
- 백업:
hanseonc_high.c.bak-20260710-s19, hanseonc_high.bak-20260710-s19 (동일 디렉토리)
- 빌드:
cc -O2 -o hanseonc_high hanseonc_high.c (crownyc.c는 빌드하지 않음)
검증
/tmp (libs 밖)에서 가져오기 "정규식.한선" → stderr [가져오기] 정규식.한선 (18961바이트) 확인
(libs 정본 18920B + 소스마커, 이전엔 std 그림자 3088B 로드).
- 추가 확인 3건: UUID(3628≈libs 3592+마커, std 1607 아님), 검증(4060≈libs 4022+마커, std 3590 아님),
큐(919≈libs 884+마커, std 1010 아님) — 모두 libs 정본 로드로 전환 확인.
- 전 회귀 하네스 18개(예제검증 25/0, 대응카드 5종, 라이브러리카드 11종) 수정 전/후 실행 비교 —
FAIL 수 전부 불변(인증검증만 원래도 10/1, 나머지 전부 FAIL 0 유지). 그림자→정본 전환으로 깨진 곳 없음.
관련 파일
/Users/ef/CrownyOS/crownyc/hanseonc_high.c (수정)
/Users/ef/CrownyOS/crownyc/hanseonc_high.c.bak-20260710-s19, hanseonc_high.bak-20260710-s19 (백업)
/Users/ef/crowny-rpnkit/설계-컴파일러근본3작업.md (§#19 완료 표기)
- 회귀 하네스:
/Users/ef/crowny-rpnkit/{예제검증.sh, 대응카드/*검증.sh, 라이브러리카드/*검증.sh,*하네스.sh}
잔여 이슈
- libs∩std 중복 49개 중 나머지(정규식 외)도 내용상이 여부 미전수조사 — 필요 시 comm 비교로 후속 감사.
- S1(타입/시그니처 계약 강제)은 같은 파일(hanseonc_high.c)이라 이 작업 완료 후 순차 착수 권장(설계 문서 순서 준수).
- S2(배열 4095 캡)는 crownyc.c 담당 별도 세션, 이 작업과 무관.
크라우니코드: 이번 작업은 컴파일러 인프라(C) 버그수리로, 신규 .한선 로직 생성 없음(lookup/learn 대상 아님).