Files
2026-07-31 22:26:56 +03:00

6.6 KiB

Март 2027 — редакторское ревью после переписывания

Объём партии

  • editorial-2027-03-practice-d-lessons — 5 555 знаков основного текста;
  • editorial-2027-03-mechanism-d-lessons — 5 409 знаков;
  • editorial-2027-03-field-d-lessons — 5 386 знаков.

Stable slugs сохранены. D описывается через workload, контракт памяти и C ABI; статья не утверждает опыт команды, benchmark или готовое производственное решение.

Проход 1 — факты, техника, пример и источники

  • Practice. До: D рассматривался через абстрактные свойства языка. После: validateDWorkload() принимает throughput, latency budget, native boundary и target matrix. Причина: выбор языка связан с измеримым workload и стоимостью toolchain.
  • Mechanism. До: @safe/@trusted/@system были перечислены как статусы. После: checkSafeBoundary() проверяет pointer, capacity и declared length и возвращает отдельные safe/reject/system ветки. Причина: пример показывает опасную пару pointer/length.
  • Field. До: C ABI объяснялся общими словами о совместимости. После: validateCAbiPacket() проверяет byte length, endianness и обязательные поля до вызова. Причина: это конкретный диагностический маршрут для FFI-ошибки.

Источники проверены HTTP 200 и применены с границами:

  • D Functions — спецификация D, страница сгенерирована 25 July 2026; function contracts и атрибуты; не выбирает язык и не даёт benchmark.
  • D Memory Safety — спецификация D, страница сгенерирована 23 July 2026; значения @safe, @trusted, @system, scope; memory safety не гарантирует portability и отсутствие логических ошибок.
  • D ABI — спецификация D, проверена 31 July 2026; layout и представление типов; не знает vendor header и compiler flags.
  • D Interfacing to C — спецификация D, проверена 31 July 2026; extern(C), типы и массивы на границе; не подтверждает ownership неизвестной библиотеки.

Проход 2 — структура, голос, плотность и мета-лексика

  • Practice. До: текст звучал как совет попробовать D. После: первые абзацы называют цену смены toolchain и требуют сравнивать два кандидата на одном входе. Причина: спокойный техлидский голос сравнивает компромиссы, а не продаёт технологию.
  • Mechanism. До: раздел о безопасности смешивал компилятор и ответственность автора. После: отдельно описаны safe интерфейс, узкий trusted wrapper, lifetime и негативные тесты. Причина: границы стали проверяемыми.
  • Field. До: C ABI сводился к одинаковому имени структуры. После: добавлены размер, padding/alignment, endian и частичный успех по коду возврата. Причина: читатель получает физический контракт пакета.

В body нет внутренней редакционной лексики и авторского сюжета. Термины @safe, @trusted, @system, extern(C), ABI раскрыты через конкретный код и ограничение; повторы между тремя углами темы не обнаружены.

Проход 3 — визуал, мобильная читаемость, доступность и повторы

  • Practice. До: карта показывала вопрос о выборе runtime. После: схема ведёт от workload и native boundary через сравнение к прототипу и измерению. Причина: визуал соответствует validateDWorkload().
  • Mechanism. До: матрица содержала будущие evidence-статусы. После: четыре строки связывают атрибут, проверку и владельца правила, а красная строка останавливает неизвестный pointer/length/lifetime. Причина: схема объясняет границу памяти.
  • Field. До: цикл передавал вопрос следующему владельцу. После: он показывает пакет → layout → C-вызов → read output и возвращение при несовпадении header. Причина: диаграмма стала ABI-алгоритмом.

SVG имеют русские title/desc и достаточный alt/caption. Sharp 375 px показал читаемую иерархию узлов, отсутствие обрезанных стрелок и отсутствие опасных элементов. В HTML каждой статьи есть таблица с заголовками столбцов.

Проверки

node --check scripts/upgrade-2027-03.mjs — PASS
node scripts/upgrade-2027-03.mjs --verify-fixture — PASS, 4/4
npm run audit:draft -- scripts/upgrade-2027-03.mjs — PASS, 3/3
локальные D workload/boundary/ABI examples — PASS, 12/12 для всей партии
xmllint --noout для 3 SVG — PASS
SVG safety scan — PASS
Sharp resize width=375 для 3 SVG — PASS; визуально проверены карта, матрица и ABI-цикл
strict cross-article scan января–апреля: collisions: []

Git, registry, README, articles.json, приложение и файлы других месяцев не изменялись.