Files
progcode/editorial/reviews/2021-10-draft.md
T
huncode f6058fbbca
Build and deploy / deploy (push) Successful in 14s
revise October 2021 D runtime articles
2026-07-31 13:15:12 +03:00

209 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Автономное тройное ревью П44 · октябрь 2021 · «Runtime D в сервисе»
Статус: **готово к независимой интеграции**. Это автономный пакет для трёх
существующих slug. Он не подключён к registry: README, <code>articles.json</code>,
общие audit-скрипты, очередь, правила и Git не менялись.
Созданы ровно пять файлов:
- <code>web/scripts/upgrade-2021-10.mjs</code>;
- <code>web/public/assets/editorial/2021/d-runtime-request-path-2021.svg</code>;
- <code>web/public/assets/editorial/2021/d-runtime-allocation-profile-2021.svg</code>;
- <code>web/public/assets/editorial/2021/d-runtime-diagnosis-2021.svg</code>;
- этот документ.
Revision-модуль экспортирует только overlay-поля
<code>slug</code>, <code>title</code>, <code>categories</code>,
<code>cover</code>, <code>excerpt</code>, <code>readingMinutes</code> и
<code>contentHtml</code>. Отдельная проверка подтвердила отсутствие
<code>date</code> и <code>author</code> во всех трёх revision. Базовый архив
сохраняет их исходными.
## Проход 1. Тон, структура и объём — пройдено
| Revision | Проблема и цена в первых двух абзацах | M4 и практическая граница | Body |
| --- | --- | --- | --- |
| Practice | Endpoint объявляют «тормозящим из-за runtime D» без входа, result и границы; цена — случайная глобальная правка | Один request, явный result, budget и owner следующей проверки | **8 109** знаков |
| Mechanism | Слово «быстро» скрывает decode, validation, compute, encode и внешние границы; цена — оптимизация ломает error route или объясняет FFI GC-ом | Trace одного handler, одинаковый result двух вариантов, структура до измерения | **8 544** знака |
| Field | Heavy-ветка пересекает учебный budget и оставляет GC boundary; цена — назвать его паузой или обвинить dependency без вызова | Evidence → contract → units → отдельная граница → обратимый change | **9 633** знака |
- Во всех текстах есть ситуация и стоимость ошибки в начале, таблица,
содержательный <code>figure</code> с <code>alt</code>/<code>figcaption</code>,
исполнимый JS-фрагмент, нумерованный маршрут «симптом → причина → проверка
→ действие», ограничения и отдельный раздел источников.
- Голос М4 октября 2021: короткая техническая речь, одна граница на абзац,
условные выводы вместо выдуманного опыта. Новое умение логично продолжает
предыдущие материалы о данных и событиях: автор изолирует request path и
его контракт, прежде чем рассуждать о runtime.
- На первом автоматическом проходе draft gate указал, что practice и mechanism
не называли проблему буквальным словом в первых 800 знаках. Формулировки
исправлены. В том же self-review обнаружено расхождение: в prose и графике
было написано 11 work units при фактических 9. Все упоминания исправлены,
затем полный draft audit повторён с итогом PASS.
Вердикт: **пройдено**. Нет SLA, production-метрик, benchmark results,
реального профиля или заявления, что runtime сам по себе делает endpoint
быстрее.
## Проход 2. Техника, историческая точность и fixture — пройдено
Сквозная <code>runDRuntimeServiceFixture()</code> выполняется в одном
Node-процессе. Один valid in-memory request проходит
<code>decode → validation → compute → encode</code>; между compute и encode
trace явно сохраняет FFI/I/O boundaries c
<code>invocation: "not-performed"</code>. Invalid request проходит
<code>decode → validation-error → encode-error</code> и не доходит до
compute, FFI или I/O.
| Инвариант | Фактический результат fixture |
| --- | --- |
| Handler result одинаков | обе valid-ветки вернули status 200 и один body с <code>total:42</code> |
| Allocation budget видим | heavy: 12 units при budget 6, вне budget; reuse: 3 units, внутри budget |
| Работа handler не подменена оптимизацией | у valid-веток одинаковые 9 work units |
| GC не выдан за замер | heavy пересекает порог 8 и получает <code>gc-boundary</code> с <code>not-a-runtime-pause</code> |
| FFI/I/O boundary видимы | обе success-ветки содержат две boundaries, но ни одна не выполняет внешний вызов |
| Error route не скрыт | invalid input возвращает status 400 и имеет <code>validation-error</code>/<code>encode-error</code> |
Финальный запуск подтвердил **12 из 12** истинных assertions. Fixture не
запускает D compiler, D runtime, GC, HTTP, file, network, FFI, foreign code,
profiler, benchmark или внешний процесс. Его units не называются bytes,
CPU, latency, временем или паузой.
Исторические и технические claims ограничены первичными/официальными
источниками:
- [D 2.097.2: Automatic Memory Management source snapshot](https://github.com/dlang/dlang.org/blob/d5798c666479e8c4c918221e10ebf997b1f5f89f/spec/garbage.dd) —
неизменяемая терминология automatic memory management и ограничений
collector; в статьях это не превращается в профиль request;
- [D 2.097.2: @nogc function source snapshot](https://github.com/dlang/dlang.org/blob/d5798c666479e8c4c918221e10ebf997b1f5f89f/spec/function.dd) —
историческая граница проверяемого D-кода; атрибут не объявлен
доказательством свойств неизвестной внешней операции;
- [D 2.097.2: ABI source snapshot](https://github.com/dlang/dlang.org/blob/d5798c666479e8c4c918221e10ebf997b1f5f89f/spec/abi.dd) —
историческая граница D/C ABI целевой системы, не договор ownership или
стоимость particular foreign call;
- [D 2.097.2 release record](https://dlang.org/changelog/2.097.2.html) —
официальный выпуск от 9 августа 2021 года, существовавший до всех
октябрьских дат партии;
- [DRuntime core/memory.d at the 2.097.2 snapshot](https://github.com/dlang/druntime/blob/f978df34a48613492240e8398227419b14002bef/src/core/memory.d) —
immutable исходник для исторической проверки терминов.
Все пять ссылок получили HTTP 200 в link preflight. Первые три зафиксированы
на commit <code>d5798c666479e8c4c918221e10ebf997b1f5f89f</code>, на который
указывает тег D 2.097.2; снимок DRuntime отдельно зафиксирован на commit
<code>f978df34a48613492240e8398227419b14002bef</code>. Ни release number, ни
документация не используются как источник несуществующего benchmark,
прошлой pause или поведения воображаемого сервиса.
Вердикт: **пройдено**. Технические результаты относятся ровно к
детерминированной модели, а исторические формулировки не переносят текущую
документацию на незафиксированный запуск 2021 года.
## Проход 3. SVG, ссылки и preflight — пройдено
- В каждом SVG есть <code>title</code>, <code>desc</code> и
<code>role="img"</code>. Visuals поясняют разные вопросы: путь request,
сравнение units и маршрут rollback-safe диагностики.
- Первый mobile render выявил неясные боковые стрелки в request/diagnosis,
переполнение длинных footer-подписей и пересечение колонок в allocation
profile. Стрелки заменены последовательным маршрутом, подписи разбиты на
строки, столбцы разведены; финальный 375 px render просмотрен повторно.
- Static safety scan не нашёл <code>script</code>, <code>foreignObject</code>,
внешних <code>href/src</code> или raster <code>data:image</code>. Все три
файла проходят XML-проверку.
### Фактически выполненные команды
Проверки выполнены 31 июля 2026 года:
<pre><code>cd web &amp;&amp; node --check scripts/upgrade-2021-10.mjs
cd web &amp;&amp; npm run audit:draft -- scripts/upgrade-2021-10.mjs
cd web &amp;&amp; node scripts/upgrade-2021-10.mjs --verify-fixture
cd web &amp;&amp; xmllint --noout \
public/assets/editorial/2021/d-runtime-request-path-2021.svg \
public/assets/editorial/2021/d-runtime-allocation-profile-2021.svg \
public/assets/editorial/2021/d-runtime-diagnosis-2021.svg
cd web &amp;&amp; rg -n -i '&lt;script|&lt;foreignObject|(?:href|src)="https?://|data:image' \
public/assets/editorial/2021/d-runtime-request-path-2021.svg \
public/assets/editorial/2021/d-runtime-allocation-profile-2021.svg \
public/assets/editorial/2021/d-runtime-diagnosis-2021.svg</code></pre>
| Проверка | Реальный результат |
| --- | --- |
| <code>node --check</code> | PASS, code 0 |
| <code>audit:draft</code> | PASS: **8 109 / 8 544 / 9 633** знака; у всех трёх revision есть sections, table, figure, code, route, sources и локальный asset |
| Fixture | PASS, 12 из 12 assertions истинны |
| <code>xmllint --noout</code> | PASS, code 0 для всех трёх SVG |
| SVG safety scan | PASS: совпадений нет; <code>rg</code> завершился code 1 именно потому, что опасные конструкции отсутствуют |
| Link preflight | PASS: пять официальных/первичных ссылок вернули HTTP 200 |
| Sharp 375 px | PASS: три SVG отрендерены в PNG шириной 375 px и просмотрены вручную после исправления overflow/стрелок/пересечения |
| Overlay scope | PASS: у revision только разрешённые изменяемые поля; <code>date</code> и <code>author</code> отсутствуют |
<code>npm run audit:draft</code> завершилась с code 0. npm вывел
существующие предупреждения о пользовательских <code>store-dir</code>,
<code>cache-dir</code> и <code>public-hoist-pattern</code>; пакет их не
меняет.
Намеренно не запускались strict registry audit, production build, browser,
screen reader, D compiler/runtime, реальный profiler, HTTP, I/O, FFI, CI,
deployment, Git add/commit/push или публикация. Эти действия вне автономной
П44. Mascot PNG не добавлялись и не изменялись.
Выпусковой вердикт автономной партии:
**READY FOR INDEPENDENT INTEGRATION**.
## Независимое редакторское ревью и интеграция
Статус: **принято и подключено в editorial overlay 31 июля 2026 года**.
### 1. Факты и техника
- Независимая проверка выявила один исторический риск: первые три source URL
в исходной партии вели на текущую, изменяемую документацию D. Они заменены
на точные исходники официального репозитория <code>dlang/dlang.org</code>
в commit <code>d5798c666479e8c4c918221e10ebf997b1f5f89f</code>. Команда
<code>git ls-remote</code> подтвердила, что на этот commit указывает тег
<code>v2.097.2</code>. Это сохраняет доступное до октября 2021 состояние
терминов automatic memory management, <code>@nogc</code> и ABI.
- Отдельно подтверждено, что commit
<code>f978df34a48613492240e8398227419b14002bef</code> — dereferenced тег
<code>v2.097.2</code> репозитория DRuntime. Таким образом версия и оба
снимка не подменяются текущими исходниками.
- Повторный <code>node --check</code> прошёл. Draft audit подтвердил основной
объём: 8 109, 8 544 и 9 633 знака. Fixture выдал 12 из 12 истинных
assertions: оба valid-варианта вернули status 200 и один body; heavy имеет
12 units при budget 6, reuse — 3; у обоих 9 work units; invalid input
возвращает status 400 и не доходит до compute/FFI/I/O.
- После подключения overlay строгий адресный audit прошёл для всех трёх slug:
practice — 1 figure / 1 table / 1 code, mechanism — 1 / 1 / 1, field —
1 / 2 / 1. В registry 127 revision, в том числе ровно три октябрьские;
дубликатов slug нет. Overlay по-прежнему не содержит полей
<code>date</code> или <code>author</code>.
### 2. Редактура и голос
- Прочитаны все три текста после source correction. Они начинают с конкретной
ошибочной формулировки и стоимости, сохраняют различие между учебной
моделью и фактическим profile, дают отдельные error-path и rollback-safe
шаги. Нет заявлений о production latency, pause, benchmark, реальном D
runtime или выполненном внешнем вызове.
- Язык соответствует октябрю 2021: автор уже работает с границами handler,
конфигурации и внешнего договора, но не присваивает себе зрелый опыт
platform/incident leadership. Английские технические слова привязаны к
trace, коду или таблице; следующий шаг остаётся воспроизводимым.
### 3. Визуал и выпуск
- Три SVG повторно проверены через <code>xmllint --noout</code>, safety scan
не нашёл <code>script</code>, <code>foreignObject</code>, внешних URL или
<code>data:image</code>. Каждый SVG отрендерен Sharp в ширину 375 px и
просмотрен вручную: линии, подписи, контраст, последовательность блоков и
нижние предупреждения остаются читаемыми.
- <code>npm run build</code> завершилась с code 0: Next.js сгенерировал 374
статические страницы. <code>git diff --check</code> также прошёл. Обычные
предупреждения npm о пользовательских <code>store-dir</code>,
<code>cache-dir</code> и <code>public-hoist-pattern</code> не относятся к
этой партии и не повлияли на exit code.
Итог: октябрьские три статьи заменяют исходные архивные тексты через overlay;
после этой интеграции строгий аудит проходит **136 из 358**, остаётся **222**.