Топаз 5.12.0 — текущий публичный продукт. Текущий режим языка —
topaz-5.12.
Проверьте установку командой:
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; наличие наблюдения не означает, что какой-либо этап
компилятора уже написан на Топазе.
Явный предварительный маршрут запускает текущие лексер, обработку раскладки, парсер, логическое замыкание импортов, разрешение имён и статическую проверку, написанные на Топазе и размещённые в Rust Stage 0:
topaz compiler preview --root my-app --locked --out-dir typed-preview
topaz compiler validate typed-preview
Пакет завершается на типизированной фазе и указывает
engine: topaz-front-end-preview, стадии производителя и результата 0/0,
а также Rust Stage 0 как реализацию по умолчанию. Фронтенд Топаза охватывает
текущую грамматику и канонический AST, логическое замыкание модулей пакета,
подключённых зависимостей и стандартной библиотеки, а также точные области,
объявления, ссылки, экспорты, статические типы, вызовы, захваты и
структурированную диагностику. Число фактов исходников, узлов AST и Typed,
глубина и обмен с оболочкой ограничены. Маршрут не понижает, не генерирует, не
собирает и не запускает целевую программу; это не заявление о Stage 1 или
самокомпилируемом компиляторе. При сбое маршрут останавливается и не повторяет
работу фронтенда через Rust. Обычные команды компилятора по-прежнему используют
Rust Stage 0.
Установленный продукт позволяет выполнить точное сравнение без рабочей копии репозитория:
topaz compiler observe --terminal typed main.tpz --out-dir rust-observation
topaz compiler preview main.tpz --out-dir preview-observation
topaz compiler validate rust-observation
topaz compiler validate preview-observation
topaz compiler compare --layer semantic rust-observation preview-observation
После записи двух управляемых наблюдений проверка и сравнение больше не читают
исходный файл программы. Если предварительный маршрут отклоняет запрос, он
завершается с ошибкой и не записывает подменное наблюдение. Для явного выбора
Rust Stage 0 используйте обычные команды observe, check или сборки.
Два полных наблюдения можно сравнить на той границе, которая отвечает на нужный вопрос:
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-сервиса. Соберите только
нужную цель и копируйте весь её управляемый каталог.