Интеграция

Границы интеграции

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

Интеграция — это граница между сборкой и продуктом, а не второй язык внутри Топаза. Храните прикладную логику в проверяемых модулях .tpz, выбирайте продукт под среду поставки и отдельно проверяйте окружающий код платформы.

Выберите границу

ПотребностьВыборЧто пересекает границу
Один исполняемый файл для ОС и архитектуры машины сборкиБэкенд RustУправляемый платформенный продукт, собранный с помощью Cargo
Продукт для среды с Python 3.11 или новееБэкенд PythonСгенерированный program.py с поставляемой средой выполнения
Продукт для браузера или WorkerWASM и песочницаУправляемый браузерный артефакт с объявленным 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.