finds.dev← search

// the find

angr/claripy

★ 334 · Python · BSD-2-Clause · updated Sep 2026

An abstraction layer for constraint solvers.

claripy is angr's constraint-solving abstraction layer, wrapping Z3 (and a VSA backend) behind a uniform AST/frontend API for symbolic execution work. It's aimed at people building binary analysis or symbolic execution tooling, not general app developers — most users will encounter it as angr's dependency rather than pick it up standalone.

The frontend/mixin architecture (composited cache, model cache, constraint dedup, eager resolution) is a genuinely useful pattern for anyone building their own solver wrapper — it separates caching and simplification concerns cleanly instead of hardcoding them into one solver class. It has real test coverage across ASTs, balancer, strided intervals, and serialization, not just smoke tests. Backend abstraction (concrete, VSA, Z3) means you can swap or add solver backends without touching AST code, and it ships typed stubs (bv.pyi, py.typed).

The README is nearly empty — one usage snippet and a link to external docs, so you're reading source to understand the frontend/mixin stack before you can use it productively. It's tightly coupled to angr's use case and abstractions (VSA, strided intervals) that don't generalize to solver use outside symbolic execution, so evaluate it as 'angr's internal solver layer' rather than a general Z3 wrapper. Z3 is the only production-grade backend; if you need a different SMT solver you're on your own.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →