The C Bounded Model Checker: Criminally Underused

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • dmd

    dmd D Programming Language compiler

  • Thank you for the explanation.

    I agree that if one isn't going to enhance C, one is going to have to resort to these tools.

    C gets new features now and then. Why not add something incredibly useful, like the slice proposal? Instead, C23 got enhanced with the crazy Unicode identifiers. Richard Cattermole has been adding them to D's C support, requiring 6000 lines of code!!

    https://github.com/dlang/dmd/pull/15307

    The entire C parser is 6000 lines of code:

    https://github.com/dlang/dmd/blob/master/compiler/src/dmd/cp...

  • coreHTTP

    Client implementation of a subset of HTTP 1.1 protocol designed for embedded devices.

  • One of the examples they gave was an HTTP client, which would be a surprisingly non-toy example, so I looked at what they actually did in the code (https://github.com/FreeRTOS/coreHTTP/tree/main/test/cbmc).

    Not that I'm an expert in processing what exactly is being tested, but it basically looks only able to prove that an individual function doesn't overrun buffers. If you tell it to assume that overflows can't happen (!). So I'm not impressed.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • c-semantics

    Semantics of C in K

  • tis-interpreter

    An interpreter for finding subtle bugs in programs written in standard C

  • kani

    Kani Rust Verifier

  • This is also the backend for Kani - Amazon's formal verification tool for Rust.

    https://github.com/model-checking/kani

  • cbmc

    C Bounded Model Checker

  • https://github.com/diffblue/cbmc/issues/7732 I'll note that some form of undefined behavior checking / documentation is on the roadmap for the next major version

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts