Песочница

Интерпретатор и ВМ Лиспекса

Сравните реализации Лиспекса, чтобы исследовать различия в результатах, выводе и диагностике. Выберите способ сравнения своей программы по таблице реализаций.

Native включает интерпретатор Лиспекса и ВМ Лиспекса. Для обычного запуска правил начните с Лиспекса в вашем приложении.

Выберите сравнение

ЗадачаВходНеобходимые продукты
Сравнить tree и байт-код через compare-enginesИсходникNative

Справочник сравнений поможет выбрать отчёт и прочитать его результат. Сохранение и выполнение байт-кода описаны в разделе Байт-код и развёртывание.

Один исходник и два движка

Сохраните эту полную программу как answer.lspx.

LISPEX
(+ 20 22)

Запустите её стандартным интерпретатором Лиспекса.

SH
lispex answer.lspx

Вывод

ВЫВОД
42

Теперь выберите ВМ Лиспекса. Виртуальная машина выполняет подготовленные инструкции, называемые байткодом.

SH
lispex run --backend rust --engine vm answer.lspx

Вывод

ВЫВОД
42

Обе команды завершаются с кодом 0 и не создают файлов. При выборе VM продукт Native сначала создаёт и проверяет байткод, затем выполняет его. Стандартный движок tree — интерпретатор Лиспекса. Он читает исходник, нормализует сокращённые конструкции в основные формы CoreExpr, а затем вычисляет эти формы.

Выполнение исходников и выведенные из эксплуатации реализации

Интерпретатор Лиспекса выполняет исходники в Native, npm, WASM и Песочнице. Native также включает ВМ Лиспекса для проверенного байткода.

Оба движка написаны на Rust. В прежних документах они назывались Rust tree interpreter и Rust VM. В CLI используются идентификаторы --backend rust и --engine tree|vm.

Завершение поддержки LIL и LIT

LIL и LIT выполнили свою задачу внутренней перекрёстной проверки. В Лиспексе 1.21 они выведены из эксплуатации, чтобы снизить дальнейшие затраты на сопровождение. Для выполнения программ и интеграции с приложениями используются интерпретатор Лиспекса, ВМ Лиспекса и отдельные вычислители для профиля решений и полного профиля языка.

Прежние публичные компоненты Topaz VM и AOT относятся к более ранним выпускам. Topaz VM была отдельной средой выполнения байткода Лиспекса. AOT преобразовывал Лиспекс в Топаз и компилировал его в нативную программу. Текущая встроенная ВМ Лиспекса имеет идентификатор lispex-rust-vm/v1, а прежняя Topaz VM использовала lispex-topaz-vm/v1. Внутренняя ВМ Лиспекса продолжает выполнять проверенный байткод и служит основой встраиваемых вычислителей.

LIL был отдельным интерпретатором, написанным на Лиспексе. Его собственные чтение, нормализация и вычисление выполнялись поверх интерпретатора Rust. LIT был интерпретатором Лиспекса на Топазе. Их исходники, исследовательские записи, квитанции и артефакты версий сохраняются как исторические материалы.

Историческая реализацияЗаписанное число процедурЗапись
LIL205/205Полная таблица процедур на том этапе
Начальная LIT84/205Начальная запись реализации
Последующий контракт LIT Топаза v7205/205Записанный счётчик current контракта
Контракт потребителя LIT в Лиспексе v2204/205Записанная база потребителя

Числа относятся к 205 строкам реестра с меткой profile-required на момент каждой записи. Читайте исходный результат вместе с соответствующими исходниками, исполнителем и версией контракта. Прежние инструкции по установке и сравнению сохранены в справочнике движков v1.20.

Реализации байт-кода

ВМ Лиспекса (lispex-rust-vm/v1) входит в Native. Она выполняет байт-код, который создают фронтенд исходников и компилятор Core IR на Rust.

Core IR — промежуточное представление с разрешёнными ссылками имён. Native преобразует полный текущий профиль языка в установленный формат lispex.core-ir/v1 и проверяет его. При просмотре доступны ячейки переменных, захваченные переменные, хвостовые позиции, требования, координаты исходника и идентификаторы.

Компилятор преобразует проверенный Core IR в lispex.bytecode/v1. Проверка байткода выполняется до создания состояния VM. ВМ Лиспекса реализует все 205 записей встроенных процедур. Для 18 записей, вызывающих пользовательские процедуры, вызовами управляют итеративные машины состояний VM.

Прочитайте результаты и расход ресурсов

Отчёты сравнения записывают результаты, расход ресурсов, сведения об исходнике и производителе в отдельных полях. Каждый выбранный способ выполнения сохраняет собственные статусы ошибок и ресурсов. Отчёты записываются атомарно по новому пути.

Читайте семантические различия отдельно от различий в ресурсах. Семантические наблюдения включают статус, основной код, сообщение, вывод, значения, предупреждения и диагностику.

Сравниваемые продуктыСопоставимые наблюдения ресурсов
интерпретатор Лиспекса и ВМ ЛиспексаБайты вывода и завершённые корни

Интерпретатор Лиспекса использует собственную модель глубины. Исторические сравнения интерпретаторов исходников записывали исход по ресурсам и все пять полей расхода. В записях значения расхода каждой реализации сохранены отдельно. Число поддерживаемых процедур и счётчики расхода ресурсов отвечают на разные вопросы. Определения счётчиков есть в справочнике ресурсов.

Как определить продукт в сравнении

Записанные сведенияЧто они определяют
Реализация среды выполненияСемейство интерпретатора и версионированный способ выполнения
ВызовВоспроизводимую команду или протокол запросов с разделением на кадры
Идентификатор артефактаТочные байты исполняемого файла, WASM и связующего кода
Сведения об исходнике и производителеОбъявленный исходник и способ сборки продукта
Профиль ресурсовИменованные лимиты и записанные счётчики расхода
Сравниваемые случаиТочный набор входов, семейство интерпретатора, целевую платформу и вариант хоста

Эти поля позволяют узнать, какой продукт и какие условия выполнения дали результат сравнения. Формат инструкций и подробности выполнения описаны в байткоде и ВМ Лиспекса.

Прочитайте прежние записи сравнений

Историческая запись сравнения охватывает 144 именованных случая. Она указывает использованные исполняемые файлы Rust, LIL и LIT, их профили ресурсов, результаты и повторные выполнения. Число случаев описывает выполненные входные программы. Таблицы процедур описывают охват реализации с другим знаменателем.

Храните исходный отчёт вместе с вводом, каталогом, продуктами и инструментами соответствующей версии. Область исторической записи описана в Сравнении результатов движков.

Связанные возможности продуктов

Для вызовов из приложения справочник вычислителей описывает отдельные вычислители профиля решений и полного профиля. Для вычисления доверенного исходника и заданных сравнений из редактора см. Native MCP.

Скомпилированный Ваучер Лиспекса

Скомпилированный Ваучер Лиспекса использует ВМ Лиспекса. Native создаёт связанный с исходником файл lispex.vouch-compiled-artifact/v1 и аутентифицирует запрос. Он заново получает Core IR и байткод из точного исходника, выбранного получателем. Затем записывает текущее согласие tree и Meaning, сравнивает результат проверенной ВМ Лиспекса и передаёт его локальной проверке допуска.

Интерактивный вывод в разных продуктах

Native, npm, публичный WASM и Песочница используют одинаковые правила интерактивного вывода. До вычисления они читают весь исходник и преобразуют сокращения в основные формы. Затем по порядку показывают явный вывод и значение каждой успешно выполненной формы.

ЗавершениеВывод и статус
УспехВывод и значения, статус 0
Обычная ошибка выполненияУже полученный вывод предыдущих форм сохраняется, статус 1
Достигнут лимит ресурсовПустой вывод, одна диагностика ресурсов, статус 2

Результаты в браузере содержат output, diagnostics, ok и exit_status. Примеры приведены в вводе, выводе и разрешениях.

Native также предоставляет форматирование и локальную службу MCP для работы с исходниками. Расширения VS Code и Open VSX передают форматирование документа установленному исполняемому файлу Native. Через локальный стандартный ввод и вывод MCP предоставляет справочник языка, реестр процедур, вычисление доверенного исходника, диагностику и заданные сравнения движков. Вычислитель применяет объявленные лимиты байтов и времени. Команды и результаты перечислены в справочнике CLI.