Status and Roadmap

Current implementation status and the next work that actually matters.

Current state

tgFortran is past the stage where only syntax exists. The parser, semantic analysis, LLVM lowering, in-tree runtime, hash-backed containers, UDT support, broad intrinsics, modules, and parallel loops are all implemented. The project is now in benchmark-driven compiler work.

Implemented language surface

AreaStatus
Core syntax, expressions, arrays, slicing, while, break, continueimplemented
Modules and selective importsimplemented
Enum with explicit valuesimplemented
UDT with named literals, nested fields, arrays of UDT, field-subscript assignmentimplemented
Dict and set with literals, iteration, removal, nested dict valuesimplemented
Broad intrinsic set including dimensional reductions and extremaimplemented
Command-line argument intrinsicsimplemented
do parallel runtime pathimplemented
Runnable SPH, heat, UDT, and intrinsic showcase examplesimplemented

Performance baseline

do parallel now executes across CPU threads via OpenMP with chunk coarsening.

KernelStatus
Runtime pathsingle runtime path (tgfortran)
do parallelOpenMP with chunk coarsening
atomic compound assignmenthardware atomic instructions
SPH all-pairs (n=3000, 12 threads)4.0x speedup

Parallel speedup scales with problem size. The chunk coarsening design gives each thread a contiguous iteration range, reducing synchronization overhead and preserving LLVM auto-vectorization of inner loops.

Next compiler work

  1. Parallel scaling: measure and improve scaling with larger particle counts and more complex kernels.
  2. Reduce UDT-backed hot-loop overhead further, using the example benchmark harness as the gate.
  3. Continue structured-loop performance work for heat and other stencil-like kernels.
  4. Use the SPH examples and the example benchmark table to drive runtime and lowering changes, not intuition.

Known gaps and current boundaries

  • Container iteration order is unspecified.
  • The documented semantics are ahead of the old website pages, but now aligned with the actual implementation.
  • Performance work remains the main focus, not basic language completion.
  • Public benchmark claims should stay tied to measured internal baselines, not stale hand-written numbers.