Files
progcode/web/public/assets/editorial/2027/d-lessons-2027-constraint-matrix.svg
T
2026-07-31 22:26:56 +03:00

13 lines
2.9 KiB
XML
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.
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 720" role="img" aria-labelledby="title desc">
<title id="title">Матрица границы D и C API</title>
<desc id="desc">Таблица связывает атрибут безопасности D, проверку указателя и длины, владельца памяти и допустимый интерфейс C.</desc>
<rect width="1200" height="720" fill="#f7fafc"/><style>text{font-family:Arial,sans-serif;fill:#172033}.head{font-size:29px;font-weight:700}.label{font-size:18px;font-weight:700}.body{font-size:16px}.header{fill:#1f5f8b}.cell{fill:#fff;stroke:#8aa8be;stroke-width:2}.warn{fill:#fff0f0;stroke:#bd3f3f;stroke-width:3}</style>
<text x="55" y="54" class="head">D и C: ограничение → проверка → безопасный интерфейс</text>
<rect x="55" y="95" width="1090" height="65" class="header"/><text x="80" y="135" fill="#fff" class="label">Уровень</text><text x="330" y="135" fill="#fff" class="label">Что проверяем</text><text x="650" y="135" fill="#fff" class="label">Кто владеет правилом</text><text x="945" y="135" fill="#fff" class="label">Ошибка</text>
<g class="body"><rect x="55" y="160" width="1090" height="95" class="cell"/><text x="80" y="212" class="label">@safe</text><text x="330" y="200">ограниченные операции</text><text x="330" y="226">и типы данных</text><text x="650" y="212">компилятор + тест</text><text x="945" y="212" fill="#991b1b">довериться C</text>
<rect x="55" y="255" width="1090" height="95" class="cell"/><text x="80" y="307" class="label">@trusted</text><text x="330" y="295">pointer, length, lifetime</text><text x="330" y="321">до вызова</text><text x="650" y="307">автор wrapper</text><text x="945" y="307" fill="#991b1b">слишком большой scope</text>
<rect x="55" y="350" width="1090" height="95" class="cell"/><text x="80" y="402" class="label">@system</text><text x="330" y="390">raw pointer и ABI</text><text x="330" y="416">вручную</text><text x="650" y="402">review + sanitizer</text><text x="945" y="402" fill="#991b1b">нет контракта</text>
<rect x="55" y="445" width="1090" height="95" class="cell"/><text x="80" y="497" class="label">slice</text><text x="330" y="485">capacity и диапазон</text><text x="330" y="511">вместе с данными</text><text x="650" y="497">граница D</text><text x="945" y="497" fill="#991b1b">length извне</text></g>
<rect x="55" y="580" width="1090" height="78" rx="10" class="warn"/><text x="85" y="617" class="label" fill="#991b1b">СТОП: pointer, length или lifetime не имеют доказанного контракта</text><text x="85" y="642" class="body" fill="#991b1b">Не расширять @trusted; вернуть данные к boundary.</text>
</svg>