В Топазе есть две намеренно раздельные границы Lispex. Установленный ограниченный вычислитель выполняет один закрытый запрос через точные байты компонента. LIT — интерпретатор, написанный на Топазе и используемый для внутренней и интеграционной проверки общего происхождения. Ни один из них не является бэкендом Топаза и не означает эквивалентность языков целиком.
Какой путь выбрать
- Для одного запроса к установленному ограниченному вычислителю используйте
topaz lispex embed run. - Для выпуска приложения на Топазе выберите одну из поддерживаемых целей Топаза.
- Чтобы понять назначение LIT, рассматривайте его как свидетельство совместной работы нескольких частей инструментария на крупной программе Lispex.
- Чтобы пользоваться Lispex как продуктом, обратитесь к документации Lispex. Здесь описана только граница, наблюдаемая со стороны Топаза.
Выполните один ограниченный запрос
Подготовьте обычный файл правила Lispex, канонический вход
lispex.embed-value/v1 и закрытый файл лимитов. Затем выберите новый каталог
результата:
topaz lispex embed run \
--source rule.lspx \
--input value.lpxvalue \
--limits limits.json \
--output lispex-result
Документ лимитов должен иметь точную форму ниже. Значения можно уменьшать, но поля нельзя удалять или добавлять.
{
"schema": "topaz.lispex-embed-limits/v1",
"prepare": {
"raw_source_bytes": 4096,
"prepare_work": 1000000,
"logical_allocation": 1000000,
"syntax_depth": 64
},
"evaluate": {
"canonical_input_bytes": 4096,
"eval_work": 1000000,
"logical_allocation": 1000000,
"semantic_frames": 1000,
"traversal_depth": 256,
"output_bytes": 1000000,
"diagnostic_bytes": 1000000,
"transcript_bytes": 1000000,
"transcript_events": 100,
"result_bytes": 1000000
}
}
При успехе каталог lispex-result содержит result.lpxvalue и
report.json. Детерминированная семантическая ошибка или исчерпание лимита
оставляет только отчёт. При отказе запроса или ошибке движка каталог не
создаётся. Точный компонент и политику без fallback можно проверить командой:
topaz lispex embed info --json
Команда не принимает выбор вычислителя, профиля, среды выполнения или маршрута. Она не ищет и не загружает компонент, не вызывает Топаз обратно и не переходит на LIT. Отчёт фиксирует выполнение и допуск продукта Топаза, но не является переносимым ядром квитанции в формате Lispex.
Что означают свидетельства LIT
Одна и та же эталонная версия исходного кода LIT выполняется напрямую, через сгенерированные программы Rust и Python, а также в браузере. Такая требовательная программа помогает находить дефекты проверки, генерации кода, среды выполнения и взаимодействия с окружением.
Успешная проверка LIT означает, что указанная программа в пределах выбранных возможностей и маршрутов выполнилась ожидаемым образом. Неподдерживаемые возможности завершаются явной ошибкой. Все четыре маршрута происходят из одной линии исходного кода, поэтому их согласие помогает находить регрессии, но не является свидетельством четырёх независимых реализаций и не доказывает эквивалентность языков целиком.
Граница продукта
Ограниченный вычислитель входит в установленный бинарный файл Топаза, но
допускает только документированные компонент, профиль, файловые входы, лимиты
и контракт результата. Это не --target lispex, не универсальный
инструментарий Lispex и не эквивалентность языков.
LIT не входит в установку Топаза и не является целью сборки; пути
--target lit не существует. Его проверки не превращают любую программу
Lispex в поддерживаемое приложение на Топазе.
Использование Lispex в приложении на Топазе
Пакет может связать именованные правила Lispex с точным ограниченным профилем,
исходным текстом, лимитами и встроенным компонентом. Сборка с файлом
блокировки готовит каждое правило один раз и создаёт std.lispex вместе с
std.lispex.rules. Код на Топазе получает непрозрачные типы правил и значений,
а не необработанные дескрипторы Wasm. Подготовленные байты можно применять к
разным входам, но память, глобальное состояние, счётчики и буфер транскрипта
создаются заново для каждого вычисления. Лимиты вызова дополняются общими
квотами приложения, отменой и обязательной очисткой.
Когда достаточно типизированного исхода, используйте evaluate. Для
подходящего детерминированного исхода с переносимой записью предназначена
evaluateWithEvidence. consumerArtifactBytes сохраняет запись,
consumerArtifactFromBytes принимает её обратно только после проверки, а
inspectConsumerArtifact и verifyConsumerArtifact сообщают устойчивую
идентичность. portableCoreBytes извлекает точные байты ядра Lispex, если оно
есть. freshReplay повторяет вычисление правила и входа с лимитами из записи
в новом гостевом экземпляре и принимает только полностью совпавший артефакт.
Ядро и внешний артефакт создаются потребителем и не аутентифицированы. Они не содержат издателя, одобрения поставщика, допуска компонента со стороны Топаза или разрешения на внешнее действие. Локальный предварительный отказ, отмена, отказ очереди, нехватка ресурсов операционной системы, опережающее срабатывание защитного лимита и сбой движка не создают переносимого ядра.
Прикладной API допускается интерпретатором и текущим маршрутом генерации нативного продукта. Поддерживаемый пакет из двух модулей прошёл обычную установку через npm, удаление исходников и компилятора, перенос исполняемого файла, обработку множества входов, отказы по лимитам, восстановление после срока выполнения, проверку свидетельства и новый повтор. Маршруты Python, Web, HTTP-сервиса, хоста без полномочий и MCP с пустым набором компонентов отклоняют его до создания результата. Следующая граница ограниченного продукта проверит тот же путь на всех поддерживаемых нативных целях для одного точного кандидата выпуска. Полный профиль использует отдельные компонент, профиль, контракт, проверку целей и допуск и не расширяет существующий ограниченный вычислитель.
Полная последовательность от манифеста, правила, лимитов и блокировки до сборки, запуска, свидетельства и повтора описана в разделе Ограниченное приложение решений Lispex. Это руководство не превращает LIT в бэкенд и не расширяет ограниченный профиль.