https://github.com/camfort/camfort

Light-weight verification and transformation tools for Fortran

https://github.com/camfort/camfort

Science Score: 23.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    4 of 11 committers (36.4%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.9%) to scientific vocabulary

Keywords

automated-refactoring fortran haskell static-analysis verification
Last synced: 5 months ago · JSON representation

Repository

Light-weight verification and transformation tools for Fortran

Basic Info
  • Host: GitHub
  • Owner: camfort
  • License: other
  • Language: Haskell
  • Default Branch: master
  • Homepage: https://camfort.github.io/
  • Size: 15.7 MB
Statistics
  • Stars: 134
  • Watchers: 10
  • Forks: 15
  • Open Issues: 62
  • Releases: 15
Topics
automated-refactoring fortran haskell static-analysis verification
Created almost 13 years ago · Last pushed about 1 year ago
Metadata Files
Readme Changelog License

README.md

CamFort

CamFort is a refactoring and verification tool for scientific Fortran programs. It currently supports Fortran 66, 77, 90, 95 and 2003 (somewhat) with various legacy extensions.

It is a research project developed in the University of Cambridge and University of Kent.

Obtaining

Recommended install method by OS:

  • Windows: prebuilt bundles (includes dependencies) at Releases: download ones beginning camfort-bundle-windows
  • Mac: via Homebrew: brew install camfort/camfort/camfort
  • Linux: prebuilt binaries at Releases. See Wiki: Building for how to install library dependencies for your OS.

We provide prebuilt binaries for Windows, Mac and Linux. For Windows, we also provide archives that bundle the CamFort executable together with all of its dependencies.

CamFort is also available through Homebrew (formula):

brew install camfort/camfort/camfort

An older (~2019) version of CamFort is available on Docker at camfort/camfort.

A new Docker image for developers (still work-in-progress) is available at ghcr.io/camfort/camfort:dev. Suggested invocation is:

  • podman: podman run --volume $(pwd):/host --workdir /host ghcr.io/camfort/camfort:dev <CamFort arguments>

Usage

CamFort is a command-line tool, so invoke it from your favourite shell or command prompt. Detailed usage information is available on the wiki.

Building

(If you want a recent build and don't want to sit through the compilation process, you may wish to instead check the Actions tab and download the relevant build for your system from a recent workflow run.)

This section only covers building briefly. See Wiki: Building for full details.

CamFort supports GHC 8.4 through GHC 8.10, and builds with both Stack and Cabal. We regularly test at least the minimum and maximum supported GHCs. Releases prior to/newer than those may have issues. (We welcome fixes that would let us support a wider range of compilers!)

You will likely need at least 3 GiBs of memory and some patience to build CamFort.

CamFort depends on the following foreign libraries:

  • FLINT >= 2.5
  • LAPACK
  • BLAS
  • Z3 >= 4.5 (executable)

These should be built for your system, but installation method varies. System-specific guides are provided on the wiki. (Alternatively, you could check the GitHub Actions workflows.) On Ubuntu:

apt install libflint-dev liblapack-dev libopenblas-dev z3

Then stack build for Stack, or cabal build for Cabal.

Tab Completion (Bash)

To enable Bash autocompletion for camfort, add the following to your .bashrc or .bash_profile file:

eval "$(camfort --bash-completion-script=$(which camfort))"

Contributing

We appreciate any bugs you encounter and kindly request you to submit it as an issue.

Pull requests are much appreciated, but please contact us first if it is a substantial change. Make sure to run the test suite before you submit.

If you have scientific code that you would like us to analyse, we would be happy to add it to CamFort corpus. This helps us finding useful ways to extend CamFort as well as ensuring it is robust.

Support

For maintainers

See doc/maintainers.md.

Owner

  • Name: camfort
  • Login: camfort
  • Kind: organization

Tooling for the static analysis and verification of Fortran code (joint project between the University of Kent, University of Cambridge, and Bloomberg LP)

GitHub Events

Total
  • Issues event: 3
  • Watch event: 8
  • Issue comment event: 6
  • Push event: 2
  • Gollum event: 2
  • Pull request event: 2
  • Fork event: 1
  • Create event: 1
Last Year
  • Issues event: 3
  • Watch event: 8
  • Issue comment event: 6
  • Push event: 2
  • Gollum event: 2
  • Pull request event: 2
  • Fork event: 1
  • Create event: 1

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 1,939
  • Total Committers: 11
  • Avg Commits per committer: 176.273
  • Development Distribution Score (DDS): 0.626
Past Year
  • Commits: 49
  • Committers: 2
  • Avg Commits per committer: 24.5
  • Development Distribution Score (DDS): 0.082
Top Committers
Name Email Commits
dominic d****d@g****m 726
Matthew Danish m****5@c****k 577
Mistral Contrastin me@m****t 191
Ben Moon s****e@g****m 167
Bradley Hardy b****y@l****m 110
Ben Orchard t****n@g****m 69
Oleg Oshmyan c****s@i****v 54
Andrew Rice a****1@c****k 22
Vilem v****1@k****k 21
Mistral Contrastin m****2@c****k 1
Izaak Beekman c****t@i****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 92
  • Total pull requests: 20
  • Average time to close issues: 4 months
  • Average time to close pull requests: 17 days
  • Total issue authors: 15
  • Total pull request authors: 5
  • Average comments per issue: 1.99
  • Average comments per pull request: 0.95
  • Merged pull requests: 17
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 3
  • Pull requests: 4
  • Average time to close issues: N/A
  • Average time to close pull requests: 4 months
  • Issue authors: 2
  • Pull request authors: 1
  • Average comments per issue: 1.0
  • Average comments per pull request: 4.0
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • dorchard (31)
  • GuiltyDolphin (19)
  • madgen (17)
  • jaytorry (13)
  • mrd (4)
  • buggymcbugfix (4)
  • zbeekman (3)
  • raehik (2)
  • bergmark (2)
  • fHachenberg (2)
  • msleigh (2)
  • kokes (2)
  • wadudmiah (1)
  • ZedThree (1)
  • mihaimaruseac (1)
Pull Request Authors
  • dorchard (11)
  • GuiltyDolphin (10)
  • jaytorry (3)
  • buggymcbugfix (3)
  • astiob (1)
  • raehik (1)
  • zbeekman (1)
Top Labels
Issue Labels
Type: Bug (27) stencil-specs (18) enhancement (16) units-of-measure (12) Type: Suggestion (6) Status: Complete (5) Status: Discussion (5) question (2) invalid (2) duplicate (1)
Pull Request Labels
Status: Complete (1)

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 5
proxy.golang.org: github.com/camfort/camfort
  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago

Dependencies

.github/workflows/ci.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • actions/upload-artifact v2 composite
  • haskell/actions/setup v1 composite
  • msys2/setup-msys2 v2 composite
.github/workflows/hackage.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • actions/upload-artifact v2 composite
docker/Dockerfile docker
  • debian stable-slim build
  • haskell 8.6.3 build
camfort.cabal hackage
  • hspec-discover * build
  • GenericPretty >=1.2.2 && <1.3
  • array >=0.4 && <0.6
  • base >=4.6 && <5
  • binary >=0.8.3.0 && <0.11
  • bytestring >=0.10 && <0.12
  • camfort *
  • containers >=0.5.0.0 && <0.7
  • deepseq ==1.4.*
  • directory >=1.2 && <2
  • fgl >=5.6 && <5.9
  • filepath ==1.4.*
  • fortran-src >=0.11.0 && <0.12
  • ghc-prim >=0.3.1.0 && <0.10
  • hmatrix ==0.20.*
  • lattices >=2.0.0 && <2.1
  • lens >=4.15.1 && <6
  • matrix >=0.2.2 && <0.4
  • mmorph >=1.0.9 && <2
  • mtl >=2.1 && <2.3
  • optparse-applicative >=0.14 && <0.18
  • parallel ==3.2.*
  • pipes ==4.3.*
  • pretty >=1.1 && <2
  • sbv >=8.0 && <10
  • singletons >=3.0 && <3.2
  • singletons-base >=3.0 && <3.2
  • singletons-th >=3.0 && <3.2
  • strict >=0.3.2 && <1
  • syb >=0.4 && <0.8
  • syz ==0.2.*
  • template-haskell >=2.11 && <3
  • text >=0.11.2.3 && <2.1
  • transformers >=0.5.5.0 && <0.6
  • uniplate >=1.6.10 && <1.7
  • vector >=0.1 && <0.13
  • verifiable-expressions >=0.6.2 && <0.8.0
  • vinyl >=0.9 && <1.0
  • QuickCheck >=2.8 && <3 test
  • array >=0.4 && <0.6 test
  • base >=4.6 && <5 test
  • binary >=0.8.3.0 && <0.11 test
  • bytestring >=0.10 && <0.12 test
  • camfort * test
  • containers >=0.5.0.0 && <0.7 test
  • directory >=1.2 && <2 test
  • fgl >=5.6 && <5.9 test
  • filepath ==1.4.* test
  • fortran-src >=0.11.0 && <0.12 test
  • hmatrix ==0.20.* test
  • hspec >=2.2 && <3 test
  • lattices >=2.0.0 && <2.1 test
  • lens >=4.15.1 && <6 test
  • mtl >=2.1 && <2.3 test
  • sbv >=8.0 && <10 test
  • silently ==1.2.* test
  • temporary >=1.2.0.4 && <1.4 test
  • text >=0.11.2.3 && <2.1 test
  • time >=1.8 && <1.13 test
  • uniplate >=1.6.10 && <1.7 test
  • verifiable-expressions >=0.6.2 && <0.8.0 test