Fork me on GitHub

CamFort is a multi-feature tool for improving the quality of Fortran code. Its features are primarily aimed at programming patterns found in numerical modelling code e.g., in computational science.

CamFort is free and open-source. It currently supports Fortran 66, 77, 90, and 95 language standards. Support for Fortran 2003, and 2008 is in progress.

Long-term vision

Programming languages provide an interface for developing increasingly complex models in science. However, as computer models grow more complex, it is increasingly difficult to deliver on core requirements such as verifiability, maintainability, understandability, validity, and portability.

Managing software complexity more effectively has been a focus of programming language research for many years, yet we see little adoption of new approaches in the natural sciences. Instead we see scientists continually striving to evolve their software to more complex models, or bigger data sets or novel execution architectures.

Our objectives are:

Getting involved

  • Fortran developers: try CamFort on your code! Feel free to report bugs and make feature requests on our issue tracker.
  • Haskell programmers: CamFort is written in Haskell! We welcome contributions although contact us before embarking on a large project so we can give you feedback.
  • Students: We have a variety of ideas on our project page.
  • Features
    Specification & verification

    CamFort provides lightweight verification features. Source-code annotations (comments) provide specifications of certain aspects of a program's meaning or behaviour. CamFort can then check that code conforms to these specifications. CamFort can also suggest places to insert specifications, and in some cases case infer the specifications of existing code.

    Our current specification and verification features provide:

    Refactoring

    Many language features of older Fortran standards (pre Fortran 90) are known to be a ready source of programming error. CamFort provides some facilities for automatically refactoring deprecated or dangerous programming patterns, with the goal of helping to meet core quality requirements, such as maintainability. For example, our tool eliminates EQUIVALENCE and COMMON blocks. These refactorings also helps to expose any programming bugs arising from bad programming practices.

    Follow @camfort_tool


    News and releases

    Usage instructions

    Team

    Publications

    Project ideas
    Download
    The source code for CamFort is hosted on GitHub.

    Latest binary release for Windows, Mac OS, and Linux: v1.2.0 (Oct 2022).
    Mailing list
    For help and announcements you can sign-up to our mailing list.
    Events
    An introduction to CamFort and training material is provided as part of the Fortran Modernization Workshops run by the Numerical Algorithms Group (nag) in the UK and Europe.

    We organise an annual workshop on Testing and Verification in Computational Science. Previous versions:
    Project
    CamFort is a joint project between the University of Cambridge and University of Kent supported by an EPSRC grant.