Skip to content

prove-rs/z3.rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Repository files navigation

z3andz3-sys

Rust

This repository containshigh-levelandlow-levelRust bindings for theZ3 solver.

z3

Thez3crateprovides high-level bindings to the Z3 solver. It is built on top of, and wraps, thez3-syscrate. This is the crate you'll want to use 99% of the time.

z3-sys

Thez3-syscrateprovides the raw, unsafe, low-level C API that Z3 exposes.

When should I usez3-sysinstead ofz3?

The first scenario where it makes sense to usez3-sysdirectly is when some Z3 feature isn't wrapped into high-level bindings in thez3crate yet. In this case, it is worth filing an issue and discussing its implementation in thez3 crate, but you can get at the raw, underlying features via thez3-syscrate in the meantime.

The only other time to usez3-sysdirectly would be if you are writing your own custom high-level API for Z3, instead of using thez3crate.

Release Process

  1. Make a version bump commit
    1. Bump version for the relevant crate in Cargo.toml
    2. Update version in examples/READMEs
  2. Create a git tag for the commit
    1. i.e.git tag z3-v0.10.0
  3. Push the changes
    1. git push
    2. git push --tags
  4. Publish on crates.io
    1. cargo publish