= Chart of Fortran 2003 Features supported by GNU Fortran = * See also '''[[Fortran2008Status|Fortran 2008 implementation status]]''' * See also '''[[TS29113Status|TS 29113: Technical Specification on Further Interoperability with C]]''' When the question which Fortran 2003 feature are implemented in which compiler, came up in [[http://groups.google.com/group/comp.lang.fortran/topics|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 [[http://www.j3-fortran.org/|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: * [[http://doi.acm.org/10.1145/1243413.1243415|John Reid, ''The new features of Fortran 2003'', ACM SIGPLAN Fortran Forum '''96''', 10 (2007)]], which is also [[ftp://ftp.nag.co.uk/sc22wg5/N1601-N1650/N1648.pdf|available]] from the [[http://www.nag.co.uk/sc22wg5/|Fortran Standards homepage]] The Fortran Forum articles: * [[http://doi.acm.org/10.1145/1243413.1243414|Ian D. Chivers and Jane Sleightholme, ''Compiler support for the Fortran 2003 standard'', ACM SIGPLAN Fortran Forum '''26''', 1 (2007)]]. * Update: [[http://portalparts.acm.org/1280000/1279941/fm/frontmatter.pdf|ACM SIGPLAN Fortran Forum '''26''', 2 (2007)]] (part of the Frontmatter; contains the status of more compilers) * Update: [[http://doi.acm.org/10.1145/1330585.1330587|ACM SIGPLAN Fortran Forum '''26''', 3 (2007)]]. * April 2009: [[http://doi.acm.org/10.1145/1520752.1520755|ACM SIGPLAN Fortran Forum '''28'''(1), 26 (2009)]] * August 2009: [[http://doi.acm.org/10.1145/1570522.1570525|ACM SIGPLAN Fortran Forum '''28'''(2), 15 (2009)]] * December 2009: [[http://doi.acm.org/10.1145/1667140.1667145|ACM SIGPLAN Fortran Forum '''28'''(3), 32 (2009)]] * April 2010: [[http://doi.acm.org/10.1145/1753166.1753169|ACM SIGPLAN Fortran Forum '''29'''(1), 29 (2010)]] * August 2010: [[http://doi.acm.org/10.1145/1837137.1837139|ACM SIGPLAN Fortran Forum '''29'''(2), 28 (2010)]] * November 2010: [[http://dx.doi.org/10.1145/1883575.1883578|ACM SIGPLAN Fortran Forum '''29'''(3), 26 (2010)]] * April 2011: [[http://dx.doi.org/10.1145/1961363.1961365|ACM SIGPLAN Fortran Forum '''30'''(1), 16 (2011)]] * August 2011: [[http://dx.doi.org/10.1145/2007333.2007335|ACM SIGPLAN Fortran Forum '''30'''(2), 18 (2011)]] * December 2011: [[http://dx.doi.org/10.1145/2073761.2073762|ACM SIGPLAN Fortran Forum '''30''' (2), 20 (2011)]] * April 2012: [[http://dx.doi.org/10.1145/2179280.2179282|ACM SIGPLAN Fortran Forum '''31''' (1), 23 (2012)]] * August 2012: [[http://dx.doi.org/10.1145/2338786.2338789|ACM SIGPLAN Fortran Forum '''31''' (2), 28 (2012)]] * December 2012 [[http://dx.doi.org/10.1145/2408747.2408749|ACM SIGPLAN Fortran Forum '''31''' (3), 17 (2012)]] * April 2013 [[http://dx.doi.org/10.1145/2460236.2460238|ACM SIGPLAN Fortran Forum '''32''' (1), 8 (2013)]] A freely available version of the article can be found at: * http://fortranwiki.org/fortran/show/Fortran+2003+status * 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: [[Fortran2003|Fortran 2003 Features in GNU Fortran]] ||<#bbddbb>'''ISO TRs'''|| ||15580: IEEE Arithmetic ||<#bbddbb>'''Yes''' (since 5.0) || ||15581: Allocatable Enhancements ||<#bbddbb>'''Yes''' (since 4.2) || |||| ||<#ffffdd>'''Data enhancements and object orientation''' || ||Parameterized derived types ||<#ffaaaa>No ([[GFortranPatchTracker|being developed for KIND only]]), [[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40196|PR40196]] || ||[[ProcedurePointers|Procedure pointers]] ||<#bbddbb>'''Yes''' (partial since 4.4, components since 4.5) || ||Finalization ||<#ffffdd>Partial (since 4.9, [[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=37336|being developed]]) || ||Procedures bound by name to a type ||<#bbddbb>'''Yes''' (partial since 4.4, 2008-08-31) || ||The PASS attribute ||<#bbddbb>'''Yes''' (since 4.5, 2009-07-25) || ||Procedures bound to a type as operators ||<#bbddbb>'''Yes''' (since 4.5, 2009-08-27) || ||Type extension ||<#bbddbb>'''Yes''' (since 4.4, 2008-07-29) || ||Overriding a type-bound procedure ||<#bbddbb>'''Yes''' (since 4.4, 2008-08-28) || ||Enumerations ||<#bbddbb>'''Yes''' (since 4.1) || ||ASSOCIATE construct ||<#ffffdd>Partial (since 4.6, [[https://gcc.gnu.org/ml/fortran/2010-08/msg00188.html|2010-08-17]], bugs: [[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38936|PR38936]], [[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49636|PR49636]], [[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52832|PR52832]]) || ||[[OOP|Polymorphic entities]] ||<#bbddbb>'''Yes''' (partial since 4.5, arrays since 4.7, unlimited since 4.8) || ||SELECT TYPE construct ||<#bbddbb>'''Yes''' (since 4.5, 2009-11-30) || ||Deferred bindings and abstract types ||<#bbddbb>'''Yes''' (since 4.4, 2008-09-02; deferred binding since 2009-03-29)|| ||Allocatable scalars ||<#bbddbb>'''Yes''' (since 4.5, 2009-09-30)|| ||Allocatable character length ||<#ffffdd>Partial (since 4.6, as components since 4.9, bugs: [[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68241|PR68241]])|| |||| ||<#ffffdd>'''Miscellaneous enhancements''' || ||Structure constructors ||<#bbddbb>'''Yes''' (since 4.4, 2008-05-16) || ||The allocate statement ||<#bbddbb>'''Yes''' (since 4.5, 2009-09-30) || ||Assignment to an allocatable array ||<#bbddbb>'''Yes''' (since 4.6, 2011-01-28)|| ||Transferring an allocation ||<#bbddbb>'''Yes''' (since 4.2) || ||More control of access from a module ||<#bbddbb>'''Yes''' || ||Renaming operators on the USE statement ||<#ffffdd>Partial (not: operator(+)=>operator(.user.) etc.; [[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=31298|PR31298]])|| ||Pointer assignment ||<#bbddbb>'''Yes''' (since 4.6, 2010-08-19) || ||Pointer INTENT ||<#bbddbb>'''Yes''' (since 4.3) || ||The VOLATILE attribute ||<#bbddbb>'''Yes''' (since 4.3) || ||The IMPORT statement ||<#bbddbb>'''Yes''' (since 4.3) || ||Intrinsic modules ||<#bbddbb>'''Yes''' (since 4.3) || ||Access to the computing environment ||<#bbddbb>'''Yes''' (since 4.3) || ||Support for international character sets ||<#bbddbb>'''Yes''' (since 4.4, 2008-04-30; UTF-8 I/O since 2008-08-16) || ||Lengths of names and statements ||<#bbddbb>'''Yes''' || ||Binary, octal and hex constants ||<#bbddbb>'''Yes''' (since 4.3, 2007-12-08) || ||Array constructor syntax ||<#bbddbb>'''Yes''' (since 4.4, 2008-05-16) || ||Specification and initialization expressions ||<#ffffdd>Partial || ||Complex constants ||<#bbddbb>'''Yes''' || ||Changes to intrinsic functions ||<#ffffdd>Partial (missing: e.g. [[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29600|PR29600]], [[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36313|PR36313]])|| ||Controlling IEEE underflow ||<#bbddbb>'''Yes''' (since 5.0) || ||Another IEEE class value ||<#bbddbb>'''Yes''' (since 5.0) || |||| ||<#bbddbb>'''Input/output enhancements''' || ||Derived type input/output ||<#bbddbb>'''Yes''' (since 7.0, 2016-08-31) || ||Asynchronous input/output ||<#bbddbb>'''Yes''' (since 4.4, 2008-04-05; implemented as [[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25829|synchronous I/O]]) || ||FLUSH statement ||<#bbddbb>'''Yes''' (since 4.1) || ||IOMSG= specifier ||<#bbddbb>'''Yes''' || ||Stream access input/output ||<#bbddbb>'''Yes''' (since 4.2, 2006-08-15) || ||ROUND= specifier ||<#bbddbb>'''Yes''' (for OUTPUT since 4.5, for INPUT since 4.9)|| ||DECIMAL= specifier ||<#bbddbb>'''Yes''' (since 4.4, 2008-04-05) || ||SIGN= specifier ||<#bbddbb>'''Yes''' (since 4.4, 2008-04-05) || ||Kind type parameters of integer specifiers ||<#bbddbb>'''Yes''' (since 4.4) || ||Recursive input/output ||<#bbddbb>'''[[https://gcc.gnu.org/ml/fortran/2008-04/msg00165.html|Yes]]''' || ||Intrinsic function for newline character ||<#bbddbb>'''Yes''' (since 4.2) || ||Input and output of IEEE exceptional values ||<#bbddbb>'''Yes''' || ||Comma after a P edit descriptor ||<#bbddbb>'''Yes''' || |||| ||<#bbddbb>'''[[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32630|Interoperability with C]]''' || ||Interoperability of intrinsic types ||<#bbddbb>'''Yes''' (since 4.3, 2007-07-02) || ||Interoperability with C pointers ||<#bbddbb>'''Yes''' (since 4.3, 2007-07-02) || ||Interoperability of derived types ||<#bbddbb>'''Yes''' (since 4.3, 2007-07-02) || ||Interoperability of variables ||<#bbddbb>'''Yes''' (since 4.3, 2007-07-02) || ||Interoperability of procedures ||<#bbddbb>'''Yes''' (since 4.3, 2007-07-02) || ||Interoperability of global data ||<#bbddbb>'''Yes''' (since 4.3, 2007-07-02) ||