Сборка и поставка

Состояние инструментария

Текущая идентичность продукта Топаза, доступные продукты поставки и важные для выбора ограничения.

Топаз 5.11.0 — текущий публичный продукт. Текущий режим языка — topaz-5.11.

Проверьте установку командой:

BASH
topaz version --verbose

Она сообщает идентичность компилятора, режима языка, среды выполнения и генератора Rust. При сообщении о проблеме установки приложите полный вывод.

Доступные пути продукта

  • CLI форматирует, проверяет, тестирует, запускает, создаёт исходный код и собирает файлы или пакеты.
  • Платформенная сборка создаёт исполняемый файл для текущей системы.
  • Python-сборка создаёт program.py и topaz_py_rt.py; для выполнения нужен Python 3.11 или новее.
  • Raw Web и Web Worker создают пакеты WASM для существующей среды JavaScript.
  • Web Application создаёт полный управляемый статический продукт для браузера.
  • Ограниченный HTTP-сервис создаёт управляемый платформенный процесс HTTP/1.1 с конечными настройками приёма соединений, запроса, очереди, срока выполнения, журнала и завершения.
  • Пакетные команды используют манифесты, файлы блокировки, зависимости по пути и проверенные зависимости, сохранённые вместе с проектом.
  • Браузерная песочница предоставляет ограниченные проверку и выполнение интерпретатором без установки CLI Топаза.

Наблюдения за компилятором

Установленный CLI может записать текущий проверяемый конвейер компилятора вплоть до созданного исходного кода Rust в один канонический управляемый пакет:

BASH
topaz compiler observe --root my-app --locked --out-dir compiler-observation
topaz compiler validate compiler-observation

Размещайте результат вне my-app. Иначе при следующем наблюдении управляемый каталог результата может сам попасть в факты о каталогах пакета. Пакет содержит точные байты исходников, набор исходников, исходные и выровненные токены, AST, сведения о разрешении имён, структурированные типы, вызовы, захваты замыканий, пониженное представление без исходного текста, операции среды выполнения, созданный код Rust, диагностику, запрос, ответ и происхождение. Защищайте его так же, как исходный пакет.

validate работает только на чтение. Команда проверяет каноническую кодировку, схемы, порядок, перекрёстные ссылки, полноту, размеры и хеши, не компилируя заново и не читая исходное дерево. В происхождении производитель указан как Rust Stage 0; наличие наблюдения не означает, что какой-либо этап компилятора уже написан на Топазе.

Два полных наблюдения можно сравнить на той границе, которая отвечает на нужный вопрос:

BASH
topaz compiler compare --layer semantic observation-a observation-b
topaz compiler compare --layer generated-source observation-a observation-b
topaz compiler compare --layer provenance observation-a observation-b
topaz compiler compare --layer native-binary program-a program-b

Команда выводит одну ограниченную по размеру каноническую запись JSON и завершается с ошибкой, если выбранный слой различается. Семантическое сравнение останавливается на первом различающемся этапе компилятора. Созданный исходный код и происхождение сравниваются независимо, поэтому смена производителя сама по себе не становится расхождением смысла языка.

Восстановление исходной реализации Rust Stage 0

Выпуск, прошедший проверку для самокомпиляции, содержит отдельные манифест восстановления и детерминированный архив исходников наряду с пятью обычными платформенными файлами. Архив фиксирует исходный код компилятора на Rust, файл блокировки, сохранённые зависимости и лицензии, шаблоны среды выполнения, схемы протокола, нагрузку компилятора и инструменты реконструкции. Две сборки архива из одинаковых входов дают одинаковые байты.

Сам комплект не содержит инструментарий Rust. Для реконструкции закреплённая версия Rust должна быть установлена заранее; затем сборка идёт автономно только из каталога зависимостей в архиве. Это независимый путь восстановления и проверки происхождения, а не обычный способ установки и не утверждение, что какой-либо этап компилятора уже написан на Топазе.

Проверка исходников компилятора для начальной загрузки

Bootstrap Profile — машиночитаемое ограничение использования текущего языка для исходников ядра компилятора. Оно не вводит новый синтаксис или диалект. Профиль принимает только заблокированный детерминированный пакет, в котором разрешённые операции не используют неявные полномочия среды, extern-модули, числа с плавающей точкой, конкурентность, ресурсы, тестовые API и другие зависящие от хоста операции:

BASH
topaz check --profile bootstrap --locked --root compiler-kernel

Диагностика для человека содержит стабильное правило bootstrap/*. С --format json stderr содержит машиночитаемые диагностики профиля, а stdout — одну сводку. Локальное значение проверяется по разрешённой идентичности: пользовательская функция с именем print не становится операцией хоста, а переименование или псевдоним запрещённой операции не скрывает её.

Ограничения, важные для выбора

Все цели используют общие разбор, разрешение модулей и статическую проверку, но операции, зависящие от среды, доступны не везде. Цель, которая не может сохранить операцию, должна отклонить её до записи продукта. В частности, созданный Python не поддерживает текущее сжатие DEFLATE с фиксированными кодами Хаффмана, фиксированный zlib и вспомогательную функцию RS(255,223); генерация завершается явной ошибкой. Перед выбором цели для двоичных медиа проверьте страницы Rust и Python.

HTTP-продукт намеренно ограничен. Он не добавляет TLS, HTTP/2, WebSocket, исходящие сетевые запросы, неявные полномочия окружения, общее изменяемое состояние Топаза или универсальный веб-фреймворк.

Среда Web Application предоставляет только объявленные полномочия браузера. Raw Web и Worker требуют существующую среду JavaScript. Выполнение в песочнице является экспериментом с исходником, а не свидетельством развёртывания.

Порядок выполнения параллельных задач не определён. Программа не должна зависеть от конкретного чередования.

LIT остаётся ограниченной поверхностью внутренней проверки и интеграции Lispex. Это не поставляемая цель Топаза и не доказательство эквивалентности всего языка.

Рекомендуемый порядок

Начните с fmt --check, check и test. Используйте run для командного приложения и dev для Web Application или HTTP-сервиса. Соберите только нужную цель и копируйте весь её управляемый каталог.

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