프로그램이 실행되는 곳

하나의 프로그램을 네 가지 엔진에서 실행할 수 있고 기본 경로와 세 가지 명시적 선택 경로를 제공합니다.

이 페이지를 마치면 같은 프로그램을 실행하는 엔진 넷인 네 가지 경로의 이름을 말할 수 있고, 지금까지 어떤 경로를 써 왔는지 설명할 수 있으며, 요청한 경로가 없을 때 무슨 일이 일어나는지 예측할 수 있습니다.

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

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

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

SH
lispex rule.lspx

여러분은 tree 경로를 쓰고 있었던 것입니다. 이 내장 인터프리터는 Rust로 작성되었으며 소스를 직접 읽어 평가합니다. 일반적인 리스펙스 제품에 기본 경로로 탑재되어 있습니다. 언어의 의미를 정하는 기준이며 전체 언어 프로파일을 구현합니다.

네 가지 경로

브라우저 플레이그라운드와 npm 패키지와 내려받는 네이티브 프로그램은 리스펙스 제품입니다. 경로는 제품 안에서 프로그램을 구동하는 엔진입니다. 플레이그라운드와 npm 패키지는 tree 경로를 사용하고 네이티브는 네 경로를 모두 사용할 수 있습니다.

같은 프로그램을 네 가지 엔진에서 실행할 수 있습니다.

  1. tree. 소스를 그대로 읽어서 평가하는 내장 인터프리터입니다. 항상 존재하며 별도의 준비가 필요 없습니다.

  2. Rust 가상 머신. 이 역시 내장되어 있습니다. 가상 머신은 소스 대신 미리 준비된 명령을 실행하는 프로그램입니다. 네이티브가 여러분의 소스에서 이 명령을 만드는데, 같은 소스에서는 늘 같은 방식으로 작성하며 실행 전에 검사합니다. 이 경로는 --engine vm으로 명시해서 요청해야 사용합니다. 토파즈는 리스펙스와는 다른 별개의 언어이고 자체 컴파일러를 가지고 있습니다. 아래 두 경로가 그 도구를 빌려 씁니다. 리스펙스 규칙을 토파즈로 옮겨 적은 뒤 토파즈 쪽 도구로 실행하거나 컴파일하는 것이라, 언어가 섞이는 것이 아니라 도구를 빌려 오는 것입니다.

  3. 토파즈 가상 머신. macOS ARM64 환경에서 별도 제품으로 설치하는 정확한 토파즈 5.11 가상 머신입니다. 네이티브 명령에 정확한 제품 절대경로를 넘깁니다.

  4. 미리 만들어 두는 빌드, 곧 AOT. 프로그램을 미리 컴파일하여 만들어 두므로 실행할 때는 소스가 필요 없는 실행 파일입니다. 이를 빌드하려면 정확한 토파즈 컴파일러 설치본과 Rust 도구 디렉터리가 필요합니다. 이렇게 만들어진 제품은 소스 트리 없이 실행됩니다.

네 경로는 모두 동일한 리스펙스 언어를 구현하는 방법입니다. 각 경로는 같은 의미를 보존하도록 설계되었습니다. 비교 명령은 정확한 요청 하나의 관측 결과와 source와 input과 product와 자원값을 함께 기록합니다.

두 가지 경로 규칙

경로를 식별하는 규칙은 두 가지입니다.

정확한 위치를 사용합니다. 외부 경로는 사용자가 전달한 정확한 위치로 동작합니다. 별도 routes fetch 명령은 catalog의 정확한 공식 companion 제품을 가져오고 설치와 선택과 실행은 각각 명시적 단계로 남습니다.

선택한 엔진을 보존합니다. 각 실행은 요청한 경로를 결과나 오류에 기록합니다. Topaz VM 결과는 정확한 토파즈 가상 머신의 제품 식별자와 함께 나옵니다.

두 규칙이 보호하는 목적은 같습니다. 실행이 성공했다면 어느 경로가 그 답을 만들어 냈는지 정확히 알 수 있습니다.

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

정확한 토파즈 가상 머신을 설치하고 해당 소스와 일치하는 미리 만든 제품까지 갖추었다면, 네이티브에서 하나의 정확한 요청을 네 경로로 모두 실행하여 진단 영수증 하나를 생성할 수 있습니다. 이 영수증은 기존 파일 위에 덮어쓰지 않습니다.

SH
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이 담깁니다.

직접 해 보기

동료가 작성한 스크립트가 토파즈 가상 머신 경로를 요청하고 있는데, 실행 대상 컴퓨터에는 해당 토파즈 가상 머신이 설치되어 있지 않다고 가정해 봅시다. 정답을 열어 보기 전에 무슨 일이 일어날지 예상해 보세요.

답 보기

실행은 누락된 경로의 이름과 요청한 경로 식별자를 담은 오류를 반환합니다. 정확한 동반 제품을 설치하고 그 위치를 지정하거나 설치된 경로를 선택하도록 스크립트를 변경하면 됩니다.

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

네 가지 경로의 이름을 떠올릴 수 있고, 사전 준비 없이 실행되는 경로가 무엇인지 구분하며, 두 가지 정직 규칙을 자기 말로 설명할 수 있다면 이 단원을 잘 마친 것입니다.

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

프로그램이 실행되는 곳 · 리스펙스