Files
huncode f6058fbbca
Build and deploy / deploy (push) Successful in 14s
revise October 2021 D runtime articles
2026-07-31 13:15:12 +03:00

17 KiB
Raw Permalink Blame History

Автономное тройное ревью П44 · октябрь 2021 · «Runtime D в сервисе»

Статус: готово к независимой интеграции. Это автономный пакет для трёх существующих slug. Он не подключён к registry: README, articles.json, общие audit-скрипты, очередь, правила и Git не менялись.

Созданы ровно пять файлов:

  • web/scripts/upgrade-2021-10.mjs;
  • web/public/assets/editorial/2021/d-runtime-request-path-2021.svg;
  • web/public/assets/editorial/2021/d-runtime-allocation-profile-2021.svg;
  • web/public/assets/editorial/2021/d-runtime-diagnosis-2021.svg;
  • этот документ.

Revision-модуль экспортирует только overlay-поля slug, title, categories, cover, excerpt, readingMinutes и contentHtml. Отдельная проверка подтвердила отсутствие date и author во всех трёх 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 знака
  • Во всех текстах есть ситуация и стоимость ошибки в начале, таблица, содержательный figure с alt/figcaption, исполнимый 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 — пройдено

Сквозная runDRuntimeServiceFixture() выполняется в одном Node-процессе. Один valid in-memory request проходит decode → validation → compute → encode; между compute и encode trace явно сохраняет FFI/I/O boundaries c invocation: "not-performed". Invalid request проходит decode → validation-error → encode-error и не доходит до compute, FFI или I/O.

Инвариант Фактический результат fixture
Handler result одинаков обе valid-ветки вернули status 200 и один body с total:42
Allocation budget видим heavy: 12 units при budget 6, вне budget; reuse: 3 units, внутри budget
Работа handler не подменена оптимизацией у valid-веток одинаковые 9 work units
GC не выдан за замер heavy пересекает порог 8 и получает gc-boundary с not-a-runtime-pause
FFI/I/O boundary видимы обе success-ветки содержат две boundaries, но ни одна не выполняет внешний вызов
Error route не скрыт invalid input возвращает status 400 и имеет validation-error/encode-error

Финальный запуск подтвердил 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 — неизменяемая терминология automatic memory management и ограничений collector; в статьях это не превращается в профиль request;
  • D 2.097.2: @nogc function source snapshot — историческая граница проверяемого D-кода; атрибут не объявлен доказательством свойств неизвестной внешней операции;
  • D 2.097.2: ABI source snapshot — историческая граница D/C ABI целевой системы, не договор ownership или стоимость particular foreign call;
  • D 2.097.2 release record — официальный выпуск от 9 августа 2021 года, существовавший до всех октябрьских дат партии;
  • DRuntime core/memory.d at the 2.097.2 snapshot — immutable исходник для исторической проверки терминов.

Все пять ссылок получили HTTP 200 в link preflight. Первые три зафиксированы на commit d5798c666479e8c4c918221e10ebf997b1f5f89f, на который указывает тег D 2.097.2; снимок DRuntime отдельно зафиксирован на commit f978df34a48613492240e8398227419b14002bef. Ни release number, ни документация не используются как источник несуществующего benchmark, прошлой pause или поведения воображаемого сервиса.

Вердикт: пройдено. Технические результаты относятся ровно к детерминированной модели, а исторические формулировки не переносят текущую документацию на незафиксированный запуск 2021 года.

Проход 3. SVG, ссылки и preflight — пройдено

  • В каждом SVG есть title, desc и role="img". Visuals поясняют разные вопросы: путь request, сравнение units и маршрут rollback-safe диагностики.
  • Первый mobile render выявил неясные боковые стрелки в request/diagnosis, переполнение длинных footer-подписей и пересечение колонок в allocation profile. Стрелки заменены последовательным маршрутом, подписи разбиты на строки, столбцы разведены; финальный 375 px render просмотрен повторно.
  • Static safety scan не нашёл script, foreignObject, внешних href/src или raster data:image. Все три файла проходят XML-проверку.

Фактически выполненные команды

Проверки выполнены 31 июля 2026 года:

cd web && node --check scripts/upgrade-2021-10.mjs
cd web && npm run audit:draft -- scripts/upgrade-2021-10.mjs
cd web && node scripts/upgrade-2021-10.mjs --verify-fixture
cd web && 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 && rg -n -i '<script|<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
Проверка Реальный результат
node --check PASS, code 0
audit:draft PASS: 8 109 / 8 544 / 9 633 знака; у всех трёх revision есть sections, table, figure, code, route, sources и локальный asset
Fixture PASS, 12 из 12 assertions истинны
xmllint --noout PASS, code 0 для всех трёх SVG
SVG safety scan PASS: совпадений нет; rg завершился code 1 именно потому, что опасные конструкции отсутствуют
Link preflight PASS: пять официальных/первичных ссылок вернули HTTP 200
Sharp 375 px PASS: три SVG отрендерены в PNG шириной 375 px и просмотрены вручную после исправления overflow/стрелок/пересечения
Overlay scope PASS: у revision только разрешённые изменяемые поля; date и author отсутствуют

npm run audit:draft завершилась с code 0. npm вывел существующие предупреждения о пользовательских store-dir, cache-dir и public-hoist-pattern; пакет их не меняет.

Намеренно не запускались 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. Они заменены на точные исходники официального репозитория dlang/dlang.org в commit d5798c666479e8c4c918221e10ebf997b1f5f89f. Команда git ls-remote подтвердила, что на этот commit указывает тег v2.097.2. Это сохраняет доступное до октября 2021 состояние терминов automatic memory management, @nogc и ABI.
  • Отдельно подтверждено, что commit f978df34a48613492240e8398227419b14002bef — dereferenced тег v2.097.2 репозитория DRuntime. Таким образом версия и оба снимка не подменяются текущими исходниками.
  • Повторный node --check прошёл. 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 по-прежнему не содержит полей date или author.

2. Редактура и голос

  • Прочитаны все три текста после source correction. Они начинают с конкретной ошибочной формулировки и стоимости, сохраняют различие между учебной моделью и фактическим profile, дают отдельные error-path и rollback-safe шаги. Нет заявлений о production latency, pause, benchmark, реальном D runtime или выполненном внешнем вызове.
  • Язык соответствует октябрю 2021: автор уже работает с границами handler, конфигурации и внешнего договора, но не присваивает себе зрелый опыт platform/incident leadership. Английские технические слова привязаны к trace, коду или таблице; следующий шаг остаётся воспроизводимым.

3. Визуал и выпуск

  • Три SVG повторно проверены через xmllint --noout, safety scan не нашёл script, foreignObject, внешних URL или data:image. Каждый SVG отрендерен Sharp в ширину 375 px и просмотрен вручную: линии, подписи, контраст, последовательность блоков и нижние предупреждения остаются читаемыми.
  • npm run build завершилась с code 0: Next.js сгенерировал 374 статические страницы. git diff --check также прошёл. Обычные предупреждения npm о пользовательских store-dir, cache-dir и public-hoist-pattern не относятся к этой партии и не повлияли на exit code.

Итог: октябрьские три статьи заменяют исходные архивные тексты через overlay; после этой интеграции строгий аудит проходит 136 из 358, остаётся 222.