Skip to content

Latest commit

 

History

History
102 lines (86 loc) · 22.5 KB

File metadata and controls

102 lines (86 loc) · 22.5 KB
title Language Feature Matrix
audience users, developers
prerequisites user guide
related ../guide/index.md, ../reference/fortran-wrapper.md
status maintained
publication draft

Language Feature Matrix

This matrix is the user-facing support index for native-language features. It does not replace the detailed Fortran wrapper reference; it points each feature to the owning docs, implementation route, evidence, and limitations.

A row may claim support only when the linked evidence proves that behavior in the current repository. Runtime wrapper support requires compiled, imported, and called wrapper tests. Parser or semantic support alone is listed as inspection-only or partial support.

Status Meanings

Status Meaning
Supported The documented subset has current runtime or inspection evidence.
Partially supported A useful subset is implemented and tested, but important related forms are blocked or deferred.
Unsupported prik intentionally blocks the form or has no safe wrapper contract for it yet.
Planned The feature has a reserved documentation or roadmap entry but no support claim.
Not implemented The feature is explicitly outside the current implemented surface.

Supported Runtime Features

Feature Status User docs Source owner Evidence Limitations
Scalar functions, subroutines, and baseline arrays Supported Functions, subroutines Wrapper pipeline Verified baseline tests Native scalar arguments require exact NumPy dtypes where documented.
Generic procedure interfaces Supported Generic interfaces Feature route Generic interface tests Defined operators and assignment are tracked separately.
Defined operators and assignment overloads Supported Defined operators Bridge and binding generation Defined operator tests Supported operators are those covered by the wrapper guide and runtime tests.
Output arguments and multiple results Supported Subroutine projection Ownership and lowering Calls and results tests, function result tests Tuple ordering and caller-provided array behavior follow the wrapper guide.
Optional arguments Supported Optional arguments Binding generation Optional argument tests Unsupported optional combinations fail during wrapper planning.
Allocatable array handles, descriptor arguments, and owned results Supported Allocatables Ownership policy Allocatable runtime tests, scalar-derived matrix tests Array module/field handles borrow their owner; result handles own persistent descriptor storage. Wrapper-owned scalar-derived allocatables use typed holders; module scalar allocatables use reversible move_alloc transactions for compatible dummies.
Pointer scalar projections and array handles Partially supported Pointers Ownership policy Pointer handle tests, pointer policy tests, scalar-derived matrix tests Descriptor arguments, module/field handles, strided views, wrapper-owned pointer-array results and outputs, scalar-derived pointer holders, and module pointer reassociation transactions are supported. Target deallocation and writable reassociation remain policy-gated.
Array-valued function results Supported Array results Array lowering Array result tests Ownership and dtype/shape behavior are limited to documented array result forms.
NumPy array argument contracts Supported Arrays Bridge and binding generation Array contract tests, multidimensional tests Wrong dtype, rank, shape, contiguity, alignment, or mutability is rejected.
Derived-type scalar boundaries and methods Supported Derived types Class lowering Derived boundary tests, method tests Derived-type arrays and some polymorphic forms are not included.
Default and keyword constructors with finalizers Supported Constructors and finalizers Ownership policy Constructor/finalizer tests, borrowed finalizer tests Construction commits ownership only after initialization; borrowed wrappers never run an owning finalizer.
Generic constructor interfaces and overloaded runtime initialization Supported Constructors Class policy and lowering Edited class surface tests, class policy tests Candidates require distinguishable completed Python signatures; incomplete or ambiguous sets are blocked before emission.
Module variables, constants, saved state, and common-block procedure state Supported Wrapping modules Module state route Module state tests, scalar-derived matrix tests, common-block tests Common-block storage is not exported as Python variables. Rank-zero derived module objects use direct, scoped, allocation-transaction, or pointer-transaction handoff selected before lowering.
Fortran enum constants Supported Enumerations Semantic constants route Enum runtime tests, enum semantic tests, enum diagnostics No Python Enum or IntEnum classes are generated.
Scalar character arguments, results, and fields Supported Strings Character bridge route Character argument tests, edge-case tests Character arrays use fixed-width NumPy bytes dtype; mutable scalar deferred-length storage is blocked.
Scalar kind coverage Supported Data types Fortran type probe Scalar kind tests Wider real, complex, and explicit logical storage is blocked without portable NumPy mapping.
Caller-ordered multi-source builds, Makefiles, verbose mode, and output placement Supported Building the shared library Wrapper orchestration Multi-source tests, compiler verbose tests prik does not discover, reorder, or resolve all external source dependencies.
Visibility, naming, keyword escaping, and collision policy Supported Visibility and naming Naming policy Visibility/naming tests Strict mode rejects names that default mode can normalize.
Immediate call-scoped Python callbacks Supported Callbacks Callback bridge route Callback plan tests, scalar callback tests, array callback tests, combined shape tests Direct wrapper-plan generation supports entering-thread callbacks only. Stored, optional, asynchronous, or cross-thread callbacks are unsupported.
Runtime error projection, GIL policy, recursion, OpenMP path, and GNU ABI checks Supported Error handling Runtime route Status projection runtime, status and GIL lowering, recursion tests, OpenMP tests, ABI tests OpenMP and ABI evidence is compiler/platform-specific; callers still own native synchronization.
Fortran source wrapper builds Supported Building the shared library Wrapper orchestration Build modes, runtime ABI Implemented for ordered Fortran source inputs.

Supported Inspection Features

Feature Status User docs Source owner Evidence Limitations
Fortran parse, semantic IR, and .pyi inspection Supported Fortran inspection recipe, semantic IR Fortran parser route Fortran parser fixtures, Fortran semantic tests Inspection support does not by itself prove runtime wrapper support.
Semantic .pyi wrapper builds from explicit native artifacts Partially supported Semantic .pyi contracts, .pyi format .pyi build route format and authoritative-input tests, multi-source contract tests, native build plan tests Current runtime parity is limited; source/generated/modified multi-source package parity is covered, and broader parity remains tracked in the checklist.
Scalar inheritance and polymorphic dispatch Partially supported Inheritance and polymorphism Class lowering route Inheritance tests Polymorphic results, mutable dummies, arrays, allocatable/pointer scalars, and class(*) are blocked.
Assumed-size, assumed-rank, and lower-bound array contracts Partially supported Arrays Array bridge route Assumed-rank tests Assumed type and derived-type arrays remain blocked. Character arrays require fixed-width NumPy bytes dtype.
Generated reference pages for modules, functions, and classes Partially supported Reference index Source map Documentation structure checks, semantic contract tests Maintained manual references exist for generated functions, modules, classes, and generated file contracts; automated reference inventory generation has not been selected.

Unsupported Or Blocked Forms

Feature Status User docs Source owner Evidence Limitations
Unproved pointer lifetime and ownership-changing operations Unsupported Pointer safety Ownership policy Pointer policy tests, pointer runtime tests Native targets must outlive every handle use; allocation, target deallocation, resize, and writable reassociation require explicit completed policy.
Persistent callbacks and procedure pointers Unsupported Callback limitations Callback route Callback policy tests, scalar callback tests Callbacks are valid only during the wrapped call.
Advanced multi-source dependency discovery and external-library integration Unsupported Multiple source files Build orchestration Multi-source tests prik does not infer dependency graphs, prebuilt module paths, or external library discovery.
Blocked array forms Unsupported Unsupported array forms Array policy route Array semantic tests, diagnostics Assumed type type(*), arrays of derived types, and character arrays not representable as fixed-width bytes need missing runtime contracts.
Unsupported polymorphic forms Unsupported Inheritance limits Class policy route Inheritance tests Results, mutable dummies, arrays, polymorphic allocatable/pointer scalars, and class(*) are blocked.
Ambiguous or incomplete constructor overload sets Unsupported Constructor limitations Constructor route Constructor semantic tests, class-plan validation tests Candidates must have distinguishable exact runtime signatures and compatible native-owner lifecycles.
Character arrays and mutable deferred-length character storage Partially supported Strings Character bridge route Character edge tests Character arrays use fixed-width NumPy bytes dtype. Fixed and allocatable deferred element length maps to dtype itemsize; Unicode/object arrays and mutable scalar deferred-length storage are unsupported.
Wider-than-supported real, complex, and logical storage Unsupported Datatype limits Type probing Scalar kind tests prik blocks rather than silently losing precision or Boolean storage semantics.

Planned Or Reserved Areas

Feature Status User docs Source owner Evidence Limitations
Full semantic .pyi parity across all wrapper scenarios Planned Semantic .pyi format .pyi route semantic .pyi feature tests Only the documented implemented subset is supported.
MPI examples and distribution constraints Not implemented MPI example Planned examples Documentation structure checks No support contract or runnable evidence exists yet.