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
| Area | Status |
|---|---|
| Core syntax, expressions, arrays, slicing, while, break, continue | implemented |
| Modules and selective imports | implemented |
| Enum with explicit values | implemented |
| UDT with named literals, nested fields, arrays of UDT, field-subscript assignment | implemented |
| Dict and set with literals, iteration, removal, nested dict values | implemented |
| Broad intrinsic set including dimensional reductions and extrema | implemented |
| Command-line argument intrinsics | implemented |
do parallel runtime path | implemented |
| Runnable SPH, heat, UDT, and intrinsic showcase examples | implemented |
Performance baseline
do parallel now executes across CPU threads via OpenMP with chunk coarsening.
| Kernel | Status |
|---|---|
| Runtime path | single runtime path (tgfortran) |
do parallel | OpenMP with chunk coarsening |
atomic compound assignment | hardware 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
- Parallel scaling: measure and improve scaling with larger particle counts and more complex kernels.
- Reduce UDT-backed hot-loop overhead further, using the example benchmark harness as the gate.
- Continue structured-loop performance work for heat and other stencil-like kernels.
- 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.