flang компилятор доказывает, что программа не зациклится 0.6.2 GitHub

Груз письма едет билетом, а не значением, — и этим отсутствие полиморфизма перестаёт мешать

Таблица процессов обязана носить письма, а письмо несёт значение ПРОГРАММЫ, у которой свои типы. Полиморфизма в языке нет, джокер в словаре действий один и служебный, — и на этом переносе таблицы процессов на flang легко остановиться.

Останавливаться не надо. Решению груз не нужен. Планировщик решает про ИМЕНА, ДЛИНУ ЯЩИКА, ЖИВОСТЬ и ПОТОЛОК, и ни одно из этих решений в груз не смотрит ни разу. Значит в таблице едет БИЛЕТ — число, по которому хозяин найдёт у себя настоящее значение.

Признак, по которому приём применим. Возьмите каждое решение и спросите, читает ли оно груз. Если ни одно не читает — груз в решении не нужен вовсе, и чужой тип заменяется числом без потери. Если хотя бы одно читает — приём не работает, и это честный ответ, а не повод искать обход.

Чем подтверждено. flang/conc/scheduler.flang: объект «Письмо» — это «билет»: нат и «начатое»: признак, и больше ничего. Узлы на python и go держат словарь «билет → значение» у себя; 67 744 сверки на восьми целях и работающий провод между двумя целями (flang/test/uzel-celi.test.mjs). Ветка vypusk/uzel-vezde, 20 августа 2026.

Приём не новый, а замеченный. Ровно так же устроен слой связи: веление «Доставить письмо» называет АДРЕСАТА, а груз оставляет узлу. Там это сделали не называя, здесь названо — и потому переносится на следующий случай.

Чем ограничено. Билет — ключ У ХОЗЯИНА, и хозяин обязан его чистить: пока письмо в ящике, значение живёт. У узлов python и go словарь билетов не чистится вовсе, и на долгой работе он растёт. Названо, не починено.

Связано: the-node-scheduler-is-portable-219-decisions-of-224-lines, a-decision-about-the-world-is-portable-even-when-the-world-is-not