0.1 Нормативные термины
| Термин | Значение |
|---|---|
| ДОЛЖЕН / ОБЯЗАН | требование; нарушение — несоответствие стандарту |
| НЕ ДОЛЖЕН | запрет |
| СЛЕДУЕТ | рекомендация; отступление допустимо при обосновании |
| МОЖЕТ | разрешение, поведение необязательно |
| ошибка компиляции | реализация ОБЯЗАНА отвергнуть программу с диагностикой |
| предупреждение | реализация ДОЛЖНА выдать диагностику и МОЖЕТ продолжить |
| паника | невосстановимый сбой задачи (§6.6) |
| определяется реализацией | реализация ДОЛЖНА документировать выбор |
Неопределённого поведения в безопасном коде нет. Оно возможно только внутри блоков unsafe и в FFI (§16).
Пункты «определяется реализацией». Каждый такой пункт помечен в тексте примечанием Определяется реализацией со стабильным якорем impl-… и ссылкой на решение (D-id) и запись реестра расхождений (DIV, docs/divergences.md); все пункты собраны в приложении D вместе с выбором данной реализации — это и есть документация, которой требует таблица выше. Различаются два случая:
- поведение определяется реализацией — Стандарт допускает несколько вариантов, реализация выбирает один и документирует его (например, правило проверки заимствований, §7.2);
- необязательная возможность — часть Стандарта, которую реализация МОЖЕТ не поддерживать (например, QUIC, §13.1). Реализация ДОЛЖНА документировать, что она не поддерживает, и НЕ ДОЛЖНА подменять возможность другим поведением без сообщения. Программа, использующая неподдерживаемую возможность, не обязана компилироваться или запускаться на такой реализации.
См. также
Исходник: docs/spec/oxl-standard.md