fortranspire 0.1.0 — first PyPI release
First public release of fortranspire on PyPI. The project was renamed from coding-agent / local-code-agent; this is its first release under the new name and the first artifact published to PyPI + Zenodo.
Install
pip install fortranspire # core: analyze, explain, format, graph, diff, report, bench
pip install 'fortranspire[gpu]' # + LLM pipeline (Phase 1, doc, port-batch)
pip install 'fortranspire[mcp]' # + MCP server (FastMCP)
pip install 'fortranspire[jax]' # + Phase 2 (Fortran → JAX, experimental)
pip install 'fortranspire[all]' # everythingWhat's in this release
Unified fortranspire <verb> CLI with 13 subcommands:
| no-LLM, CI-friendly | LLM-driven | server |
|---|---|---|
analyze (Loki + SARIF) |
doc (inline !> + Sphinx) |
mcp (FastMCP) |
explain (cost/risk estimate) |
gpu (Phase 1 port, --gpu-pragma acc|omp) |
|
format (fprettify wrapper) |
port-batch (parallel) |
|
graph (Mermaid call-graph) |
translate (Phase 2 JAX) |
|
diff (semantic before/after) |
profile (bench) |
|
report (HTML audit) |
||
bench (regression detector) |
Highlights
- Auto-generated CPU↔GPU equivalence test harness per ported kernel — every Phase-1 port comes with a numerical-equivalence pytest file (
np.testing.assert_allcloseperINTENT(OUT|INOUT)) - OpenMP target alternative emission —
fortranspire gpu --gpu-pragma ompfor multi-vendor compatibility (gfortran 13+, nvfortran, ifx, AMD AOMP, IBM XL) - Parallel batch port with per-file
ContextVaroutput isolation — 100 routines in ~45 min on 4 workers vs ~3h sequential - SQLite-backed LRU cache for LLM responses — identical re-runs return instantly, zero token cost
- Per-tenant observability tracer with per-model price table (Mistral La Plateforme) and LangChain
BaseCallbackHandlerfor token capture - Hardened MCP server — JSON token registry, sliding-window rate limit, HMAC-signed audit log
- Native Mistral SDK auto-selected on
api.mistral.ai,ChatOpenAIfallback for vLLM / TGI / Ollama / Scaleway / OVH - French translations of every LLM prompt — initial audience (Météo-France, CEA, EDF R&D, ENM Toulouse) is francophone
- JOSS submission package —
paper.md,paper.bib,CITATION.cff,codemeta.json,.zenodo.json,.readthedocs.yaml, and a GitHub Action that renders the JOSS draft PDF on every push
Sovereignty
No Azure / AWS / GCP dependency on the LLM path. Default endpoint = Mistral La Plateforme (EU-hosted). Works against any OpenAI-compatible endpoint (Scaleway Generative APIs, OVH AI Endpoints, self-hosted vLLM / TGI / Ollama).
Full changelog
See docs/changelog.md. 19 issues closed during the development sprint (#1 → #20).
Citation
A DOI for this release is being minted by Zenodo via the GitHub integration. Once it's live, the badge in the README will update; alternatively, every release tag mints its own DOI for fine-grained citation. Use CITATION.cff (rendered as the "Cite this repository" button on the repo home) for citation metadata.
🤖 Built with Claude Code