6.6 KiB
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, приложение и файлы других месяцев не изменялись.