인터롭

리스펙스 평가기와 LIT

명령줄에서 단일 리스펙스 규칙을 평가하는 방법과 LIT가 토파즈 백엔드가 아닌 시험 증거인 이유를 설명합니다.

토파즈와 리스펙스의 연동 지점은 두 가지이며, 둘 사이에 연관성은 없습니다. 첫 번째는 단일 리스펙스 규칙을 평가하고 결과를 지정 디렉터리에 출력하는 명령입니다. 이 과정에는 패키지나 빌드가 필요하지 않습니다. 두 번째는 Lispex-in-Topaz의 약어인 LIT입니다. 이는 토파즈로 구현한 리스펙스 인터프리터로, 배포용 제품이 아닌 검증용 테스트 증거로 유지됩니다. 두 연동 방식 모두 토파즈의 백엔드가 아니며, 이러한 연동의 존재가 토파즈와 리스펙스를 동일한 언어로 만드는 것은 아닙니다.

리스펙스란

리스펙스는 의사결정 규칙을 위한 작은 리스프이며 스킴에 가깝게 설계되었습니다. 입력 하나에 결정론적인 답 하나가 나옵니다. 같은 규칙과 같은 입력이면 결과가 늘 같습니다.

요청은 이름 붙은 필드의 목록으로 들어오고, 거부를 포함한 모든 답도 목록으로 나옵니다. 토파즈와는 별개의 언어이며 자체 문서와 자체 버전 체계를 가집니다. 자세한 내용은 리스펙스 사이트에 있습니다.

목적에 맞는 경로 고르기

  • 개발 중인 애플리케이션 내에 리스펙스 규칙을 포함하려면 리스펙스 규칙 실행하기 문서를 참고하세요.
  • 별도의 패키지 구성 없이 단일 규칙만 평가하려면 topaz lispex embed run 명령을 사용하세요.
  • 토파즈 애플리케이션을 배포할 때는 지원 대상 출력 타깃 중 하나를 선택하세요.
  • LIT는 통합 검증 증거로 기능합니다. 대규모 리스펙스 프로그램을 활용해 토파즈 툴체인의 여러 구성 요소를 동시에 검증하는 용도로 사용됩니다.
  • 리스펙스 제품을 사용하는 경우 관련 제품 문서의 안내를 따르세요. 본 문서는 토파즈 관점에서 관찰되는 경계 조건만 다룹니다.

제한된된 요청 하나 실행하기

기본 리스펙스 규칙 파일, 정본 lispex.embed-value/v1 입력 파일, 닫힌 자원 제한 설정 파일을 준비한 후 결과를 저장할 새 출력 디렉터리를 지정합니다.

BASH
topaz lispex embed run \
  --source rule.lspx \
  --input value.lpxvalue \
  --limits limits.json \
  --output lispex-result

자원 제한 정의 문서는 아래 스키마 구성을 유지해야 합니다. 설정값은 낮출 수 있으나 필드를 추가하거나 삭제할 수는 없습니다.

JSON
{
  "schema": "topaz.lispex-embed-limits/v1",
  "prepare": {
    "raw_source_bytes": 4096,
    "prepare_work": 1000000,
    "logical_allocation": 1000000,
    "syntax_depth": 64
  },
  "evaluate": {
    "canonical_input_bytes": 4096,
    "eval_work": 1000000,
    "logical_allocation": 1000000,
    "semantic_frames": 1000,
    "traversal_depth": 256,
    "output_bytes": 1000000,
    "diagnostic_bytes": 1000000,
    "transcript_bytes": 1000000,
    "transcript_events": 100,
    "result_bytes": 1000000
  }
}

실행이 성공하면 lispex-result 디렉터리에 result.lpxvalue 파일과 report.json 파일이 생성됩니다. 결정론적 시맨틱 오류나 자원 한계 초과가 발생한 경우에는 리포트 파일만 생성됩니다. 요청이 거부되거나 엔진 내부 오류가 발생하는 경우 출력 디렉터리가 생성되지 않습니다. 고정 구성 요소 및 폴백 미적용 정책은 다음 명령으로 점검할 수 있습니다.

BASH
topaz lispex embed info --json

이 명령은 평가기·프로필·런타임·경로 선택기를 포함하지 않습니다. 구성 요소를 탐색하거나 다운로드하지 않으며, 토파즈로 콜백을 수행하거나 LIT로 폴백하지 않습니다. 생성되는 보고서는 토파즈 제품의 실행 및 승인 이력을 기록하며, 리스펙스 형식의 이식 가능한 영수증 코어에는 해당하지 않습니다.

LIT 검증 결과가 뜻하는 것

LIT의 단일 정본 소스 계보를 직접 실행, 생성된 Rust, 생성된 Python, Web 실행 경로에서 각각 검사합니다. 이 검증용 프로그램은 검사 단계, 코드 생성, 런타임 동작, 호스트 경계 등에서 발생하는 결함을 감지하는 역할을 합니다.

LIT 검사를 통과했다는 것은 대상 프로그램이 해당 테스트에서 선택된 기능과 실행 경로 범위 내에서 정상 동작했음을 의미합니다. 지원되지 않는 기능은 명시적인 오류를 반환하며 종료됩니다. 4개 실행 경로는 모두 동일한 소스 계보에서 파생되므로, 실행 결과의 일치 여부는 회귀 결함을 포착하는 검사 증거로 활용됩니다. 그러나 이는 서로 독립적인 4개의 구현체에서 확보한 증거는 아니며, 두 언어가 전체 영역에서 동일함을 증명하는 것도 아닙니다.

제품 경계

평가기는 토파즈 바이너리에 포함되어 설치되지만, 명세에 기술된 구성 요소, 프로필, 파일 입력, 자원 제한, 출력 계약만을 처리합니다. 이는 --target lispex 옵션이나 범용 리스펙스 툴체인을 의미하지 않으며, 전체 언어 차원의 동등성을 제공하는 것도 아닙니다.

LIT는 토파즈 설치 구성 요소에 포함되지 않으며 출력 타깃으로도 제공되지 않습니다. --target lit 경로는 존재하지 않으며, 이 검사 과정이 모든 리스펙스 프로그램을 지원 타깃용 토파즈 애플리케이션으로 변환하는 것은 아닙니다.

토파즈 애플리케이션에서 리스펙스 사용하기

패키지 설정을 통해 명명된 리스펙스 규칙을 특정 제한 프로필, 소스, 자원 제한, 내장 구성 요소와 바인딩할 수 있습니다. 락 파일 기반 빌드는 각 규칙의 준비 작업을 단 1회 수행한 뒤 std.lispexstd.lispex.rules를 생성합니다. 토파즈 코드는 원시 Wasm 핸들 대신 불투명한 규칙·값 타입을 참조합니다. 준비된 바이트를 여러 입력에 재사용하더라도, 게스트 메모리와 전역 상태, 계량기, 트랜스크립트 버퍼는 평가 실행마다 새로 생성됩니다. 개별 호출 한도 외에 애플리케이션 전역 한도와 취소 및 정리 규칙이 적용됩니다.

타입이 지정된 결과만 필요한 경우 evaluate를 사용하세요. 이식 가능한 실행 기록이 함께 요구되는 결정론적 결과 산출에는 evaluateWithEvidence를 사용하세요. consumerArtifactBytes는 저장용 실행 기록을 바이트 형태로 내보내며, consumerArtifactFromBytes는 검증된 바이트 데이터만 다시 수용합니다. inspectConsumerArtifactverifyConsumerArtifact는 안정된 식별성을 검증하며, portableCoreBytes는 코어 데이터가 존재할 때 정교한 리스펙스 규격의 바이트를 추출합니다. freshReplay는 기록에 지정된 한도를 적용해 동일한 규칙과 입력을 새 게스트 인스턴스에서 평가하며, 전체 기록이 동일할 때만 성공합니다.

코어 및 외부 기록은 컨슈머가 생성한 미인증 데이터입니다. 발행자 정보, 공급자 승인, 서명 권한, 구성 요소 승인, 외부 작업 권한 등을 포함하지 않습니다. 로컬 사전 거부, 취소, 큐 거부, 안전 한도 선점, 엔진 결함 발생 시에는 이식 가능한 코어가 생성되지 않습니다.

이 애플리케이션 API는 인터프리터 환경 및 현재 구현된 생성형 네이티브 실행 경로에서 사용할 수 있습니다. 유지보수용 2모듈 패키지는 일반 npm 설치를 진행하고 소스 코드와 컴파일러를 제거한 후 실행 파일만 이관한 상태에서도, 로컬 네이티브 경로를 통한 다중 입력 평가, 한도 거부, 타임아웃 복구, 증거 검증 및 신규 인스턴스 재실행을 정상 완료했습니다. Python, Web, HTTP 서비스, 권한 없는 호스트, 빈 구성 요소가 지정된 MCP 경로는 출력 이전에 요청을 거부합니다. 로드맵에서는 단일 정식 공개 후보를 바탕으로 지원 타깃인 모든 네이티브 타깃에서 동일 경로를 검증하는 작업을 다음 제품 게이트 단계로 추적합니다. 전체 프로필은 별도의 구성 요소, 프로필, 계약, 타깃 검증, 승인 절차를 따르며 기존 제한 평가기의 범위를 확장하지 않습니다.

매니페스트, 규칙, 제한 설정, 락, 빌드, 실행, 증거 및 재실행으로 이어지는 전체 워크플로는 리스펙스 규칙 실행하기 문서를 따르세요. 본 안내 문서가 LIT를 백엔드로 변환하거나 제한 프로필의 적용 범위를 확장하지는 않습니다.

관련 문서