Skip to content

abicheck

abicheck detects breaking changes in C/C++ shared libraries before they reach production. Point it at two builds of a library (plus their headers), and it tells you whether existing binaries will keep working or break at runtime.

It supports ELF (Linux), PE/COFF (Windows), and Mach-O (macOS) binaries, and it's a drop-in replacement for abi-compliance-checker.

Why abicheck

  • Three-layer analysis — ELF/PE/Mach-O symbol tables + Clang AST (via castxml) + DWARF/PDB cross-check. Each layer catches things the others miss.
  • 145 detection rules — symbol removal, signature changes, struct/class layout drift, vtable reordering, enum value shifts, qualifier changes, calling conventions, and many more. See the Change Kind Reference.
  • Multiple output formats — Markdown, JSON, SARIF (GitHub Code Scanning), HTML.
  • Policy profilesstrict_abi, sdk_vendor, plugin_abi, or custom YAML overrides.
  • ABICC drop-in — full flag parity for migrating from abi-compliance-checker.
  • CI-ready — clear exit codes, SARIF upload, snapshot-based baselines, first-class GitHub Action.
  • Agent-friendly — structured JSON, Python API, and an MCP server for AI-driven workflows.

Where to go next

New to abicheck?

  1. Getting Started — install, first check, CI setup.
  2. Verdicts — what each verdict means and how to react.
  3. CLI Usage — every command, every flag.

Evaluating or comparing tools?

Integrating into a release pipeline?

Migrating from another tool?

Contributing or extending abicheck?

Status

CI PyPI version conda-forge