9571
Comment:

← Revision 98 as of 20161204 22:04:11 ⇥
9556
Allocatable components of recursive type are supported now

Deletions are marked like this.  Additions are marked like this. 
Line 46:  Line 46: 
Allocatable components <#ffaaaa>No, [[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45516PR45516]]   Allocatable components of recursive type <#bbddbb>'''Yes''' (since 7.0, 20161025)  
Chart of Fortran 2008 Features supported by GNU Fortran
See also Fortran 2003 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 result was a list in Fortran Forum (see Fortran2003Status). With Fortran 2008 on the horizon, the list is being updated for Fortran 2008.
The listed items follow the sections in the following writeup:
The new features of Fortran 2008 by John Reid
cf. also Coarrays in the next Fortran Standard by John Reid
The Fortran Forum articles:
Version of August 2009: ACM SIGPLAN Fortran Forum '''28'''(2), 15 (2009)
Version of December 2009: ACM SIGPLAN Fortran Forum '''28'''(3), 32 (2009)
Version of April 2010: ACM SIGPLAN Fortran Forum '''29'''(1), 29 (2010)
August 2010: ACM SIGPLAN Fortran Forum '''29'''(2), 28 (2010)
November 2010: ACM SIGPLAN Fortran Forum '''29'''(3), 26 (2010)
April 2011: ACM SIGPLAN Fortran Forum '''30'''(1), 16 (2011)
August 2011: ACM SIGPLAN Fortran Forum '''30'''(2), 18 (2011)
December 2011: ACM SIGPLAN Fortran Forum '''30''' (2), 20 (2011)
April 2012: ACM SIGPLAN Fortran Forum '''31''' (1), 23 (2012)
August 2012: ACM SIGPLAN Fortran Forum '''31''' (2), 28 (2012)
December 2012 ACM SIGPLAN Fortran Forum '''31''' (3), 17 (2012)
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 2008 feature in GNU Fortran compiler
Submodules 
Yes (since 6.0, 20150805) 
Coarrays 
Yes (Singleimage support since 4.6; multiimage support using OpenCoarrays (including the Fortran 2015 collective subroutines) since 5.1 except allocatable or pointer components of derived type coarrays) 
Performance enhancements 

do concurrent 
Partial (since 4.7, 20110908) (typespec support (and concurrency) missing; PR44735) 
Contiguous attribute 
Yes (since 4.6, 20100621), note: the is_contiguous intrinsic is still missing, PR45424 
Simply contiguous arrays 
Yes (rather a new concept/definition than a new feature thus 'yes'. gfortran uses since many versions similar checks to avoid copyin/out; it is also used internally for constraint checking such as for CONTIGUOUS) 
Data enhancements 

Maximum rank 
No, PR36825, cf. array descriptor update 
Long integers 
Yes 
Allocatable components of recursive type 
Yes (since 7.0, 20161025) 
Impliedshape array 
Yes (since 4.6, 20100813) 
Pointer initialization 
Yes (since 4.6, 20110208) 
Kind of a forall index 
No, PR78219 
Allocating a polymorphic variable 
Yes (partial since 4.6, full since 7.0) 
Accessing data objects 

Accessing real and imaginary parts 
No, PR40196 
Pointer functions as lvalue 
Yes (partial since 4.6, full since 6.0) 
Input/Output 

Finding a unit when opening a file 
Yes (since 4.5, 20090608) 
g0 edit descriptor 
Yes (since 4.4) 
Unlimited format item 
Yes (since 4.5, 20090817) 
Recursive input/output 
Yes 
Execution control 

The block construct 
Yes (since 4.5, 20090929), but as experimental with some details missing 
Exit statement 
Yes (since 4.6, 20100903) 
Stop code 
Yes (since 4.6, 201006) 
Intrinsic procedures for bit processsing 

Bit sequence comparison 
Yes (since 4.6, 20100908) 
Combined shifting 
Yes (since 4.6, 20100908) 
Counting bits 
Yes (since 4.6, 20100831; leadz/tailz since GCC 4.4) 
Masking bits 
Yes (since 4.6, 20100908) 
Shifting bits 
Yes (since 4.6, 20100908) 
Merging bits 
Yes (since 4.6, 20100908) 
Bit transformational functions 
Yes (since 4.6, 20100906) 
Intrinsic procedures and modules 

Storage size 
Yes (since 4.6, 20100708) 
Selecting a real kind 
Yes (since 4.6, 20100625) 
Hyperbolic intrinsic functions 
Yes (since 4.5) 
Bessel functions 
Yes (since 4.6, 20100821, the elemental functions since GCC 4.4) 
Arc tangent function 
Yes (since 4.5) 
Error and gamma functions 
Yes (since 4.5, 20090516 including ERFC_SCALED in initialization expressions) 
Euclidean vector norm 
Yes (since 4.6, 20100827) 
Parity 
Yes (since 4.6, 20100827) 
Execute command line 
Yes (since 4.6, 20100901) 
Location of maximum or minimum value in an array 
No (PR54613) 
Find location in an array 
No (PR54613) 
Constants 
Yes (since 4.7, 20110616) 
Module procedures 
Yes (since 4.6, 20100927) 
Programs and procedures 

Empty contains section 
Yes 
Internal procedure as an actual argument 
Yes (since 4.6, 20100903) 
Generic resolution by pointer or allocatable attribute 
Yes (since 4.8, 20121006, PR45521) 
Null pointer as a missing dummy argument 
Yes (since 4.6, 20100815) 
Elemental procedures that are not pure 
Yes (since 4.6, 20100815) 
Entry statement becomes obsolescent 
Yes (since 4.6, 20100625) 
Unimplemented features  based on the list in the "Introduction" of the F2008 standard
There is a large overlap with the No items in the table above.
 Parallel execution: Coarrays
 The DO CONCURRENT construct provides a means for the program to specify that individual loop iterations have no interdependencies.
 The maximum rank has been increased to 15.
 An allocatable component can be of recursive type.
 Subscripts and nested implieddo limits inside a dataimplieddo can be any constant expression instead of being limited to combinations of constants, implieddo variables, and intrinsic operations.
 A FORALL index variable can have its type and kind explicitly declared within the construct.
 A structure constructor can omit the value for an allocatable component.
 SOURCE= in an ALLOCATE statement can give an array variable the bounds as well as the value of an expression.
 The real and imaginary parts of a complex entity can be accessed independently with a componentlike syntax.
 Intrinsic assignment to an allocatable polymorphic variable is allowed.
 A pointer function reference can denote a variable in any variable definition context.
 Some restrictions on the use of dummy arguments in elemental subprograms have been removed.
 The new intrinsic function FINDLOC searches an array for a value.
 A BACK= argument has been added to the intrinsic functions MAXLOC and MINLOC.
 ALLOCATABLE and POINTER attributes are used in generic resolution.
 Procedureness of a dummy argument is used in generic resolution.