Skip to content

Подмодуль раскладки на стволе, печать в C убрана из git - #4

Merged
the-homeless-god merged 2 commits into
masterfrom
a/8148-flang-tui
Sep 5, 2026
Merged

the-homeless-god merged 2 commits into
masterfrom
a/8148-flang-tui

Conversation

@the-homeless-god

Copy link
Copy Markdown
Member

Задачи 8148 и остаток 3606.

8148 — подмодуль переехал на ствол

ui-flang/flang-tui: 6bb627cc → 4117aea. Ствол ушёл дальше, чем сказано в задаче (там 617fe0d): влит PR #1 про формат величины в обеих редакциях.

  • примеров в модулях 187 → 590, все прошли;
  • перепечаталось ровно одно из шести — out-go/format/flang/format.go (+2 244 −999). Пять модулей вышли байт в байт прежними: примеры в код не печатаются, а тела screen/colour/history/tabs/scroll на стволе не менялись;
  • изменился только format, потому что на стволе он догнал эталон, переехавший между digitdisk 0.5.0 и 0.8.0 из шести мест в один двуязычный host/internal/lang/format.go.

ui-flang/README.md обещал прогон flang-tui/tools/sverka/run.sh на 494 869 входах — файла на стволе нет. Заменено на то, чем сверка стала: две сверки кончились (494 467 входов против 0.5.0 и 1 944 268 против 0.8.0, расхождений 0), стерегут теперь 590 примеров в самих модулях.

3606 — довод про «только Go» переписан по каталогам, core/out-c убран из git

Довод держится для core/out-go и ui-flang/out-go и не держится ничем для core/out-c:

  1. «Только Go» — не про go build: со снесёнными каталогами печати go build/vet/test ./... остаются зелёными (решающий слой за flangcore).
  2. Довод — про выпуск: scripts/build-release.sh собирает все четыре цели с -tags flangcore и компилятор не зовёт ни разу; без core/out-go тот же путь отвечает replacement directory ../core/out-go does not exist.
  3. «Один двоичный из одного cc» ≠ даром: make -C bootstrap v0.7.10 на EPYC 7742 — 5 мин 12 с одним вызовом, 1 мин 54 с при -j4, пик 1,7 ГиБ. Язык обещает «около минуты» — вдвое больше. Число растёт, и это сегодняшняя причина, по которой довод не отменён целиком.
  4. core/out-c — 12 130 строк, которые не читает никто: ни host/, ни scripts/. Зовёт его один differential.flang, а цель сверка зависит от печать, которая начинается с rm -rf out-go out-c. Любой прогон, которому C нужен, печатает его сам и уже имеет компилятор (это и делает CI шагом make -C core).

Печатного в git: 29 файлов / 34 100 строк → 23 / 24 357. Доля напечатанного в дереве 46,6 % → 36,7 %.

Прогоны (перепроверены при приёмке в свежем клоне)

go build ./... · go build -tags flangcore ./... · go test -tags flangcore ./... — зелёные. tools/sverka-ui.sh — расхождений 0, кадры 40×24 3073 Б, 80×24 4045 Б, 120×50 5525 Б, 200×50 6416 Б: последние два совпадают с числами задачи, то есть переезд подмодуля экран не сдвинул. git ls-files core/out-c — пусто, CI печатает C сам.

Заодно исправлено brew install flang → brew install digitable-lol/tap/flang (без тапа формулы нет).

the-homeless-god and others added 2 commits September 5, 2026 12:01
…личин

`ui-flang/flang-tui` стоял на `6bb627cc` — последнем отпечатке, где библиотека
была двуязычной. Ствол ушёл на `4117aea`, и уход не рядовой: Go в ней стало 0
строк, `tools/sverka/` и `Makefile` убраны, точка входа теперь `./ярлык`, а
ответы эталона переехали в примеры внутри модулей.

Что это дало здесь, числами:

  примеров в модулях   187 → 590   (`make -C ui-flang проверка`, все прошли)
  ui-flang/out-go      16 842 → 18 053 строки Go в 18 файлах
  изменился ОДИН файл  out-go/format/flang/format.go (+2244 −999)

Пять модулей из шести напечатались байт в байт прежними: примеры в код не
печатаются, а тела функций у screen, colour, history, tabs и scroll не
менялись. Изменился только `format`: на стволе он догнал эталон, переехавший
между digitdisk 0.5.0 и 0.8.0 из шести мест `host/internal/{report,ui,sysinfo}`
в один двуязычный `host/internal/lang/format.go`, и обзавёлся русской и
английской редакциями каждой величины.

Печать снята выпущенным `flang 0.7.10` — тем же тегом `FLANG_TAG`, что стоит в
`.github/workflows/check.yml`, поэтому `make -C ui-flang сверка` совпадает с
деревом, а не краснеет от нумерации временных.

Обе реализации раскладки по-прежнему рисуют один и тот же экран:
`tools/sverka-ui.sh` — расхождений 0, снимок 21 835 849 байт, кадры 40×24
3073 Б, 80×24 4045 Б, 120×50 5525 Б, 200×50 6416 Б — все до байта те же, что и
до переезда.

`ui-flang/README.md` обещал читателю прогон `flang-tui/tools/sverka/run.sh` на
494 869 входах. Файла на стволе нет; сказано, чем сверка стала: две сверки
кончились (494 467 входов против 0.5.0 и 1 944 268 против 0.8.0, расхождений
0), а стерегут теперь 590 примеров в самих модулях. Там же и в `Makefile`
исправлено `make печать` у библиотеки на `./ярлык печать`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012A35w4QRRoanYvErJfwTQA
Довод «чтобы сборка из чистого клона требовала только Go» стоял в четырёх
местах (`core/README.md`, `AGENTS.md`, `.gitignore`, `ui-flang/README.md`) и был
шире правды: он не называл ни признака, за которым напечатанное вообще нужно,
ни каталога, которому не подходит вовсе. Замерено в чистом клоне на
`AMD EPYC 7742` — той же машине, на которой сняты замеры раскладки.

ЧТО ОКАЗАЛОСЬ НЕПРАВДОЙ. «Только Go» — это не про `go build`. Снесите
`core/out-go`, `core/out-c` и `ui-flang/out-go` целиком: `go build ./...`,
`go vet ./...` и `go test ./...` в `host/` останутся зелёными — решающий слой
стоит за `flangcore`, без признака собирается заглушка.

ЧТО ОКАЗАЛОСЬ ПРАВДОЙ, И ПОТОМУ ДОВОД НЕ ОТМЕНЁН. Довод про выпуск.
`scripts/build-release.sh` собирает все четыре цели с `-tags flangcore` (стр.
119), падает, если ядра в двоичном не оказалось (стр. 234), и компилятор flang
не зовёт ни разу. Без `core/out-go` тот же путь отвечает «replacement directory
../core/out-go does not exist». То же у `tools/sverka-ui.sh`, единственного
прогона, доказывающего, что две реализации раскладки рисуют один экран: он
собирает дерево дважды и в своей шапке обещает, что компилятор не нужен.

ЧЕГО ЭТО СТОИЛО БЫ. «Один двоичный из одного `cc`» — правда, но не «даром»:
`make -C bootstrap` на v0.7.10 — 38 МБ C в четырёх единицах трансляции,
5 мин 12 с одним вызовом, 1 мин 54 с при `-j4`, 1 мин 48 с при `-j8`, пик
1,7 ГиБ. Язык обещает «около минуты» с `-j8` — вышло почти вдвое больше. Число
растёт, а не падает, и потому 6 304 строки в git остаются дешевле двух минут и
полутора гигабайт на каждой машине, которая собирает выпуск.

ЧТО УБРАНО. `core/out-c` — 12 130 строк, 6 файлов — доводом не покрыт ничем.
Его не читает ни `host/`, ни `scripts/`; зовёт его один `differential.flang`
через `out-c/flang_cli`, а цель `сверка` зависит от `печать`, которая
начинается с `rm -rf out-go out-c`. То есть закоммиченный C не читал никто и
никогда: кому он нужен, тот печатает его заново, и компилятор у него уже есть.
Теперь печатается на месте и игнорируется (`core/.gitignore`).

  напечатанного в git было  29 файлов, 36 487 строк — 46,6 % дерева
  стало                     23 файла,  24 357 строк — 36,7 %
  для сравнения, весь хозяин на Go     33 467 строк

Проверено после правки: `make -C core` — сверка печати 240 входов, расхождений
0, дерево после прогона чистое; `flang io tools/licensing.flang` — бед 0;
`go build`/`vet`/`test` во всех трёх сочетаниях признаков; `tools/sverka-ui.sh`
— расхождений 0.

`tools/licensing.flang` не тронут намеренно: его «Напечатанное» — предикат о
ПУТИ, и для `core/out-c/` он остаётся верным; сторож ходит по `git ls-files`,
так что нечитаемых веток он не завёл.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012A35w4QRRoanYvErJfwTQA
@the-homeless-god
the-homeless-god merged commit 3f1ba38 into master Sep 5, 2026
2 of 6 checks passed
@the-homeless-god
the-homeless-god deleted the a/8148-flang-tui branch September 5, 2026 12:47
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