Fortran Reference
|
This content was generated with the assistance of AI and should be verified against the official documentation before being relied on in production. The reference material consulted while preparing these pages is listed in the section bibliography. |
This section is written against Fortran 2023 (ISO/IEC 1539-1:2023, read in its final draft J3/23-007r1), the current published standard. Its first corrigendum (2026) is a bug-fix document and changes no feature used here, and Fortran 2028 is only a work in progress: the committee draft stage has been reached and nothing in the section depends on it, but the preview page says what is coming. Every program was compiled and run on 2026-10-18 with GNU Fortran 16.2 (-std=f2023 -Wall -Wextra -pedantic -fimplicit-none -fcheck=all) and, where a page says so, with LLVM Flang 23; Intel ifx 2026.1 and the other commercial compilers are described from their manuals, because they were not available for testing. The tools around the language are at fpm 0.13.0, stdlib 0.8.1, fortls 3.2.2 and test-drive 0.6.1, with OpenMP 6.0, OpenACC 3.4 and MPI 5.0 as the parallel specifications. Features newer than Fortran 2008 are marked with the standard that introduced them, and the pages say which compilers do not accept them yet.
What Fortran is
Fortran (FORmula TRANslation) is the oldest high-level programming language still in wide use: the first compiler shipped for the IBM 704 in 1957. It is a compiled, statically typed, array-oriented language that ISO/IEC standardizes, designed so that a compiler can turn mathematical formulas over large arrays into fast machine code. That is why weather and climate models, computational fluid dynamics, quantum chemistry, astrophysics and many numerical libraries are written and still being extended in it.
Modern Fortran is far from the punched-card language of its reputation. Since Fortran 90 it has free-form source, modules, whole-array expressions and dynamic memory with allocatable; later revisions added derived types with type-bound procedures and polymorphism (Fortran 2003), coarrays and do concurrent (2008), teams, events and collectives (2018) and, in 2023, conditional expressions, rank-independent code, enumeration types and the split and tokenize string intrinsics. Parallelism is part of the language through coarrays and do concurrent, and OpenMP, OpenACC and MPI have first-class Fortran bindings. Compilers include GNU Fortran, LLVM Flang, Intel ifx, NAG, the HPE Cray and NVIDIA compilers; the community maintains the Fortran Package Manager (fpm), a standard library (stdlib), a language server (fortls) and a documentation generator (FORD).
The heatflow scenario
The examples across the section share one small, original, numerical domain: heatflow, a solver for heat diffusion on a rectangular plate, organised as an fpm project (fpm.toml, src/, app/, test/ and example/). Fortran is used where numbers are the point, so, unlike the Rust, Go and Ruby references, it deliberately does not use the shelf library catalogue.
-
heatflow_kindsdefines thedpkind fromiso_fortran_env, andheatflow_constantsthe defaults. -
grid_tis a derived type holding the sizes, the spacing and an allocatable temperature fieldu(:,:), with a constructor function. -
The boundary condition (
dirichlet,neumann,periodic) is an enumeration; theenum, bind(c)form is the one the compilers accept today. -
An abstract
solver_twith a deferredstepbinding is extended byjacobi_solver_tandftcs_solver_t, implemented in submodules, with afinalprocedure. -
A run configuration is read from a namelist file, and results are written as CSV and as unformatted stream files, with defined derived-type I/O for
grid_t. -
Parallel variants of the stencil use
do concurrent(withreducefor the residual), OpenMP, a coarray halo exchange across images and anmpi_f08domain decomposition. -
A
bind(c)C API, a C client, a Python wrapper built with f2py and Meson and a MATLAB MEX gateway call the same kernel. -
Tests with test-drive, a CMake build next to the fpm build and FORD documentation grow alongside the code.
The pages build on each other, and the comparison page maps heatflow concepts to the C and the Python and Rust references. The cheat sheet summarises the whole section.
New here? Read in this order
-
Getting Started — install a compiler, a first program, a first fpm project
-
Program Structure and Source Form and Intrinsic Types and Kinds
-
Variables, Declarations and Attributes and Expressions and Assignment
-
Procedures, Functions and Subroutines and Modules and Submodules
-
Arrays Fundamentals and Allocatable Arrays and Dynamic Memory — the heart of numerical Fortran
Then pick topics as you need them and keep the cheat sheet at hand. If you know older Fortran, start with Legacy Features and Modernization and What’s New and Fortran 2028 Preview; if you come from another language, start with Fortran for Programmers of Other Languages.
What’s covered
Getting started
| Page | What it covers |
|---|---|
what Fortran is used for, installing a compiler, Hello world, file extensions and module files, a first fpm project and reading diagnostics |
|
from FORTRAN I (1957) to Fortran 2023, WG5 and J3, conformance, the compiler landscape |
|
the differences that surprise newcomers, mapped to C, Python and Rust |
|
the IDEs, editors and tools commonly used for Fortran, with links to the official pages |
Core language
| Page | What it covers |
|---|---|
program units, scoping units, statement order, tokens, free source form and the F2023 line limits |
|
the five intrinsic types, kind parameters, selected_*_kind, literals with kinds, BOZ constants and the real model |
|
type declarations, every attribute, initialization, implicit none, save, block and specification expressions |
|
operators and precedence, mixed-mode rules, integer division, defined operators, F2023 conditional expressions |
|
if, select case, do, do while, exit and cycle, named constructs, block, associate, select type and select rank |
|
functions and subroutines, intent, optional and keyword arguments, pure, elemental and recursive, internal procedures, procedure pointers |
|
module contents, access control, use association, submodules and separate module procedures, compilation order |
|
explicit and abstract interfaces, generic interfaces, defined operators and assignment |
Arrays
| Page | What it covers |
|---|---|
rank, shape and conformance, column-major order, sections, constructors, where and forall |
|
allocate and deallocate, source and mold, automatic reallocation, move_alloc, allocation lifecycle |
|
explicit-shape, assumed-shape, assumed-size and assumed-rank dummies, contiguity and the F2023 rank clause |
|
sum, maxval, findloc, pack, reshape, matmul, reduce and the dim and mask arguments |
|
kind, type and rank genericity: generic interfaces, class(*), templates and assumed rank |
Characters, strings and pointers
| Page | What it covers |
|---|---|
character kinds and lengths, deferred length, substrings, intrinsics, split and tokenize, encodings |
|
pointer and target, association states, pointer assignment, bounds and rank remapping, pointer versus allocatable |
Derived types and object-oriented programming
| Page | What it covers |
|---|---|
components, constructors, default initialization, access control, sequence and bind(c) types |
|
kind and len type parameters, assumed and deferred parameters |
|
extends, polymorphic class(t) and class(*), select type, allocation of polymorphic objects, dispatch |
|
bindings, pass and nopass, deferred and abstract, generic bindings, final procedures |
|
enum, bind(c), the F2023 enumeration type, flags and select case |
Input/output
| Page | What it covers |
|---|---|
units, open, close, inquire, sequential, direct and stream access, formatted and unformatted data |
|
every edit descriptor, format reversion, rounding and sign modes, list-directed output |
|
internal reads and writes, list-directed input, namelist, non-advancing and CSV-style input |
|
defined derived-type I/O, the DT edit descriptor, asynchronous transfers and wait |
Intrinsics, numerics and errors
| Page | What it covers |
|---|---|
the classes of intrinsics, argument keywords, the catalogue of every intrinsic with its purpose |
|
model inquiries, bit procedures, shifts, transfer, conversions and out_of_range |
|
the standard intrinsic modules and every iso_fortran_env entity |
|
IEEE formats, subnormals, NaN, rounding, comparing reals, the ieee_* modules and exception flags |
|
stat, iostat and errmsg, error stop, exit codes and failure handling without exceptions |
Parallel programming
| Page | What it covers |
|---|---|
SPMD images, coindexed access, sync statements, critical and locks, halo exchange |
|
teams, events, notify, collective subroutines and atomic procedures |
|
iteration independence, locality specifiers, reduce, compiler support and offload |
|
directive sentinels, parallel do, reductions, tasks, data regions and accelerators |
|
typed handles, point-to-point and collective calls, domain decomposition of the plate |
Interoperability
| Page | What it covers |
|---|---|
iso_c_binding, bind(c), c_loc and c_f_pointer, strings, callbacks, interoperable types |
|
CFI_cdesc_t and the CFI functions for assumed-shape and allocatable arguments |
|
a bind(c) library with a header, C++ linkage, f2py, ctypes and CFFI, layout and runtime libraries |
|
the mexFunction gateway, the Fortran Matrix API, the Engine API and MAT-files |
Tooling and ecosystem
| Page | What it covers |
|---|---|
gfortran, Flang and ifx options for standards, warnings, runtime checks, optimization and debugging |
|
module dependencies, libraries and installation with Make, CMake and Meson |
|
commands, the fpm.toml manifest, profiles, dependencies, tests, examples and publishing |
|
what the community standard library offers, installing it and a tour of its modules |
|
calling dgemm and dgesv, leading dimensions, linking and other libraries |
|
test-drive, pFUnit, runtime checks, gdb, sanitizers, valgrind and profilers |
|
FORD, fortls, formatters and linters, compile_commands.json and editors |
Practice and modernization
| Page | What it covers |
|---|---|
naming, layout, kinds, modules, intent and a style checklist |
|
implicit save, literal kinds, aliasing, loop order and each trap shown with the flag that catches it |
|
timing, column-major loops, contiguity and array temporaries, vectorization and structure layouts |
|
deleted and obsolescent features, real diagnostics and a step-by-step modernization path |
Bibliography
Every source used by the pages of this section is listed here, grouped by origin, and each is cited again on the page that uses it (in the == References section and after each example). Links were reachable on 2026-10-18; the Oxford University Press, ISO, Intel and MathWorks sites block scripted requests, so those links were opened in a browser or fetched through a web reader where possible.
Books
-
Michael Metcalf, John Reid, Malcolm Cohen and Reinhold Bader, Modern Fortran Explained: Incorporating Fortran 2023, 3rd edition of Modern Fortran Explained. Oxford University Press (Numerical Mathematics and Scientific Computation), 2023. ISBN 978-0-19-887657-1 (hardback), 978-0-19-887658-8 (paperback). Publisher page; book site (example code and errata; the address printed in the book, oup.com/fortran2023, redirects there). It describes Fortran 2018 as the base language plus Fortran 2023, and it is the main narrative source for the language chapters.
-
The MathWorks, Inc., MATLAB C/C++, Fortran, Java, and Python API Reference, release R2023a (MATLAB 9.14), 2023. Documentation PDF; the current online version is Fortran with MATLAB (release R2026b when checked). Only its Fortran parts were consulted, for the MATLAB page of this section.
The books are consulted references, not the primary source: no text, listing, figure or exercise was taken from them, and every example was written against the current official documentation and compiled and run. On any discrepancy, and wherever a book is silent on a later feature, the official documentation wins; where a book shows an outdated form, the pages say so in prose, collected on What’s New and Fortran 2028 Preview and Legacy Features and Modernization.
Standards and committee documents
-
ISO/IEC 1539-1:2023, Information technology — Programming languages — Fortran — Part 1: Base language and its corrigendum, WG5 N2244
-
The free J3 drafts: J3/23-007r1 (the final draft of Fortran 2023, cited with clause numbers) and J3/26-007r1 (the Fortran 2028 working draft); the J3 paper 24-116
-
WG5: home page, Fortran 2023 and Fortran 2028 pages, and J3
-
John Reid, The new features of Fortran papers: N2212 (2023), N2161 (2018), N1891 (2008), N1648 (2003); WG5 N2263
-
IEEE 754-2019 (floating point; ISO/IEC 60559:2020), TOML 1.0, Semantic Versioning and SPDX licence identifiers
fortran-lang.org and its projects
-
fortran-lang.org, the compilers and packages pages, and the Fortran Discourse
-
The Learn pages used, Learn: best practices, best practices: allocatable arrays, best practices: arrays, best practices: callbacks, best practices: element operations, best practices: file io, best practices: floating point, best practices: integer division, best practices: modules programs, best practices: multidim arrays, best practices: style guide, best practices: type casting, building programs, building programs: compiling source, building programs: distributing, building programs: include files, building programs: linking pieces, building programs: managing libraries, building programs: project make, building programs: runtime libraries, intrinsics, intrinsics: array, intrinsics: character, intrinsics: math, intrinsics: system, intrinsics: transform, oop features in fortran, oop features in fortran: object based programming techniques, oop features in fortran: object oriented programming techniques, oop features in fortran: performance and ease of use, os setup: choose compiler, os setup: ides, os setup: install gfortran, os setup: text editors, quickstart: arrays strings, quickstart: derived types, quickstart: gotchas, quickstart: hello world, quickstart: operators control flow, quickstart: organising code, quickstart: variables, rosetta stone.
-
The Fortran Package Manager, fpm.fortran-lang.org, and its repository; the pages used: design: index, how-to: compute-pi-openmp, how-to: index, how-to: selective-cleaning, install: index, news, news: 2025: 03-10-fpm-version-0.11.0, news: 2025: 05-18-fpm-verion-0.12.0, news: 2026: 02-17-fpm-version-0.13.0, registry: index, registry: naming, registry: publish, registry: settings, spec: compile_commands, spec: features, spec: index, spec: manifest, spec: metapackages, tutorial: dependencies, tutorial: hello-fpm, tutorial: index. Also fpm 0.13.0 release, manifest reference at v0.13.0, setup-fpm and the package jonquil in the fpm registry.
-
The Fortran Standard Library, stdlib.fortran-lang.org, its repository and the 0.8.1 release; the specification pages used: specs index, stdlib_ascii, stdlib_error, stdlib_error_state_type, stdlib_kinds, stdlib_linalg, stdlib_string_type, stdlib_stringlist_type, stdlib_strings. The 0.8.1 sources and specification files: README, WORKFLOW, STYLE_GUIDE, specs index; the specification of every module is a file
doc/specs/stdlib_<name>.mdin that tree, for example stdlib_ansi, stdlib_array, stdlib_ascii, stdlib_bitsets, stdlib_constants, stdlib_error, stdlib_error_state_type, stdlib_hash_procedures, stdlib_hashmaps, stdlib_intrinsics, stdlib_io, stdlib_kinds, stdlib_linalg, stdlib_linalg_iterative_solvers, stdlib_linalg_state_type, stdlib_logger, stdlib_math, stdlib_optval, stdlib_quadrature, stdlib_random, stdlib_selection, stdlib_sorting, stdlib_sparse, stdlib_specialfunctions_gamma, stdlib_specialmatrices, stdlib_stats, stdlib_stats_distribution_normal, stdlib_str2num, stdlib_string_type, stdlib_stringlist_type, stdlib_strings, stdlib_system, stdlib_version. Also fypp_deployment.py and f08estop.f90. -
test-drive, fortls (with its editor integration page), fprettify, fftpack and the VS Code Fortran extension
-
LFortran and its documentation
Compiler documentation
-
GNU Fortran: gcc.gnu.org/fortran, the manual gcc.gnu.org/onlinedocs/gfortran (the 16.2.0 edition is Invoking GNU Fortran), GCC 16 changes, Fortran 2003, Fortran 2003 status and Fortran 2008 status wiki pages, libgomp ( Enabling OpenMP, OpenMP implementation status) and the GCC pages on options, gcov and instrumentation.
-
GNU Fortran manual pages used (intrinsic procedures are named after the page): ABORT, ABS, ACHAR, ACOS, ACOSD, ACOSH, ACOSPI, ADJUSTL, ADJUSTR, AIMAG, AINT, ALL, ALLOCATED, ANINT, ANY, ASIN, ASIND, ASINH, ASINPI, ASSOCIATED, ATAN, ATAN2, ATAN2D, ATAN2PI, ATAND, ATANH, ATANPI, ATOMIC_ADD, ATOMIC_AND, ATOMIC_CAS, ATOMIC_DEFINE, ATOMIC_FETCH_ADD, ATOMIC_FETCH_AND, ATOMIC_FETCH_OR, ATOMIC_FETCH_XOR, ATOMIC_OR, ATOMIC_REF, ATOMIC_XOR, Argument list functions, Argument passing conventions, Asynchronous I/O, BESSEL_J0, BESSEL_J1, BESSEL_JN, BESSEL_Y0, BESSEL_Y1, BESSEL_YN, BGE, BGT, BIT_SIZE, BLE, BLT, BOZ literal constants, BTEST, CEILING, CHAR, CMPLX, COMMAND_ARGUMENT_COUNT, COMPILER_OPTIONS, COMPILER_VERSION, CONJG, COS, COSD, COSH, COSHAPE, COSPI, COUNT, CO_BROADCAST, CO_MAX, CO_MIN, CO_REDUCE, CO_SUM, CPU_TIME, CSHIFT, Coarray Programming, Code Gen Options, Cray pointers, DATE_AND_TIME, DBLE, DIGITS, DIM, DOT_PRODUCT, DPROD, DSHIFTL, DSHIFTR, Data consistency and durability, Debugging Options, Directory Options, EOSHIFT, EPSILON, ERF, ERFC, ERFC_SCALED, EVENT_QUERY, EXECUTE_COMMAND_LINE, EXIT, EXP, EXPONENT, EXTENDS_TYPE_OF, Environment Variables, Error and Warning Options, Extensions implemented in GNU Fortran, Extensions, FINDLOC, FLOOR, FRACTION, File format of unformatted sequential files, Files opened without an explicit ACTION= specifier, Fortran 2003 status, Fortran 2008 status, Fortran 2018 status, Fortran Dialect Options, Fortran2008Status, Further Interoperability of Fortran with C, GAMMA, GET_COMMAND, GET_COMMAND_ARGUMENT, GET_ENVIRONMENT_VARIABLE, GET_TEAM, GFORTRAN_CONVERT_UNIT, GFORTRAN_ERROR_BACKTRACE, GFORTRAN_LIST_SEPARATOR, GFORTRAN_STDIN_UNIT, GFORTRAN_UNBUFFERED_ALL, GNU Fortran Compiler Directives, HUGE, HYPOT, Hollerith constants support, IACHAR, IALL, IAND, IANY, IBCLR, IBITS, IBSET, ICHAR, IEEE modules, IEOR, IMAGE_INDEX, INDEX intrinsic, INT, IOR, IPARITY, ISHFT, ISHFTC, ISO_FORTRAN_ENV, IS_CONTIGUOUS, IS_IOSTAT_END, IS_IOSTAT_EOR, Interoperability with C, Intrinsic Modules, Intrinsic Procedures, Introduction to Intrinsics, Invoking GNU Fortran, KIND, LBOUND, LCOBOUND, LEADZ, LEN, LEN_TRIM, LGE, LGT, LLE, LLT, LOG, LOG10, LOGICAL, LOG_GAMMA, Link Options, MASKL, MASKR, MATMUL, MAX and MIN intrinsics with REAL NaN arguments, MAX, MAXEXPONENT, MAXLOC, MAXVAL, MERGE, MERGE_BITS, MIN, MINEXPONENT, MINLOC, MINVAL, MOD, MODULO, MOVE_ALLOC, MVBITS, NEAREST, NEW_LINE, NINT, NORM2, NOT, NULL, NUM_IMAGES, Naming and argument passing conventions, OUT_OF_RANGE, OpenMP Modules OMP_LIB and OMP_LIB_KINDS, PACK, PARITY, POPCNT, POPPAR, PRECISION, PRESENT, PRODUCT, Preprocessing Options, RADIX, RANDOM_INIT, RANDOM_NUMBER, RANDOM_SEED, RANGE, RANK, REAL, REPEAT, RESHAPE, RRSPACING, Runtime Options, SAME_TYPE_AS, SCALE, SCAN, SELECTED_CHAR_KIND, SELECTED_INT_KIND, SELECTED_LOGICAL_KIND, SELECTED_REAL_KIND, SET_EXPONENT, SHAPE, SHIFTA, SHIFTL, SHIFTR, SIGN, SIN, SIND, SINH, SINPI, SIZE, SPACING, SPLIT, SPREAD, SQRT, STORAGE_SIZE, SUM, SYSTEM_CLOCK, Standards, TAN, TAND, TANH, TANPI, TEAM_NUMBER, THIS_IMAGE, TINY, TMPDIR, TRAILZ, TRANSFER, TRANSPOSE, TRIM, UBOUND, UCOBOUND, UNPACK, Unsigned integers, VERIFY.
-
Other GCC manual pages used: gcc-16.2.0: gcc: Link-Options, gcc-16.2.0: gcc: Optimize-Options, gcc-16.2.0: gfortran: Code-Gen-Options, gcc-16.2.0: gfortran: Debugging-Options, gcc-16.2.0: gfortran: Directory-Options, gcc-16.2.0: gfortran: Error-and-Warning-Options, gcc-16.2.0: gfortran: Extensions, gcc-16.2.0: gfortran: Fortran-Dialect-Options, gcc-16.2.0: gfortran: Invoking-GNU-Fortran, gcc-16.2.0: gfortran: Link-Options, gcc-16.2.0: gfortran: Preprocessing-Options, gcc-16.2.0: gfortran: Runtime-Options, gcc: Code-Gen-Options, gcc: Developer-Options, gcc: Gcov, gcc: Instrumentation-Options, gcc: Optimize-Options.
-
LLVM Flang, flang.llvm.org/docs: Directives, DoConcurrentConversionToOpenMP, Extensions, FlangCommandLineReference, FlangDriver, FortranStandardsSupport, GettingStarted, Intrinsics, ModFiles, OpenACC, OpenMPSupport, OptionComparison, ParameterizedDerivedTypes, PolymorphicEntities, Preprocessing. Also the Clang user’s manual and JSON compilation database.
-
Intel Fortran Compiler (ifx): the Developer Guide and Reference 2026.1, overview, conformance and Fortran features, DO CONCURRENT, the 2025.0 option pages coarray, fp-model and qopt-report, the 2026 release notes, oneMKL and its link line advisor
-
NAG Fortran Compiler: release notes 7.2; HPE Cray Compiling Environment: CCE overview; NVIDIA HPC SDK: compilers user’s guide and release notes
Parallel programming
-
MPI: the MPI Forum documents, the MPI 5.0 report, MPICH guides and Open MPI documentation
-
Coarray runtimes: OpenCoarrays (repository) and Caffeine
Interoperability, MATLAB and build systems
-
NumPy f2py: f2py/, f2py/buildtools/distutils-to-meson, f2py/buildtools/meson, f2py/index, f2py/python-usage, f2py/signature-file, f2py/usage, reference/routines.ctypeslib, user/basics.indexing. Also CFFI, ctypes, Julia: calling C and Fortran code, Writing R Extensions and PETSc Fortran.
-
C and C++ references: c/language/array, c/numeric/fenv, cpp/container/mdspan, cpp/language/language_linkage.
-
MathWorks MATLAB Fortran API (Fortran with MATLAB): Fortran applications to read mat file data, access fortran data, engclose_fortran, engevalstring_fortran, enggetvariable_fortran, engopen_fortran, engoutputbuffer_fortran, engputvariable_fortran, matgetdir, matgetvariable, matopen, matputvariable, mexatexit, mexcallmatlab_fortran, mexcallmatlabwithtrap, mexerrmsgidandtxt, mexfunction, mexprintf, mexsettrapflag, mwindex_fortran, mwpointer, mwsignedindex_fortran, mwsize_fortran, mxcopyptrtoreal8, mxcopyreal8toptr, mxcreatedoublematrix_fortran, mxdestroyarray_fortran, mxgetdoubles_fortran, mxgetpr_fortran, call mex fortran, calling matlab engine from fortran programs, convert fortran data types, create or delete fortran array, fortran language, fortran mx matrix library, build and run fortran engine applications on linux, components of fortran mex file, mex library fortran, ref/mex, validate fortran data, pdf_doc/apiref.pdf, rt/requirements/supported compilers.
-
CMake: latest/, latest/manual/ctest.1, latest/module/CheckFortranSourceCompiles, latest/module/FindHDF5, latest/module/FindLAPACK, latest/module/FindMPI, latest/module/FindOpenMP, latest/module/FortranCInterface, latest/prop_sf/Fortran_FORMAT, latest/prop_sf/Fortran_PREPROCESS, latest/prop_tgt/Fortran_MODULE_DIRECTORY, latest/variable/CMAKE_EXPORT_COMPILE_COMMANDS, v3.31/manual/ctest.1, v3.31/module/FindBLAS, v3.31/module/FindLAPACK. Meson: home, Builtin-options, Commands, Dependencies, Reference-manual_returned_build_tgt, Subprojects, Wrap-dependency-system-manual. Also Ninja and GNU Make: multiple targets.
-
Numerical libraries: BLAS, LAPACK (routine reference, Users' Guide), OpenBLAS (FAQ), FFTW from Fortran, Apple Accelerate BLAS, HDF5 and netCDF-Fortran
Community tools (labelled as such)
These are third-party projects rather than part of the language or its official tooling; the pages label them as community tools.
-
FORD (repository), Fortitude, findent (home page), Fypp and M_CLI2
-
pFUnit and Vegetables for testing
-
Debugging and profiling: GDB: Fortran, Valgrind (Memcheck), AddressSanitizer, gprof and perf