Skip to content
JuliaLangPublic

About

Git history of the PicoSAT SAT solver, with fixes on top of the last release

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

PicoSAT

PicoSAT is a small, fast SAT solver written in C by Armin Biere. It's been around since 2007 and is still widely used, but it doesn't have a public repository or issue tracker, and there hasn't been a release since version 965 (January 2016). If you depend on PicoSAT and find a bug, there's nowhere to send a fix, so everyone ends up carrying their own private patches.

This repo is meant to be that place. It contains the full release history of PicoSAT as a git repo, plus fixes on top of the last release. If you use PicoSAT and have a fix, please open a pull request.

History

Each of the twelve releases available from the PicoSAT website is a single commit, in chronological order, tagged by version number: v535, v632, v846, v913, v936, v951, v953, v954, v957, v959, v960 and v965. These commits are imported verbatim from the release tarballs. They're authored by Armin Biere and dated with the release date, and each commit message includes the URL and SHA-256 hash of the tarball it came from, so you can check that the tree matches exactly.

The commits after v965 are fixes that aren't in any upstream release:

  • musl: picosat.c includes <sys/unistd.h>, which isn't a standard header and doesn't exist on musl-based systems like Alpine Linux. It now includes <unistd.h> instead.
  • Windows x64: when enlarge() reallocates its arrays, it rebases pointers by a delta stored in a long, which is only 32 bits on Windows x64. If an array moves by more than 2GB, every rebased pointer is garbage and the next solve crashes. The delta is now a ptrdiff_t.

These fixes were originally applied at build time by the libpicosat recipe that builds PicoSAT for Julia, which is used by Resolver.jl.

Building

The build system is unchanged from upstream:

./configure.sh && make

Run ./configure.sh --help to see options; --shared builds a shared library. The API is documented in picosat.h. The original upstream README and NEWS files are included as they were released.

License

PicoSAT is MIT licensed; see LICENSE. Contributions to this repo are made under the same license.

About

Git history of the PicoSAT SAT solver, with fixes on top of the last release

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages