프로그램이 실행되는 곳

하나의 프로그램에는 네 가지 실행 경로가 있고, 기본 경로는 준비가 필요 없으며, 나머지 경로는 절대 몰래 끼어들지 않는 명시적 선택입니다.

결과: 네 가지 실행 경로의 이름을 말할 수 있고, 지금까지 어떤 경로를 써 왔는지 설명할 수 있으며, 요청한 경로가 없을 때 무슨 일이 일어나는지 예측할 수 있습니다.

미리 알아야 할 것: .lspx 파일을 실행하는 방법입니다. 첫 프로그램 단원에서 다뤘습니다. 이 페이지를 읽기 위해 새로 설치할 것은 없습니다.

여러분은 이미 경로 하나를 쓰고 있었습니다

지금까지 이렇게 프로그램을 실행할 때마다

SH
lispex rule.lspx

트리 인터프리터를 쓰고 있었던 것입니다. 트리 인터프리터는 보통의 Lispex 제품에 내장되어 있고, Rust로 만들어졌으며, 소스를 직접 읽으며 평가합니다. 기본 경로이자 의미의 기준이고, 문제가 생겼을 때 돌아오는 복구 경로이기도 합니다. 다른 경로를 평생 안 써도 부족한 것은 없습니다. 이 경로 하나만으로 언어 전체를 쓸 수 있습니다.

네 가지 경로

같은 프로그램을 네 가지 방법으로 실행할 수 있습니다.

  1. 트리. 내장 기준 인터프리터입니다. 소스를 직접 읽고 평가합니다. 항상 존재하고 준비가 필요 없습니다.
  2. Rust VM. 역시 내장되어 있습니다. Native가 소스에서 만들어 검증한 정본 바이트코드 산출물을 실행합니다. --engine vm으로 직접 요청해야 씁니다.
  3. Topaz VM. macOS ARM64에서 따로 설치하는 정확한 Topaz 5.11 가상 머신입니다. Native 바이너리에는 내장되어 있지 않습니다. 별도로 설치하고, 필요한 명령에 정확한 제품 절대경로를 직접 넘깁니다.
  4. AOT. 프로그램을 미리 컴파일해 만든, 소스가 필요 없는 실행 파일입니다. 만들 때는 정확한 Topaz 컴파일러 설치본과 Rust 도구 디렉터리가 필요합니다. 만들어진 제품은 소스 트리 없이 실행됩니다.

경로는 같은 Lispex 언어를 구현하는 방법이지 방언이 아닙니다. 각 경로는 같은 의미를 보존하도록 설계되었습니다. 비교 명령은 하나의 정확한 요청에서 관찰이 일치하는지 확인합니다. 한 번의 일치는 모든 프로그램이 어디서나 똑같이 동작한다는 증명이 아닙니다.

두 가지 정직 규칙

경로를 믿을 수 있게 만드는 규칙은 두 개이고, 둘 다 한 문장으로 말할 수 있습니다.

실행 중에는 탐색하지 않습니다. 실행·목록·진단·비교 명령은 PATH, 체크아웃, 환경 변수, 네트워크를 뒤져 경로를 찾지 않습니다. 외부 경로는 정확한 위치를 직접 넘겼을 때만 참여합니다. 별도 명령인 routes fetch는 정확한 공식 동반 제품 하나를 가져올 수 있지만, 가져온 제품을 선택하거나 실행하지는 않습니다.

대체하지 않습니다. 요청한 경로가 실패하거나 없으면 실행은 오류와 함께 멈춥니다. 조용히 다른 경로로 바꿔치기하지 않습니다. Topaz VM이라고 적힌 결과는 Topaz VM이 만든 것이거나, 아예 만들어지지 않은 것입니다.

두 규칙이 지키는 것은 같습니다. 실행이 성공했다면, 어느 경로가 그 답을 만들었는지 정확히 알 수 있습니다.

경로들이 같은 답을 내는지 확인하기

정확한 Topaz VM을 설치하고 그 소스와 일치하는 AOT 제품까지 만든 뒤에는, Native에서 한 요청을 네 경로로 모두 실행하고 덮어쓰지 않는 진단 영수증 하나를 남길 수 있습니다.

SH
lispex compare-routes \
  --topaz-vm /absolute/tools/lispex-topaz-vm/product \
  --aot-product /absolute/products/rule-aot \
  --receipt route-comparison.json \
  rule.lspx

이 명령에는 두 외부 제품이 모두 필요합니다. 제품이 없거나 소스와 맞지 않으면 사용 가능한 경로만 골라 비교하지 않고 실패합니다. 영수증에는 네 경로의 관찰이 기록됩니다. 그 일치는 해당 소스·입력·제품 집합·자원 경계에 대한 근거일 뿐, 경로들이 모든 곳에서 동등하다는 증명은 아닙니다.

직접 해 보기

동료의 스크립트가 Topaz VM 경로를 요청하는데, 실행되는 컴퓨터에는 Topaz VM이 설치되어 있지 않다고 해 봅시다. 답을 열기 전에 무슨 일이 일어날지 예측해 보세요.

답 보기

실행은 없는 경로의 이름을 밝히는 오류와 함께 실패합니다. 트리 인터프리터로 대체하지 않으므로, 잘못된 이름표가 붙은 답이 나올 수 없습니다. 고치는 방법도 명시적입니다. 정확한 동반 제품을 설치하고 위치를 넘겨주거나, 그 컴퓨터에 실제로 있는 경로를 요청하도록 스크립트를 바꾸면 됩니다.

다음으로 넘어가도 되는 시점

네 가지 경로의 이름을 말할 수 있고, 준비 없이 실행되는 경로가 어느 것인지 알며, 두 가지 정직 규칙을 자기 말로 설명할 수 있으면 됩니다.

실제 작업에서 경로를 고르고 싶다면 실행 표면 선택하기로 이어 가세요. 동반 제품을 설치하고 싶다면 선택형 경로 설치하기를 따라가세요.