This is a major release which adds support for [EIP-7594](https://eips.ethereum.org/EIPS/eip-7594) (PeerDAS).
Notable changes:
* The codebase implements and exposes all public methods of the EIP-7594 [cryptography specification](https://github.com/ethereum/consensus-specs/blob/dev/specs/_features/eip7594/polynomial-commitments-sampling.md#public-methods).
* The trusted setup format has been updated to include G1 points in monomial form.
* This version of c-kzg-4844 requires the new trusted setup file.
* The new trusted setup file can be used with previous versions of c-kzg-4844.
* Download the new file from [`trusted_setup.txt`](https://github.com/ethereum/c-kzg-4844/blob/4b915a6617a85ef8c49d456374c1bc7f8647d968/src/trusted_setup.txt) in this repository.
* This should match [`trusted_setup_4096.json`](https://github.com/ethereum/consensus-specs/blob/13ac373a2c284dc66b48ddd2ef0a10537e4e0de6/presets/mainnet/trusted_setups/trusted_setup_4096.json) in the specifications.
* A new `precompute` parameter has been added to functions which load the trusted setup.
* This configuration option is used to optimize FK20 proof computations.
* Higher values will compute FK20 proofs faster but use more memory.
* Compared to `precompute=0`, `precompute=8` is ~75% faster but uses 96 MiB of memory.
* In the Nim bindings, the "zero overhead aliases" have been removed.
* There is only a single set of API functions exposed now.
* In the Rust bindings, the API functions have been moved to the `KzgSettings` structure.
* For example, here is the before and after for `blob_to_kzg_commitment`:
* `KZGCommitment::blob_to_kzg_commitment(&blob, &kzg_settings)`
* `kzg_settings.blob_to_kzg_commitment(&blob)`
What's Changed
* Add support for EIP-7594 by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/452
* Remove extraneous `memset` by kevaundray in https://github.com/ethereum/c-kzg-4844/pull/463
* Fix `poly_lagrange_to_monomial` by kevaundray in https://github.com/ethereum/c-kzg-4844/pull/462
* Add central Makefile which builds/tests everything by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/458
* Update recovery code to match specs by kevaundray in https://github.com/ethereum/c-kzg-4844/pull/459
* Increase column limit to 100 for C code by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/456
* Move Rust bindings to `KzgSettings` by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/461
* Improve Python bindings build/install flow by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/460
* Add new Rust fuzzer by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/457
* Split core implementation into multiple files by asn-d6 in https://github.com/ethereum/c-kzg-4844/pull/464
* Cleanup roots of unity in `KZGSettings` by asn-d6 in https://github.com/ethereum/c-kzg-4844/pull/467
* Fix Makefile dependencies by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/469
* Move FFT functions to fft.{c,h} files by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/466
* Clarify `roots_stride` in FFT by asn-d6 in https://github.com/ethereum/c-kzg-4844/pull/470
* Clarify scope of audit in README by b-wagn in https://github.com/ethereum/c-kzg-4844/pull/472
* Split C code into more files by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/471
* Do not rely on `calloc` zeroing out allocations by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/474
* Fix profile & analyze by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/473
* Run `cargo update` for fuzzer by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/475
* Remove benchmarks for Rust & Java by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/476
* Remove unused blob variable in recovery by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/481
* Add new reference tests sanity check by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/479
* Enable more compiler warnings by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/480
* Simplify Nim bindings by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/482
* Use `TestCaseSource` in C reference tests by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/486
* Enable `-Werror` for Windows & cleanup warnings by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/487
* Improve the build system by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/483
* Update deps in Go/Rust/Fuzz by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/488
* Improve docs of `KZGSettings` by b-wagn in https://github.com/ethereum/c-kzg-4844/pull/492
* Convert some internal variables from `uint64_t` to `size_t` by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/490
* Replace `size_t` with `uint64_t` by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/478
* Pre-compute root of unity in fr-form by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/491
* Make minor improvements of proof computation and recovery code by asn-d6 in https://github.com/ethereum/c-kzg-4844/pull/493
* Abstract commitment to interpolation poly by asn-d6 in https://github.com/ethereum/c-kzg-4844/pull/494
* Refactor `is_cell_used` array & usage by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/495
* Reformat some function param docs for consistency by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/496
* Update versions in preparation of v2.0.0 release by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/489
* Update links in README by jtraglia in https://github.com/ethereum/c-kzg-4844/pull/497
New Contributors
* kevaundray made their first contribution in https://github.com/ethereum/c-kzg-4844/pull/463
**Full Changelog**: https://github.com/ethereum/c-kzg-4844/compare/v1.0.3...v2.0.0