Chart of Fortran 2003 Features supported by GNU Fortran
When the question which Fortran 2003 feature is 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 following paper:
Update: ACM SIGPLAN Fortran Forum '''26''', 2 (2007) (part of the Frontmatter; contains the status of more compilers)
A version from August 2008 can be found here (unrestricted access).
Latest Version: ACM SIGPLAN Fortran Forum '''28''', 1 (2009)
which follows the feature listed in the following paper
John Reid, ''The new features of Fortran 2003'', ACM SIGPLAN Fortran Forum '''96''', 10 (2007), which is also available from the Fortran Standards homepage
There is now also a list for the implemention status of Fortran 2008 features
Implemented 2003 feature in 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 the GNU Fortran
ISO TR 15580 IEEE Arithmetic |
No |
ISO TR 15581 Allocatable Enhancements |
Yes |
Data enhancements and object orientation |
|
Parameterized derived types |
|
Procedure pointers |
Partial (as of 2009-05-06: apart from PASS, being developed) |
Finalization |
No (being developed) |
Procedures bound by name to a type |
Partial (2008-08-31; no OPERATOR()/ASSIGNMET(=) yet) |
The PASS attribute |
Partial (2008-08-28; not in PPCs; for TPC: no CLASS(...) support, use TYPE(...) as non-standard workaround) |
Procedures bound to a type as operators |
No |
Type extension |
Yes (2008-07-29; no CLASS(...) support, yet) |
Overriding a type-bound procedure |
Yes (2008-08-28) |
Enumerations |
Yes |
ASSOCIATE construct |
No |
Polymorphic entities |
No |
SELECT TYPE construct |
No |
Deferred bindings and abstract types |
Yes (2008-09-02; deferred binding since 2009-03-29) |
Miscellaneous enhancements |
|
Structure constructors |
Yes (since 4.4.0 2008-05-16) |
The allocate statement |
No |
Assignment to an allocatable array |
No |
Transferring an allocation |
Yes |
More control of access from a module |
Yes |
Renaming operators on the USE statement |
Partial (not: operator(+)=>operator(.user.) etc.; PR31298) |
Pointer assignment |
No |
Pointer INTENT |
Yes |
The VOLATILE attribute |
Yes |
The IMPORT statement |
Yes |
Intrinsic modules |
Yes |
Access to the computing environment |
Yes |
Support for international character sets |
Yes (since 2008-04-30; UTF-8 I/O since 2008-08-16) |
Lengths of names and statements |
Yes |
Binary, octal and hex constants |
Yes (since 2007-12-08) |
Array constructor syntax |
Yes (since 2008-05-16) |
Specification and initialization expressions |
Partial |
Complex constants |
Yes |
Changes to intrinsic functions |
Partial |
Controlling IEEE underflow |
No |
Another IEEE class value |
No |
Input/output enhancements |
|
Derived type input/output |
No |
Asynchronous input/output |
Yes (since 4.4.0 2008-04-05; implemented as synchronous I/O) |
FLUSH statement |
Yes |
IOMSG= specifier |
Yes |
Stream access input/output |
Yes |
ROUND= specifier |
No |
DECIMAL= specifier |
Yes (since 4.4.0 2008-04-05) |
SIGN= specifier |
Yes (since 4.4.0 2008-04-05) |
Kind type parameters of integer specifiers |
No |
Recursive input/output |
|
Intrinsic function for newline character |
Yes |
Input and output of IEEE exceptional values |
Yes |
Comma after a P edit descriptor |
Yes |
Interoperability with C |
|
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) |