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

Страница, написанная как отчёт о нашей работе, читателю языка бесполезна — даже если каждое число в ней верно

Худший случай был назван «Роадмап». Роадмап отвечает на вопрос «что будет дальше»; та страница на две трети состояла из раздела «Сделано», а в нём — время сборки (72,6 с), размер собранного файла (7 275 248 байт), разница в байтах между двумя способами сборки (15 032), число файлов и байт при сверке самопечати. Владелец открыл её и сказал: «тут тоже мусор».

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

Числа такой страницы протухают первыми, потому что их никто не пересчитывает. Проверено на том же роадмапе: из набранных руками чисел разошлись с деревом почти все — пакет library-api весил там 13 161 байт против 105 937 сегодняшних (сжатие убрано из формата), сверка самопечати называла 7 файлов и 13 304 108 байт при 6 файлах и 15 362 878 байтах в bootstrap/. Числа, которые ставит сборка подстановкой, при этом не разошлись ни одно — см. typed-numbers-drift-substituted-ones-cannot.

Ещё там жило прямо ложное утверждение, и жило именно потому, что раздел «Сделано» никто не перечитывал: «оболочка flang repl вычислитель пока не зовёт». Она зовёт. В bootstrap/flang_repl.c вычисление выключается только когда рядом нет компилятора C, заголовка flang_runtime.h или архива библиотеки (why_no_eval), то есть при обычной установке из brew или make install оболочка считает — и страница «Первая программа» показывает это прогоном. Две страницы одного сайта противоречили друг другу.

Что сделано вместо. Страница переписана планом: где язык сейчас (четыре числа, и все — подстановкой), что делается сейчас, что за чем стоит в очереди, что решено не делать. Отчётные числа не выброшены, а отправлены туда, где у них есть читатель, — на страницу улик установки и в раздел для тех, кто развивает язык.

Чем ограничено. Признак «мы/раньше» ловит строй текста, а не ложь: страница может быть отчётом и при этом верной до последней цифры. Он говорит только, что адресат у неё другой.

Связано: write-in-plain-language, typed-numbers-drift-substituted-ones-cannot, a-plan-row-read-as-a-result-is-how-pages-start-promising