I created the Fortran 2023 status table based on the The new features of
Fortran 2023 by John Reid <https://wg5-fortran.org/N2201-N2250/N2212.pdf>.

I have no permission to add pages to wiki. So I've sent it here to review
and find someone to add to the wiki.

Best regards

-- 
*Ghorban M. Tavakoly*
Phone number: +98 (902) (2²⁰+2¹⁹+2¹⁸+…+2²+2¹+2⁰)
# Chart of Fortran 2023 Features supported by GNU Fortran

See also:

* [Fortran 2018 implementation status](https://gcc.gnu.org/wiki/Fortran2018Status) ·
* [Fortran 2008 implementation status](https://gcc.gnu.org/wiki/Fortran2008Status) ·
* [Fortran 2003 implementation status](https://gcc.gnu.org/wiki/Fortran2003Status) ·
* [TS 29113 status](https://gcc.gnu.org/wiki/TS29113Status)

The listed items follow the sections of the writeup
[**The new features of Fortran 2023**](https://wg5-fortran.org/N2201-N2250/N2212.pdf) by John Reid (WG5 N2212).

## Language elements (N2212 §2)

| Feature | Status |
|---|---|
| Longer lines (10 000 chars) and longer statements (1 000 000 chars, no 255-continuation limit) (US 01/02) | **Yes** (since 14.0) |
| Automatic allocation of deferred-length character variables in new contexts (US 14) | **Partial** (Intrinsic assignment has worked since F2003 support. The new F2023 contexts do **not** work.) |
| `TYPEOF` and `CLASSOF` declaration specifiers (US 16) | **No** |
| Conditional expressions `( c ? a : b )` (US 22) | **Partial** (since 16.0, Scalars of intrinsic type work. Array/DT operands are not supported.) |
| Conditional arguments with `.NIL.` (US 22) | **No** |
| BOZ literals in initialization, intrinsic assignment, typed array constructors and enum constructors (US 23) | **No** |

## Intrinsic procedures and intrinsic modules (N2212 §3)

| Feature | Status |
|---|---|
| `SPLIT` intrinsic subroutine (US 03) | **Yes** (since 16.0, Including `BACK=`) |
| `TOKENIZE` intrinsic subroutine, both forms (US 03) | **No** |
| Trigonometric functions in degrees (US 04) | **Yes** (since 14.0, PR112873, Available as a GNU extension behind `-fdec-math` since 7.0) |
| Trigonometric functions in half revolutions (US 05) | **Yes** (since 16.0, Lowered to the C23 libm functions, so the runtime needs a libm that provides them (glibc ≥ 2.41). |
| `SELECTED_LOGICAL_KIND` (US 06) | **Yes** (since 15.0) | |
| `SYSTEM_CLOCK`: all integer arguments must have the same kind, at least default integer | **Yes** (since 14.0) |
| `IEEE_MAX`, `IEEE_MAX_MAG`, `IEEE_MIN`, `IEEE_MIN_MAG` in `IEEE_ARITHMETIC` | **No** |
| `IEEE_MAX_NUM`, `IEEE_MAX_NUM_MAG`, `IEEE_MIN_NUM`, `IEEE_MIN_NUM_MAG` with ISO/IEC 60559:2020 semantics | **Partial** |
| `LOGICAL8`, `LOGICAL16`, `LOGICAL32`, `LOGICAL64`, `REAL16` in `ISO_FORTRAN_ENV` (US 07/08) | **Yes** (since 15.0) |

## Interoperability with C (N2212 §4)

| Feature | Status |
|---|---|
| `C_F_POINTER` with `LOWER=` argument (UK 01) | **Yes** (since 16.0) |
| `F_C_STRING` (US 09) | **Yes** (since 15.0, Including `ASIS=`) |
| `C_F_STRPOINTER`, both forms (US 09) | **Yes** (since 17.0) |

## Input/output (N2212 §5)

| Feature | Status |
|---|---|
| `AT` edit descriptor (US 10) | **No** |
| `LEADING_ZERO=` specifier in `OPEN` and `INQUIRE` (US 11) | **No** |
| `LZ`, `LZP`, `LZS` edit descriptors (US 11) | **No** |
| Public namelist group may contain a private namelist object | **No** |

## Coarrays (N2212 §6)

| Feature | Status |
|---|---|
| Object of a type with a coarray ultimate component may be an array or allocatable (US 12) | **No** |
| Put with notify: `NOTIFY_TYPE`, `NOTIFY=` in image selectors, `NOTIFY WAIT` (US 13) | **No** |
| Per-image error conditions in collective subroutines | Unknown |

## Procedures (N2212 §7)

| Feature | Status |
|---|---|
| `SIMPLE` procedures (US 15) | **No** |

## Array features (N2212 §8)

| Feature | Status |
|---|---|
| Multiple subscripts and multiple subscript triplets `A(@v)`, `A(@l:u:s)` (US 17) | **No** |
| Integer arrays specifying rank and bounds in declarations, `ALLOCATE` and pointer remapping (US 18) | **No** |
| `RANK(n)` clause in type declarations | **No** |
| `REDUCE` locality specifier for `DO CONCURRENT` (US 20) | **Yes** (since 15.0) |

## Enumerations (N2212 §9, US 21)

| Feature | Status |
|---|---|
| Enumeration types: `ENUMERATION TYPE`, enumeration constructor, comparisons, `INT`/`HUGE` extensions, `NEXT`, `PREVIOUS`, `SELECT CASE`, formatted I/O | **No** |
| Named interoperable enum types: `ENUM, BIND(C) :: name`, enum constructor, integer-conformant assignment | **No** (Only the F2003/F2018 anonymous `ENUM, BIND(C)` is supported.) |

## Obsolete and deleted features (N2212 §10)

| Feature | Status |
|---|---|
| No features were added to the obsolescent or deleted lists | n/a |

## Related, beyond Fortran 2023

| Feature | Status |
|---|---|
| `UNSIGNED` integers (J3/24-116, a Fortran 202Y proposal) | Experimental (since 15.0, `-funsigned`) |

Reply via email to