Сообщение, объясняющее устройство инструмента, читается как поломка — и признак у таких сообщений всего три
Владелец назвал нейрослопом четыре строки, которые двоичный печатал после успешной печати программы в C:
граница входа пуста: таблицу объявленных типов строит слой типов свидетеля
(«таблицаВхода»), которого в бинарнике нет, а впечатанная (параметров 8905) этой
программе не подходит. Напечатанное соберётся и заработает, но аргументы
прогонщика объявленным типам сверяться не будут.
Здесь всё правда, и всё — не про него. «Свидетель» — наше внутреннее слово для реализации на JavaScript. «таблицаВхода» — имя нашей функции. 8905 — число параметров чужой программы, вшитой в двоичный, к печатаемой отношения не имеющее. Человек попросил код на C и получил рассказ о внутреннем устройстве компилятора вместо ответа на вопрос «что мне с этим делать».
Заменено одной строкой:
аргументы напечатанной программы по типам не проверяются: это ограничение
двоичного flang, полная проверка есть в версии для Node
Чем подтверждено. Прогон 19 августа 2026, ветка work/adr-pakety. Обход всех строк, печатаемых человеку из flang_repl.c и flang_cli.c (разбор литералов вне комментариев): 8 сообщений с внутренним жаргоном, все восемь в flang_repl.c, в flang_cli.c — ноль (там весь вывод машинный, JSON).
Признак: три вида слов, по которым такие сообщения находятся заранее
- наши внутренние слова — «свидетель», «эталон», «слой», «замыкание», «втащен»;
- имена наших функций в ёлочках — «таблицаВхода», «markProven», «Печать программы», «Разбор исходника», «Связать исходники»;
- числа про чужую программу — «параметров 8905», «6 файлов из 7 байт в байт»: это про компилятор, а печатают его тому, кто печатает своё.
Отличать от них надо имена поверхности самого языка: «Провал», «Показать», «Ждать событие» в справке flang io — это конструкции, которые человек пишет сам, и называть их обязательно. Признак не в ёлочках, а в том, чьё это имя.
Где они стояли (восемь)
Одно — после успешной печати (выше). Одно — в отказе на неизвестную цель печати. Одно — в сообщении «эта программа не компилятор», перечислявшем внутренние точки входа. Пять — в справках run, emit (две), repl и в отказе про рантайм. Больше всего их именно в СПРАВКЕ, и это не случайность: справку пишут, когда устройство свежо в голове, а читает её тот, кто про устройство не знает ничего.
Правило, которым чинилось
Оставлять ровно то, что меняет работу читателя: что случилось и что делать. Всё остальное — в комментарий рядом с кодом, где оно и полезно. Проверка: убрать из сообщения все слова, которых человек не мог встретить в руководстве, и посмотреть, осталась ли фраза осмысленной. Если осталась — лишнее и было лишним.
Чем ограничено. Обход механический (поиск по литералам вне комментариев в двух файлах), а решение «жаргон или поверхность языка» принято глазами. Тексты, приезжающие из самого flang (flang/self/bootstrap/compiler.flang), этим обходом не покрыты — там своя дорога.
Связано: cli-help-diverges-between-the-two-implementations, the-installed-binary-is-a-named-subset, the-installed-path-was-never-walked-end-to-end