Skip to content

Latest commit

 

History

History
256 lines (218 loc) · 42.5 KB

File metadata and controls

256 lines (218 loc) · 42.5 KB

Changelog

1.1.0 (2026-09-11)

Features

  • metrics: record exported but unset state transition gauges (#662) (d57e89a)
  • metrics: report proposer rewards per type (#689) (d2eaabe)
  • napi: expose forkSeq on BeaconStateView binding (#635) (213a732)
  • shuffle: add ./shuffle subpath export (#612) (c9655c4)
  • shuffle: add PTC sampling (#563) (ab56ddf)
  • ssz: add Progressive List, Progressive BitList, ProgressiveContainer, CompatibleUnion (#99) (1e43f5e)

Bug Fixes

  • avoid duplicate phase0 pending-attestation participants (#659) (bdc0cd0)
  • bench: stabilize committee benchmark inputs (#606) (5b2c3b1)
  • bindings: expose explicit state view disposal (#649) (cb42fa0)
  • bindings: support blinded state transitions (#628) (3fdb5aa)
  • hash block body when converting to header (#657) (692dd5b)
  • pmt: reclaim grouped intermediate roots (#599) (f7e9a8b)
  • pmt: reclaim partial compact proof nodes (#609) (c99eff3)
  • pmt: reject empty compact proof leaves (#610) (5bc9297)
  • preserve participation view ownership on rotation failure (#643) (660434c)
  • preserve sync committee ownership on rotation OOM (#652) (3a3b497)
  • prevent duplicate Altair sync cache cleanup (#651) (eb23182)
  • reject short seed validator bytes (#653) (5cd576b)
  • reject withdrawal count mismatches (#619) (3add44d)
  • release benchmark hasher scratch (#688) (8628415)
  • release bitlist json scratch (#677) (acef3e7)
  • report proposer rewards from block transitions (#655) (2f0755f)
  • split tests in variable element iterator (#650) (747b321)
  • ssz: clean up partially decoded blocks (#596) (e77358e)
  • ssz: clean up partially initialized tree view values (#579) (5de24e2)
  • ssz: clean up recursive hasher initialization (#592) (ffa29f8)
  • ssz: free variable list offsets on decode errors (#595) (32e1d14)
  • ssz: hash boolean lists as basic lists (#602) (e2b9598)
  • ssz: instantiate variable vector tree views (#600) (5f7beaf)
  • ssz: keep clone destinations deinit-safe (#614) (8917c51)
  • ssz: make container commits failure-atomic (#567) (cbfadb9)
  • ssz: make tree view publication atomic (#574) (9c98cb2)
  • ssz: preserve container view state after failed child reads (#646) (966bdc8)
  • ssz: reclaim partial byte and bit vector trees (#594) (f4c81d0)
  • ssz: reject invalid list growth lengths (#604) (0fa8e7c)
  • ssz: reject noncanonical booleans in list and vector trees (#645) (2e5aba3)
  • ssz: reject overflowing bit list indexes (#603) (7d3ba65)
  • ssz: validate bit list length before hashing (#608) (a038e86)
  • stabilize ptc benchmark seeds (#674) (2e1c781)
  • state_transition: reuse shared shuffled index cache (#638) (807bae3)
  • state-transition: clean up upgraded payload headers (#597) (e47028d)
  • state-transition: count validator filling withdrawal payload (#656) (22eea7e)
  • state-transition: prevent next-shuffling ownership corruption on decision-root failure (#634) (c62cd29)
  • stf: allocate epoch cache clone before refs (#639) (9076673)
  • stf: cleanup sync committee indices on init OOM path (#631) (58a9fcb)
  • stf: fix epochshuffling slot committee slice leaks (#636) (c61367d)
  • stf: justify exact two-thirds participation (#623) (7e4e322)
  • stf: keep expected withdrawals query read-only (#620) (e646cf0)
  • stf: safe pending withdrawal map reads with get (#630) (4f29bbb)
  • stf: treat Capella as post-merge (#624) (057310e)
  • use integer square root for Phase0 rewards (#654) (ba63288)

Performance Improvements

  • allocate epoch scratch buffers on demand (#665) (fc4e50b)
  • fill reusable participation buffers directly (#660) (7a1b16f)
  • ssz: avoid scratch allocation in chunked list serialization (#642) (f16981b)
  • ssz: bound list hashing scratch with batched accumulation (#672) (ef82b72)
  • ssz: hash dirty basic field roots directly (#615) (a859403)
  • ssz: size progressive fixed lists without materializing values (#641) (f3dc6ff)
  • ssz: stream list tree reads into output values (#671) (1ac2e51)
  • state-transition: optimize slashing penalties (#676) (b01424a)
  • use branchless swaps in shuffle (#661) (e18fb84)

Code Refactoring

  • extract tests to _test.zig, add tidy lint (#625) (bb485bb)
  • metrics: drop SSZ node-cache metrics (#666) (5d35494)
  • pmt: bound lazy hashing and compact proof depth (#647) (52f5113)
  • pmt: compute proof descriptors with integer paths (#644) (d4cc6b9)
  • pmt: make node pool non-growable (#617) (9827bf2)
  • pubkeys: drop deserialized lookup wrappers (#584) (8ec2897)
  • remove redundant epoch benchmark reward synchronization (#668) (947e828)
  • share bytelist tree conversion (#680) (cfc90f4)
  • shuffle: drop JS signature comments and fix balance param name (#577) (be598b1)
  • ssz: rewrite offset iteration for variable element iteration (#598) (af63364)
  • ssz: share byte-list hashing with generic uint8 lists (#673) (34cdddd)
  • ssz: simplify progressive bit list type (#637) (abb41fa)
  • stf: remove unused epoch transition cache options (#667) (31cc99e)

Miscellaneous Chores

  • docs: document bls/pk cache trust assumptions (#585) (66ecb23)
  • docs: readme housekeeping + add contributing doc (#560) (f780208)

Documentation

  • add PR title and description guidelines (#640) (33a3f2f)

1.0.0 (2026-08-19)

Features

  • add state.getBuildersLength() binding (#472) (be2b5ab)
  • beacon-node: add block state cache and checkpoint datastore (#452) (2145faa)
  • bindings to getExpectedWithdrawals and native tweaks (#350) (f47bc66)
  • bindings: add pubkey cache syncPubkeys (#537) (542779f)
  • bindings: aggregate cached public keys by validator index (#397) (2f90603)
  • bindings: align BeaconStateView with IBeaconStateView (#347) (b8ec273)
  • bindings: configurable pubkey cache growth step (#481) (133ef24)
  • bindings: expose more APIs for STF (#444) (7fe2609)
  • bls: add small MSM for npoints < 32 (#393) (b430638)
  • blst: use external buffers for blst operations (#358) (78e4678)
  • ci: conditionally publish bindings with tag (#355) (ea77919)
  • clock: add clock module for slot/epoch timing (#354) (385b077)
  • fork_choice: add Prometheus metrics module (#309) (cbc9d8d)
  • forkchoice: implement the forkchoice module (#246) (7c62a9b)
  • getSyncCommitteesWitness (#367) (ef77649)
  • implement loadState API and binding (#165) (f903519), closes #159
  • metrics: metrics bindings (#455) (dd41999)
  • migrate blst,pubkeys to use zapi js dsl (#331) (fcd26ca)
  • pubkeys: add getPubkeyBytes binding (#555) (4ca51cf)
  • publish ARM64 musl bindings (#482) (ac764c9)
  • shuffle: add swap-or-not shuffling module and binding (#559) (c2db37c)
  • split nextValue fn (#464) (b47faeb)
  • support getLatestWeakSubjectivityCheckpointEpoch (#366) (dcf3883)
  • update fulu deposit processing (#442) (064335c)

Bug Fixes

  • avoid set (#484) (2e25d97)
  • better generation of rand scalar (#388) (74dce77)
  • bindings: accept dontTransferCache in processSlots for backward compatibility (#460) (65df5af)
  • bindings: check signature infinity by default (#509) (2f5f281)
  • bindings: clean up failed async BLS work (#527) (1111b00)
  • bindings: free metrics writer on scrape failure (#529) (4c8d94a)
  • bindings: harden random aggregate scalars (#528) (8e89a63)
  • bindings: log level for missing fields (#435) (08faf41)
  • bindings: misordering of print for cpu count (#381) (752a972)
  • bindings: populate epoch participation for test fixtures (#436) (8dbdd2e)
  • bindings: refcount Pool to fix teardown panic (#352) (23b2f68)
  • bindings: roll back partial N-API initialization (#491) (31c5ebb)
  • bindings: size BLS thread pool by cgroup-aware CPU count (#386) (3ae9522)
  • bindings: validate class types before unwrap (#514) (2fd2ad5)
  • bindings: validate secret key hex length (#517) (136e415)
  • bls: align PublicKey.uncompress validation with Signature.uncompress (#508) (5a8dbe9)
  • bls: bound randomized aggregation inputs (#548) (779d0bf), closes #542
  • bls: clean up partial thread pool initialization (#490) (d55e598)
  • bls: convert pippenger scratch bytes to element counts (#513) (a12ca92)
  • bls: enforce 32-byte signing roots (#545) (72fd308)
  • bls: make batch cardinality structural (#547) (a06d8b2)
  • bls: preserve aggregate outputs on failure (#521) (e0b6dd1)
  • bls: reject empty keygen salts (#524) (d2a9c86)
  • bls: reject unknown BLST error codes (#525) (9e4a6ad)
  • bls: size pairing buffers for 32-bit targets (#531) (dc64a27)
  • blst: default signature infinity check to true if not provided (#387) (021cdcb)
  • build: remove zig-out from files (#360) (c52af09)
  • ci: fix caching spec test version (#439) (96885a1)
  • dangling state pointer in loadOtherState (#450) (81cbd5f)
  • epoch_cache: compute missing next_proposers (#447) (0088a29)
  • epoch_cache: populate decision roots in afterProcessEpoch (#453) (4b70a5e)
  • export asyncAggregateWithRandomness through napi binding (#371) (1d04c2b)
  • harden memory safety across PMT, SSZ tree views, and state transition (#377) (d6f5897)
  • improve atomic ordering in ThreadPool and NAPI init (#310) (4b0a1cc)
  • interface compatbility with NativeBeaconStateView (#445) (89e13d1)
  • missing deinits in loadOtherState (#459) (094d278)
  • missing state commits (#454) (a432b55)
  • no-op when syncPubkeys run on a pk cache with shrinking validator set (#432) (ed05a99)
  • param order in BeaconBlockBody (#348) (d8b9c06)
  • pendingConsolidations bindings (#449) (b9c497e)
  • pmt,ssz: harden chunked-leaf and zero-copy tree-view memory safety (#400) (de50c53)
  • populate cache balances during rewards/penalties processing (#474) (5bf23dc)
  • re-expose sizes (#369) (64b81f3)
  • remove slashValidator gating on active status (#448) (d319a0d)
  • ssz: drop redundant default-init pass in fixed-list decode (#468) (0c757be)
  • ssz: publish child cache entries after lookup (#565) (21e78c9)
  • state transition binding exports (#456) (895982c)
  • state-transition: group-check signature sets (#515) (42774e9), closes #502
  • state-transition: isolate epoch step cache mutations (#535) (a83741a)
  • state-transition: repair Pool.init call broken by #346×#367 merge skew (#394) (b42944f)
  • various fixes around config (#433) (c4f082c)

Performance Improvements

  • bindings: drop TS BLS comparison benches and report benchmarks on PRs (#552) (c909c6f)
  • bls: add cache-aware signature verifier (#562) (063857e)
  • bls: bypass worker queue for small batches (#553) (3f8a6df)
  • epoch: replace AutoHashMap with array lookup in reward/penalty caches (#286) (e4e181b), closes #243
  • pmt: chunked-leaf packing for basic lists and container_struct (#346) (ba156c4)

Code Refactoring

  • allocate AsyncAggRandData in one obj (#384) (459750f)
  • bindings/pubkeys: simplify allocation strategy for aggregate (#518) (b82750f)
  • bindings: rename blst Lifecycle to State (#516) (0a9c179)
  • bindings: use zapi js.io() instead of local io module (#469) (2b34cc0)
  • bindings: wake only required number of workers (#383) (1db57f1)
  • bls: allocations around VMAS (#395) (dfda58c)
  • bls: clean up bls (#398) (e0f3b9b)
  • bls: remove need for tracking results for verifyMultipleAggregateSignatures (#389) (6fe5c3f)
  • bls: remove single-threaded fallback (#390) (e057713)
  • clock: single public Clock; internalize SlotClock (#463) (fbab1fa)
  • make XXXDecisionRoot fns return js.String (#342) (aef4420)
  • move shuffle into swap_or_not_shuffle module (#558) (e56efb2)
  • pubkeys: centralize the process-wide cache (#522) (dc9669d)

Miscellaneous Chores

Documentation