Справочник по Аде (Ada 2022)
M.2 Реализационно-зависимые характеристики
Язык Ада допускает определённую зависимость от машины контролируемым образом. Каждая реализация Ады должна документировать все реализационно-зависимые характеристики:
- Следуют ли рекомендации, содержащиеся в разделе Рекомендации по реализации — см. M.3 для списка. См. 1.1.2(37).
- Ограничения по ёмкости реализации. См. 1.1.3(3).
- Отклонения от стандарта, которые трудно избежать, учитывая среду выполнения реализации. См. 1.1.3(6).
- Какие code_statement вызывают внешние взаимодействия. См. 1.1.3(10).
- Кодированное представление текста программы на Аде. См. 2.1(4/5).
- Семантика программы на Аде, текст которой не находится в Нормальной форме C. См. 2.1(4.1/5).
- Этот абзац был удалён.
- Представление конца строки. См. 2.2(2/3).
- Максимальная длина строки и длина лексического элемента. См. 2.2(14).
- Реализационно-зависимые директивы. См. 2.8(14).
- Влияние директивы Optimize. См. 2.8(27).
- Строка сообщения, связанная с исключением Assertion_Error, которое возникает из-за неудачи проверки предиката, если нет соответствующего аспекта Predicate_Failure. См. 3.2.4(31).
- Предопределённые целочисленные типы, объявленные в Standard. См. 3.5.4(25).
- Любые нестандартные целочисленные типы и операторы, определённые для них. См. 3.5.4(26/5).
- Любые нестандартные вещественные типы и операторы, определённые для них. См. 3.5.6(8/5).
- Какие комбинации запрошенной десятичной точности и диапазона поддерживаются для типов с плавающей точкой. См. 3.5.7(7).
- Предопределённые типы с плавающей точкой, объявленные в Standard. См. 3.5.7(16/5).
- small обычного типа с фиксированной точкой. См. 3.5.9(8/2).
- Какие комбинации small, диапазона и digits поддерживаются для типов с фиксированной точкой. См. 3.5.9(10).
- Результат Tags.Wide_Wide_Expanded_Name для типов, объявленных внутри безымянного block_statement. См. 3.9(10).
- Последовательность символов значения, возвращаемого Tags.Expanded_Name (соответственно, Tags.Wide_Expanded_Name), когда некоторые графические символы Tags.Wide_Wide_Expanded_Name не определены в Character (соответственно, Wide_Character). См. 3.9(10.1/2).
- Реализационно-зависимые атрибуты. См. 4.1.4(12/5).
- Значение параметра для Empty для некоторых container_aggregate. См. 4.3.5(40).
- Максимальное количество фрагментов для параллельного выражения с сокращением без chunk_specification. См. 4.5.10(21).
- Округление вещественных статических выражений, которые находятся точно посередине между двумя машинами. См. 4.9(38/2).
- Максимальное количество фрагментов для параллельного обобщённого итератора без chunk_specification. См. 5.5.2(10).
- Количество фрагментов для итератора компонента массива. См. 5.5.2(11).
- Расширения аспекта Global. См. 6.1.2(43).
- Обстоятельства, при которых реализация передаёт нулевое значение для преобразования представления типа доступа, используемого в качестве параметра out. См. 6.4.1(19/5).
- Любые расширения аспекта Default_Initial_Condition. См. 7.3.3(11).
- Любые реализационно-зависимые типы времени. См. 9.6(6/3).
- База времени, связанная с относительными задержками. См. 9.6(20).
- База времени типа Calendar.Time. См. 9.6(23).
- Часовой пояс, используемый для операций пакета Calendar. См. 9.6(24/2).
- Любое ограничение на delay_until_statement в select_statement. См. 9.6(29).
- Результат Calendar.Formatting.Image, если его аргумент представляет более 100 часов. См. 9.6.1(86/5).
- Этот абзац был удалён.
- Реализационно-зависимые политики проверки конфликтов. См. 9.10.1(5).
- Представление compilation. См. 10.1(2).
- Любые ограничения на compilationы, содержащие несколько compilation_unitов. См. 10.1(4).
- Механизмы создания среды и добавления и замены единиц компиляции. См. 10.1.4(3/2).
- Механизмы добавления единицы компиляции, упомянутой в limited_with_clause, в среду. См. 10.1.4(3/2).
- Способ явного назначения единиц библиотек разбиению. См. 10.2(2).
- Реализационно-зависимые средства, если таковые имеются, для указания единиц компиляции, необходимых данной единицей компиляции. См. 10.2(2).
- Способ обозначения основной подпрограммы разбиения. См. 10.2(7).
- Порядок обработки library_itemов. См. 10.2(18).
- Передача параметров и возврат функций для основной подпрограммы. См. 10.2(21).
- Механизмы построения и запуска разбиений. См. 10.2(24/5).
- Подробности выполнения программы, включая завершение программы. См. 10.2(25).
- Семантика любых неактивных разбиений, поддерживаемых реализацией. См. 10.2(28/3).
- Информация, возвращаемая Exception_Message. См. 11.4.1(10.1/4).
- Результат Exceptions.Wide_Wide_Exception_Name для исключений, объявленных внутри безымянного block_statement. См. 11.4.1(12).
- Последовательность символов значения, возвращаемого Exceptions.Exception_Name (соответственно, Exceptions.Wide_Exception_Name), когда некоторые графические символы Exceptions.Wide_Wide_Exception_Name не определены в Character (соответственно, Wide_Character). См. 11.4.1(12.1/2).
- Информация, возвращаемая Exception_Information. См. 11.4.1(13/2).
- Реализационно-зависимые идентификаторы policy_identifier и assertion_aspect_marks, разрешённые в директиве Assertion_Policy. См. 11.4.2(9/5).
- Политика проверки по умолчанию. См. 11.4.2(10).
- Реализационно-зависимые имена проверок. См. 11.5(27).
- Существование и смысл второго параметра директивы Unsuppress. См. 11.5(27.1/2).
- Случаи, которые вызывают конфликты между представлением предков type_declaration. См. 13.1(13.1/3).
- Интерпретация каждого аспекта представления. См. 13.1(20).
- Любые ограничения, наложенные на указание аспектов представления. См. 13.1(20).
- Реализационно-зависимые аспекты, включая синтаксис указания таких аспектов и правила легитимности таких аспектов. См. 13.1.1(38).
- Набор машинных скаляров. См. 13.3(8.1/3).
- Значение Size для неопределённых подтипов. См. 13.3(48).
- Значение Object_Size для неопределённых подтипов. См. 13.3(58).
- Стандартное внешнее представление тега типа. См. 13.3(75/3).
- Что определяет, является ли единица компиляции одинаковой в двух разных разбиениях. См. 13.3(76).
- Реализационно-зависимые компоненты. См. 13.5.1(15).
- Если Word_Size = Storage_Unit, порядок бит по умолчанию. См. 13.5.3(5).
- Содержимое видимой части пакета System. См. 13.7(2).
- Диапазон Storage_Elements.Storage_Offset, модуль Storage_Elements.Storage_Element и объявление Storage_Elements.Integer_Address. См. 13.7.1(11).
- Содержимое видимой части пакета System.Machine_Code и значение code_statementов. См. 13.8(7).
- Результат неявного преобразования для экземпляров со скалярными типами результата, значение которого не определено языком. См. 13.9(11).
- Влияние неявного преобразования для экземпляров с нескалярными типами результата, эффект которого не определён языком. См. 13.9(11).
- Этот абзац был удалён.
- Предоставляет ли реализация имена, доступные пользователю, для стандартного типа(ов) пула. См. 13.11(17).
- Значение Storage_Size, когда ни Storage_Size, ни Storage_Pool не указаны для типа доступа. См. 13.11(18).
- Этот абзац был удалён.
- Эффект указания аспекта Default_Storage_Pool для экземпляра языка-определённого обобщённого блока. См. 13.11.3(5).
- Этот абзац был удалён.
- Содержимое элементов потока, считываемых и записываемых атрибутами Read и Write элементарных типов. См. 13.13.2(9).
- Имена и характеристики числовых подтипов, объявленных в видимой части пакета Standard. См. A.1(3).
- Значения, возвращаемые Strings.Hash. См. A.4.9(3/2).
- Значение, возвращаемое процедурой Text_Buffer Get, если любой символ в возвращаемой последовательности не определён в Character. См. A.4.12(34).
- Значение, возвращаемое процедурой Text_Buffer Wide_Get, если любой символ в возвращаемой последовательности не определён в Wide_Character. См. A.4.12(34).
- Точность, фактически достигнутая элементарными функциями. См. A.5.1(1).
- Знак нулевого результата от некоторых операторов или функций в Numerics.Generic_Elementary_Functions, когда Float_Type'Signed_Zeros равен True. См. A.5.1(46).
- Значение Numerics.Float_Random.Max_Image_Width. См. A.5.2(27).
- Значение Numerics.Discrete_Random.Max_Image_Width. См. A.5.2(27).
- Этот абзац был удалён.
- Строковое представление состояния генератора случайных чисел. См. A.5.2(38).
- Этот абзац был удалён.
- Значения атрибутов Model_Mantissa, Model_Emin, Model_Epsilon, Model, Safe_First и Safe_Last, если Приложение Numerics не поддерживается. См. A.5.3(72).
- Этот абзац был удалён.
- Значение Buffer_Size в Storage_IO. См. A.9(10).
- Внешние файлы, связанные со стандартными входными, выходными и ошибочными файлами. См. A.10(5).
- Точность значения, производимого Put. См. A.10.9(36).
- Текущий размер файла потока, для которого позиционирование не поддерживается. См. A.12.1(1.1/1).
- Значение Argument_Count, Argument и Command_Name для пакета Command_Line. Границы типа Command_Line.Exit_Status. См. A.15(1).
- Интерпретация имён файлов и каталогов. См. A.16(46/2).
- Максимальное значение размера файла в Directories. См. A.16(87/2).
- Результат Directories.Size для каталога или специального файла. См. A.16(93/2).
- Результат Directories.Modification_Time для каталога или специального файла. См. A.16(95/2).
- Интерпретация непустого шаблона поиска в Directories. См. A.16(104/3).
- Результаты поиска в Directories, если содержимое каталога изменяется во время поиска. См. A.16(110/3).
- Определение и значение переменной среды. См. A.17(1/2).
- Случаи, когда переменная среды не может быть определена. См. A.17(16/2).
- Имена переменных среды, для которых Set имеет эффект Clear. См. A.17(17/2).
- Значение Containers.Hash_Type'Modulus. Значение Containers.Count_Type'Last. См. A.18.1(7/2).
- Имена конвенций, определённые реализацией. См. B.1(11/3).
- Значение имён ссылок. См. B.1(36).
- Способ выбора имён ссылок, когда ни имя ссылки, ни адрес импортированного или экспортированного объекта не указаны. См. B.1(36).
- Эффект pragma Linker_Options. См. B.1(37).
- Содержимое видимой части пакета Interfaces и его языка-определённых потомков. См. B.2(1).
- Потомки пакета Interfaces, определённые реализацией. См. B.2(11).
- Определения некоторых типов и констант в Interfaces.C. См. B.3(41).
- Типы Floating, Long_Floating, Binary, Long_Binary, Decimal_Element и COBOL_Character; и инициализации переменных Ada_To_COBOL и COBOL_To_Ada в Interfaces.COBOL. См. B.4(50).
- Типы Fortran_Integer, Real, Double_Precision и Character_Set в Interfaces.Fortran. См. B.5(17).
- Встроенные подпрограммы, определённые реализацией. См. C.1(1/3).
- Этот абзац был удалён.
- Этот абзац был удалён.
- Любые ограничения для защищённой процедуры или содержащего её типа, когда указан аспект Attach_handler или Interrupt_Handler. См. C.3.1(17).
- Другие формы обработчиков прерываний, поддерживаемые аспектами Attach_Handler и Interrupt_Handler. См. C.3.1(19).
- Этот абзац был удалён.
- Семантика некоторых атрибутов и функций объекта, для которого аспект Discard_Names равен True. См. C.5(7).
- Модуль и размер Test_and_Set_Flag. См. C.6.3(8).
- Значение, используемое для представления установленного значения для Atomic_Test_and_Set. См. C.6.3(10).
- Результат атрибута Task_Identification.Image. См. C.7.1(7).
- Значение Current_Task при нахождении в защищённом входе, обработчике прерываний или завершении атрибута задачи. См. C.7.1(17/3).
- Этот абзац был удалён.
- Грань блокировки для Task_Attributes. См. C.7.2(16/1).
- Этот абзац был удалён.
- Этот абзац был удалён.
- Объявления Any_Priority и Priority. См. D.1(11).
- Ресурсы выполнения, определённые реализацией. См. D.1(15/5).
- На многопроцессорной системе, задача, ожидающая доступа к защищённому объекту, удерживает ли она свой процессор занятым. См. D.2.1(3).
- Влияние ресурсов выполнения, определённых реализацией, на планирование задач. См. D.2.1(9/2).
- Этот абзац был удалён.
- Этот абзац был удалён.
- Политики планирования задач, определённые реализацией. См. D.2.2(18).
- Значение Default_Quantum в Dispatching.Round_Robin. См. D.2.5(4).
- Идентификаторы policy_identifier, определённые реализацией, разрешенные в pragma Locking_Policy. См. D.3(4).
- Политика блокировки, если никакой pragma Locking_Policy не применяется к любому блоку раздела. См. D.3(6).
- По умолчанию приоритеты потолка. См. D.3(10/4).
- Потолок любого защищённого объекта, используемого реализацией внутри. См. D.3(16).
- Политики очереди, определённые реализацией. См. D.4(1/5).
- Политики допуска, определённые реализацией. См. D.4.1(1).
- Этот абзац был удалён.
- Любые операции, которые неявно требуют выделения памяти кучи. См. D.7(8).
- Когда ограничение No_Dynamic_CPU_Assignment применяется к разделу, процессор, на котором будет выполняться задача с значением CPU Not_A_Specific_CPU. См. D.7(10).
- Что происходит, когда задача завершается, если ограничение No_Task_Termination применяется к разделу. См. D.7(15.1/2).
- Поведение при нарушении ограничения Max_Storage_At_Blocking. См. D.7(17/1).
- Поведение при нарушении ограничения Max_Asynchronous_Select_Nesting. См. D.7(18/1).
- Поведение при нарушении ограничения Max_Tasks. См. D.7(19).
- Приводит ли использование псевдонима Restrictions к уменьшению размера кода программы, данных или времени выполнения. См. D.7(20).
- Этот абзац был удален.
- Этот абзац был удален.
- Значение Barrier_Limit'Last в Synchronous_Barriers. См. D.10.1(4/3).
- Что происходит, когда прерванная задача, ожидающая Synchronous_Barrier, прерывается. См. D.10.1(13/3).
- Этот абзац был удален.
- Значение Min_Handler_Ceiling в Execution_Time.Group_Budgets. См. D.14.2(7/2).
- Значение CPU_Range'Last в System.Multiprocessors. См. D.16(4/3).
- Процессор, на котором выполняется задача окружения в отсутствие значения атрибута CPU. См. D.16(13/3).
- Способы создания и выполнения распределенных программ. См. E(5).
- Любые события, которые могут привести к тому, что раздел станет недоступным. См. E.1(7).
- Политики планирования, обработка приоритетов и управление общими ресурсами между разделами в определенных случаях. См. E.1(11).
- Этот абзац был удален.
- Прерывается ли выполнение удаленной подпрограммы немедленно в результате отмены. См. E.4(13).
- Диапазон типа System.RPC.Partition_Id. См. E.5(14).
- Этот абзац был удален.
- Определяемые реализацией интерфейсы в PCS. См. E.5(26).
- Значения именованных чисел в пакете Decimal. См. F.2(7).
- Значение Max_Picture_Length в пакете Text_IO.Editing. См. F.3.3(16).
- Значение Max_Picture_Length в пакете Wide_Text_IO.Editing. См. F.3.4(5).
- Значение Max_Picture_Length в пакете Wide_Wide_Text_IO.Editing. См. F.3.5(5).
- Точность, достигнутая на самом деле, сложными элементарными функциями и другими сложными арифметическими операциями. См. G.1(1).
- Знак нулевого результата (или его компонента) от любого оператора или функции в Numerics.Generic_Complex_Types, когда Real'Signed_Zeros равно True. См. G.1.1(53).
- Знак нулевого результата (или его компонента) от любого оператора или функции в Numerics.Generic_Complex_Elementary_Functions, когда Complex_Types.Real'Signed_Zeros равно True. См. G.1.2(45).
- Какой режим (строгий или ослабленный) является стандартным. См. G.2(2).
- Интервал результата в определенных случаях преобразования целого в число с плавающей точкой. См. G.2.1(10).
- Результат арифметической операции с плавающей запятой в ситуациях переполнения, когда атрибут Machine_Overflows типа результата равен False. См. G.2.1(13).
- Интервал результата для деления (или возведения в степень с отрицательным показателем), когда аппаратное обеспечение с плавающей запятой реализует деление как умножение на обратное значение. См. G.2.1(16).
- Определение близкого набора результатов, которое определяет точность определенных умножений и делений с фиксированной точкой. См. G.2.3(5).
- Условия для universal_real операнда умножения или деления с фиксированной точкой, для которых результат должен быть в идеальном наборе результатов. См. G.2.3(22).
- Результат арифметической операции с фиксированной точкой в ситуациях переполнения, когда атрибут Machine_Overflows типа результата равен False. См. G.2.3(27).
- Результат обращения к элементарной функции в ситуациях переполнения, когда атрибут Machine_Overflows типа результата равен False. См. G.2.4(4).
- Значение порога угла, в пределах которого определенные элементарные функции, комплексные арифметические операции и комплексные элементарные функции дают результаты, соответствующие максимальной границе относительной погрешности. См. G.2.4(10).
- Точность определенных элементарных функций для параметров, выходящих за пределы угла порога. См. G.2.4(10).
- Результат комплексной арифметической операции или обращения к комплексной элементарной функции в ситуациях переполнения, когда атрибут Machine_Overflows соответствующего типа вещественного числа равен False. См. G.2.6(5).
- Точность определенных комплексных арифметических операций и определенных комплексных элементарных функций для параметров (или их компонентов), выходящих за пределы порога угла. См. G.2.6(8).
- Требования к точности для подпрограмм Solve, Inverse, Determinant, Eigenvalues и Eigensystem для типа Real_Matrix. См. G.3.1(81/2).
- Требования к точности для подпрограмм Solve, Inverse, Determinant, Eigenvalues и Eigensystem для типа Complex_Matrix. См. G.3.2(149/2).
- Этот абзац был удален.
- Этот абзац был удален.
- Последствия нарушения No_Hidden_Indirect_Globals. См. H.4(23.9/5).
- Этот абзац был удален.
- Этот абзац был удален.
- Определяемые реализацией policy_идентификаторы, разрешенные в псевдониме Partition_Elaboration_Policy. См. H.6(4/2).