2.3 KiB
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.datbuffer; the caller owns the output buffer.{circuit}_generate_witness_from_files(dat, inputs, output): Generates a witness from a.datfile 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.mdfor usage. -
Bundled static GMP (#19)
libgmpis 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 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)
rustfmtconfiguration (#23)- GMP version consistency (#31)
- String formatting fix (#30)
No changelog was kept prior to v0.5.0.