Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .flangrc
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ script.record-source:check = bootstrap/flang io scripts/guards/record-follows-it
script.record-source:forgery = bootstrap/flang io scripts/guards/record-follows-its-source.fscript --plan Подлог
script.checker:check = bootstrap/flang io flang/proof/checker/tests/run.fscript --max-steps 4000000000 --timeout 600000
script.plan-rules:probe = bootstrap/flang io flang/proof/probes/plan-rules-asked/run.fscript --plan Binary
script.translation:check = sh flang/translation/run.sh
script.translation:check = bootstrap/flang io flang/translation/run.fscript --plan Проверка
script.proved-share:check = bootstrap/flang io flang/proof/share-measure.fscript --max-steps 4000000000 --timeout 900000 -- --set corpus
script.proved-share:forgery = bootstrap/flang io flang/proof/share-ledger-forgery.fscript --max-steps 4000000000 --timeout 900000
script.kernel-verdict:check = bootstrap/flang io flang/proof/kernel-verdict.fscript --max-steps 4000000000 --timeout 900000
Expand Down
57 changes: 44 additions & 13 deletions .github/workflows/binary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -394,9 +394,9 @@ jobs:
#
# Счётчиков долга в дереве было три — раздел «Вне языка» в docs/ROADMAP.md,
# docs/javascript-inventory.md и числа сайта, — и все три считали ОДИН
# язык: JavaScript. Оболочка (50 файлов, 9558 строк), HTML, CSS, пробы на
# СНЯТО 2026-10-04 файлов *.sh = 50 (задачи 0049 и 5821: сняты flang/scripts/word-occupancy.mjs, scripts/seed/seed-freshness.sh и scripts/guards/version-derivations-guard.sh — у каждого двойник на flang доказан прогоном; до них 52, снято 2026-10-04) (задача 5821: семь скриптов scripts/** переехали с оболочки на flang; до них 101, снято 2026-09-17)
# СНЯТО 2026-10-04 строк-в *.sh = 9558 (задачи 0049 и 5821: сняты flang/scripts/word-occupancy.mjs, scripts/seed/seed-freshness.sh и scripts/guards/version-derivations-guard.sh — у каждого двойник на flang доказан прогоном; до них 9756, снято 2026-10-04) (задачи 1426 и 8567: поиск коммита отпечатка по содержимому прибавил 135 строк в scripts/bootstrap-reprint.sh, а отменённая хронология предела шагов убрала 141; до них 9762, снято 2026-09-17) (задача 1400: девять проб на подлог и две честные под правила Н6 и О9 прибавили 42 строки в flang/proof/checker/tests/run.sh) (задача 1416: четырнадцать объявлений ярлыков заведены в скриптах и зов «Сбора» — в хуке; до них 23372, снято 2026-09-17) (задача 5821: семь скриптов scripts/** переехали с оболочки на flang; до них 23980, снято 2026-09-22) (ADR-0046: довод в шапках двух сторожей имён — сперва почему flang/proof не судится, потом почему вошёл в область — прибавил 9 строк; до него 23971, снято 2026-09-17)
# язык: JavaScript. Оболочка (49 файлов, 9344 строк), HTML, CSS, пробы на
# СНЯТО 2026-10-04 файлов *.sh = 49 (перенос flang/translation/run.sh на план flang/translation/run.fscript снял один файл оболочки; до него 50, снято 2026-10-04) (задачи 0049 и 5821: сняты flang/scripts/word-occupancy.mjs, scripts/seed/seed-freshness.sh и scripts/guards/version-derivations-guard.sh — у каждого двойник на flang доказан прогоном; до них 52, снято 2026-10-04) (задача 5821: семь скриптов scripts/** переехали с оболочки на flang; до них 101, снято 2026-09-17)
# СНЯТО 2026-10-04 строк-в *.sh = 9344 (перенос flang/translation/run.sh на план flang/translation/run.fscript снял 214 строк оболочки; до него 9558, снято 2026-10-04) (задачи 0049 и 5821: сняты flang/scripts/word-occupancy.mjs, scripts/seed/seed-freshness.sh и scripts/guards/version-derivations-guard.sh — у каждого двойник на flang доказан прогоном; до них 9756, снято 2026-10-04) (задачи 1426 и 8567: поиск коммита отпечатка по содержимому прибавил 135 строк в scripts/bootstrap-reprint.sh, а отменённая хронология предела шагов убрала 141; до них 9762, снято 2026-09-17) (задача 1400: девять проб на подлог и две честные под правила Н6 и О9 прибавили 42 строки в flang/proof/checker/tests/run.sh) (задача 1416: четырнадцать объявлений ярлыков заведены в скриптах и зов «Сбора» — в хуке; до них 23372, снято 2026-09-17) (задача 5821: семь скриптов scripts/** переехали с оболочки на flang; до них 23980, снято 2026-09-22) (ADR-0046: довод в шапках двух сторожей имён — сперва почему flang/proof не судится, потом почему вошёл в область — прибавил 9 строк; до него 23971, снято 2026-09-17)
# C, Python, awk и Erlang не считались нигде и ни в одной проверке. Долг,
# которого никто не считает, не убывает: его не видно ни в отчёте, ни в
# ленте, и растёт он молча.
Expand All @@ -407,9 +407,9 @@ jobs:
# оболочке или на Python останавливает работу в тот же день.
#
# Замер на этом дереве: 17,7 с и 471 МБ, двоичному хватает `git` и `wc`.
# Предел шагов поднят с умолчания (10 млн): опись обходит 193 файлов и
# Предел шагов поднят с умолчания (10 млн): опись обходит 192 файлов и
# семнадцать языков, и в умолчание не укладывается.
# СНЯТО 2026-10-04 файлов *.sh,*.c,*.h,*.py,*.html,*.css,*.awk,*.erl,*.js,*.mjs,*.java,*.cs,*.ex,*.exs,*.go,*.rs,*.lua,*.vim,*.rb,*.cpp,*.cc,*.hpp,*.hh,ярлык,packaging/asdf/bin/download,packaging/asdf/bin/install,packaging/asdf/bin/list-all,.githooks/pre-push = 193 (задачи 0049 и 5821: сняты flang/scripts/word-occupancy.mjs, scripts/seed/seed-freshness.sh и scripts/guards/version-derivations-guard.sh — у каждого двойник на flang доказан прогоном; до них 196, снято 2026-10-04) (две честные пары сличителя перевода: отбор по признаку и объявленная мера; до них 194, снято 2026-09-17) (задача 5821: семь проверок scripts/** стали планами; до них 251, снято 2026-09-27) (задача 5821: семь скриптов scripts/** переехали с оболочки на flang; до них 256, снято 2026-09-17)
# СНЯТО 2026-10-04 файлов *.sh,*.c,*.h,*.py,*.html,*.css,*.awk,*.erl,*.js,*.mjs,*.java,*.cs,*.ex,*.exs,*.go,*.rs,*.lua,*.vim,*.rb,*.cpp,*.cc,*.hpp,*.hh,ярлык,packaging/asdf/bin/download,packaging/asdf/bin/install,packaging/asdf/bin/list-all,.githooks/pre-push = 192 (перенос flang/translation/run.sh на план flang/translation/run.fscript снял один файл вне flang; до него 193, снято 2026-10-04) (задачи 0049 и 5821: сняты flang/scripts/word-occupancy.mjs, scripts/seed/seed-freshness.sh и scripts/guards/version-derivations-guard.sh — у каждого двойник на flang доказан прогоном; до них 196, снято 2026-10-04) (две честные пары сличителя перевода: отбор по признаку и объявленная мера; до них 194, снято 2026-09-17) (задача 5821: семь проверок scripts/** стали планами; до них 251, снято 2026-09-27) (задача 5821: семь скриптов scripts/** переехали с оболочки на flang; до них 256, снято 2026-09-17)
#
# СКОЛЬКО ИЗ ЭТИХ ПЯТИДЕСЯТИ МИЛЛИОНОВ УХОДИТ, замер 29 августа 2026.
# Меряно перебором самого предела: при 10 500 000 опись умирает
Expand Down Expand Up @@ -1480,11 +1480,16 @@ jobs:
# 6ebd5e18e, но ни один workflow его не звал, и два сторожа — «кто зовёт
# сторожей» и сторож проб порчи — держали на нём хук перед пушем красным.
#
# С 4 октября 2026 набор гоняет ПЛАН `flang/translation/run.fscript` (прежняя
# оболочка `run.sh` снята): приговор доказан ядром, ожидания 32 опытов стоят
# таблицей. Жалоба идёт строкой « · <имя опыта> — ждали код N …», и проба
# порчи ниже ищет в выводе ИМЕННО эту строку.
#
# Работа соседняя чекеру и отдельная по той же причине: компилятор не
# собирается и не зовётся, нужны только `cc` и `sh`. Сличитель, который
# спрашивает ответ у того же двоичного, о котором судит, не стоит ничего.
# Замер 14 сентября 2026 на рабочей машине: весь прогон — сборка сличителя
# и шестнадцать опытов — 1,2 с.
# собирается, нужны только `cc` и `sh`. Но план зовётся собранным двоичным,
# поэтому шаг сборки семени здесь ЕСТЬ, а сличитель по-прежнему не спрашивает
# ответ у того двоичного, о котором судит. Замер 4 октября 2026 на рабочей
# машине: весь прогон — сборка сличителя и тридцать два опыта — 4,3 с.
#
# Порча внешняя, одна строка напечатанного C «Светофора»: штраф красного
# 500 → 501 при прежнем протоколе. Прогон обязан покраснеть ИМЕННО на этой
Expand All @@ -1494,11 +1499,37 @@ jobs:
perevod:
name: translation-matcher
runs-on: ubuntu-latest
timeout-minutes: 10
# Было 10, пока набор гоняла оболочка: `cc` и шестнадцать опытов. План
# зовётся двоичным, и при промахе кеша работа сперва СОБИРАЕТ семя; на
# раннере это минуты, а не 4,3 с здешнего прогона. 20 — запас к соседней
# работе `guards-selftest`, которая собирает то же и просит столько же.
timeout-minutes: 20
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- name: Check verdict cache
uses: ./.github/actions/release-without-cache
# Двоичный берётся готовым по тем же правилам, что у соседних работ:
# ключ кеша — хеш всех входов сборки плюс флаги; негодный кеш собирается
# заново, а не принимается молча.
- name: Restore binary cache
id: kesh-dvoichnogo
uses: actions/cache@v4
with:
path: |
bootstrap/flang
bootstrap/libcompiler_flang.a
key: flang-bootstrap-${{ runner.os }}-${{ hashFiles('bootstrap/*.c', 'bootstrap/*.h', 'bootstrap/Makefile') }}-${{ env.FLANG_CFLAGS }}
- name: Build bootstrap
if: steps.kesh-dvoichnogo.outputs.cache-hit != 'true'
run: make -C bootstrap -j"$(nproc)" CFLAGS="$FLANG_CFLAGS"
- name: Verify cached binary
if: steps.kesh-dvoichnogo.outputs.cache-hit == 'true'
run: |
set -u
if ! ./bootstrap/flang --version >/dev/null 2>&1; then
echo "::warning::двоичный из кеша не запускается — собираю заново"
make -C bootstrap -j"$(nproc)" CFLAGS="$FLANG_CFLAGS"
fi
- name: Probe translation matcher
run: |
set -u
Expand All @@ -1510,20 +1541,20 @@ jobs:
echo "ПОДЛОГ НЕ СОБРАЛСЯ: строки «fl_t1 = fl_number(500.0);» в $podlog уже нет — поправить подлог, сличитель ни при чём" >&2
exit 1
fi
if sh flang/translation/run.sh > "$RUNNER_TEMP/perevod.out" 2>&1; then
if bootstrap/flang run-script translation:check > "$RUNNER_TEMP/perevod.out" 2>&1; then
git checkout -- "$podlog"
cat "$RUNNER_TEMP/perevod.out"
echo "сличитель промолчал на подлоге — проверять им нечего" >&2
exit 1
fi
git checkout -- "$podlog"
cat "$RUNNER_TEMP/perevod.out"
if ! grep -qF 'КРАСЕН честная пара с разбором' "$RUNNER_TEMP/perevod.out"; then
if ! grep -qF '· честная пара с разбором' "$RUNNER_TEMP/perevod.out"; then
echo "прогон покраснел, но не на испорченной паре — краснота не по делу" >&2
exit 1
fi
- name: Check C translation
run: sh flang/translation/run.sh
run: bootstrap/flang run-script translation:check

storozha:
name: guards-selftest
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -212,8 +212,8 @@ jobs:
# 31 августа 2026 в дереве нашлось 31 место в 14 файлах, где записанное рукой
# число разошлось с тем, что лежит рядом: `docs/tree-inventory.md` считала
# `seed-parses-sources-guard.sh` в 83 строки при 195, оболочку — в 66 файлов
# при 71 тогдашних — сегодня их 50;
# СНЯТО 2026-10-04 файлов *.sh = 50 (задача 5821: scripts/guards/version-derivations-guard.sh снят — сверка производных версии стала планом scripts/guards/version-derivations-guard.fscript, приговор доказан ядром (13 из 13), хук зовёт план; до него 51, снято 2026-10-04) (задача 0049: scripts/seed/seed-freshness.sh снят — проверка давно живёт планом scripts/seed/seed-freshness.fscript, а переходник ещё и терял довод (exec без "$@"); до него 52, снято 2026-10-04) (задача 5821: семь скриптов scripts/** переехали с оболочки на flang; до них 101, снято 2026-09-21) `flang/cat/SPEC.md` обещала восемнадцать поручений при 22;
# при 71 тогдашних — сегодня их 49;
# СНЯТО 2026-10-04 файлов *.sh = 49 (перенос flang/translation/run.sh на план flang/translation/run.fscript снял один файл оболочки; до него 50, снято 2026-10-04) (задача 5821: scripts/guards/version-derivations-guard.sh снят — сверка производных версии стала планом scripts/guards/version-derivations-guard.fscript, приговор доказан ядром (13 из 13), хук зовёт план; до него 51, снято 2026-10-04) (задача 0049: scripts/seed/seed-freshness.sh снят — проверка давно живёт планом scripts/seed/seed-freshness.fscript, а переходник ещё и терял довод (exec без "$@"); до него 52, снято 2026-10-04) (задача 5821: семь скриптов scripts/** переехали с оболочки на flang; до них 101, снято 2026-09-21) `flang/cat/SPEC.md` обещала восемнадцать поручений при 22;
# `flang/PLAN.md` — пять вариантов «Поручение» при 22. Каждое из этих чисел
# было ВЕРНО В ДЕНЬ ЗАПИСИ и солгало назавтра, и сторожа не было ни на одном.
#
Expand Down
2 changes: 1 addition & 1 deletion docs/four-coverages.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ Lean: это счёт текста, а не доказательство.
(ADR-0030). Генератор кода ведёт протокол перевода, а отдельная программа на C
(`flang/translation/matcher.c`) переигрывает протокол против исходника и напечатанного кода.
Меряется двумя числами: сколько опытов в
[`flang/translation/run.sh`](../flang/translation/run.sh) (честные пары обязаны сойтись,
[`flang/translation/run.fscript`](../flang/translation/run.fscript) (честные пары обязаны сойтись,
подделки — не приняться) и сколько правил печати из закрытого списка
[`flang/translation/PRINT-RULES.tsv`](../flang/translation/PRINT-RULES.tsv) сверяются с ТЕКСТОМ
ИСХОДНИКА, а не только с протоколом.
Expand Down
Loading
Loading