GNU Fortran або GFortran — це назва вільного оптимізувального компілятора від розробників спільноти проекту GNU для мови Fortran, що входить в набір компіля́торів GNU Compiler Collection (GCC). Компілятор GFortran став логічним (але незалежним) наступником відомого компілятора G77, розробка та підтримка якого були зупинені перед виходом версії GCC 4.0 i підтримує більшість розширень мови Фортран, котрі підтримував компілятор G77 (починаючи від FORTRAN 66, FORTRAN 77 і до Fortran 90), а також має майже повноцінну і завершену підтримку стандартів Fortran 95 та Fortran 2003, частково Fortran 2008 та подальших технічних специфікацій до стандарту. Розробка GFortran відбувається спільнотою синхронно з іншими компіляторами GCC для великої кількості операційних систем та архітектур. Вперше експериментальна пробна версія GFortran ввійшла в версію GCC 4.0.x, однак тільки починаючи з версії 4.1 розробники рекомендували користувачам компілятор як стабільний і готовий до використання. Дистрибутиви GNU/Linux продовжували ще досить тривалий час надавати пакунки з компіляторами g77 та GFortran паралельно, рекомендуючи тільки не використовувати для одного проекту обидва одночасно. GFortran в свою чергу почав свій розвиток в січні 2003 року як форк проекту компілятора під назвою G95, котрий сам бере початок з 2000 року завдяки намаганням написати компілятор, що підтримує стандарт Fortran 95 (ISO/IEC 1539:1997). Основною причиною форку були непорозуміння з розробником та адміністратором проекту Ендрю Ват (Andrew Vaught), котрий вирішив обмежити інших розробників у доступі на внесення змін до системи контролю версій CVS проекту. Серед інших причин брунькування проекту були названі бажання додати та розробляти джерельний код в сховищі GCC (а не окремо), бажання використовувати та розвивати можливості вже наявної кодової бази синтаксичного аналізатора проекту GCC, ввести більш гнучку і зрозумілу політику додавання змін в сховище проекту, бажання очистити і удосконалити код згідно рекомендацій GNU Coding Standard та ширше використання DejaGnu для набору внутрішніх тестів. Компілятор GNU Fortran дуже активно розвивається, і хоча багато вже зроблено і завершено, попереду ще чимало роботи щодо виправлення помилок та оптимізації згенерованих інструкцій, особливо для коду, що використовує парадигму ООП
Тип | компілятор |
---|---|
Розробник | Проект GNU |
Стабільний випуск | 9.1 (3 травня 2019 ) |
Операційна система | багатоплатформний, на операційному та апаратному рівнях, основна ОС Linux, понад 30 апаратних архітектур. |
Мова програмування | C |
Ліцензія | GNU General Public License, version 2.0 or laterd |
Репозиторій | gcc.gnu.org/viewcvs/gcc/ |
Вебсайт | gcc.gnu.org/fortran/ |
Історія ред.
Після появи і публікації стандарту Fortran 95 (ISO/IEC 1539:1997) склалася неприємна багаторічна ситуація внаслідок відсутності вільного чи безкоштовного компілятора для мови програмування фортран з підтримкою останнього стандарту, оскільки незважаючи на відносну популярність (на той час) мови в академічному та науковому середовищі, задовольнити потребу могли тільки комерційні компілятори, що для навчальних закладів не завжди було можливо, зважаючи на високу ціну таких компіляторів, та кількість необхідних ліцензій, а наявний компілятор g77 підтримував тільки щонайбільше елементи стандарту Fortran 90. Тому появу проекту G95 в березні 2000 році за ініціативи від Ендрю Ват (Andrew Vaught) та FSF, щодо розробки відкритого та вільного компілятора для мови стандарту Fortran 95 під GPL ліцензією та з використанням кодової бази GCC дуже прихильно зустріли. Доволі швидко, після дворічної успішної суспільної розробки, компілятор g95 здобув широку популярність. Однак наприкінці 2002 року виникли деякі непорозуміння між розробниками щодо темпів і напрямку розробки і Ендрю Ват вирішив стати самостійним і єдиним розробником G95, тому після згаданого форку в 2003 році виник проект GNU Fortran у вигляді експериментальної версії 4.0.X як елемент набору компіляторів GNU (номери версій було синхронізовано з версією GCC). Починаючи з того часу шляхи та кодова база двох проектів GFortran та G95 розійшлися, хоча Ендрю також продовжував активно розвивати та виправляти помилки в G95 компіляторі аж до 2010 року включно
Наступні стабільні випуски компілятора GFortran відбувалися зажди синхронно з виходом нової стабільної версії GCC: 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5, 5.1, 5.2, 5.3., 6.1 ітд
Версія 5.3, що вийшла в грудні 2015 року, має хоча експериментальну, але майже завершену підтримку розпаралелювання програм за допомогою комасивів з 2008 стандарту та з додаткової технічної специфікації ISO/IEC NP TS18508.
27 квітня 2016 року вийшла версія 6.1, в якій значні зусилля зроблено над виправленням помилок та продовжено удосконалення елементів і нововведень наступного стандарту Fortran 2015.
22 серпня 2016 року вийшла версія 6.2, в якій в основному виправляли помилки та регресії попередньої версії.
В версії 6.3 від 21 грудня 2016 року декларується повна підтримка субмодулів з Fortran 2008, додано також підтримку типів подій з Fortran 2015, поліпшили рядки символів змінної довжини (deferred-length character) з Fortran 2003, оновлено OpenMP and OpenACC, оптимізували код matmul
для простих випадків та додали кілька нових інформаційних повідомлень компілятора.
У версії gfortran 7.1 від 2 травня 2017 року додано підтримку розширень fortran (через додаткові параметри компілятора -fdec-structure, -fdec-intrinsic-ints, -fdec-math, -fdec) для сумісності з джерельними текстами, що використовують давні версії стандартів а також різноманітні розширення мови від виробників компіляторів. Зокрема додано підтримку DEC STRUCTURE та UNION; підтримку вбудованих цілочислових функцій з префіксами B/I/J/K такі як BABS, JIAND…; математичних функцій COTAN, TAND, ASIND… Крім того, удосконалено генерацію коду для випадку циклів з кроком 1 чи -1 та додано можливість перехоплення циклів з переповненням лічильника (до HUGE(i), параметр під час етапу компіляції -fcheck=do) та типову ініціалізацію змінних похідних типів (-finit-derived). Декларується майже повна підтримка OpenMP 4.5 (крім structure element mapping). Додано повну підтримку визначених користувачем операцій читання/запису для похідних типів (UDTIO). Покращено підтримку комасивів похідних типів з динамічними (allocatable) компонентами та вказівниками. Додано неконстантні стоп-коди та коди помилок для інструкцій stop, error stop (Fortran 2015), похідні типи з динамічними компонентами рекурсивного типу, присвоєння для поліморфних змінних. Покращено підтримку субмодулів та діагностику поліморфних результатів в чистих функціях. В комасивах додано нововведення Fortan 2015 — підтримку невдалих відображень (failed images).
У версії 8.1 оновлено версію бібліотеки libfortran до 5. Додано параметризовані похідні типи,- одне з найважливіших оновлень з фортрану 2003; збільшено можливу розмірність масивів до 15 згідно з стандартом Fortran 2008; появилась можливість використовувати вбудовані трансформаційні функції в виразах ініціалізації; додано кілька нових параметрів компілятора. Компілятор тепер типово пробує змінювати порядок вкладених циклів оголошених з допомогою FORALL та DO CONCURRENT, якщо це вигідно з точки зору часу виконання програми, така поведінка контролюється параметром -ffrontend-loop-interchange.
Версія 9.1 додала підтримку асинхронних операцій введення/виведення для деяких платформ, якщо програму збирати разом з бібліотекою pthreads. Узгоджено поведінку деяких вбудованих функцій (MAX і MIN більше не повертають певне значення, якщо один з аргументів є NaN). Реалізовано функції FINDLOC, IS_CONTIGUOUS, аргумент BACK для MINLOC і MAXLOC, Додано новий параметр командного рядка -fdec-include для сумісності з старим кодом. Поліпшено взаємодію з мовою С (дескриптори С і вихідний файл ISO_Fortran_binding.h, а також додано нову директиву BUILTIN для взаємодії з бібліотекою GNU C).
Архітектури ред.
Компілятор GFortran працює щонайменше на таких апаратних архітектурах
- x86-linux, x86_64-linux
- Windows (x86, cygwin and mingw; amd64-mingw)
- MacOS X, Intel and PowerPC (powerpc-darwin and i386-darwin)
- x86-freebsd, amd64-freebsd, x86-openbsd
- IA64-linux, IA64-hpux
- sparc-solaris, i386-solaris
- alpha-linux, Tru64
- powerpc-aix
- mips-irix, mips-linux
- hppa-linux, hppa-hpux
- s390-linux
- powerpc-linux
- sh4-linux
- sparc-linux
Підтримка стандартів мови Фортран ред.
GFortran підтримує повністю стандарти Fortran 77 (!X3J3/90.4, ISO 1539:1980), Fortran 90 (ISO/IEC 1539:1991), Fortran 95 (ISO/IEC 1539-1:1997), більшість нововведень стандарту Fortran 2003 (ISO/IEC JTC1/SC22/WG5 N1601), та багато нововведень з стандарту Fortran 2008 (ISO/IEC 1539-1:2010), а також додаткові технічні специфікації (напр. ISO/IEC TS 29113:2012 чи ISO/IEC NP TS 18508)
Див. також ред.
G95
Примітки ред.
- ↑ http://directory.fsf.org/wiki/Gfortran
- GCC 9 Release Series [ 8 травня 2019 у Wayback Machine.](англ.)
- ↑ Архів оригіналу за 19 грудня 2013. Процитовано 12 лютого 2016.
- Free Software Directory
- Discussion of incompatibilities between g77 and gfortran [ 3 березня 2016 у Wayback Machine.](англ.)
- ↑ Chart of Fortran 2003 Features supported by GNU Fortran [ 12 серпня 2013 у Wayback Machine.](англ.)
- ↑ Chart of Fortran 2008 Features supported by GNU Fortran [ 9 серпня 2013 у Wayback Machine.](англ.)
- . Архів оригіналу за 15 лютого 2016. Процитовано 12 лютого 2016.
- як приклад: Shahid Alam, International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.3, May 2014, IS FORTRAN STILL RELEVANT? COMPARING FORTRAN WITH JAVA AND C++
- Andy Vaught on g95 development. Архів оригіналу за 8 липня 2012. Процитовано 12 лютого 2016.
- From: Toon Moene, Subject: GNU Fortran 95 project started. Date: 2000/03/18 [Архівовано 8 липня 2012 у Archive.is] March 2000 (usenet announcement)(англ.)
- . Архів оригіналу за 3 березня 2016. Процитовано 12 лютого 2016.
- . Архів оригіналу за 5 лютого 2016. Процитовано 12 лютого 2016.
- What's new in gfortran? [ 15 лютого 2016 у Wayback Machine.](англ.)
- ↑ . Архів оригіналу за 5 березня 2016. Процитовано 12 лютого 2016.
- Compiler support for the Fortran 2003 standard [ 21 грудня 2019 у Wayback Machine.] ACM SIGPLAN Fortran Forum archive Volume 26 Issue 1, April 2007 Pages 7 — 9
- . Архів оригіналу за 11 березня 2016. Процитовано 12 лютого 2016.
- . Архів оригіналу за 9 березня 2016. Процитовано 12 лютого 2016.
- . Архів оригіналу за 16 лютого 2016. Процитовано 12 лютого 2016.
Цю статтю треба вікіфікувати для відповідності стандартам якості Вікіпедії. (лютий 2016) |