Repository navigation
Сверка печати ловит правку руками, а не обновление языка - #3
Merged
Merged
Conversation
added 2 commits
September 4, 2026 15:05
…илятора закреплена Задача 3606, но не тем боком, каким она записана. Прогон падал на цели `сверка` в ui-flang, и её собственный комментарий уверял: «расхождение значит, что кто-то правил вывод компилятора руками». Руками никто не правил. ЧТО БЫЛО НА САМОМ ДЕЛЕ. Шаг «Компилятор flang» клонировал master языка и собирал из него. Язык живёт своей жизнью: пока я разбирался, он успел уйти с 0.7.3 на 0.7.4 — я собрал оба и сверил. Нумерация временных в печати от версии к версии меняется (`t700` против `t686`, `e413` против `e399`), и сверка краснела сама собой на каждом прогоне, где язык оказывался новее дерева. ЧТО СДЕЛАНО, ДВУМЯ ШАГАМИ. 1. Версия закреплена: FLANG_TAG = v0.7.3, ВЫПУЩЕННЫЙ тег — тот же двоичный, что ставится формулой. Шаг заодно печатает `flang --version`, чтобы в журнале прогона стояло, чем печатали. 2. Дерево перепечатано тем же 0.7.3: ui-flang/out-go/format/flang/format.go, 840 строк добавлено, 874 снято — это разница нумерации, а не смысла. Проверено на моей машине компилятором из тега v0.7.3 (собран из bootstrap, `flang --version` → 0.7.3): make -C ui-flang сверка → «печать совпадает с деревом» make -C core → код 0, «сверка печати: входов 240, расхождений 0» Комментарий у цели переписан: расхождение значит одно из ДВУХ, и второе — другой компилятор — теперь названо, потому что оно и случилось. Когда язык выпустит новую версию, тег поднимается одной правкой вместе с перепечаткой — и это видно в истории, а не случается молча между двумя прогонами.
Владелец сказал, что компилятор уже 0.7.10 — и это ровно тот случай, ради которого закрепление и заводилось: версия поднимается ОДНОЙ правкой вместе с перепечаткой, а не расходится молча между прогонами. Перепечатано компилятором из тега v0.7.10 (собран из bootstrap, `flang --version` → 0.7.10): make -C ui-flang сверка → «печать совпадает с деревом» make -C core → код 0 `ui-flang/out-go` от 0.7.3 не изменился: между 0.7.3 и 0.7.10 нумерация временных та же. А вот `core/out-c/flang_runtime.c` подрос на 14 строк, и это не косметика: язык починил сборку под Darwin — `_POSIX_C_SOURCE` там ЗАКРЫВАЕТ то, что на glibc открывает, и под ним прятались `sigaction`/`sigemptyset` и `getrlimit`. В дереве этой правки не было. Перепечатка принесла её вместе с версией — то есть закрепление не только чинит ложную красноту, но и перестаёт держать нас на старом рантайме.
the-homeless-god
force-pushed
the
a/3606-pin-the-compiler
branch
from
September 4, 2026 15:09
af28bff to
9c59f90
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Прогон падал на цели
сверкавui-flang, и её собственный комментарий уверял: «расхождение значит, что кто-то правил вывод компилятора руками». Руками никто не правил.Что было на самом деле
Шаг «Компилятор flang» клонировал master языка и собирал из него. Язык живёт своей жизнью: пока я разбирался, он успел уйти с 0.7.3 на 0.7.4 — я собрал оба и сверил. Нумерация временных в печати от версии к версии меняется (
t700противt686,e413противe399), и сверка краснела сама собой на каждом прогоне, где язык оказывался новее дерева.То есть проверка ловила не то, что обещает, и отказ её уводил читателя по ложному следу.
Что сделано
1. Версия закреплена.
FLANG_TAG: "v0.7.3"— выпущенный тег, тот же двоичный, что ставится формулой. Шаг заодно печатаетflang --version, чтобы в журнале прогона стояло, чем печатали.2. Дерево перепечатано тем же 0.7.3 —
ui-flang/out-go/format/flang/format.go: 840 строк добавлено, 874 снято. Это разница нумерации, а не смысла.Проверено
Компилятором, собранным из тега
v0.7.3(flang --version→ 0.7.3):Что дальше
Когда язык выпустит новую версию, тег поднимается одной правкой вместе с перепечаткой — и это видно в истории, а не случается молча между двумя прогонами.
Часть задачи 3606: сам вопрос «оправдан ли напечатанный код в дереве» остаётся открытым, здесь чинится только то, из-за чего он краснел без причины.