Spec-Zone.ru › GNU Fortran 10

4.2 Статус Fortran 2008

Последняя версия стандарта Fortran — ISO/IEC 1539-1:2010, неофициально известная как Fortran 2008. Официальная версия доступна в Международной организации по стандартизации (ISO) или её национальных членских организациях. Окончательный проект (FDIS) можно бесплатно загрузить по адресу http://www.nag.co.uk/sc22wg5/links.html. Fortran разрабатывается рабочей группой 5 подкомитета 22 Совместного технического комитета 1 Международной организации по стандартизации и Международной электротехнической комиссии (IEC). Эта группа известна как WG5.

Компилятор GNU Fortran поддерживает несколько новых функций Fortran 2008; на сайте вики есть информация о текущем статусе реализации Fortran 2008. В частности, реализовано следующее.

  • Опция -std=f2008 и поддержка расширений файлов .f08 и .F08.
  • Выражение OPEN теперь поддерживает опцию NEWUNIT=, которая возвращает уникальный номер устройства файла, тем самым предотвращая непреднамеренное использование одного и того же номера устройства в разных частях программы.
  • Форматный дескриптор g0 и неограниченные форматные элементы.
  • Математические встроенные функции ASINH, ACOSH, ATANH, ERF, ERFC, GAMMA, LOG_GAMMA, BESSEL_J0, BESSEL_J1, BESSEL_JN, BESSEL_Y0, BESSEL_Y1, BESSEL_YN, HYPOT, NORM2, и ERFC_SCALED.
  • Теперь возможно использование комплексных аргументов с TAN, SINH, COSH, TANH, ASIN, ACOS, и ATAN; ATAN(Y,X) теперь является псевдонимом для ATAN2(Y,X).
  • Поддержка встроенных функций PARITY.
  • Следующие битовые встроенные функции: LEADZ и TRAILZ для подсчёта числа старших и младших нулевых битов, POPCNT и POPPAR для подсчёта числа единичных битов и возвращения чётности; BGE, BGT, BLE, и BLT для битовых сравнений; DSHIFTL и DSHIFTR для комбинированных сдвигов влево и вправо, MASKL и MASKR для простых лево- и право-выровненных масок, MERGE_BITS для битового слияния с использованием маски, SHIFTA, SHIFTL и SHIFTR для операций сдвига, и трансформационные битовые встроенные функции IALL, IANY и IPARITY.
  • Поддержка встроенного подпрограммы EXECUTE_COMMAND_LINE.
  • Поддержка встроенной функции запроса STORAGE_SIZE.
  • Параметры типа INT{8,16,32} и REAL{32,64,128} вида и массивно-значимые именованные константы INTEGER_KINDS, LOGICAL_KINDS, REAL_KINDS и CHARACTER_KINDS встроенного модуля ISO_FORTRAN_ENV.
  • Модульные подпрограммы C_SIZEOF встроенного модуля ISO_C_BINDINGS и COMPILER_VERSION и COMPILER_OPTIONS из ISO_FORTRAN_ENV.
  • Поддержка комассивов для серийных программ с флагом -fcoarray=single и экспериментальная поддержка нескольких изображений с флагом -fcoarray=lib.
  • Поддерживаются подмодули. Следует отметить, что MODULEs не создают файл smod, необходимый для потомков SUBMODULEs, если они не содержат как минимум один интерфейс MODULE PROCEDURE. Причина в том, что SUBMODULEs бесполезны без MODULE PROCEDUREs. См. http://j3-fortran.org/doc/meeting/207/15-209.txt для обсуждения и проекта интерпретации. Принятие этой интерпретации имеет преимущество, что код, не использующий подмодули, не генерирует файлы smod.
  • Поддерживается конструкция DO CONCURRENT.
  • Поддерживается конструкция BLOCK.
  • Выражения STOP и новое ERROR STOP выражение теперь поддерживают все константные выражения. Оба показывают сигналы, которые посылались при завершении.
  • Поддержка атрибута CONTIGUOUS.
  • Поддержка ALLOCATE с MOLD.
  • Поддержка атрибута IMPURE для подпрограмм, что позволяет использовать подпрограммы ELEMENTAL без ограничений PURE.
  • Пустые указатели (включая NULL()) и невыделенные переменные могут использоваться в качестве фактического аргумента для необязательных, не указательных, не распределяемых фиктивных аргументов, обозначающих отсутствующий аргумент.
  • Переменные, не являющиеся указателями, с атрибутом TARGET могут использоваться в качестве фактического аргумента для фиктивных аргументов POINTER с INTENT(IN).
  • Указатели, включая указатели на подпрограммы и те, которые находятся в структуре производного типа (компоненты указателя), теперь могут инициализироваться объектом, а не только NULL.
  • Выражение EXIT (с именем конструкции) теперь может использоваться для выхода не только из DO, но также из ASSOCIATE, BLOCK, IF, SELECT CASE и SELECT TYPE конструкций.
  • Внутренние подпрограммы теперь могут использоваться в качестве фактических аргументов.
  • Незначительные особенности: диагностика устаревания для ENTRY с -std=f2008; строка может начинаться с точки с запятой; для внутренних и модульных процедур END может использоваться вместо END SUBROUTINE и END FUNCTION; SELECTED_REAL_KIND теперь также принимает аргумент RADIX; встроенные типы поддерживаются для TYPE(intrinsic-type-spec); несколько процедур, связанных с типом, могут быть объявлены в одном операторе PROCEDURE; массивы с неявной формой поддерживаются для именованных констант (PARAMETER).

Далее: Статус Fortran 2018, Предыдущее: Статус Fortran 2003, Наверх: Статус стандартов Fortran [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-10.2.0/gfortran/Fortran-2008-status.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API