Топаз 5.11.0 — текущий публичный продукт. Текущий режим языка —
topaz-5.11.
Проверьте установку командой:
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 в один канонический управляемый пакет:
topaz compiler observe --root my-app --locked --out-dir compiler-observation
topaz compiler validate compiler-observation
Размещайте результат вне my-app. Иначе при следующем наблюдении управляемый
каталог результата может сам попасть в факты о каталогах пакета. Пакет
содержит точные байты исходников, набор исходников, исходные и выровненные
токены, AST, сведения о разрешении имён, структурированные типы, вызовы,
захваты замыканий, пониженное представление без исходного текста, операции
среды выполнения, созданный код Rust, диагностику, запрос, ответ и
происхождение. Защищайте его так же, как исходный пакет.
validate работает только на чтение. Команда проверяет каноническую
кодировку, схемы, порядок, перекрёстные ссылки, полноту, размеры и хеши, не
компилируя заново и не читая исходное дерево. В происхождении производитель
указан как Rust Stage 0; наличие наблюдения не означает, что какой-либо этап
компилятора уже написан на Топазе.
Два полных наблюдения можно сравнить на той границе, которая отвечает на нужный вопрос:
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 и другие зависящие от хоста операции:
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-сервиса. Соберите только
нужную цель и копируйте весь её управляемый каталог.