= Chart of Fortran 2018 Features supported by GNU Fortran = Bugzilla: [[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85836|F2018 meta bug]] See also: * '''[[Fortran2008Status|Fortran 2008 implementation status]]''' * '''[[Fortran2003Status|Fortran 2003 implementation status]]''' The listed items follow the sections in the following writeup: * [[https://isotc.iso.org/livelink/livelink?func=ll&objId=19441669&objAction=Open&viewType=1|The new features of Fortran 2018]] by John Reid ||<#ffffdd>'''Further interoperability of Fortran with C ([[TS29113Status|TS 29113]])''' || ||C descriptors ||<#bbddbb>'''Yes''' (since 9.0, 2019-01-12) || ||Attribute codes ||<#bbddbb>'''Yes''' (since 9.0, 2019-01-12) || ||The type CFI_dim_t ||<#bbddbb>'''Yes''' (since 9.0, 2019-01-12) || ||Type codes ||<#bbddbb>'''Yes''' (since 9.0, 2019-01-12) || ||Other constants ||<#bbddbb>'''Yes''' (since 9.0, 2019-01-12) || ||Memory for a C descriptor ||<#bbddbb>'''Yes''' (since 9.0, 2019-01-12) || ||C functions declared in ISO Fortran binding.h ||<#bbddbb>'''Yes''' (since 9.0, 2019-01-12) || ||Interoperability of procedures ||<#bbddbb>'''Yes''' (since 12.0?) || ||Lifetimes ||<#bbddbb>n/a (restriction on user code) || ||Interoperability with the C type ptrdiff_t ||<#bbddbb>'''Yes''' (since 4.8, 2012-07-21) || ||Changes to procedures in the iso_c_binding module ||<#bbddbb>'''Yes''' (since 12.0?) || ||Assumed rank ||<#bbddbb>'''Yes''' (since 9.0, 2019-01-12) || ||SELECT RANK ||<#bbddbb>'''Yes''' (since 10.0, 2019-09-01) || ||Assumed type ||<#bbddbb>'''Yes''' (since 4.8, 2012-03-03) || ||Allocatable dummy arguments of intent out ||<#bbddbb>'''Yes''' (since 12.0?) || ||Contiguous attribute ||<#bbddbb>'''Yes''' (since 12.0) || ||Optional arguments ||<#bbddbb>'''Yes''' (since 4.7, 2011-05-06) || ||Asynchronous communication ||<#ffffdd>Unknown || |||| ||<#ffffdd>'''Additional parallel features in Fortran (TS 18508)''' || ||Teams ||<#ffffdd>Partial (since 8.0) || ||Image failure ||<#ffaaaa>No || ||Form team statement ||<#ffaaaa>No || ||Change team construct ||<#ffaaaa>No || ||Coarrays allocated in teams ||<#ffaaaa>No || ||Critical construct ||<#ffaaaa>No || ||Lock and unlock statements ||<#ffaaaa>No || ||Events ||<#bbddbb>'''Yes''' (since 6.0) || ||Sync team statement ||<#ffaaaa>No || ||Image selectors ||<#ffaaaa>No || ||Procedure calls and teams ||<#ffaaaa>No || ||Intrinsic functions get_team and team_number ||<#ffaaaa>No || ||Intrinsic function image_index ||<#ffaaaa>No || ||Intrinsic function num_images ||<#ffaaaa>No || ||Intrinsic function this_image ||<#ffaaaa>No || ||Intrinsic function move_alloc ||<#ffaaaa>No || ||Fail image statement ||<#bbddbb>'''Yes''' (since 7.0) || ||Detecting failed and stopped images ||<#bbddbb>'''Yes''' (since 7.0) || ||Collective subroutines ||<#bbddbb>'''Yes''' (since 5.0) || ||New and enhanced atomic subroutines ||<#bbddbb>'''Yes''' (since 5.0) || ||Failed images and stat= specifiers ||<#ffaaaa>No || |||| ||<#ffffdd>'''Conformance with ISO/IEC/IEEE 60559:2011''' || ||Subnormal values ||<#bbddbb>'''Yes''' (since 9) || ||Type for floating-point modes ||<#bbddbb>'''Yes''' (since 13) || ||Rounding modes ||<#bbddbb>'''Yes''' (since 13) || ||Rounded conversions ||<#ffaaaa>No || ||Fused multiply-add ||<#bbddbb>'''Yes''' (since 13) || ||Test sign ||<#bbddbb>'''Yes''' (since 13) || ||Conversion to integer type ||<#ffaaaa>No || ||Remainder function ||<#bbddbb>'''Yes''' (since 13) || ||Maximum and minimum values ||<#bbddbb>'''Yes''' (since 14) || ||Adjacent machine numbers ||<#ffaaaa>No || ||Comparisons ||<#bbddbb>'''Yes''' (since 14) || |||| ||<#ffffdd>'''Features that address deficiencies and discrepancies''' || ||Default accessibility for entities accessed from a module ||<#ffaaaa>No || ||Implicit none enhancement ||<#bbddbb>'''Yes''' (since 5.0) || ||Referencing a property of an object in a constant expression ||<#ffaaaa>No || ||Enhancements to inquire ||<#ffaaaa>No || ||d0.d, e0.d, es0.d, en0.d, g0.d and ew.d e0 edit descriptors ||<#ffaaaa>No || ||Formatted input error conditions ||<#ffaaaa>No || ||Rules for generic procedures ||<#ffaaaa>No || ||Enhancements to stop and error stop ||<#ffffdd>Partial (since 7.0), missing: [[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84519|PR84519]] || ||Intrinsics that access the computing environment ||<#ffaaaa>No || ||New elemental intrinsic function out_of_range ||<#ffaaaa>No || ||New reduction intrinsic reduce ||<#ffaaaa>No || ||Intrinsic functions image_index, lcobound, ucobound, and this_image ||<#ffaaaa>No || ||Intrinsic function coshape ||<#ffaaaa>No ([[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99250|PR99250]])|| ||Intrinsic subroutine random_init ||<#bbddbb>Yes, (since 10) || ||Intrinsic function sign ||<#ffaaaa>No || ||Intrinsic functions extends_type_of and same_type_as ||<#ffaaaa>No || ||Detecting nonstandard intrinsics ||<#ffaaaa>No || ||Kind of the do variable in implied do ||<#ffaaaa>No || ||Locality clauses in do concurrent ||<#ffaaaa>No || ||Control of host association ||<#ffaaaa>No || ||Connect a file to more than one unit ||<#bbddbb>'''Yes''' (since 10)|| ||Advancing input with size= ||<#ffaaaa>No || ||Extension to the generic statement ||<#ffaaaa>No || ||The value attribute for an argument of a defined operation or assignment ||<#ffaaaa>No || ||Removal of anomalies regarding pure procedures ||<#ffffdd>Partial (since 5.0) || ||Recursive and non-recursive procedures ||<#ffaaaa>No || ||Simplification of calls of the intrinsic cmplx ||<#ffaaaa>No || ||Removal of the restriction on argument dim of many intrinsic functions ||<#ffaaaa>No || ||Kinds of arguments of intrinsic and IEEE procedures ||<#ffaaaa>No || ||Hexadecimal input/output ||<#ffaaaa>No || ||Precision of stat= variables ||<#ffaaaa>No || ||Deletions ||<#bbddbb>'''Yes''' (since 9.0) || ||New obsolescences ||<#ffaaaa>No ([[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85839|PR85839]]) ||