빌드와 배포

툴체인 상태

현재 사용 중인 토파즈 제품 식별자, 선택 가능한 배포 아티팩트 및 선택 시 유의해야 할 제약 사항을 정리합니다.

토파즈 5.19.0이 현재 릴리스 버전입니다. 현재 언어 모드는 topaz-5.19입니다.

다음 명령으로 설치 상태를 확인하세요.

BASH
topaz version --verbose

이 명령은 컴파일러, 언어 모드, 런타임, Rust 백엔드 식별자를 출력합니다. 설치 관련 문제를 제보할 때는 출력 결과 전체를 그대로 첨부하세요.

컴파일러 선택하기

설치된 Stage 2 컴파일러는 지원 대상인 현재 모드 경로의 기본값입니다. Rust Stage 0 컴파일러는 비교, 복구, 이전 언어 모드 및 지정된 호환 경로에서 명시적으로 선택할 수 있습니다.

BASH
topaz check app/main.tpz
topaz check app/main.tpz --compiler self
topaz test --root app --locked --compiler self
topaz emit app/main.tpz --compiler self
topaz emit app/main.tpz --target python --compiler self --out-dir python-source
topaz build app/main.tpz --compiler self --out-dir app-product
topaz build app/main.tpz --target web --compiler self --out-dir web-product
topaz dev --root web-app --locked --compiler self
topaz fmt app/main.tpz --compiler self
topaz lsp --compiler self
topaz doc --root app --locked --compiler self --out-dir api-docs
topaz compiler observe app/main.tpz --compiler self --out-dir observation
topaz check app/main.tpz --compiler rust
topaz compiler status --json

지원 타깃인 현재 모드 경로에서 --compiler 옵션을 생략하면 self를 선택합니다. 이 경로는 설치된 셀프호스팅 컴파일러 이미지를 사용하며, 실패하더라도 Rust로 다시 시도하지 않습니다. 이 선택을 적용하는 경로는 parse, dump-ast, check, 모든 현재 프로필, export 보고서, run, test, bench, 잠긴 패키지, compiler observe, 검사된 boxed Rust 생성, 네이티브 빌드, Python 소스 및 배포 아티팩트, raw Web, worker, Web 애플리케이션, HTTP 서비스, 허용된 Web·서비스 dev, 코드 포맷팅, LSP, 패키지 문서 생성입니다. self 코드 포맷팅과 문서 생성은 선택한 구문·의미 아티팩트를 받아 사용한 뒤, Rust 경로와 동일한 결정론적 출력기와 표현 스키마를 함께 사용합니다. self LSP는 열려 있는 문서 집합에 대해 검사된 해당 아티팩트를 생성하여 캐시하며, 선언된 모든 메서드에 대해 Rust 컴파일러 단계를 호출하지 않고 응답합니다. 단일 LSP 프로세스는 컴파일러 선택을 프로세스 종료 시까지 유지하므로, 설정을 변경한 후에는 에디터 세션을 재시작하세요. self 타깃 어댑터도 검사된 동일한 정보만 받아 사용합니다. 아티팩트에는 topaz-stage2 출처가 기록되며 Rust 타깃 프런트엔드는 호출하지 않습니다. 이전 언어 모드, 검사 생략, 네이티브 특화 기능 및 목록에 표시된 Rust 전용 명령은 선택자를 생략할 경우 컴파일 작업 수행 전에 Rust 호환 경로로 결정됩니다. 지원하지 않는 명시적 self 선택은 소스를 읽거나 출력을 생성하기 전에 중단됩니다. 이때 Rust 복구 명령은 대신 실행되지 않고 안내 문구만 제공합니다.

컴파일러를 사용하는 명령에 --verbose 옵션을 추가하면 확정된 선택이 명시적 선택인지, 현재 기본값인지, 또는 호환 선택인지 표시합니다.

CLI는 실제 언어 모드를 파악할 때까지 컴파일러 선택 의도를 유지합니다. 패키지 명령에서는 먼저 루트 topaz.toml만 읽어 검증합니다. 의존성 해석, 잠금 파일 검사, 소스 로드, 캐시 및 출력 작업은 그 이후에 시작됩니다. 이전 언어 모드를 지정한 패키지는 선택자를 생략하거나 rust를 직접 지정할 경우 Rust를 사용합니다. self를 직접 지정하면 이후 작업을 진행하기 전에 오류로 중단됩니다. 이러한 실행 순서 덕분에 현재 모드의 기본 선택과 명시된 Rust 호환 선택을 서로 다른 결정으로 구분하여 관찰할 수 있습니다.

설치된 프로세스는 변경 불가능한 셀프호스팅 컴파일러 이미지를 한 번만 검증하고 디코딩한 뒤, 이렇게 준비된 프로그램을 self 컴파일러와 LSP 작업 스레드가 공유하여 사용합니다. 캐시 키에는 이미지, 소스 집합, 스키마, 런타임 템플릿, 툴체인 식별자가 포함됩니다. 하나라도 일치하지 않으면 self 작업이 중단됩니다. 타깃 소스, 진단 정보, 생성 소스 및 관리 아티팩트는 요청 시마다 다시 계산하며 준비된 컴파일러 상태를 재사용하지 않습니다. 이 준비 과정은 문서에 규정된 콜드 스타트, LSP 및 메모리 임계값 내에서 실행됩니다.

compiler status --json은 머신이 읽을 수 있는 기준 정보를 출력합니다. 설치된 생성자, 프로그램 이미지, 소스 집합 식별자, 지원 경로 및 거부 경로, 경로별 생략 선택, 기본값, 호환·복구 선택, 무폴백 정책이 여기에 포함됩니다. 관리 아티팩트에는 선택이 명시적이었는지, 현재 기본값이었는지, 아니면 호환 선택이었는지 여부도 함께 기록됩니다.

설치 제품의 복구 경계

npm으로 설치한 제품도 패키지 검사·선택 테스트·관리형 Python 패키징·소스 미포함 실행에서 동일한 기본값을 사용합니다. 동일한 관리 출력 경로에 Rust와 self로 재빌드하면 다른 컴파일러의 결과를 재사용하지 않고 출처를 원자적으로 교체합니다.

동일한 설치 기본값으로 2모듈 학습 애플리케이션을 검사하고 선택 테스트를 실행한 후 네이티브 릴리스 아티팩트로 패키징하면 소스 코드를 제거한 상태에서도 실행할 수 있습니다. 운영 현황 장부는 해결된 제품 문제만 종결 처리하며, 보다 광범위한 컴파일러·통합 검사는 공개 릴리스 후보에서 수행합니다.

설치된 Stage 1 및 Stage 2 경로는 새 소스에서 각각 새로운 관측 데이터를 생성하여 검증할 수 있습니다. 이어서 기본 self 경로가 새 네이티브 아티팩트를 생성하고 소스 코드 없이 실행합니다. Rust Stage 0 복구는 설치 기본값이 아닌, 별도로 고정된 재구성 경로입니다.

npm으로 설치된 결과물은 두 컴파일러 선택지를 단일 실행 파일에 내장합니다. 저장소를 checkout할 필요가 없습니다. 어떤 컴파일러로 빌드했든 토파즈 소스를 제거한 후에도 결과물을 실행할 수 있습니다. 설치된 셀프호스팅 컴파일러 이미지가 없거나 손상된 경우 self 요청은 즉시 실패합니다. Rust 컴파일 결과를 차용하거나 자동으로 재시도하지 않습니다. 복구를 직접 선택할 때만 원래 명령을 --compiler rust로 다시 실행하세요. Rust는 언제든지 별도로 사용할 수 있습니다. 공개된 Stage 0 복구 키트는 자동 폴백이 아닌, 수동으로 실행하는 오프라인 재구성 경로입니다.

설치된 self 컴파일러는 버전이 명시된 완전한 현재 모드 컴파일 아티팩트를 직접 생성합니다. 여기에는 순서가 고정된 모듈, 토큰 및 AST, 이름 해석 및 export, 타입 진단 및 프로필 진단, 로어링 결과와 런타임 요구 사항, 생성된 Rust 코드, 정확한 호출 출처 및 결과 출처 정보가 포함됩니다. 호스트 어댑터는 해당 정보를 검증하고 디코딩할 뿐, 누락된 컴파일러 결정을 자체적으로 재구성하지 않습니다. 허용된 명령 경로에서는 공유 패키지 호스트와 런타임이 검증된 동일한 아티팩트를 받아 사용합니다.

self의 Rust 코드 생성은 고정점 IR 테이블을 그대로 보존하고 일반 애플리케이션 호스트 파사드만 추가합니다. 이 테이블은 타깃 전용 공유 런타임이 실행합니다. 해당 런타임에는 컴파일러 이미지가 포함되지 않으며, Rust 파서·리졸버·검사기·로어러·생성기를 실행할 수도 없습니다. 네이티브 아티팩트 매니페스트는 선택한 컴파일러와 생성자, 컴파일러 소스 집합 및 타깃 소스 집합, 컴파일 아티팩트, 생성 소스 해시, targetCompilerFallback: false를 기록합니다.

사용할 수 있는 제품 경로

  • CLI는 파일 및 패키지의 서식을 맞추고, 검사하고, 테스트하고, 실행하고, 생성 소스를 내보내고, 아티팩트를 빌드합니다.
  • 네이티브 빌드는 해당 플랫폼에서 독자적으로 동작하는 실행 파일을 생성합니다.
  • Python 빌드는 program.pytopaz_py_rt.py를 생성합니다. 실행하려면 Python 3.11 이상 버전이 필요합니다.
  • Raw Web 및 Web Worker는 기존 JavaScript 호스트가 사용할 WASM 패키지를 생성합니다.
  • Web 애플리케이션은 완전한 관리형 정적 브라우저 아티팩트를 생성합니다.
  • HTTP 서비스는 관리형 네이티브 HTTP/1.1 프로세스를 생성합니다. 리스너, 요청, 큐, 타임아웃, 로그, 종료 설정이 모두 제한된되어 있습니다.
  • 패키지 명령은 매니페스트, 잠금 파일, 경로 의존성, 검사된 로컬 벤더 의존성을 활용합니다.
  • topaz lispex embed run은 설치 바이너리에 고정된 평가기로 제한된된 리스펙스 요청 하나를 실행합니다. topaz lispex embed info --json은 구성 요소, 프로필, 계약, 런타임, 무폴백 식별자를 출력합니다.
  • 브라우저 플레이그라운드는 네이티브 CLI를 설치하지 않고도 제한된 범위의 검사와 인터프리터 실행을 체험할 수 있도록 지원합니다.

한정된 리스펙스 평가기 실행하기

해당 기능은 지정된 일반 파일 및 경로 4개를 인자로 받습니다. 출력 디렉터리는 미리 생성되어 있으면 안 됩니다.

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

평가가 완료되면 result.lpxvaluereport.json이 생성됩니다. 결정론적 의미 오류나 리소스 임계값 초과의 경우 report.json만 남깁니다. 요청 거부, 계약 실패, 엔진 오류 발생 시에는 출력 디렉터리를 생성하지 않습니다. 커밋되지 않은 결과와 트랜스크립트 바이트는 경계 외부로 노출되지 않습니다.

평가기·프로필·런타임 정책·승인 권한은 설치된 아티팩트에 고정됩니다. 평가기나 프로필 선택기, 사이드카 다운로드, 콜백, 임포트, 폴백 메커니즘은 지원하지 않습니다. 이 보고서는 토파즈 제품 기록용 문서이며 이식 가능한 리스펙스 제공자 영수증이 아닙니다. 두 경계 간 차이점은 리스펙스 평가기와 LIT에서 확인하세요.

잠긴 std.lispex 제한된 애플리케이션 API는 인터프리터 및 승인된 네이티브 릴리스 타깃에 공개됩니다. 상세한 매니페스트, 잠금, 빌드, 증명 및 재실행 워크플로는 리스펙스 규칙 실행하기를 참조하세요. generated-python, raw-web, worker-web, managed-web, http-service, no-capability, mcp-empty-component-set 경로는 출력이나 실행 전에 이 기능을 거부합니다. 폴백은 지원되지 않습니다.

컴파일러 관찰 자료 살펴보기

설치된 컴파일러 관측 결과 캡처하기

설치된 CLI는 현재 검사 컴파일러 파이프라인의 상태를 기록할 수 있습니다. 생성된 Rust 소스 단계까지의 내역을 단일 정본 관리형 번들로 묶어 제공합니다.

BASH
topaz compiler observe --root my-app --locked --out-dir compiler-observation
topaz compiler validate compiler-observation

출력 경로는 my-app 외부에 지정하세요. 패키지 내부에 둘 경우, 다음 관찰 수행 시 관리형 출력 디렉터리 자체가 패키지 구성 정보로 오인될 수 있습니다. 번들에는 정확한 소스 바이트 및 소스 집합, 원시 토큰과 레이아웃 토큰, AST, 이름 해석, 구조화된 타입, 호출, 클로저 캡처, 소스 독립적 로어링, 런타임 연산, 생성된 Rust 코드, 진단, 요청, 응답, 출처 정보가 포함됩니다. 해당 번들은 소스 패키지와 동일한 보안 수준으로 보호하세요.

관측 결과 번들 검증하기

validate 명령은 읽기 전용입니다. 재컴파일을 수행하지 않으며 원본 소스 트리를 참조하지도 않습니다. 정본 인코딩, 스키마, 순서, 상호 참조, 완전성, 크기, 해시값만 검증합니다. 출처 정보에는 생성자가 Rust Stage 0으로 명시됩니다. 이는 이 관찰 경로의 구성 방식을 설명할 뿐, 다른 컴파일러 단계가 어떤 언어로 구현되었는지를 의미하지는 않습니다.

명시적 프런트엔드 프리뷰 사용하기

명시적인 프리뷰 경로는 토파즈로 작성된 현재 렉서, 레이아웃 구현체, 파서, 논리적 import 클로저, 이름 리졸버, 정적 검사기를 실행합니다. 이들 컴포넌트를 구동하는 호스트는 Rust Stage 0입니다.

BASH
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로 다시 시도하지 않습니다. 일반 컴파일러 명령은 설치된 경로별 기본값을 따릅니다.

Stage 1 컴파일러 프리뷰 실행하기

설치된 아티팩트는 명시적인 Stage 1 Compiler Preview 기능도 제공합니다.

BASH
topaz compiler preview main.tpz --producer stage1 --terminal rust-source --out-dir stage1-observation
topaz compiler validate stage1-observation

Stage 1 Preview는 토파즈로 작성된 로어러와 Rust 생성기의 결과를 받아 처리합니다. 출력 결과는 버전이 명시된 교환 포맷 및 소스가 배제된 비공개 IR 형태입니다. Preview는 이 데이터만으로 일반 패키지를 컴파일합니다. 이때 타깃 Rust 파서, 리졸버, 검사기, 로어러, 생성기, 인터프리터를 링크하지 않으며, 작업 실패 시 이들을 재호출하지도 않습니다. 관리형 번들에는 생성·결과 단계 1/1, 컴파일러 소스 집합, 생성 소스, 런타임 템플릿 식별자, targetCompilerFallback: false가 기록됩니다. 단, Stage 2 고정점 달성을 보증하지는 않습니다.

비교 경계 파악하기

비교 경계는 의미론적 관찰, 진단 정보, 생성 소스, 생성 아티팩트의 동작, 출처 정보를 각각 독립적으로 검증합니다. 명시된 다중 모듈 사례 및 검사 거부 사례에서 Rust Stage 0와 Stage 1 Preview의 실행 결과가 일치합니다. Stage 1은 동일한 타깃을 반복 생성해도 바이너리 결과가 동일하게 유지됩니다. Stage 0와 Stage 1이 생성한 Rust 소스는 서로 차이가 있습니다. 그러나 각 생성자 내부 동작은 결정론적이므로 두 결과를 별개로 기록하며, 바이트가 일치한다는 잘못된 사실을 명시하지 않습니다. 잘못된 생성자 식별자나 손상된 관리형 Stage 1 아티팩트는 즉시 거부됩니다. 타깃을 Stage 0로 재시도하지 않습니다.

저장소 복제 없이 비교하기

설치된 아티팩트만으로 저장소를 클론하지 않고 정확한 비교 검증을 수행할 수 있습니다.

BASH
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 구동이 필요한 경우 일반 check 또는 빌드 명령 수행 시 --compiler rust 옵션을 직접 지정하세요.

생성된 Rust 출처 분리하기

컴파일러가 생성한 Rust 코드는 생성자 및 빌드 출처 정보를 캐노니컬 소스 바이트 외부에 기록합니다. 이처럼 출처 데이터를 분리함으로써 식별 정보를 유지한 채 이후 컴파일러 단계에서 생성 소스를 바이트 단위로 비교할 수 있습니다. 설치형 Stage 1 명령은 명시적인 생성자 Preview 기능이며 일반 경로의 기본값과 분리되어 구동됩니다.

임베디드 Stage 2 이미지 빌드하고 실행하기

Stage 1을 새로 실행하면 컴파일러 소스가 출력됩니다. 고정 빌드 절차는 해당 바이트를 수정 없이 별도의 설치형 Stage 2 컴파일러 이미지로 빌드합니다. 두 세대는 캐노니컬 컴파일러 소스가 동일하더라도 매니페스트 및 내장 이미지를 각각 독립적으로 관리합니다. 이 빌드 경계만으로 Stage 2 실행을 완료했다거나 고정점에 도달했다고 간주하지 않습니다.

독립적으로 내장된 Stage 2 이미지는 다음과 같이 명시적으로 실행합니다.

BASH
topaz compiler preview app/main.tpz \
  --producer stage2 \
  --terminal rust-source \
  --out-dir stage2-observation

엔트리 경로 없이 --self-source 옵션을 지정하면 설치 아티팩트에 포함된 컴파일러 소스 세트를 컴파일합니다. 이 명령은 Stage 2 아티팩트 매니페스트를 사용하며, 다른 컴파일러 생성자나 Rust 타깃 프런트엔드로 재시도하지 않습니다.

고정점 검사하기

고정점 검사는 두 가지 관점을 구분하여 수행합니다. 먼저 연속된 두 셀프호스팅 세대가 해석한 컴파일러 프로그램의 의미론적 결과를 비교합니다. 이때 정상 입력 1건과 진단 입력 1건에 대한 캐노니컬 관찰 데이터도 함께 검사합니다. 이어서 두 세대가 새로 생성한 컴파일러 소스를 정본화 과정 없이 원시 바이트 단위로 비교합니다. 두 계층 모두 결과가 동일하게 도출됩니다. 이미지 및 호출 출처 데이터가 상이하더라도 이는 정상 동작입니다. 네이티브 실행 바이너리의 바이트 데이터는 이 비교 대상에 포함되지 않습니다. 이러한 결과는 명시적 Preview 컴파일러가 해당 경계 조건에서 안정화되었음을 나타냅니다. 일반 Stage 2 기본값은 설치된 지원 계약에 따라 별도로 책정됩니다. 어떠한 결과도 모든 컴파일러 동작의 타당성을 보증하는 절대적 증거가 될 수는 없습니다.

제한된 실패 카나리아 수행하기

제한된 실패 카나리아 검사는 의미 투영, 생성 소스 식별자, Stage 2 출처, 생성자, 시드, 런타임 경계를 한 번에 하나씩 변경하여 검증합니다. 소스 팩트가 존재하지 않거나 현재 Preview 경계 범위를 벗어난 언어 모드를 선택한 경우에도 완성된 출력 디렉터리를 확정하기 전에 프로세스를 중단합니다. 임의의 단계에서 오류가 발생하더라도 타 컴파일러 생성자 또는 Rust 타깃 프런트엔드로 재시도하지 않습니다.

로컬 npm 패키지는 타깃 소스 및 저장소 경로가 없어도 일반 Stage 2 포맷과 self-source 포맷을 정상 실행합니다. self-source 번들 내부에는 stage2-fixed-point.json 파일이 포함됩니다. 해당 파일에서 의미론적 상태 및 생성 소스 상태는 pass로 표시되며 네이티브 바이너리 재현성은 not-run 상태로 기록됩니다. 오프라인 Stage 0 복구 소스에는 컴파일러 세대 매니페스트, 고정점 기록, 스키마, 런타임, 고정된 툴체인 정보가 저장됩니다. 재구성된 Stage 0는 자동 폴백 타깃이 아니며, 사용 시마다 명시적으로 지정해야 하는 엔진으로 구동됩니다.

비교 경계 선택하기

두 개의 완전한 관찰 번들을 비교할 때는 검증하고자 하는 목적에 맞는 계층 경계를 선택하세요.

BASH
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 기준점 복구

셀프호스팅 자격을 갖춘 릴리스에는 일반 플랫폼 바이너리 5개와 함께 복구 매니페스트 및 결정론적 소스 아카이브가 별도로 포함됩니다. 이 아카이브는 Rust 컴파일러 소스, 잠금 파일, 벤더 의존성 패키지 및 라이선스, 런타임 템플릿, 프로토콜 스키마, 컴파일러 워크로드, 재구성 도구를 고정된 상태로 보관합니다. 내장된 토파즈 구현 컴파일러 파일 역시 독립적으로 검증 가능한 단일 소스 집합으로 기록됩니다. 동일한 입력값으로 아카이브를 재생성하면 바이너리 바이트 단위까지 일치합니다.

복구 세트에는 Rust 툴체인 자체가 포함되어 있지 않습니다. 고정된 Rust 툴체인을 먼저 설치해야 합니다. 그다음부터는 아카이브 내부의 벤더 디렉터리만 활용하여 오프라인 환경에서 빌드를 진행할 수 있습니다. 이 경로는 복구 작업 및 출처 검증을 별도로 수행하기 위해 마련된 것입니다. 일반적인 설치 경로가 아니며 Rust 복구 체인이 셀프호스팅됨을 의미하지는 않습니다.

부트스트랩에 적합한 컴파일러 소스 검사

Bootstrap Profile은 컴파일러 커널 소스가 사용할 수 있는 언어적 구문 범위를 머신이 읽을 수 있는 형태로 제한합니다. 새로운 문법이나 다이얼렉트를 추가하지는 않습니다. 잠긴 결정론적 패키지는 외부 호스트 권한, extern 모듈, 부동소수점 연산, 동시성, 리소스 관리, 테스트 API 및 기타 호스트 의존적 연산을 사용하지 않는 조건에서만 검증을 통과합니다.

BASH
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 호스트 환경이 필요합니다. 브라우저 플레이그라운드에서의 실행은 소스 코드를 시뮬레이션하는 용도이며, 실제 배포 가능성을 보증하지는 않습니다.

동시 실행 작업의 수행 순서는 보장되지 않습니다. 특정 인터리빙 순서에 의존하여 구현하지 마세요.

설치된 평가기는 별도의 리스펙스 백엔드나 --target lispex 옵션이 아니며, 언어 전반에 대한 완벽한 동등성을 보장하지 않습니다. LIT(Lispex-in-Topaz)는 본 아티팩트와 구별되는 동일 계보의 내부 테스트 및 통합 경계입니다.

권장 작업 순서

fmt --check, check, test 순으로 검사를 시작하세요. 명령형 애플리케이션은 run으로, Web 애플리케이션 또는 HTTP 서비스는 dev 명령으로 확인하세요. 실제 배포 타깃만 빌드하고, 배포 시에는 관리 타깃 디렉터리 전체를 복사하세요.

관련 문서