토파즈 5.14.0이 현재 제품입니다. 현재 언어 모드는
topaz-5.14입니다.
다음 명령으로 설치 상태를 확인합니다.
topaz version --verbose
이 명령은 컴파일러, 언어 모드, 런타임과 Rust 백엔드 식별자를 보여 줍니다. 설치 문제를 보고할 때 출력 전체를 함께 제공하세요.
사용할 수 있는 제품 경로
- CLI는 파일이나 패키지의 서식을 맞추고 검사하고 테스트하고 실행하고 생성 소스를 내보내며 제품을 빌드합니다.
- 네이티브 빌드는 플랫폼 전용 실행 파일을 만듭니다.
- Python 빌드는
program.py와topaz_py_rt.py를 만들며 실행할 때 Python 3.11 이상이 필요합니다. - Raw Web과 Web Worker는 기존 JavaScript 호스트용 WASM 패키지를 만듭니다.
- Web 애플리케이션은 완전한 관리형 정적 브라우저 제품을 만듭니다.
- 제한형 HTTP 서비스는 리스너, 요청, 대기열, 마감 시간, 로그와 종료 설정이 유한한 관리형 네이티브 HTTP/1.1 프로세스를 만듭니다.
- 패키지 명령은 매니페스트, 잠금 파일, 경로 의존성과 검증된 로컬 벤더 의존성을 사용합니다.
- 브라우저 플레이그라운드는 네이티브 CLI 설치 없이 제한된 검사와 인터프리터 실행을 제공합니다.
컴파일러 관찰 자료 살펴보기
설치된 CLI는 현재 검사 컴파일러 파이프라인을 생성 Rust 소스 단계까지 하나의 정규 관리형 번들로 기록할 수 있습니다.
topaz compiler observe --root my-app --locked --out-dir compiler-observation
topaz compiler validate compiler-observation
출력은 my-app 바깥에 두세요. 패키지 안에 두면 다음 관찰에서 관리형 출력
디렉터리 자체가 패키지 디렉터리 사실로 보일 수 있습니다. 번들에는 정확한 소스
바이트와 소스 집합, 원시·레이아웃 토큰, AST, 이름 해석, 구조화된 타입,
호출, 클로저 캡처, 소스 비의존 하강, 런타임 연산, 생성 Rust, 진단, 요청,
응답과 출처 정보가 들어갑니다. 소스 패키지와 같은 수준으로 보호하세요.
validate는 읽기 전용입니다. 다시 컴파일하거나 원래 소스 트리를 읽지 않고
정규 인코딩, 스키마, 순서, 상호 참조, 완전성, 크기와 해시를 검사합니다. 출처
정보는 생성자를 Rust Stage 0으로 명시합니다. 관찰 번들을 만들었다고 해서
컴파일러 단계가 이미 토파즈로 작성되었다는 뜻은 아닙니다.
명시적인 프리뷰 경로는 Rust Stage 0가 호스팅하는 현재의 토파즈 작성 렉서, 레이아웃 구현, 파서, 논리적 import 폐쇄, 이름 해석기와 정적 검사기를 실행합니다.
topaz compiler preview --root my-app --locked --out-dir typed-preview
topaz compiler validate typed-preview
이 번들은 타입 검사 단계에서 끝나며 engine: topaz-front-end-preview,
생성·결과 단계 0/0, 기본 엔진 Rust Stage 0를 기록합니다. 토파즈 프런트엔드는
현재 문법과 정본 AST, 패키지·마운트 의존성·표준 모듈의 논리적 폐쇄, 정확한
스코프·선언·참조·export, 정적 타입·호출·캡처와 구조화 진단을 다룹니다. 소스
사실, AST·Typed 노드와 깊이, 셸 교환 크기는 제한됩니다. 대상 코드를 하강·생성·
빌드·실행하지 않으며 Stage 1이나 자기 호스팅 컴파일러라는 주장도 아닙니다.
프리뷰가 실패하면 대상 프런트엔드 작업을 Rust로 다시 시도하지 않고 멈춥니다.
일반 컴파일러 명령은 계속 Rust Stage 0를 사용합니다.
설치 제품은 생성된 C1을 명시적인 Stage 1 Compiler Preview로도 제공합니다.
topaz compiler preview main.tpz --producer stage1 --terminal rust-source --out-dir stage1-observation
topaz compiler validate stage1-observation
C1은 토파즈로 작성한 하강기와 Rust 생성기가 만든 버전 있는 교환 및 소스 없는
비공개 IR을 소비합니다. 대상 Rust 파서·리졸버·검사기·하강기·생성기·
인터프리터를 링크하거나 실패 시 다시 호출하지 않고 일반 패키지를 컴파일합니다.
관리형 번들은 생성·결과 단계 1/1, 컴파일러 소스 집합, 생성 소스, 런타임
템플릿 식별자와 targetCompilerFallback: false를 기록합니다. Stage 2 고정점을
주장하지 않습니다.
비교 경계는 의미 관찰, 진단, 생성 소스, 생성 제품 동작과 출처를 서로 나눠 판정합니다. 선언된 다중 모듈·검사 거부 사례에서 Stage 0와 C1이 일치하고, C1의 반복 생성 결과는 바이트 단위로 안정적입니다. Stage 0와 Stage 1의 Rust 소스는 서로 달라도 각 생성자 안에서 결정적인 별도 결과로 기록하며, 거짓 바이트 동일성 주장을 만들지 않습니다. 잘못된 생성자 식별자나 손상된 관리형 C1 제품은 대상을 Stage 0로 다시 시도하지 않고 즉시 거부합니다.
설치 제품만으로도 저장소를 복제하지 않고 정확히 비교할 수 있습니다.
topaz compiler observe main.tpz --terminal rust-source --out-dir rust-observation
topaz compiler preview main.tpz --producer stage1 --terminal rust-source --out-dir stage1-observation
topaz compiler validate rust-observation
topaz compiler validate stage1-observation
topaz compiler compare --layer semantic rust-observation stage1-observation
두 관리형 관측 번들을 만든 뒤에는 검증과 비교가 원래 대상 소스를 다시 읽지
않습니다. Stage 1이 요청을 거부하거나 고장 나면 대체 관측 번들을 쓰지 않고
실패하며, 별도의 compiler observe 복구 명령을 안내할 뿐 자동 실행하지
않습니다. Rust Stage 0가 필요할 때는 일반 observe, check, 빌드 명령을
명시적으로 사용하세요.
컴파일러가 생성하는 Rust는 생성자·빌드 출처를 정본 소스 바이트 밖에 기록합니다. 이 분리 덕분에 이후 컴파일러 단계가 누가 만들었는지 지우지 않고도 생성 소스를 바이트 단위로 비교할 수 있습니다. 설치형 Stage 1 명령과 Rust Stage 0 기본값은 그대로입니다.
이제 새 C1 실행이 R1을 만들고, 고정된 빌드가 그 정확한 바이트를 별도 C2 프로그램 이미지에 묶습니다. 정본 컴파일러 소스가 같더라도 C1과 C2는 서로 독립된 manifest와 내장 이미지를 가집니다. 이 빌드 경계만으로 C2를 실행하거나 고정점을 달성했다고 주장하지 않습니다.
독립적으로 내장된 C2 이미지는 다음처럼 명시적으로 실행합니다.
topaz compiler preview app/main.tpz \
--producer stage2 \
--terminal rust-source \
--out-dir stage2-observation
entry 경로 없이 --self-source를 쓰면 설치 제품에 내장된 컴파일러 소스
세트를 컴파일합니다. 이 명령은 Stage 2 제품 manifest를 쓰며 C1이나 Rust
대상 front end로 재시도하지 않습니다.
고정점 court는 두 주장을 분리합니다. C1과 C2의 해석된 컴파일러 프로그램 의미 및 정상 입력 하나와 진단 입력 하나의 정본 관찰을 비교한 뒤, 새 R1/R2를 아무 정규화 없이 원시 바이트로 비교합니다. 두 계층 모두 같습니다. C1/C2 이미지와 호출 출처는 서로 다른 것이 정상이며, 네이티브 실행 파일 바이트는 이 주장에 포함하지 않습니다. 이는 명시적 Preview 컴파일러가 해당 경계에서 안정됐음을 뜻할 뿐, Stage 2를 기본값으로 만들거나 가능한 모든 컴파일러 동작이 옳음을 증명하지는 않습니다.
제한된 실패 canary는 의미 투영, 생성 소스 식별자, C2 출처, 생성자, seed, runtime 경계를 한 번에 하나씩 바꿉니다. 소스 fact가 없거나 현재 Preview 경계 밖 언어 모드를 선택해도 완성 출력 디렉터리를 확정하기 전에 중단합니다. 어떤 실패도 C1이나 Rust 대상 front end로 재시도하지 않습니다.
정확한 로컬 npm 패키지는 대상 소스와 저장소 경로가 없는 상태에서도 일반
Stage 2와 self-source 형식을 실행합니다. self-source 번들에는
stage2-fixed-point.json이 들어 있으며 의미·생성 소스 상태는 pass,
네이티브 바이너리 재현성은 not-run입니다. 오프라인 Stage 0 복구 소스는
C1/C2 매니페스트, 고정점 기록, 스키마, 런타임, 고정된 도구 모음 정보를
포함합니다. 재구성한 Stage 0는 자동 폴백이 아니라 별도로 명시해 쓰는
엔진으로 남습니다.
답하려는 질문에 맞는 경계를 골라 두 개의 완전한 관찰 번들을 비교할 수 있습니다.
topaz compiler compare --layer semantic observation-a observation-b
topaz compiler compare --layer generated-source observation-a observation-b
topaz compiler compare --layer provenance observation-a observation-b
topaz compiler compare --layer native-binary program-a program-b
명령은 크기가 제한된 정규 JSON 레코드 하나를 출력하며 선택한 계층이 다르면 실패 상태로 끝납니다. 의미 비교는 처음 달라진 컴파일러 단계에서 멈춥니다. 생성 소스와 출처 정보는 서로 독립적이므로 생성자 식별자가 달라졌다는 사실만으로 언어 의미 불일치가 되지는 않습니다.
Rust Stage 0 기준점 복구
자기 호스팅 자격을 갖춘 릴리스에는 일반 플랫폼 바이너리 다섯 개와 별도로 복구 매니페스트와 결정적 소스 아카이브가 들어갑니다. 아카이브는 Rust 컴파일러 소스, 잠금 파일, 벤더 의존성과 라이선스, 런타임 템플릿, 프로토콜 스키마, 컴파일러 작업 부하와 재구성 도구를 고정합니다. 임베드된 토파즈 작성 컴파일러 파일도 독립적으로 검증되는 하나의 소스 집합으로 기록합니다. 같은 입력으로 두 번 만들면 아카이브 바이트가 일치합니다.
복구 세트는 Rust 도구 모음 자체를 포함하지 않습니다. 고정된 Rust 도구 모음이 이미 설치되어 있어야 하며, 이후 아카이브 안의 벤더 디렉터리만으로 오프라인 빌드합니다. 이는 독립적인 복구·출처 확인 경로이지 일반 설치 경로가 아니며, 컴파일러 단계가 이미 토파즈로 작성되었다는 주장도 아닙니다.
부트스트랩에 적합한 컴파일러 소스 검사
Bootstrap Profile은 컴파일러 커널 소스를 위해 현재 언어의 사용 범위를 기계 판독 가능하게 제한합니다. 새 문법이나 방언을 추가하지 않습니다. 잠긴 결정적 패키지가 주변 호스트 권한, extern 모듈, 부동소수점, 동시성, 리소스, 테스트 API와 그 밖의 호스트 의존 연산을 사용하지 않을 때만 통과합니다.
topaz check --profile bootstrap --locked --root compiler-kernel
사람용 진단에는 안정적인 bootstrap/* 규칙이 표시됩니다. --format json을
사용하면 stderr에는 기계 판독 가능한 프로필 진단이, stdout에는 요약 하나가
나옵니다. 로컬 값은 철자가 아니라 해석된 식별자로 판정하므로 사용자가 만든
함수의 이름이 print여도 호스트 연산이 되지 않습니다. 반대로 금지된 호스트
연산은 이름을 바꾸거나 별칭을 붙여도 숨길 수 없습니다.
선택에 필요한 제한
모든 대상은 파싱, 모듈 해석과 정적 검사를 공유하지만 호스트에 의존하는 연산을 모든 곳에서 사용할 수 있는 것은 아닙니다. 연산을 보존할 수 없는 대상은 제품을 쓰기 전에 이를 거부해야 합니다. 특히 생성 Python은 현재 fixed-Huffman DEFLATE, 고정 zlib과 RS(255,223) 도우미를 지원하지 않으며 생성 단계에서 명시적으로 실패합니다. 바이너리 미디어 작업의 대상을 고르기 전에 백엔드 페이지를 확인하세요.
HTTP 제품은 의도적으로 제한됩니다. TLS, HTTP/2, WebSocket, 아웃바운드 네트워크 접근, 주변 환경 권한, 공유 가변 토파즈 상태나 범용 Web 프레임워크를 추가하지 않습니다.
Web 애플리케이션 호스트는 선언한 브라우저 권한만 노출합니다. Raw Web과 Worker 제품은 기존 JavaScript 호스트가 필요합니다. 플레이그라운드 실행은 소스 실험이지 배포 증거가 아닙니다.
동시 작업의 실행 순서는 정하지 않습니다. 특정 인터리빙에 의존하면 안 됩니다.
LIT는 제한된 Lispex 도그푸딩·통합 경계로 유지됩니다. 출하되는 토파즈 백엔드가 아니며 전체 언어 동등성을 확립하지 않습니다.
권장 작업 순서
fmt --check, check, test로 시작하세요. 명령형 애플리케이션은 run, Web
애플리케이션이나 HTTP 서비스는 dev로 확인합니다. 실제 배포할 대상만 빌드하고
관리되는 디렉터리 전체를 복사하세요.