Topazdocs
Интеграция

Бэкенд Rust

Возможности создаваемого кода Rust и границы языка Topaz.

Rust — цель преобразования и нативной сборки, а не встроенный синтаксис. Сначала средство проверки разбирает всю программу Topaz, затем генератор создаёт код Rust вместе с поставляемой частью среды выполнения. Такой артефакт можно подключать на границе сборки, не помещая конструкции Rust в файлы .tpz.

Контракт и компоненты

По умолчанию используется бэкенд с универсальным представлением значений. Нативный бэкенд специализирует участки со статически подтверждёнными скалярными типами, а в остальных случаях возвращается к универсальному представлению. Команда emit --out-dir создаёт крейт, который можно собрать Cargo; нативная команда build вызывает Cargo и при необходимости запускает результат. Необходимая часть среды выполнения поставляется вместе с компилятором, поэтому на целевой машине не требуется отдельная установка Topaz.

Рабочий процесс

Сохраняйте исходный код и публичный API модулей в каноническом Topaz. Выполните check, сравните результат run, создайте артефакт через emit или build и проверьте его с теми же входными данными и выбранным профилем. Если артефакт оборачивается сервисом Rust, отдельно проверяйте владение, ошибки, зависимости и безопасность этого внешнего кода.

Текущая поддержка

Пути универсального и нативного Rust сравниваются с непосредственным выполнением Topaz. Проверки также компилируют созданные крейты и охватывают среду Web, проверяемую арифметику, границы модулей, ошибки и освобождение ресурсов.

Границы и ограничения

use crate::, ::, атрибуты, ссылки Rust, Vec<T>, impl, а также синтаксис получателей и замыканий Rust запрещены в каноническом Topaz. Topaz не обещает FFI с Rust на уровне исходного кода, стабильность внутреннего устройства созданного кода, произвольное преобразование исключений среды или безопасность пользовательской обёртки только потому, что код успешно скомпилировался.

Справочник команд

topaz emit main.tpz
topaz emit main.tpz --out-dir generated-rust
topaz build main.tpz --out-dir native-build --run

Связанная документация