Топаз 5.13.0 — текущая контрольная точка продукта. Текущий режим языка —
topaz-5.13.
Проверьте установку командой:
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.
Установленный продукт также открывает созданный C1 как явно выбираемый Stage 1 Compiler Preview:
topaz compiler preview main.tpz --producer stage1 --terminal rust-source --out-dir stage1-observation
topaz compiler validate stage1-observation
C1 потребляет версионированный обмен и закрытый IR без исходного текста,
созданные понижением и генератором Rust на Топазе. Он компилирует обычный пакет,
не подключая и не вызывая повторно целевые парсер, разрешение имён, проверку,
понижение, генератор или интерпретатор на Rust. Управляемый пакет фиксирует
стадии производителя и результата 1/1, идентичности набора исходников
компилятора, созданного кода и шаблона среды, а также
targetCompilerFallback: false. Это не заявление о фиксированной точке
Stage 2.
Граница сравнения раздельно оценивает семантические наблюдения, диагностику, созданный исходный код, поведение созданного продукта и происхождение. Stage 0 и C1 совпадают на заявленных многомодульном и отклоняемом примерах. Повторная генерация C1 стабильна по байтам; код Rust от Stage 0 и Stage 1 может различаться и фиксируется как два отдельно детерминированных результата, а не как ложное требование равенства байтов. Неверная идентичность производителя или повреждённый управляемый продукт C1 отклоняются без повторной компиляции цели через Stage 0.
Установленный продукт позволяет выполнить точное сравнение без рабочей копии репозитория:
topaz compiler observe main.tpz --terminal rust-source --out-dir rust-observation
topaz compiler preview main.tpz --producer stage1 --terminal rust-source --out-dir stage1-observation
topaz compiler validate rust-observation
topaz compiler validate stage1-observation
topaz compiler compare --layer semantic rust-observation stage1-observation
После записи двух управляемых наблюдений проверка и сравнение больше не читают
исходный файл программы. Если Stage 1 отклоняет запрос или завершается с
ошибкой, подменное наблюдение не создаётся: команда лишь печатает отдельную
команду восстановления compiler observe, но никогда не запускает её
неявно. Для явного выбора 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-сервиса. Соберите только
нужную цель и копируйте весь её управляемый каталог.