2026-05-29 12:13:44 +02:00

71 lines
2.3 KiB
Markdown

# Changelog
All notable changes to this project will be documented in this file.
## [0.5.0] — 2026-05-25
### Added
- **Circuits as static libraries** (#16)
The central change in this release. Previously, witness generation required spawning a compiled executable per circuit.
Each circuit is now a linkable static archive (`lib{circuit}.a`) with a stable C FFI.
Two entry points per circuit:
- `{circuit}_generate_witness(WitnessInput*, Bytes*)`: Generates a witness in memory from a
JSON input string and an embedded `.dat` buffer; the caller owns the output buffer.
- `{circuit}_generate_witness_from_files(dat, inputs, output)`: Generates a witness from a `.dat` file and a JSON
input file, writing the witness to an output file.
The Rust crates (`lbc-{circuit}-sys`) wrap this FFI directly and can either link against a local build or download a
prebuilt release automatically.
See [`rust/README.md`](rust/README.md) for usage.
- **Bundled static GMP** (#19)
`libgmp` is now compiled from source and statically linked, removing the runtime dependency on a system GMP
installation, and standardizing the GMP version used across all platforms.
- **Older glibc compatibility** (#21)
Linux builds now target an older glibc ABI for broader distribution support.
- **Dual MIT/Apache-2.0 license**.
### Fixed
- **Symbol resolution conflicts** (#22, #28, #29)
When multiple circuit libraries are linked into the same binary, the linker silently collapsed shared internal
symbols to a single definition, corrupting witness parsing and causing SIGSEGV.
See [CONTRIBUTING.md](CONTRIBUTING.md#symbol-isolation-in-circuit-libraries) for a full explanation and maintenance
notes.
- **macOS C++ library linkage** (#27)
Fixed missing C++ standard library on macOS builds.
- **Circuit assert statements** (#26)
Assert statements in the circuit source assumed standalone binary execution, causing disruptions when compiled as a library.
- **Comparator full less-than**
Fixed incorrect output in the full less-than comparator circuit.
### Housekeeping
- Auto-update Nix hashes on release (#25)
- Incremental builds (#20)
- Pinned CI action versions (#24)
- `rustfmt` configuration (#23)
- GMP version consistency (#31)
- String formatting fix (#30)
---
*No changelog was kept prior to v0.5.0.*