https://github.com/goblint/cil Skip to content Navigation Menu Toggle navigation Sign in * Product + GitHub Copilot Write better code with AI + Security Find and fix vulnerabilities + Actions Automate any workflow + Codespaces Instant dev environments + Issues Plan and track work + Code Review Manage code changes + Discussions Collaborate outside of code + Code Search Find more, search less Explore + All features + Documentation + GitHub Skills + Blog * Solutions By company size + Enterprises + Small and medium teams + Startups By use case + DevSecOps + DevOps + CI/CD + View all use cases By industry + Healthcare + Financial services + Manufacturing + Government + View all industries View all solutions * Resources Topics + AI + DevOps + Security + Software Development + View all Explore + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Enterprise + Enterprise platform AI-powered developer platform Available add-ons + Advanced Security Enterprise-grade security features + GitHub Copilot Enterprise-grade AI features + Premium Support Enterprise-grade 24/7 support * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up Reseting focus You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} goblint / cil Public forked from cil-project/cil * Notifications You must be signed in to change notification settings * Fork 19 * Star 101 C Intermediate Language goblint.github.io/cil/ License View license 101 stars 91 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings * Code * Issues 26 * Pull requests 4 * Actions * Projects 0 * Security * Insights Additional navigation options * Code * Issues * Pull requests * Actions * Projects * Security * Insights goblint/cil develop BranchesTags [ ] Go to file Code Folders and files Last Last Name Name commit commit message date Latest commit History 4,897 Commits .github/workflows .github/workflows bin bin doc doc lib/perl5 lib/perl5 src src test test .git-blame-ignore-revs .git-blame-ignore-revs .gitattributes .gitattributes .gitignore .gitignore CHANGES.md CHANGES.md LICENSE LICENSE META.goblint-cil.template META.goblint-cil.template README.md README.md dune dune dune-project dune-project goblint-cil.opam goblint-cil.opam goblint-cil.opam.template goblint-cil.opam.template View all files Repository files navigation * README * License C Intermediate Language (CIL) tests workflow status docs workflow status GitHub release status opam package status CIL is a front-end for the C programming language that facilitates program analysis and transformation. CIL will parse and typecheck a program, and compile it into a simplified subset of C. goblint-cil is a fork of CIL that supports C99, C11 as well as most of the extensions of the GNU C. It makes many changes to the original CIL in an effort to modernize it and keep up with the latest versions of the C language. Here is an incomplete list of some of the ways goblint-cil improves upon CIL: * Support for C99 and C11. * Compatibility with modern OCaml versions. * Use Zarith instead of Num and use that for integer constants. * Improved locations with columns and spans. * Removal of unmaintained extensions and MSVC support. * Use dune instead of make and ocamlbuild. * Many bug fixes. Quickstart Install the latest release of goblint-cil with opam: opam install goblint-cil Read the excellent CIL tutorial by Zachary Anderson, much of which still applies to goblint-cil. The repository referenced in that document has now moved here. ATTENTION: Don't install the cil package. This is the unmaintained original version of CIL. Installation from Source Prerequisites: * opam * GCC * Perl First create a local opam switch and install all dependencies: opam switch create . Then, you can use dune to build goblint-cil. Run the following commands to build and test goblint-cil: dune build dune runtest # runs the regression test suite To run a single test go to the build directory (e.g. _build/default/ test) and run e.g.: dune exec -- make test/array1 You can also install goblint-cil into the opam switch: dune build @install dune install Usage You can use cilly (installed in the opam switch) as a drop-in replacement for gcc to compile and link your programs. You can also use goblint-cil as a library to write your own programs. For instance in the OCaml toplevel using Findlib: $ ocaml OCaml version 4.14.0 # #use "topfind";; [...] # #require "goblint-cil";; [...] # GoblintCil.cilVersion;; - : string = "2.0.4" License goblint-cil is licensed under the BSD license. See LICENSE. About C Intermediate Language goblint.github.io/cil/ Resources Readme License View license Activity Custom properties Stars 101 stars Watchers 10 watching Forks 19 forks Report repository Releases 6 2.0.4 Latest Jul 30, 2024 + 5 releases Packages 0 No packages published Languages * OCaml 54.2% * C 41.4% * Perl 3.7% * Makefile 0.5% * Shell 0.2% * Dune 0.0% Footer (c) 2024 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact * Manage cookies * Do not share my personal information You can't perform that action at this time.