Releases: abandoft/f2c
Releases · abandoft/f2c
Release list
1.10.0
- Added a record-based transfer layer for sequential and direct formatted and unformatted files, including checked
REC/RECLaddressing and fixed record boundaries. - Added portable little-endian sequential-unformatted framing, corrupt-record detection, partial-record cleanup, and record-aware
BACKSPACE. - Added binary transfers for supported scalar kinds, complex and character values, fixed arrays, implied DO loops, and default or defined I/O for derived values.
- Unified
IOSTAT,IOMSG,ERR,END, andEORhandling while enforcing connected-unit action, form, access, and record constraints without generated abort placeholders. - Corrected direct formatted padding, slash editing, format reversion, missing-record handling, and
NEXTRECadvancement across fixed-length records. - Added pre-emission validation for invalid record controls and derived values whose dynamic components require defined I/O.
- Added strict C17 execution, corrupt-file regression, sanitizer coverage, and generated-C/native-Fortran record-I/O differentials to CI.
1.9.0
- Added a unified, seekable generated-code I/O stream abstraction that retains libc for external files and uses memory records for internal files.
- Removed internal-file
tmpfile()simulation and copy-back, with character scalar and array records, multiple records, PAD, positioning, and overflow status handling. - Migrated explicit formatting, list-directed I/O, NAMELIST, and defined I/O to the same stream interface while retaining bulk external-file transfers.
- Added internal-file format constraints that reject standard-prohibited nonadvancing controls and unformatted transfers.
- Split list-directed and memory-stream generation support out of the core transpiler into dedicated modules.
- Added native Fortran semantic differentials, strict C17, sanitizer, and filesystem-free WebAssembly execution coverage.
1.8.0
- Migrated constant, labeled, and assigned FORMATs to the unified token, AST, typed IR, and static C17 instruction pipeline.
- Added dynamically sized parsing state for true runtime character formats, removing fixed nesting, literal, DT iotype, and v-list capacities.
- Completed execution paths for nested and unlimited groups, positioning, scaling, sign and decimal controls, and defined-I/O format metadata.
- Corrected
E,D, andGmantissas, exponents, significant digits, extreme values, and positioned records to match native Fortran output. - Fixed temporary AST ownership cleanup after invalid FORMAT descriptors, eliminating a sanitizer-detected parser leak.
- Fixed
(/being misclassified as an array-constructor delimiter inside FORMAT, restoring official BLAS labeled formats. - Added byte-exact native FORMAT differentials, deep and long resource boundaries, strict C17, and sanitizer regression coverage.
- Revalidated all 3,535 Reference LAPACK sources and all 52,512 RFP numerical differentials on the new format pipeline.
1.7.0
- Migrated
PRINTto the unified token, AST, and typed I/O pipeline, removing text splitting and expression reparsing. - Unified formatted transfer and format-semantic diagnostics across
PRINT,READ, andWRITE. - Added list-directed, character, runtime character, labeled, empty-list, and nested implied-DO
PRINTforms. - Added F77 assigned FORMAT variables with dynamic, unbounded format-label selection.
- Corrected trailing positioning descriptors so generated output records match native Fortran without extra spaces.
- Expanded strict C17, ASan/UBSan, native Fortran output differential, and pinned Reference BLAS/LAPACK regression coverage.
1.6.0
- Split macro-definition management into a dedicated, bounded preprocessing module and added in-source function-like macros.
- Added zero-argument, nested, and variadic macros together with stringizing, token pasting, and macro-redefinition checks.
- Added backslash-continued preprocessing directive lines and macro-expanded include operands.
- Completed deterministic 64-bit signed and unsigned
#ifvalues, character constants, overflow checks, and invalid-operation diagnostics. - Added macro-argument resource limits and expanded strict C17, sanitizer, and pinned Reference BLAS/LAPACK regression coverage.
1.5.0
- Migrated external file control statements to the unified token, AST, typed IR, and structured code generation pipeline.
- Completed
OPENandCLOSEhandling for file status, access, action, form, position, character controls, and file disposition. - Added sequential-file
BACKSPACEand physicalENDFILEtruncation using only portable C17 facilities. - Added
INQUIREby unit or file name with connection state, capability, and file-property results. - Unified
IOSTAT,IOMSG, andERRhandling for file control statements and added pre-emission semantic validation. - Expanded strict C17, sanitizer, execution, gfortran differential, and numerical-validation CI coverage.
1.4.0
- Migrated
DATAstatements to the unified token, AST, and typed IR pipeline, including multiple groups, repetition factors, and arbitrarily nested implied DO loops. - Added pre-emission semantic validation for initialization constants, types and kinds, element counts, array bounds, duplicate initialization, and resource limits.
- Corrected one-time initialization and
SAVElifetime semantics for scalars, arrays, characters, complex values, andEQUIVALENCEstorage roots. - Lowered portable scalar, whole-array, partial-array, and implied-DO initialization to efficient, readable C17 static initializers.
- Expanded strict C17, repeated-call, negative-diagnostic, and pinned Reference BLAS/LAPACK official numerical differential coverage.
1.3.0
- Added a dedicated, bounded conditional preprocessor with dynamic nesting, complete integer expression evaluation, and recursive object-macro expansion.
- Added
#include, FortranINCLUDE,#line, and numeric line markers while keeping the core library file-system independent through callbacks. - Added API preprocessor definitions and CLI
-D,-U, and-Ioptions with explicit project and source-local macro scopes. - Unified source mapping across preprocessing, source normalization, and tokens so structured diagnostics report both macro expansion and definition locations.
- Added request-level budgets and negative tests for preprocessed bytes, macro count and depth, and include count and depth.
- Expanded dedicated preprocessor, CLI include, cross-compiler, sanitizer, and full pinned Reference LAPACK regression coverage.
- Fixed the preprocessor test's
SIZE_MAXdeclaration portability under strict LLVM/Linux builds.
1.2.0
- Unified and improved the token, AST, typed IR, semantic analysis, and code generation pipelines, with clearer responsibilities across core modules.
- Improved type and semantic handling for array inquiries, array expressions, array constructors, vector subscripts, and transformational intrinsics.
- Expanded
TRANSPOSE,MATMUL, and related transformations for dynamic arrays, mixed kinds, characters, complex values, and derived types. - Improved assumed-shape array descriptors, noncontiguous array sections, procedure argument temporaries, and ownership management for characters and derived types.
- Expanded C17, native Fortran differential, sanitizer, negative semantic, and numerical validation pipeline coverage.
1.1.0
- Refactored the frontend, semantic analysis, AST, typed IR, and code generation pipelines.
- Improved parsing and semantic validation for declarations, implicit typing, storage association, expressions, and statements.
- Added per-request resource limits, structured diagnostic callbacks, and strict configuration validation.
- Improved command-line streaming I/O and atomic file writes to prevent incomplete artifacts after failures.
- Expanded regression tests for architectural boundaries, the command-line interface, semantic analysis, and generated code.