상호 운용은 토파즈 내부에 또 다른 언어를 내장하는 방식이 아니며, 빌드 아티팩트와 제품 간의 경계를 의미합니다. 애플리케이션 로직은 검증 대상인 .tpz 모듈에 둡니다. 배포 환경에 적합한 제품을 선택하고, 주변 호스트 코드는 별도로 검토합니다.
경계 선택하기
| 필요 사항 | 선택 항목 | 경계를 넘어서는 요소 |
|---|---|---|
| 빌드 머신의 OS 및 아키텍처용 단일 실행 파일 | Rust 백엔드 | Cargo를 통해 빌드된 관리형 네이티브 제품 |
| Python 3.11 이상 환경용 제품 | Python 백엔드 | 생성된 program.py와 함께 제공되는 런타임 |
| 브라우저 또는 Worker 환경용 제품 | WASM과 플레이그라운드 | 선언된 ABI를 갖는 관리형 Web 아티팩트 |
| 별도의 Rust·Python·서비스 래퍼 | 호스트 통합 | 생성 제품과 별개로 관리하는 호스트 코드 |
| 애플리케이션 내부에서 실행되는 결정 규칙 | 리스펙스 규칙 실행하기 | 매니페스트·규칙·한도·잠금·타입 결과·소비자 증거 |
| 단일 리스펙스 평가 요청 | 리스펙스 평가기와 LIT | 정본 규칙·입력·자원 경계·결과·보고서 |
| 리스펙스의 토파즈 구동 검증 증거 | 리스펙스 평가기와 LIT | 내부 테스트·통합 증거이며 배포 백엔드가 아님 |
| Lena Code가 포함된 소스 변환 | Lena Code 상호 운용 | 별도로 유지 관리되는 변환 워크플로 |
결정 규칙을 작성하는 리스펙스는 그 자체로 독립된 언어이며, 위 표의 각 행은 리스펙스에 접근하는 서로 다른 방식을 나타냅니다. 설치된 평가기는 폐쇄형 제품 명령이며 토파즈 출력 타깃이 아닙니다. Lispex-in-Topaz를 약칭한 LIT는 해당 제품과 별개이며 배포 타깃 토파즈 백엔드가 아닙니다. Lena Code 역시 새로운 토파즈 문법이 아닙니다. 각 경계가 명시되어 있으므로 모두 탐색할 수 있도록 유지합니다.
토파즈로 남는 것
모듈·import·표현식·타입·패턴·기본 진단 항목은 그대로 토파즈에 속합니다. import rust, 인라인 Rust·Python·JavaScript 표현식, 암묵적 ABI, 자동 소유권 변환, 호스트 예외 자동 변환은 제공되지 않습니다. 생성된 소스 코드는 아티팩트일 뿐이며, 해당 토큰을 .tpz 파일에 직접 사용할 수 있음을 의미하지는 않습니다.
공유 관찰값만 검증하기
먼저 토파즈 패키지를 검사하고 실행합니다. 선택한 타깃을 빌드하세요. 그다음 동일한 선언 입력으로 관리형 제품을 실행합니다. 비교 타깃은 stdout, 종료 코드, 아티팩트 필드, 파일 결과 등 애플리케이션에 유의미한 관찰값입니다. 내부 객체 배치나 생성된 소스 형태는 비교하지 않습니다.
해당 결과는 해당 프로그램, 특정 입력, 해당 환경 및 선언된 관찰값에만 유효한 증거로 취급합니다. 컴파일러나 배포 타깃이 변경되면 생성 제품과 호스트 통합을 다시 검토합니다.
호스트 코드의 책임
생성 제품을 감싸는 래퍼는 외부 코드입니다. 의존성, 소유권, 오류, 기능 권한, 보안을 별도로 검토해야 합니다. 토파즈 모듈이나 표준 모듈을 임포트했다고 해서 파일 시스템, 네트워크, 프로세스, 환경 변수, 시계, 데이터베이스 권한이 자동으로 생성되지는 않습니다. 선택한 타깃이 기존 동작을 그대로 보존할 수 없다면 조용히 변경해서는 안 되며, 명확하게 거부해야 합니다.
Rust 백엔드, Python 백엔드, 리스펙스 평가기와 LIT으로 이어서 살펴보세요.