Сравните реализации Лиспекса, чтобы исследовать различия в результатах, выводе и диагностике. Выберите способ сравнения своей программы по таблице реализаций.
Native включает интерпретатор Лиспекса и ВМ Лиспекса. Для обычного запуска правил начните с Лиспекса в вашем приложении.
Выберите сравнение
| Задача | Вход | Необходимые продукты |
|---|---|---|
Сравнить tree и байт-код через compare-engines | Исходник | Native |
Справочник сравнений поможет выбрать отчёт и прочитать его результат. Сохранение и выполнение байт-кода описаны в разделе Байт-код и развёртывание.
Один исходник и два движка
Сохраните эту полную программу как answer.lspx.
(+ 20 22)Запустите её стандартным интерпретатором Лиспекса.
lispex answer.lspxВывод
42Теперь выберите ВМ Лиспекса. Виртуальная машина выполняет подготовленные инструкции, называемые байткодом.
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 был интерпретатором Лиспекса на Топазе. Их исходники, исследовательские записи, квитанции и артефакты версий сохраняются как исторические материалы.
| Историческая реализация | Записанное число процедур | Запись |
|---|---|---|
| LIL | 205/205 | Полная таблица процедур на том этапе |
| Начальная LIT | 84/205 | Начальная запись реализации |
| Последующий контракт LIT Топаза v7 | 205/205 | Записанный счётчик current контракта |
| Контракт потребителя LIT в Лиспексе v2 | 204/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.