{"id":47622143,"url":"https://github.com/sbryngelson/ffmt","last_synced_at":"2026-04-01T22:21:01.904Z","repository":{"id":345655276,"uuid":"1186902991","full_name":"sbryngelson/ffmt","owner":"sbryngelson","description":"A fast Fortran formatter, written in Rust","archived":false,"fork":false,"pushed_at":"2026-03-31T21:03:33.000Z","size":890,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-31T23:48:32.422Z","etag":null,"topics":["cli-tools","code-formatter","formatter","fortran","hpc","rust","rust-crate","scientific-computing"],"latest_commit_sha":null,"homepage":"https://ffmt-fortran.readthedocs.io","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sbryngelson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-20T05:38:23.000Z","updated_at":"2026-03-31T21:03:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/sbryngelson/ffmt","commit_stats":null,"previous_names":["sbryngelson/ffmt"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/sbryngelson/ffmt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbryngelson%2Fffmt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbryngelson%2Fffmt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbryngelson%2Fffmt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbryngelson%2Fffmt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sbryngelson","download_url":"https://codeload.github.com/sbryngelson/ffmt/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbryngelson%2Fffmt/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli-tools","code-formatter","formatter","fortran","hpc","rust","rust-crate","scientific-computing"],"created_at":"2026-04-01T22:21:01.233Z","updated_at":"2026-04-01T22:21:01.892Z","avatar_url":"https://github.com/sbryngelson.png","language":"Rust","readme":"# ffmt\n\n[![PyPI](https://img.shields.io/pypi/v/ffmt.svg)](https://pypi.org/project/ffmt/)\n[![CI](https://github.com/sbryngelson/ffmt/actions/workflows/ci.yml/badge.svg)](https://github.com/sbryngelson/ffmt/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![GitHub Marketplace](https://img.shields.io/badge/Marketplace-ffmt-blue?logo=github)](https://github.com/marketplace/actions/ffmt-fortran-formatter)\n[![Docs](https://readthedocs.org/projects/ffmt-fortran/badge/?version=latest)](https://ffmt-fortran.readthedocs.io)\n\nA fast, configurable Fortran formatter with support for Fypp, Doxygen, and OpenACC/OpenMP directives. Written in Rust. Installable via `pip`.\n\n**[Documentation](https://ffmt-fortran.readthedocs.io)** | **[Configuration](https://ffmt-fortran.readthedocs.io/en/latest/configuration/)** | **[Changelog](https://github.com/sbryngelson/ffmt/releases)**\n\n## Installation\n\n```bash\npip install ffmt\n```\n\nOr via Cargo:\n\n```bash\ncargo install ffmt\n```\n\n## Quick start\n\n```bash\nffmt src/                        # format in-place\nffmt --check src/                # CI mode (exit 1 if changes needed)\nffmt --diff src/                 # show colored diff\nffmt -j 8 src/                   # parallel\ncat file.fpp | ffmt -            # stdin/stdout\n```\n\n## Features\n\n- **Code** -- indentation, whitespace normalization, keyword casing, named ends, line wrapping, operator modernization (`.eq.` -\u003e `==`), double-colon enforcement, trailing semicolon removal\n- **Comments** -- rewrapping, inline spacing (S102), `!\u003c` alignment, `!\u0026`/`\u0026 !` cleanup, format suppression (`! ffmt off/on`)\n- **Structure** -- blank line management around openers/closers/`#ifdef`, declaration `::` alignment, declaration/use compaction\n- **Preprocessor** -- Fypp (`#:if`, `$:`, `@:`), C preprocessor (`#ifdef`), OpenACC (`!$acc`), OpenMP (`!$omp`)\n- **Opt-in** -- multi-statement splitting, assignment alignment, `\u0026` column alignment, use-statement reformatting\n\nMost options accept `true`, `false`, or `\"preserve\"`. See the [configuration reference](https://ffmt-fortran.readthedocs.io/en/latest/configuration/) for all options.\n\n## Configuration\n\nCreate `ffmt.toml` or add `[tool.ffmt]` to `pyproject.toml`:\n\n```toml\nindent-width = 4\nline-length = 132\nkeyword-case = \"lower\"\nmodernize-operators = true\nenforce-double-colon = true\n\n[whitespace]\nrelational = true\nmultdiv = false\n```\n\n## CI\n\n```yaml\n# GitHub Actions\n- uses: sbryngelson/ffmt@latest\n  with:\n    args: \"--check src/\"\n```\n\n```yaml\n# pre-commit\nrepos:\n  - repo: https://github.com/sbryngelson/ffmt\n    rev: v0.3.5\n    hooks:\n      - id: ffmt\n```\n\n## Other Fortran formatters\n\n| Formatter | Language | Status | Notes |\n|-----------|----------|--------|-------|\n| [fprettify](https://github.com/fortran-lang/fprettify) | Python | Unmaintained | Free-form only. Fypp support. |\n| [findent](https://github.com/wvermin/findent) | C | Active | Indentation and fixed/free conversion. |\n| [Codee Formatter](https://www.codee.com) | Proprietary | Active | Commercial. Tree-sitter based. |\n| [LFortran fmt](https://lfortran.org) | Rust | In development | AST-based. |\n| [Fortitude](https://github.com/PlasmaFAIR/fortitude) | Rust | Active | Linter with auto-fix. |\n\n## License\n\nMIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbryngelson%2Fffmt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsbryngelson%2Fffmt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbryngelson%2Fffmt/lists"}