Интеграция — это граница между сборкой и продуктом, а не второй язык внутри Топаза.
Храните прикладную логику в проверяемых модулях .tpz, выбирайте продукт под
среду поставки и отдельно проверяйте окружающий код платформы.
Выберите границу
| Потребность | Выбор | Что пересекает границу |
|---|---|---|
| Один исполняемый файл для ОС и архитектуры машины сборки | Бэкенд Rust | Управляемый платформенный продукт, собранный с помощью Cargo |
| Продукт для среды с Python 3.11 или новее | Бэкенд Python | Сгенерированный program.py с поставляемой средой выполнения |
| Продукт для браузера или Worker | WASM и песочница | Управляемый браузерный артефакт с объявленным ABI |
| Собственная обёртка на Rust, Python или в сервисе | Интеграция со средой | Сгенерированный продукт и отдельно сопровождаемый код платформы |
| Решающее правило, работающее внутри вашего приложения | Запуск правил Лиспекса | Манифест, правила, лимиты, блокировка, типизированные результаты и свидетельство |
| Один запрос к вычислителю Лиспекса | Вычислитель Лиспекса и LIT | Канонические правило, вход, лимиты, результат и отчёт |
| Выполнение программы LIT через Топаз | Вычислитель Лиспекса и LIT | Поверхность тестирования и интеграции Лиспекса по четырём маршрутам |
| Преобразование исходного кода с помощью Lena Code | Интеграция с Lena Code | Отдельно сопровождаемый процесс преобразования |
Лиспекс для решающих правил является отдельным языком, а строки выше описывают
разные способы взаимодействия с ним. Установленный вычислитель использует
командную поверхность Топаза, а цели вывода — отдельную поверхность
build --target. LIT выполняет маршруты тестирования и интеграции, а Lena Code
отвечает за преобразование исходного кода. Все эти маршруты доступны в
документации, поскольку их границы определены явно.
Что остаётся частью Топаза
Модули, импорты, выражения, типы, шаблоны и основные диагностические сообщения
остаются частью Топаза. В нём нет import rust, встроенных выражений Rust, Python или
JavaScript, неявного ABI, автоматического приведения владения или
исключений платформы. Сгенерированный исходный код — артефакт, а не разрешение
помещать его конструкции в файл .tpz.
Проверяйте только общие наблюдаемые результаты
Сначала проверьте и запустите пакет Топаза. Соберите выбранную цель и запустите управляемый продукт с теми же объявленными входными данными. Сравнивайте то, что важно для приложения: стандартный вывод, код завершения, поле артефакта или результат работы с файлом, а не внутреннее устройство объектов или форму сгенерированного кода.
Считайте результат подтверждением только для этой программы, входных данных, среды и заявленного наблюдаемого результата. При смене компилятора или цели поставки снова проверяйте сгенерированный продукт и интеграцию со средой.
Ответственность кода платформы
Обёртка над сгенерированным продуктом — внешний код со своей проверкой зависимостей, владения, ошибок, возможностей и безопасности. Импорт модуля Топаза или стандартной библиотеки не даёт доступа к файловой системе, сети, процессам, окружению, часам или базе данных. Если цель не может сохранить поведение, она должна явно отказаться от сборки, а не менять программу молча.
Продолжите с раздела Бэкенд Rust, Бэкенд Python или Вычислитель Лиспекса и LIT.