Справочник Ada (Ada 2022)
C.4 Требования к предварительной разработке
Этот подпункт определяет дополнительные требования к реализации и документации для атрибута Preelaborate (см. 10.2.1).
Требования к реализации
Реализация не должна иметь никаких накладных расходов во время выполнения для проверок разработки подпрограмм и protected_bodies, объявленных в предварительно разработанных библиотечных модулях.
Реализация не должна выполнять какие-либо операции записи в память после загрузки для разработки объектов-констант, объявленных непосредственно в области объявления предварительно разработанного библиотечного пакета, при условии, что подтип и начальное выражение (или значения по умолчанию, если инициализируются по умолчанию) object_declaration удовлетворяют следующим ограничениям. Значение времени загрузки определяется реализацией.
- Любой subtype_mark обозначает статически ограниченный подтип со статически ограниченными подкомпонентами, если таковые имеются;
- ни один subtype_mark не обозначает контролируемый тип, частный тип, частное расширение, формальный частный тип обобщения, формальный производный тип обобщения или потомка такого типа;
- любое constraint является статическим ограничением;
- любой allocator предназначен для типа доступа к константе;
- любое использование предопределённых операторов появляется только внутри статических выражений;
- любые primaries, которые являются names, кроме attribute_references для атрибутов Access или Address, появляются только внутри статических выражений;
- любое name, которое не является частью статического выражения, является расширенным именем или direct_name, статически называющим какой-либо сущность;
- любое discrete_choice array_aggregate является статическим;
- никакая проверка, определяемая языком, связанная с разработкой object_declaration, не может завершиться неудачей.
Требования к документации
Реализация должна документировать любые обстоятельства, при которых разработка предварительно разработанного пакета вызывает выполнение кода во время выполнения.
Реализация должна документировать, позволяет ли метод инициализации предварительно разработанных переменных перезапускать раздел без перезагрузки.
Рекомендации по реализации
Рекомендуется реализовывать предварительно разработанные пакеты таким образом, чтобы во время выполнения выполнялось мало или совсем не выполнялось код для разработки сущностей, которые ещё не охвачены требованиями к реализации.