Frama-C

Frama-C
DevelopersCommissariat à l'Énergie Atomique (CEA-List) and Inria
Written inOCaml, C
Operating systemLinux, macOS, FreeBSD, OpenBSD, NetBSD, Microsoft Windows.
Available inEnglish
TypeFormal verification, Static code analysis
Licensemostly LGPL, some parts under BSD licenses
Websiteframa-c.com
Repository

Frama-C is a set of interoperable program analyzers for C programs. The name Frama-C stands for Framework for Modular Analysis of C programs. Frama-C has been developed by the French Commissariat à l'Énergie Atomique et aux Énergies Alternatives (CEA-List) and Inria. It has also received funding from the Core Infrastructure Initiative. Frama-C, as a static analyzer, inspects programs without executing them. Despite its name, the software is not related to the French project Framasoft.

History and releases

The first open-source release of the platform was made in 2008. Major versions are named after chemical elements, and since version 11 (Sodium) the version number has matched the element's atomic number; for example, version 32 is Germanium and version 33 is Arsenic. Release 33.0 (Arsenic) was published on 24 July 2026.

Significant changes across releases include:

Architecture

Frama-C has a modular plugin architecture comparable to that of Eclipse (software) or GIMP.

Frama-C relies on CIL (C Intermediate Language) to generate an abstract syntax tree. The abstract syntax tree supports annotations written in ANSI/ISO C Specification Language (ACSL).

Several modules can manipulate the abstract syntax tree to add ANSI/ISO C Specification Language (ACSL) annotations. Among frequently used[vague] plugins are:

Other plugins are:

Features

Frama-C can be used for the following purposes:

Industrial use

Frama-C is aimed at the verification of industrial-size C programs, combining static analysis, deductive verification and testing for safety and security-critical software. It is used for teaching, experimental research and industrial applications, and a 2024 guidebook collects industrial case studies in which it was used to verify safety or security properties. A 2021 overview in Communications of the ACM discusses its use in education and in industrial collaborations.

In the avionics domain, a study at the German company ESG formalized the low-level specification of a software function from a DO-178C-compliant project in ACSL and partially verified the source code with Frama-C's WP plug-in, using Alt-Ergo as the automated prover.

Further reading

See also

References

  1. ↑ "opam - Install". opam.ocaml.org. Retrieved 2026-07-04.
  2. ↑ "Frama-C". frama-c.com. Retrieved 2016-11-05.
  3. ↑ CEA LIST. "CEA LIST, Smart digital systems". Retrieved 2016-11-05.
  4. ↑ "The Guide to Software Verification with Frama-C is available". Frama-C. 8 August 2024. Retrieved 8 October 2026.
  5. 1 2 3 4 5 6 7 8 9 10 "Frama-C Latest News". Frama-C. Retrieved 8 October 2026.
  6. 1 2 3 "Release of Frama-C 33.0 (Arsenic)". Frama-C. 24 July 2026. Retrieved 8 October 2026.
  7. ↑ Pascal Cuoq; et al. (August 2009). "Experience report: OCaml for an industrial-strength static analysis framework". ACM SIGPLAN Notices. 44 (9): 281–286. doi:10.1145/1631687.1596591.
  8. ↑ "why: Why is a software verification platform". opam. Retrieved 8 October 2026.
  9. ↑ Benjamin Monate; Julien Signoles (2008). "Slicing for Security of Code". Trusted Computing - Challenges and Applications. Lecture Notes in Computer Science. Vol. 4968/2008. pp. 133–142. doi:10.1007/978-3-540-68979-9_10. ISBN 978-3-540-68978-2.
  10. ↑ Sylvie Boldo; Thi Minh Tuyen Nguyen (2010). "Hardware-independent proofs of numerical programs" (PDF). Proceedings of NFM 2010.
  11. ↑ David Delmas; Stéphane Duprat; Victoria Moya Lamiel; Julien Signoles. "Taster, a Frama-C plug-in to enforce Coding Standards" (PDF). Embedded Real Time Software and Systems 2010, Toulouse, France.
  12. ↑ Jonathan-Christofer Demay; Éric Totel; Frédéric Tronel (2009). "Automatic Software Instrumentation for the Detection of Non-control-data Attacks". Recent Advances in Intrusion Detection. Lecture Notes in Computer Science. Vol. 5758/2009. pp. 348–349. doi:10.1007/978-3-642-04342-0_19. ISBN 978-3-642-04341-3.
  13. ↑ Kirchner, Florent; Kosmatov, Nikolai; Prevosto, Virgile; Signoles, Julien; Yakobowski, Boris (2015). "Frama-C: A software analysis perspective". Formal Aspects of Computing. 27 (3): 573–609. doi:10.1007/s00165-014-0326-7.
  14. ↑ Kosmatov, Nikolai; Prevosto, Virgile; Signoles, Julien, eds. (2024). Guide to Software Verification with Frama-C: Core Components, Usages, and Applications. Springer. doi:10.1007/978-3-031-55608-1.
  15. ↑ Baudin, Patrick; Bobot, François; Bühler, David; Correnson, Loïc; Kirchner, Florent; Kosmatov, Nikolai; Maroneze, André; Perrelle, Valentin; Prevosto, Virgile; Signoles, Julien; Williams, Nicky (August 2021). "The Dogged Pursuit of Bug-Free C Programs: The Frama-C Software Analysis Platform". Communications of the ACM. 64 (8): 56–67.
  16. ↑ Dordowsky, Frank (2015). "An Experimental Study Using ACSL and Frama-C to Formulate and Verify Low-Level Requirements from a DO-178C Compliant Avionics Project". Electronic Proceedings in Theoretical Computer Science. 187: 28–41. arXiv:1508.03894. doi:10.4204/EPTCS.187.3.
  17. ↑ "Lessons Learned from Verifying Actual C Code with Frama-C". YouTube. 11 July 2021.
  18. ↑ Baudin, Patrick; Bobot, François; Bühler, David; Correnson, Loïc; Kirchner, Florent; Kosmatov, Nikolai; Maroneze, André; Perrelle, Valentin; Prevosto, Virgile; Signoles, Julien (2024-02-26). "The dogged pursuit of bug-free C programs: The Frama-C Software Analysis Platform" (PDF). cea.hal.science. Archived (PDF) from the original on 2025-08-16. Retrieved 2026-03-17.