프로그램이 토파즈 규칙에 맞는지 검사하고 실제 사용할 환경에서 동작을 확인하세요. 컴파일러 결과가 다르면 확인하려는 내용에 맞춰 비교 계층을 고르세요.
먼저 토파즈 CLI를 설치하세요. 설치된 컴파일러와 지원 대상은 툴체인 상태에서 확인합니다.
파일 검사하고 실행하기
빈 작업 폴더를 만들고 다음 내용을 main.tpz로 저장하세요.
print("ready")그 폴더에서 다음 명령을 실행하세요.
topaz check main.tpz
topaz run main.tpz둘 다 종료 코드 0으로 끝납니다. 첫 명령은 다음 결과를 출력합니다.
main.tpz: types-ok (1 module)
main.tpz: resolve-ok (1 module)둘째 명령은 ready를 출력합니다. check는 문법·이름·타입과 선택한 프로필의 오류를 찾습니다. 프로필은 지원 기능과 실행 규칙을 정합니다. 애플리케이션에서 중요한 입력을 넣어 출력, 파일 변경, 종료 상태를 테스트하세요.
프로그램을 배포하려면 첫 애플리케이션을 따라 빌드하고 소스 프로젝트 밖에서 실행하세요. 대상의 요구 사항도 확인하세요. 지원하지 않는 연산이 있으면 제품 출력 전에 실패해야 합니다. 테스트 결과에는 정확한 입력, 툴체인, 환경, 프로필, 리소스 한도를 함께 남기세요.
필요한 정보 찾기
| 궁금한 점 | 확인할 곳 |
|---|---|
| 이 문법이나 타입은 무슨 뜻인가? | 언어 명세 SPEC이 문법, 타입, 동작을 정의 |
| 이 파일은 선택한 검사를 통과하는가? | 검사기가 오류를 보고하거나 파일을 수락 |
| 이 입력으로 실행하면 어떻게 되는가? | 사용할 환경에서 인터프리터나 생성 제품으로 실행 |
| 지원 기능을 어떻게 사용하는가? | 매뉴얼 예제가 입력, 명령, 결과를 연결 |
| 특정 테스트는 무엇을 확인했는가? | 기록된 입력, 환경, 한도와 실제 결과 확인 |
비교할 내용 고르기
컴파일러 관측은 한 번 컴파일한 소스와 컴파일러 기록을 저장합니다. 파일 구성과 검증은 툴체인 상태에서 설명합니다. compiler compare는 원본 소스를 다시 열지 않고 저장된 두 관측을 읽습니다.
| 계층 | 비교하는 내용 |
|---|---|
semantic | 소스 파일부터 진단과 결과 상태까지 단계별 컴파일러 기록. 처음 다른 단계에서 멈춤 |
generated-source | 생성 Rust의 정확한 바이트 |
provenance | 결과를 만든 컴파일러와 입력 |
native-binary | 같은 대상의 실행 파일 바이트. 관측 폴더 대신 실행 파일 경로를 받음 |
생성 소스와 출처 정보는 각각 비교합니다. 생성자 식별자가 바뀌면 출처 정보 비교 결과가 달라집니다. 의미 비교 결과는 따로 확인하고 애플리케이션 동작은 테스트를 실행해 비교하세요.
JSON에서 차이 읽기
위에서 main.tpz를 만든 폴더에서 이어 하세요. 관측에는 소스 코드가 들어 있으므로 소스와 같은 수준으로 보호하세요. 출력은 소스 폴더 밖의 아직 쓰지 않은 폴더에 두세요.
topaz compiler observe main.tpz --out-dir ../before-observation종료 코드 0으로 끝나고 ../before-observation을 만든 뒤 ../before-observation: compiler-observation-ok를 출력합니다. 이제 main.tpz에서 ready를 done으로 바꾸고 나머지는 그대로 두세요.
topaz compiler observe main.tpz --out-dir ../after-observation
topaz compiler compare --layer semantic ../before-observation ../after-observation관측 명령은 종료 코드 0으로 끝나고 ../after-observation: compiler-observation-ok를 출력합니다. 소스가 바뀌었으므로 비교 명령의 종료 코드는 1입니다. 다음은 출력 JSON에서 추린 필드입니다.
{
"equal": false,
"firstFailingPhase": "source-set",
"layer": "semantic"
}equal은 선택한 계층이 같은지 나타냅니다. firstFailingPhase는 처음 다른 단계이며 여기서는 입력 소스 집합입니다. 전체 출력의 mismatches에서 파일 경로와 세부 차이를 읽으세요. 의도하지 않은 변경이면 main.tpz의 문자열을 ready로 되돌리고 새 관측을 만드세요. 예상하지 못한 차이를 제보할 때는 원래 관측 폴더를 보존하세요.