Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
IEC 1539-1-12:2018, more formally identified as ISO/IEC 1539-1:2018, is the official standard for the Fortran programming language, often referred to as Fortran 2018. This international standard specifies the form and interpretation of programs expressed in the Fortran language. It supersedes the previous Fortran 2008 and Fortran 2003 standards and introduces enhancements that improve expressiveness, safety, and parallel performance for scientific and engineering computation.
The standard is developed jointly by the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC), under the technical committee ISO/IEC JTC 1/SC 22. It addresses the base language syntax, semantics, intrinsic procedures, and storage association. Fortran 2018 is fully backward compatible with Fortran 2008, enabling a smooth migration for existing codebases.
Key objectives of the standard include:
Fortran 2018 introduces a set of technical enhancements that extend the capabilities of the language while maintaining strict backward compatibility. The table below summarises the major new features and their impact on programming practice.
| Feature | Description | Benefit |
|---|---|---|
| IMPRURE function | Allows a function with side effects (e.g., I/O, modifying global variables) to be used in a pure context within DO CONCURRENT. | Enables earlier error detection while still permitting necessary side effects. |
| DO CONCURRENT locality | Enhanced locality specifiers (LOCAL, SHARED, LOCAL_INIT) for better control of data sharing in concurrent loops. | Improves safety and optimiser information in parallel regions. |
| Conformance to TS 29113 | Full adoption of the Technical Specification for Further Interoperability with C. | Seamless binding of Fortran entities with C structures, pointers, and functions. |
| Rank-agnostic programming | Select rank dummy arguments can be assumed shape without fixing the rank at compile time. | Simplifies writing library routines that work on arrays of any dimensionality. |
| Coarray enhancements | Teams, events, and coarray collective subroutines (e.g., CO_SUM, CO_BROADCAST). | Robust support for partitioned global address space (PGAS) parallel models. |
| Unlimited polymorphic I/O | Extended user-defined derived-type I/O (DTIO) to handle unlimited polymorphic objects. | Greater flexibility in generic formatted I/O. |
Additionally, the standard clarifies the interaction between the BLOCK construct and SAVE attributes, introduces ERROR STOP with a new QUIET specifier, and provides a revised set of intrinsic modules (such as ISO_FORTRAN_ENV) that expose environmental parameters.
Implementers (compiler vendors, toolsmiths) and application developers should consider the following implementation aspects when adopting IEC 1539-1-12:2018:
CFI_cdesc_t) may require updated runtime libraries. Developers should verify that their compiler version supports ISO_C_BINDING for all intended targets.DIMENSION(..)) dummy arguments requires careful handling of the SELECT RANK construct. Not all compilers implement the full semantics; refer to the compiler’s conformance report.-std=f2018 in GNU Fortran) to identify non‑conforming constructs early. CO_SUM) are collective and introduce implicit synchronisation. Mixing them with explicit SYNC ALL statements can lead to deadlocks if not carefully managed. Conformance to IEC 1539-1-12:2018 is established at the level of a program or a processor (compiler plus runtime). According to the standard, a conforming program is solely written using the syntax and semantics described in the standard document, without relying on extensions or undefined behaviour. A conforming processor must correctly execute any conforming program, reject programs that violate syntax rules or explicit constraints, and may offer additional capabilities as long as they do not alter the behaviour of a conforming program.
Key compliance considerations are:
COMMON, EQUIVALENCE, arithmetic IF, and PAUSE). While still supported, their use is discouraged and may not appear in future revisions.DO loops) remain removed; a conforming processor must not interpret them as Fortran.ISO_FORTRAN_ENV and IEEE_ARITHMETIC must be implemented exactly as described. Vendors should publish a list of supported intrinsics and their numerical characteristics.implicit none statement in every program unit and use the intent attribute for dummy arguments. These habits enhance readability and help the compiler catch logical errors. #ifdef _CRAY) and document the porting assumptions. Publication reference: ISO/IEC 1539‑1:2018 (commonly referred to as IEC 1539‑1‑12:2018). This article provides a technical overview and does not replace the full normative text.
Document revision date: 2026