Skip to content

Сверка печати ловит правку руками, а не обновление языка - #3

Merged
the-homeless-god merged 2 commits into
masterfrom
a/3606-pin-the-compiler
Sep 4, 2026
Merged

the-homeless-god merged 2 commits into
masterfrom
a/3606-pin-the-compiler

Conversation

@the-homeless-god

Copy link
Copy Markdown
Member

Прогон падал на цели сверка в 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):

make -C ui-flang сверка   → «печать совпадает с деревом»
make -C core              → код 0, «сверка печати: входов 240, расхождений 0»

Что дальше

Когда язык выпустит новую версию, тег поднимается одной правкой вместе с перепечаткой — и это видно в истории, а не случается молча между двумя прогонами.

Часть задачи 3606: сам вопрос «оправдан ли напечатанный код в дереве» остаётся открытым, здесь чинится только то, из-за чего он краснел без причины.

the-homeless-god 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
the-homeless-god merged commit c92d752 into master Sep 4, 2026
2 of 6 checks passed
@the-homeless-god
the-homeless-god deleted the a/3606-pin-the-compiler branch September 4, 2026 16:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant