NCCS released an open source Fortran test suite designed to validate the correctness of the compiler implementation of the Fortran-2003 features in HPC applications. The test suite itself is an object-oriented implementation of heterogeneous generic Fortran containers (GFC) that heavily relies on dynamic (unlimited) polymorphism and utilizes most of the object-oriented programming (OOP) features in Fortran-2003. Apart from the direct applications, one of the goals of the effort was to open up this test suite to the community of HPC Fortran users, so that they could help us prioritize the important modern Fortran features for HPC applications and contribute further tests to this suite. The test suite also targets compiler vendors that build Fortran compilers for HPC users. Anyone in the community is welcome to use, contribute, or join this effort.

The current version of the test suite, GFC 1.0, validates the following Fortran-2003 features:

  • Derived types with type-bound procedures;
  • Type extension (i.e. inheritance);
  • Type-bound procedure overloading and overriding;
  • Final type-bound procedures (i.e. destructors);
  • Abstract types and deferred type-bound procedures (i.e. pure virtual functions);
  • Abstract interfaces;
  • Intra-class object polymorphism;
  • Unlimited object polymorphism;
  • Sourced object allocation/deallocation;
  • Fortran-2003 semantics for recursive intrinsic assignment of derived types;
  • Fortran-2003 semantics for recursive deallocation of allocatable components;

Downloading the test suite

The GFC source code and the validation test suite with instructions are openly available at:


If you are interested in getting more information about this code project or want to become a contributor, please subscribe to this mailing list:


The GFC code and the Fortran-2003 validation test suite were developed by Dmitry Liakh (Lyakh), a computational scientist at ORNL (OLCF). He is currently the main developer and can be contacted using his e-mail address for particular questions or requests: