규칙과 입력 준비하기
다음을 refund-window.lspx로 저장하세요.
(define (decide days)
(if (<= days 30) 'refund 'review))
(decide input)입력 datum 하나는 request.lspx로 저장합니다.
14input은 파일이나 환경 변수를 몰래 읽는 기능이 아닙니다. Core IR과
바이트코드에 요구사항으로 기록되고, 아래 명령에서 따로 전달되는
명시적인 값입니다.
Core IR을 만들고 바이트코드로 내리기
lispex core-ir build \
--source refund-window.lspx \
--out refund-window.lpxir
lispex bytecode build \
--ir refund-window.lpxir \
--out refund-window.lpxbc첫 명령은 규칙을 실행하지 않고 이름, 셀, 캡처, 꼬리 위치, 소스 위치를
해석합니다. 둘째 명령은 그 정규 Core IR을 lispex.bytecode/v1로 내리고,
결과를 검증한 뒤 새 바이너리 파일로 씁니다. 두 명령 모두 기존 파일을
덮어쓰지 않습니다.
실행 전에 살펴보거나 검증하기
lispex bytecode inspect --bytecode refund-window.lpxbc
lispex bytecode validate --bytecode refund-window.lpxbcinspect는 식별자, 상한이 있는 테이블 수, 입력 요구사항, opcode 수,
루트 소스 위치, source-map 범위를 보여줍니다. validate는 자동화에 맞는
더 간결한 경계입니다. 엄격히 읽고 검증하고 다시 인코딩해, 단 하나의
정규 바이트 표현만 받습니다.
둘 다 무결성 검사일 뿐입니다. 제작자를 인증하거나 규칙을 승인하거나 소비자의 요청을 결속하거나 결정을 실행하지 않습니다.
검증 뒤에만 실행하기
lispex bytecode run \
--bytecode refund-window.lpxbc \
--input request.lspxrefund
네이티브 CLI는 VM 상태를 만들기 전에 아티팩트 전체를 검증합니다. 잘못된
바이트는 입력 사용, 출력, primitive 호출, 첫 VM step보다 먼저
거부됩니다. 아티팩트가 input을 요구하면 --input을 빼선 안 되고,
요구하지 않는 아티팩트에 입력을 억지로 넣어도 실패합니다.
표준입력 하나로 바이트코드와 입력을 동시에 읽을 수는 없습니다.
lispex bytecode run --bytecode - --input -이 경우에는 둘 중 하나를 이름 있는 파일로 바꾸세요.
같은 산출물을 Topaz VM에서 실행하기
Rust VM은 내장되어 있고 계속 기본값입니다. macOS ARM64에서는 승인된 Topaz 5.11 설치 제품을 명시적으로 고를 수 있습니다.
lispex bytecode run \
--engine topaz \
--topaz-vm /absolute/path/to/aarch64-apple-darwin \
--bytecode refund-window.lpxbc \
--input request.lspx제품 루트는 별도로 설치한 lispex-topaz-vm/v1의 절대 경로여야 합니다.
리스펙스는 manifest, Topaz artifact, 실행 파일, wrapper, 관리 파일,
compiler·소스 계보, 대상, 자원 계약, fallback 0을 검사합니다. PATH,
옆 저장소, 네트워크, 예전 설치본을 찾지 않습니다. 제품이 없거나
바뀌었거나 시간 제한을 넘거나 잘못된 결과를 내면 Topaz 실패가 그대로
보이며 Rust로 다시 실행하지 않습니다.
소스에서 VM 직접 선택하기
외부 입력이 필요 없는 소스라면 짧은 경로를 쓸 수 있습니다.
lispex run --backend rust --engine vm rule.lspx기본 엔진은 계속 tree입니다.
lispex run --backend rust --engine tree rule.lspx명시적으로 vm을 골랐는데 실패하면 tree로 다시 시도하지 않습니다.
--engine은 Rust 백엔드에서만 쓸 수 있으며 LIL, LIT 또는 외부 백엔드
registry와 함께 쓰면 사용법 오류입니다.
두 Rust 엔진 비교하기
lispex compare-engines \
--receipt tree-vm.json \
rule.lspx덮어쓰지 않는 보고서에는 정확한 소스·Core IR·바이트코드 식별자, 두 의미 관측, 불일치 축, VM 자원 측정값, fallback 횟수가 들어갑니다. 회귀를 찾는 데 유용하지만 두 엔진은 Rust 값과 primitive leaf를 공유합니다. 일치 결과를 독립 구현의 증거나 동등성 증명으로 해석하면 안 됩니다.
두 바이트코드 VM을 직접 비교하려면 다음 명령을 사용합니다.
lispex compare-vms \
--topaz-vm /absolute/path/to/aarch64-apple-darwin \
--receipt rust-topaz.json \
rule.lspx바이트코드는 한 번만 만들고 Rust와 Topaz를 각각 실행합니다. 상태, 출력, 값, 경고, 진단, 자원 관측, 완료한 루트를 비교합니다. Topaz 소스는 구조가 분리되어 있지만 실행 파일은 Topaz Rust Stage 0으로 만들었습니다. 일치는 유용한 차등 근거일 뿐 동등성 증명이나 Vouch 권한이 아닙니다.
일치하는 AOT 제품까지 만들었다면 네 네이티브 경로를 함께 비교합니다.
lispex compare-routes \
--topaz-vm /absolute/path/to/aarch64-apple-darwin \
--aot-product /absolute/path/to/refund-window-aot \
--receipt four-routes.json \
--input request.lspx \
refund-window.lspx이 명령은 한 번의 프런트엔드 결과와 한 검증 바이트코드를 tree, Rust VM, Topaz VM, AOT에 사용합니다. AOT 제품의 소스·Core IR·바이트코드가 다르면 어느 경로도 실행하기 전에 거부합니다. 덮어쓰지 않는 영수증은 의미 축과 비교 가능한 자원 축을 따로 기록하고 모든 계보·fallback을 드러내며 Vouch 권한은 갖지 않습니다.
제품별 지원 고르기
| 제품 | 바이트코드 도구 | Rust VM | Topaz VM / AOT / 네 경로 법정 |
|---|---|---|---|
| macOS ARM64 네이티브 | 지원 | 내장 | 정확한 별도 제품과 명시적 통합 비교 |
| 그 밖의 지원 네이티브 | 지원 | 내장 | 미지원 |
| npm CLI·패키지 | 미지원 | 미지원 | 네이티브 전용이라고 명시적으로 거부 |
| 공개 WASM | 미지원 | 미지원 | 미지원 |
| 플레이그라운드 | 미지원 | 미지원 | 미지원 |
npm, 공개 WASM, 플레이그라운드는 기존의 소스 tree 실행과 정확한 이미지 기능을 그대로 제공합니다. JavaScript 바이트코드 reader, verifier, VM을 따로 흉내 내지 않습니다.
바이트코드를 권한으로 올리지 않고 컴파일 Vouch 고르기
정규 바이트코드 해시는 정확한 바이트를 식별합니다. 검증은 제한된 구조가
허용됨을 확인하고 로컬 VM 실행은 그 네이티브 실행에서 본 결과만 세웁니다.
일반 .lpxbc 파일은 여전히 봉투를 발행·인증하거나 신뢰 정책을 만족하거나
소스·입력을 고르거나 gate를 grant할 수 없습니다.
기존 바우치 검사에 VM 일치까지 의도적으로 더하려면 네이티브에서 소스 결속 전용 컨테이너를 만듭니다.
lispex vouch compiled build \
--source refund-window.lspx \
--out refund-window.lpxvca
lispex vouch compiled validate \
--artifact refund-window.lpxvca \
--source refund-window.lspxvouch verify --reexecute --compiled-artifact refund-window.lpxvca와
vouch gate --compiled-artifact refund-window.lpxvca도 소비자가 밖에서
제공한 정확한 소스·입력, trust policy, 인증, 현재 tree/Meaning 일치를 모두
요구합니다. 네이티브는 검증된 VM을 실행하기 전에 그 소스에서 Core IR과
바이트코드를 다시 유도합니다. 컨테이너·해시·검사 출력·VM 결과는 살아 있는
권한 전이를 건너뛰거나 되살릴 수 없습니다.
다음으로
정확한 바이너리·검증 계약은 레퍼런스에서 보고, 컴파일 전 해석된 의미를 살피려면 Core IR 가이드로 돌아가세요.