← 목록
기타 2026-07-09 7KB 읽기 8분

컴파일러 표면정합 + 앨리어싱 잔여 봉쇄 + 통합 재배포 (ISA729 울트라감사 수리3)

개요

docs/isa729-감사-20260709/ 946슬롯 적대적 감사(최종판정.md 등)가 지목한 결함 중 수리1(VM 4군 치명버그)·수리2(표준lib 설정() 오용 338곳)는 사전에 완료되어 있었다. 이번 세션은 수리3: 컴파일러 표면정합(enum 충돌·키워드 오배선·도달불가 48건) + 729+ 확장영역 앨리어싱 잔여 표면 전수 봉쇄 + 버전 11.0.5 통합 재배포를 수행했다.

무엇을 했는지

1. OP_PUSH_ZERO enum 충돌 제거 (hanseonc_high.c)

OP_PUSH_ZERO=10이 실제 VM opcode 10(OVER)과 충돌 — 모든 함수의 암시적/빈 반환마다 buf_emit_op(OP_PUSH_ZERO)가 실제로는 OVER를 실행해 스택에 여분 0-큐브 2개가 영구 축적되던 결함. buf_emit_data(0) 직접 emit으로 교체하고 죽은 중복 enum 8개(OP_PUSH_NONE/ONE, OP_ROT/OVER/PICK, OP_INC/DEC 중복) 제거. --trace 라이브 재현으로 스택오염 해소 확인 (수정 전: stack[3]:[0,0,0] → 수정 후: stack[1]:[0]).

2. 오배선 키워드 재배선 10종

키워드이전(오배선)이후(정정)근거
빼버려 (RPN)op3 POPop17 NIP--trace로 스택동작 재현 확인
로그아웃op507 FIREWALL_RULEop502 AUTH_LOGOUTISA729_IMPL.md 대조
블록검증op516 MAIL_SEND제거(BC_VERIFY 미구현)op516은 "메일전송"으로 재부여
뮤텍스잠금op548 MUTEX_UNLOCKop547 MUTEX실제 lock/unlock 스왑
뮤텍스해제op549 CLASSop548 MUTEX_UNLOCK완전 무관 opcode였음
큐브생성op751 HASH_HASop624 CUBE_NEWarity도 2→0로 정합
타입검사op482 NARROWop632 TYPECHECK482는 "축소"로 재부여
삼진인코딩arity 1arity 2실제 2-pop(값,배열주소)
유닛op650 ENUM_DATA(arity0)컴파일타임 상수 buf_emit_data(0)ADT_UNIT 자체가 미구현 opcode, 650은 "열거형데이터"로 재부여
합매칭op653 PRODUCT_T(고정arity2)제거 → "튜플생성"/"곱타입생성" 가변인자 특수파싱으로 대체힙손상 위험(고정arity vs 가변n)

3. 도달불가 48건 중 37건 신규 키워드 부여

48건 중 11건(729·808·809·816-819·846-849)은 exec_opcode 자체가 미구현된 예약 공백이라 제외. 나머지 37건(ZIP·오디오7종·SPAWN·KEY_POLL·FLUSH·SQL 10종· SYSTEM_CAP·HDL 10종·TYPEOF·CAST·WIDEN·MAIL_SEND·INTERPOLATE·PAULI)에 crownyc.c 각 case의 실측 pop() 수 기준으로 아리티를 정해 키워드 부여. 위험 opcode(SPAWN=코루틴 pc대입, SYSTEM_CAP=popen 쉘실행)는 주석으로 위험 표기.

4. 729+ 확장영역 앨리어싱 잔여 표면 전수 봉쇄

  • hanseonc_high.c 단일 지점 수정: buf_emit_op() 자체에 op>=729 안전가드
내장(빌트인테이블·__내장__·__sys__(WebSocket 780-783)·HDL 회로방언 (880-889) 전 경로가 이 함수 하나를 거치므로 일괄 안전화).
  • crownyc.c grep 전수 확인 후 개별 수정: ASM 어셈블러(compile_file(),
레이블 위치 cpos 회계까지 동기화), EMIT_AUTO(335)/EMIT_OP(337) 메타출력 opcode, ISA_ENCODE(720, 단일고정폭이라 안전값 A 반환으로 대체), EMIT_3LAYER(438, A-cube 3중고정폭 불변식 보존을 위해 동일하게 안전 실패 반환).
  • 라이브 재현: ASM AUD_PLAY(881) 매크로 경유 실행 확인 — 수정 전이었다면
표준 6-trit 인코딩으로 직접 방출돼 다른 opcode로 앨리어싱됐을 자리.
  • hanseonc_rpn.c는 이미 자체 안전가드 보유(수정 불필요, 확인만).
  • 잔여: crownyc_big.c/crownyc_jitmain.c(실험적 변형, Makefile 미참조, 정본
아님)에도 동일 패턴 존재하나 이번 수리 범위 밖(후속 과제로 남김).

5. 회귀

  • tests/run_all.sh: 99/107 (기준선 동일, 회귀 0). 진행 중 "22_함수형ADT.한선"
1건 일시 회귀(유닛() 제거 여파) → 컴파일타임 상수 emit으로 즉시 수정, 재확인 통과.
  • pkg make test: 11/13 (기준선 동일 2건 무관 사전결함 유지).
  • 퍼징 200케이스: crash+hang 3.5%(기준 4.0% 대비 개선/무악화).
  • RPN 3 7 더해→10, "빼내"(POP)/"빼버려"(NIP) 신규 정정 라이브 검증 통과.

6. 통합 재배포

  • --version 11.0.2→11.0.5, 정본(crownyc/hanseonc_high/hanseonc_rpn)
임시빌드→mv 교체, pkg/ 소스 동기화(cp)+재빌드(mv), pkg make test 재확인.
  • CHANGELOG.md(pkg) v11.0.5 항목 추가(수리1+2+3 통합 서술, v11.0.4까지 이어짐).
  • npm: npm publish --registry http://localhost:4873npm view ... versions
실증([..., '11.0.4', '11.0.5']).
  • 설치 패키지: 리눅스 정적(x86_64-linux-musl-gcc -static)·윈도우 3종
(x86_64-w64-mingw32-gcc)·macOS 페이로드 재빌드 → crowny-hanseon-dist/{staging,linux} 교체(mv) → .ccp 3종 재생성(ccp a)+추출검증(ccp x)+.sha256crowny-hansunc/public/dist/ 재배포(구버전은 .bak-2026-07-09-이전으로 백업) → curl 4파일 전부 200 확인 → macOS .command(ccp sx) 재생성 → 스크래치(scratchpad/e2e_install_test)에서 curl 다운로드→sha256 대조→ 설치 실행→설치본 --version=11.0.5 확인, E2E 완주.
  • tools/isa729_spec_gen.sh(perl) 재실행: TOTAL_IMPLEMENTED=924,
MISSING_NAME=0 — 스펙 불변 확인(opcode 집합 자체는 안 바뀜, 컴파일러 키워드 표면만 정합).

관련 파일

  • /Users/ef/CrownyOS/crownyc/hanseonc_high.c — enum 정리, buf_emit_op 안전가드,
키워드 재배선/신규부여 37+10건, 유닛/튜플생성/곱타입생성 특수파싱
  • /Users/ef/CrownyOS/crownyc/hanseonc_rpn.c — 빼내/빼버려 재배선
  • /Users/ef/CrownyOS/crownyc/crownyc.c — --version 11.0.5, ASM 어셈블러
cpos+2큐브 안전방출, EMIT_AUTO/EMIT_OP/ISA_ENCODE/EMIT_3LAYER 안전가드
  • /Users/ef/CrownyOS/crownyc/libs/opcode안전인코딩.한선 — 729+ 안전인코딩
규칙 시뮬레이션/검증 도구(신규, 크라우니코드 학습DB 등록)
  • /Users/ef/CrownyOS/crownyc/pkg/CHANGELOG.md — v11.0.5 항목
  • /Users/ef/CrownyOS/crownyc/pkg/package.json — version 11.0.5
  • /Users/ef/crowny-hanseon-dist/staging/{linux-x64,windows-x86,macos-arm64}/,
/Users/ef/crowny-hanseon-dist/linux/bin/
  • /Users/ef/crowny-hansunc/public/dist/한선씨설치-{linux-x64,windows-x86,macos-arm64}.ccp(.sha256),
한선씨설치-macos-arm64.command(.sha256)

잔여 이슈

  1. crownyc_big.c/crownyc_jitmain.c(비정본 실험 변형)에도 opcode_to_cube 직접
호출 잔여 — Makefile 미참조라 이번 범위에서 제외, 별도 감사 권고.
  1. tests/17_모듈테스트_도움.한선(헬퍼파일, 출력 없음) — run_all.sh의 blanket
와일드카드가 헬퍼 모듈까지 개별 실행해 생기는 기존 하네스 아티팩트, 이번 세션 이전부터의 기지 실패(8건 중 무명 1건)로 재확인 — 진짜 회귀 아님.
  1. 484 UNIFY("타입이름"으로 오명명)·485 SUBTYPE("타입단언"으로 오명명) 등
480-485 구간에 추가 comment-실제opcode 불일치 발견 — 이번 "10종" 목록 밖이라 미수정, 후속 감사 권고.
  1. crowny-hanseon-dist/설치/ 디렉토리는 별도(구버전 상태) 미러로 보이며 이번
배포 대상(crowny-hansunc/public/dist/)에서 제외 — 필요시 별도 동기화 검토.