이 페이지를 마치면 같은 프로그램을 실행하는 엔진 넷인 네 가지 경로의 이름을 말할 수 있고, 지금까지 어떤 경로를 써 왔는지 설명할 수 있으며, 요청한 경로가 없을 때 무슨 일이 일어나는지 예측할 수 있습니다.
미리 알아야 할 것은 .lspx 파일을 실행하는 방법입니다.
첫 프로그램 단원에서 다뤘고, 이 페이지를 읽는 데
새로 설치할 것은 없습니다.
여러분은 이미 경로 하나를 쓰고 있었습니다
지금까지 이렇게 프로그램을 실행할 때마다
lispex rule.lspx여러분은 tree 경로를 쓰고 있었던 것입니다. 이 내장 인터프리터는 Rust로 작성되었으며 소스를 직접 읽어 평가합니다. 일반적인 리스펙스 제품에 기본 경로로 탑재되어 있습니다. 언어의 의미를 정하는 기준이며 전체 언어 프로파일을 구현합니다.
네 가지 경로
브라우저 플레이그라운드와 npm 패키지와 내려받는 네이티브 프로그램은 리스펙스 제품입니다. 경로는 제품 안에서 프로그램을 구동하는 엔진입니다. 플레이그라운드와 npm 패키지는 tree 경로를 사용하고 네이티브는 네 경로를 모두 사용할 수 있습니다.
같은 프로그램을 네 가지 엔진에서 실행할 수 있습니다.
-
tree. 소스를 그대로 읽어서 평가하는 내장 인터프리터입니다. 항상 존재하며 별도의 준비가 필요 없습니다.
-
Rust 가상 머신. 이 역시 내장되어 있습니다. 가상 머신은 소스 대신 미리 준비된 명령을 실행하는 프로그램입니다. 네이티브가 여러분의 소스에서 이 명령을 만드는데, 같은 소스에서는 늘 같은 방식으로 작성하며 실행 전에 검사합니다. 이 경로는
--engine vm으로 명시해서 요청해야 사용합니다. 토파즈는 리스펙스와는 다른 별개의 언어이고 자체 컴파일러를 가지고 있습니다. 아래 두 경로가 그 도구를 빌려 씁니다. 리스펙스 규칙을 토파즈로 옮겨 적은 뒤 토파즈 쪽 도구로 실행하거나 컴파일하는 것이라, 언어가 섞이는 것이 아니라 도구를 빌려 오는 것입니다. -
토파즈 가상 머신. macOS ARM64 환경에서 별도 제품으로 설치하는 정확한 토파즈 5.11 가상 머신입니다. 네이티브 명령에 정확한 제품 절대경로를 넘깁니다.
-
미리 만들어 두는 빌드, 곧 AOT. 프로그램을 미리 컴파일하여 만들어 두므로 실행할 때는 소스가 필요 없는 실행 파일입니다. 이를 빌드하려면 정확한 토파즈 컴파일러 설치본과 Rust 도구 디렉터리가 필요합니다. 이렇게 만들어진 제품은 소스 트리 없이 실행됩니다.
네 경로는 모두 동일한 리스펙스 언어를 구현하는 방법입니다. 각 경로는 같은 의미를 보존하도록 설계되었습니다. 비교 명령은 정확한 요청 하나의 관측 결과와 source와 input과 product와 자원값을 함께 기록합니다.
두 가지 경로 규칙
경로를 식별하는 규칙은 두 가지입니다.
정확한 위치를 사용합니다. 외부 경로는 사용자가 전달한 정확한 위치로
동작합니다. 별도 routes fetch 명령은 catalog의 정확한 공식 companion 제품을
가져오고 설치와 선택과 실행은 각각 명시적 단계로 남습니다.
선택한 엔진을 보존합니다. 각 실행은 요청한 경로를 결과나 오류에 기록합니다.
Topaz VM 결과는 정확한 토파즈 가상 머신의 제품 식별자와 함께 나옵니다.
두 규칙이 보호하는 목적은 같습니다. 실행이 성공했다면 어느 경로가 그 답을 만들어 냈는지 정확히 알 수 있습니다.
경로들이 같은 답을 내는지 확인하기
정확한 토파즈 가상 머신을 설치하고 해당 소스와 일치하는 미리 만든 제품까지 갖추었다면, 네이티브에서 하나의 정확한 요청을 네 경로로 모두 실행하여 진단 영수증 하나를 생성할 수 있습니다. 이 영수증은 기존 파일 위에 덮어쓰지 않습니다.
lispex compare-routes \
--topaz-vm /absolute/tools/lispex-topaz-vm/product \
--aot-product /absolute/products/rule-aot \
--receipt route-comparison.json \
rule.lspx이 명령은 정확한 외부 제품 두 개를 입력으로 받습니다. 영수증에는 네 경로의 관찰 기록과 해당 source와 input과 product 집합과 자원 profile이 담깁니다.
직접 해 보기
동료가 작성한 스크립트가 토파즈 가상 머신 경로를 요청하고 있는데, 실행 대상 컴퓨터에는 해당 토파즈 가상 머신이 설치되어 있지 않다고 가정해 봅시다. 정답을 열어 보기 전에 무슨 일이 일어날지 예상해 보세요.
답 보기
실행은 누락된 경로의 이름과 요청한 경로 식별자를 담은 오류를 반환합니다. 정확한 동반 제품을 설치하고 그 위치를 지정하거나 설치된 경로를 선택하도록 스크립트를 변경하면 됩니다.
다음으로 넘어가도 되는 시점
네 가지 경로의 이름을 떠올릴 수 있고, 사전 준비 없이 실행되는 경로가 무엇인지 구분하며, 두 가지 정직 규칙을 자기 말로 설명할 수 있다면 이 단원을 잘 마친 것입니다.
실제 작업에서 경로를 고르고 싶다면 실행 방식 고르기 안내서로 이어 가세요. 동반 제품을 설치하고 싶다면 선택형 추가 엔진 설치하기 안내서를 따라가세요.