Fortran2003Status - GCC Wiki
- ️Sat Sep 09 2017
Chart of Fortran 2003 Features supported by GNU Fortran
See also Fortran 2018 implementation status
See also Fortran 2008 implementation status
See also TS 29113: Technical Specification on Further Interoperability with C
When the question which Fortran 2003 features are implemented in which compiler, came up in comp.lang.fortran, the idea was born to create a chart of the features supported by the different compilers; the question was sent to the j3-Fortran list and the result was the series of Fortran Forum articles, listed below.
The listed items follow the sections in the following writeup:
John Reid, ''The new features of Fortran 2003'', ACM SIGPLAN Fortran Forum '''96''', 10 (2007), which is also available from the Fortran Standards homepage
The Fortran Forum articles:
Update: ACM SIGPLAN Fortran Forum '''26''', 2 (2007) (part of the Frontmatter; contains the status of more compilers)
- Updates appearing in all issues of ACM SIGPLAN Fortran Forum since then
Latest issue: December, 2018 ACM SIGPLAN Fortran Forum '''37''' (3), 8 (2018), 25th revision
A freely available version of the article can be found at:
http://www.fortranplus.co.uk/resources/fortran_2003_2008_compiler_support.pdf (Fortran Forum PDF, always delayed by a few months)
Implemented 2003 features in the GNU Fortran compiler
For other compilers see the Fortran Forum paper cited above. (These are not the only new features of Fortran 2003 though.)
See also: Fortran 2003 Features in GNU Fortran
ISO TRs |
|
15580: IEEE Arithmetic |
Yes (since 5.0) |
15581: Allocatable Enhancements |
Yes (since 4.2) |
Data enhancements and object orientation |
|
Parameterized derived types |
Yes (since 8.0, 2017-09-09), bugs PR82173 |
Yes (partial since 4.4, components since 4.5) |
|
Finalization |
Yes (since 4.9, missing: PR37336) |
Procedures bound by name to a type |
Yes (partial since 4.4, 2008-08-31) |
The PASS attribute |
Yes (since 4.5, 2009-07-25) |
Procedures bound to a type as operators |
Yes (since 4.5, 2009-08-27) |
Type extension |
Yes (since 4.4, 2008-07-29) |
Overriding a type-bound procedure |
Yes (since 4.4, 2008-08-28) |
Enumerations |
Yes (since 4.1) |
ASSOCIATE construct |
Yes (since 4.6, 2010-08-17, bugs: PR87477) |
Yes (partial since 4.5, arrays since 4.7, unlimited since 4.8) |
|
SELECT TYPE construct |
Yes (since 4.5, 2009-11-30) |
Deferred bindings and abstract types |
Yes (since 4.4, 2008-09-02; deferred binding since 2009-03-29) |
Allocatable scalars |
Yes (since 4.5, 2009-09-30) |
Allocatable character length |
Yes (since 4.6, as components since 4.9, bugs: PR68241) |
Miscellaneous enhancements |
|
Structure constructors |
Yes (since 4.4, 2008-05-16) |
Generic procedure interfaces named as type |
Yes |
The allocate statement |
Yes (since 4.5, 2009-09-30) |
Assignment to an allocatable array |
Yes (since 4.6, 2011-01-28) |
Transferring an allocation |
Yes (since 4.2) |
More control of access from a module |
Yes |
Renaming operators on the USE statement |
Yes |
Pointer assignment |
Yes (since 4.6, 2010-08-19) |
Pointer INTENT |
Yes (since 4.3) |
The VOLATILE attribute |
Yes (since 4.3) |
The IMPORT statement |
Yes (since 4.3) |
Intrinsic modules |
Yes (since 4.3) |
Access to the computing environment |
Yes (since 4.3) |
Support for international character sets |
Yes (since 4.4, 2008-04-30; UTF-8 I/O since 2008-08-16) |
Lengths of names and statements |
Yes |
Binary, octal and hex constants |
Yes (since 4.3, 2007-12-08) |
Array constructor syntax |
Yes (since 4.4, 2008-05-16) |
Specification and initialization expressions |
Yes (since 8.0, 2018-01-04) |
Complex constants |
Yes |
Changes to intrinsic functions |
Yes (since 8.0, 2017-12-03) |
Controlling IEEE underflow |
Yes (since 5.0) |
Another IEEE class value |
Yes (since 5.0) |
Input/output enhancements |
|
Derived type input/output |
Yes (since 7.0, 2016-08-31) |
Asynchronous input/output |
Yes (complete support since 9.0 2018-07-25; implemented as synchronous I/O since 4.4 2008-04-05 ) |
FLUSH statement |
Yes (since 4.1) |
IOMSG= specifier |
Yes |
Stream access input/output |
Yes (since 4.2, 2006-08-15) |
ROUND= specifier |
Yes (for OUTPUT since 4.5, for INPUT since 4.9) |
DECIMAL= specifier |
Yes (since 4.4, 2008-04-05) |
SIGN= specifier |
Yes (since 4.4, 2008-04-05) |
Kind type parameters of integer specifiers |
Yes (since 4.4) |
Recursive input/output |
|
Intrinsic function for newline character |
Yes (since 4.2) |
Input and output of IEEE exceptional values |
Yes |
Comma after a P edit descriptor |
Yes |
Interoperability of intrinsic types |
Yes (since 4.3, 2007-07-02) |
Interoperability with C pointers |
Yes (since 4.3, 2007-07-02) |
Interoperability of derived types |
Yes (since 4.3, 2007-07-02) |
Interoperability of variables |
Yes (since 4.3, 2007-07-02) |
Interoperability of procedures |
Yes (since 4.3, 2007-07-02) |
Interoperability of global data |
Yes (since 4.3, 2007-07-02) |