고정 식별자
| 축 | 식별자 |
|---|---|
| 아티팩트 schema | lispex.core-ir/v1 |
| 의미 프로필 | lispex-profile-1.5 |
| primitive registry | lispex.primitive-registry/v1 |
| 비용 모델 | lispex.core-ir-cost/v1 |
| producer 계열 | lispex-rust-core-ir/v1 |
| 아티팩트 해시 도메인 | lispex/core-ir-hash/v1 |
| registry 해시 도메인 | lispex/primitive-registry-hash/v1 |
registry는 실행 가능한 내장 프로시저 이름 205개에 안정적인 숫자 ID를 부여합니다. 정규화기가 내부에서 쓰는 프리미티브는 ID로 직접 가리킵니다. 소스에서 보이는 내장 프로시저는 그 ID로 초기화된 일반 mutable global 셀로 남습니다. 그래서 shadowing과 최상위 재정의의 현재 의미가 그대로 유지됩니다.
소스에서 해석된 의미까지
정확한 소스 바이트
→ reader
→ 위생적으로 정규화된 Core
→ binding·closure 해석
→ 정규 Core IR 바이트아티팩트는 줄여 쓴 문법을 걷어 내고 다음을 기록합니다.
- 이름 검색 대신 lexical·global 셀 식별자
- 고정·rest 매개변수,
let,letrec, 내부 정의, 실행 시 활성화되는 forwarding 정의 셀 - 전이적 캡처를 포함한 공유 mutable closure 캡처
- 소비자가 다시 추론하지 않아도 되는 일반 호출과 꼬리 호출
- 0개·1개·여러 값 문맥
- guard, 예외, 연속, dynamic-wind 제어 경계
- 정규 literal datum과 1부터 시작하는 소스 위치
- 명시적 input requirement
- 프리미티브 registry와 비용 모델 식별자
감사 projection은 lowering 전의 정규 Canonical Core 바이트를 정확히 재현하고 Rust 계보 안의 보존을 기록합니다. 다른 백엔드는 자체 구현 식별자와 실행 관측을 더합니다.
허용되는 인코딩은 하나입니다
아티팩트는 필드 순서가 고정된 정규 UTF-8 JSON입니다. 태그 배열, 음이 아닌 최소 10진수 표기, 정확한 Unicode 문자열, 마지막 LF 하나를 사용합니다. global, requirement, capture, binding, function은 결정적인 순서와 연속성 법칙을 따릅니다.
엄격한 리더는 중복·누락·예상 밖·순서가 바뀐 필드, 다른 숫자나 datum 표기, 알 수 없는 태그와 ID, 깨진 참조·캡처·꼬리 위치, 잘못된 소스 위치, 뒤따르는 바이트, 재인코딩 결과가 원본과 다른 아티팩트를 거부합니다.
상한은 테이블 읽기와 메모리 할당 전에 확인합니다.
| 항목 | 최대 |
|---|---|
| 입력 소스 | 4 MiB |
| Core IR 아티팩트 | 16 MiB |
| 표현식 node | 100,000 |
| binding | 100,000 |
| function | 100,000 |
| global | 100,000 |
| 구조 깊이 | 1,024 |
source_sha256은 정확한 소스 바이트의 기존 도메인 분리 식별자입니다.
core_ir_sha256은 전체 정규 아티팩트의 도메인 분리 식별자입니다. 소비자는
이 계약 필드를 소스와 아티팩트 식별에 직접 사용합니다.
네이티브 명령 보고서
core-ir build는 이름 있는 아티팩트를 쓸 때lispex.core-ir-build/v1을 출력합니다.--out -에서는 아티팩트 바이트만 출력합니다.core-ir validate는 엄격한 읽기와 재인코딩 뒤lispex.core-ir-validation/v1을 출력합니다.core-ir inspect는 식별자, 개수, global, requirement, 읽기 쉬운 normalized root를 담은lispex.core-ir-inspection/v1을 출력합니다.- 사용법 오류는 종료 2, 검증·소스 오류는 종료 1, 선언된 자원 한도에 걸리거나 입출력·게시에 실패하면 종료 3입니다.
이 세 아티팩트 명령은 네이티브가 소유합니다. npm과 공개 WebAssembly와 플레이그라운드는 기준 런타임의 소스 실행을 소유합니다.
Meaning Graph와의 공존
Core IR은 이름 해소와 closure 캡처와 꼬리 위치와 전체 정규 프로필을
소유합니다. 옵션 없는 lower와 diff-receipt는 공개된 이름 기반 v0 계약을
유지합니다. lower --graph-version v1은 검증한 Core IR을 해소형
csk.meaning-graph/v1으로 투영하고, eval-graph는 그래프 태그로 실행하며,
meaning-diff는 v1 Meaning 비교 보고서를 씁니다. 이 v1 명령은 네이티브가
소유합니다. 바우치는 컴파일 흐름 안에서 인증한 정확한 소스로부터 Core IR을
다시 유도합니다.
제품 역할
Core IR은 integrity-only 컴파일 아티팩트입니다. 정규 바이트와 reader와
검사 보고서와 해시는 해소된 의미와 바이트 무결성을 기록합니다. 바우치 흐름은
인증한 정확한 소스에서 Core IR을 다시 유도하고 수신자 정책과 요청 결속과 현재
실행 기록을 별도 단계로 더합니다.
다음으로
짧은 명령 흐름은 가이드에서, 리스펙스가 도는 곳들의 비교는 런타임 페이지에서 확인하세요.