Topazdocs
도구와 실행

인터프리터와 백엔드

해석기·생성 타겟과 한정된 Lispex 통합 아티팩트의 역할과 지원 범위.

해석기는 Topaz 프로그램의 기준 실행 경로입니다. Rust와 Python 백엔드는 공통 검사를 통과한 프로그램을 실행 가능한 산출물로 바꿉니다.

기본 규칙

run은 해석기를 사용합니다. Rust 백엔드에서 --backend native를 선택하면 먼저 검증된 전체 유닛 스칼라 경로를 시도합니다. 유닛 전체를 네이티브로 만들 수 없으면 애플리케이션의 박싱된 외곽 구조는 유지하면서 조건을 만족하는 최상위 함수를 네이티브 헬퍼로 바꿉니다. 정확한 Bytes·ByteBuffer 매개변수와 지역 변수는 검사형 길이·읽기·슬라이스·쓰기·채우기·복사·스냅샷 연산을 직접 사용할 수 있습니다. 검사기가 증명한 읽기 전용 레코드 매개변수의 직접 바이너리 필드는 한 번 투영해 같은 제한형 경로로 들어갑니다. 증명되지 않은 레코드, 중첩 필드, 캡처, 동적 호출, 제네릭, 기본 인자, 가변 인자, 동시성 또는 외부 모듈은 박싱된 경로에 남습니다. Python 백엔드는 program.py와 필요한 런타임 파일을 만듭니다.

사용 방법

개발 중에는 checkrun으로 결과를 확인하세요. 네이티브 파일이 필요하면 Rust, Python 배포가 필요하면 --target python을 선택합니다. 산출물은 해당 타겟의 일반 빌드·배포 절차로 다룰 수 있습니다.

네이티브 선택 결과를 확인하려면 검사형 native emit 또는 build--native-report-json <경로>를 추가하세요. 결정적인 topaz.native-lowering-report.v1 문서는 각 최상위 함수를 native, hybrid-native, boxed로 표시하고 박싱된 경로를 선택한 안정적인 이유를 기록합니다. 보고서를 써도 일반 출력과 생성 산출물은 바뀌지 않습니다.

바이너리 고속 경로는 박싱된 런타임과 같은 검사형 연산을 재사용합니다. 따라서 범위 오류, 고정 길이, 겹치는 자기 복사, 변경 전 인자 검사와 불변 스냅샷의 관찰 가능한 동작은 유지되며, 지원하지 않는 형식은 추측하지 않고 박싱된 경로로 돌아갑니다.

현재 지원

Topaz v5.9는 현재 매뉴얼에 적힌 주요 언어 기능과 표준 라이브러리를 해석기·Rust·Python에서 공통으로 다룹니다. 특정 기능이 대상에서 지원되지 않으면 다른 결과를 추측해 실행하지 않고 컴파일 단계에서 거부합니다.

결정적 Codec.deflateFixedCompress 기능은 해석기·생성 Rust·raw Web·Web Worker·플레이그라운드가 같은 구현을 사용합니다. 생성 Python에는 아직 정확한 구현이 없으므로, Python emitter가 산출물을 쓰기 전에 소스 위치가 포함된 오류를 냅니다.

Codec.zlibFixedCompress도 같은 실행 경로를 지원하며, 정확한 raw 바이트에 고정 RFC 1950 헤더와 Adler-32 트레일러를 붙입니다. 생성 Python은 같은 산출물 생성 전 경계에서 이 기능을 거절합니다.

결정적 Codec.reedSolomon255223Protect 기능도 같은 실행 경로에서 정확한 systematic RS(255,223) 코드워드를 만듭니다. 생성 Python은 같은 산출물 생성 전 경계에서 이를 거절합니다.

비암호학적 Hash.crc32 기능은 해석기·생성 Rust·생성 Python·raw Web·Web Worker·플레이그라운드가 공유합니다. 모든 경로가 같은 부호 없는 CRC-32/ISO-HDLC 정수를 반환합니다.

Lispex 통합 아티팩트

하나의 정본 Lispex-in-Topaz 소스를 해석기와 생성 Rust와 생성 Python과 Web 경로가 실행합니다. 이 구현은 자체 UTF-8 reader와 normalizer를 갖추고 어휘 상태와 수치 연산과 꼬리 호출과 제어 전달과 primitive dispatch에 하나의 명시적 machine을 사용합니다. 지원되는 모든 guest 호출은 공통 dispatcher를 지나며 호스트 apply와 eval과 control과 callback 우회는 지원 경로에 없습니다.

내부 통합 증거는 네 경로의 한정된 검사 표면을 기록합니다. LIT는 현재 primitive capability 205행 가운데 84행과 guest-calling 18행 가운데 6행을 지원하며 미지원 행은 명시적으로 실패합니다. 네 경로는 하나의 Topaz 작성 LIT 소스에서 나온 변형이지 독립 구현이 아니며 소스 독립성을 주장하지 않습니다. 통합 아티팩트는 설치 파일이나 언어 표면에 포함되지 않습니다.

제한 사항

백엔드가 여러 개라는 이유만으로 모든 프로그램의 완전한 동치를 보장하지는 않습니다. 동시 작업의 세부 실행 순서처럼 언어가 고정하지 않은 것은 백엔드마다 다를 수 있습니다. 바이너리 codec 지원도 대상별로 다르며 raw 고정 허프만 압축·고정 zlib·RS(255,223) 보호는 생성 Python의 명시적 예외입니다. 생성된 Rust와 Python 내부 구조는 공개 API로 보장하지 않습니다.

명령 예시

topaz run main.tpz
topaz emit main.tpz --out-dir rust-out
topaz build main.tpz --backend native --out-dir native-out
topaz build --root . --locked --backend native --native-report-json native-report.json --out-dir native-out
topaz build main.tpz --target python --out-dir python-out

관련 문서