피드로 돌아가기
Dev.toInfrastructure
원문 읽기
외부 Toolchain 없이 LEB128 바이트 직접 생성 통한 WebAssembly 컴파일러 구현
Day 6: my language now compiles to WebAssembly — and I emit the bytes by hand
AI 요약
Context
AI 생성 코드의 신뢰성 보장을 위한 trust layer 언어 LOOM의 다중 타겟 검증 필요성 대두. 기존 Python 및 JavaScript 백엔드와 달리 Low-level Stack Machine 구조인 WebAssembly를 통해 번역 후에도 신뢰성이 유지되는지 검증하려는 목적임.
Technical Solution
- 외부 Toolchain 및 유료 라이브러리 의존성을 배제한 Zero-dependency 바이트코드 직접 생성 방식 채택
- LEB128 인코딩 및 Type, Function, Memory, Global, Export, Code 섹션을 직접 정의한 WASM 바이너리 에미션 설계
- Bump Pointer와 Cons Cell Allocator 기반의 Linear-memory Heap 구조를 통한 Value Runtime 구현
- Tagged Cell [tag-id | payload] 구조의 Sum Type 설계 및 Match 구문을 통한 분기 처리 로직 구현
- 미지원 기능에 대해 잘못된 코드를 생성하는 대신 실행을 차단하는 Fail-closed 전략 적용
- FFI 호출 시 신뢰성 단절 문제를 해결하기 위해 비-AI 권한자가 컴포넌트를 서명하는 Vouch 메커니즘 도입
실천 포인트
1. 외부 Toolchain 의존성 제거를 위해 타겟 바이너리 명세(Spec)를 직접 구현하여 빌드 환경의 결정론적 제어 가능 여부 검토
2. 신뢰 체인 유지를 위해 FFI와 같은 불투명한 경계 지점에서 Attestation 기반의 권한 검증 로직 설계
3. 컴파일러 구현 시 지원하지 않는 기능에 대해 Fail-closed 원칙을 적용하여 런타임 오류보다 안전한 컴파일 타임 거부 전략 수립