Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/prove-rs/z3.rs
Rust bindings for the Z3 solver.
https://github.com/prove-rs/z3.rs
ffi-bindings logic-programming rust rust-bindings smt smt-solver
Last synced: 3 months ago
JSON representation
Rust bindings for the Z3 solver.
- Host: GitHub
- URL: https://github.com/prove-rs/z3.rs
- Owner: prove-rs
- Created: 2018-03-08T16:19:05.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-05-18T03:27:38.000Z (6 months ago)
- Last Synced: 2024-05-22T21:32:25.867Z (6 months ago)
- Topics: ffi-bindings, logic-programming, rust, rust-bindings, smt, smt-solver
- Language: Rust
- Homepage:
- Size: 582 KB
- Stars: 315
- Watchers: 8
- Forks: 102
- Open Issues: 52
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-rust-formalized-reasoning - z3 - sys):star::fire: - high-level and low-level Rust bindings for the Z3 solver. (Projects / Libraries)
README
# `z3` and `z3-sys`
[![Rust](https://github.com/prove-rs/z3.rs/actions/workflows/rust.yml/badge.svg)](https://github.com/prove-rs/z3.rs/actions/workflows/rust.yml)
This repository contains [high-level][z3] and [low-level][z3-sys] Rust bindings
for the [Z3 solver][upstream].[upstream]: https://github.com/Z3Prover/z3
[z3]: https://github.com/prove-rs/z3.rs/tree/master/z3
[z3-sys]: https://github.com/prove-rs/z3.rs/tree/master/z3-sys## `z3`
[![](https://img.shields.io/crates/v/z3.svg)](https://crates.io/crates/z3)
The [`z3` crate][z3] provides high-level bindings to the Z3 solver. It is built
on top of, and wraps, the `z3-sys` crate. This is the crate you'll want to use
99% of the time.## `z3-sys`
[![](https://img.shields.io/crates/v/z3-sys.svg)](https://crates.io/crates/z3-sys)
The [`z3-sys` crate][z3-sys] provides the raw, unsafe, low-level C API that Z3
exposes.## When should I use `z3-sys` instead of `z3`?
The first scenario where it makes sense to use `z3-sys` directly is when some Z3
feature isn't wrapped into high-level bindings in the `z3` crate yet. In this
case, it is worth filing an issue and discussing its implementation in the `z3`
crate, but you can get at the raw, underlying features via the `z3-sys` crate in
the meantime.The only other time to use `z3-sys` directly would be if you are writing your
own custom high-level API for Z3, instead of using the `z3` crate.## Release Process
1. Make a version bump commit
1. Bump version for the relevant crate in Cargo.toml
1. Update version in examples/READMEs
1. Create a git tag for the commit
1. i.e. `git tag z3-v0.10.0`
1. Push the changes
1. `git push`
1. `git push --tags`
1. Publish on crates.io
1. `cargo publish`