9580 commits in all time Apr 22, 2026 14:50 – Jul 21, 2026 14:50 UTC
algojohnlee go-algorand
Merge pull request #6667 from onetechnical/relstable4.7.4-remerge
Git Commit 83f620a1 Branch master Document 9/415 ++ 60 --
cusma specs
Merge b36dc971db89cdd8184267861ccf483eef511412 into 71e152527831ea860cfe66888704ff5b84373609
Git Commit 5a1cab31 Branch pull/293/merge Document 7/185 ++ 43 --
cusma specs
docs: clarify pq scheme fee surcharge for heartbeat and state proof transactions
Git Commit b36dc971 Branch pq-account Document 1/5 ++ 2 --
Merge ca77809893ea99eca062cdff9bfa65b22cc4e60e into a3679c833fbc334d3b47734db849a51ffc8a87f1
Git Commit 37257576 Branch pull/888/merge Document 1/1 ++ 1 --
sambitsargam algo-voting
Merge pull request #889 from sambitsargam/dependabot/npm_and_yarn/typescript-eslint/parser-tw-8.65.0
build(deps-dev): update @typescript-eslint/parser requirement from ^8.64.0 to ^8.65.0
Git Commit a3679c83 Branch main Document 1/2 ++ 2 --
sambitsargam algo-voting
Merge branch 'main' into dependabot/npm_and_yarn/typescript-eslint/parser-tw-8.65.0
Git Commit 9a6bb4f0 Branch main Document No file changes
sambitsargam algo-voting
Merge pull request #890 from sambitsargam/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-tw-8.65.0
build(deps-dev): update @typescript-eslint/eslint-plugin requirement from ^8.63.0 to ^8.65.0
Git Commit 44d8799b Branch main Document 1/1 ++ 1 --
Merge 976eca01ad7caac103441e1956794180da3cea42 into 9bc334a8819e21a61e5717e04c07dec184a7c579
Git Commit 33d16c58 Branch pull/73/merge Document 2/201 ++ 329 --
chore(deps): update semantic-release monorepo
Git Commit 976eca01 Branch renovate/major-semantic-release-monorepo Document 2/201 ++ 329 --
github go-algorand
add Go Benchmark (go) benchmark result for 48c92817b7d125afefd4bcb0c033bcffabc09bad
Git Commit 69538e0c Branch gh-pages Document 1/445 ++ 1 --
algojohnlee go-algorand
Merge pull request #6668 from algorand/relbeta4.7.4
Git Commit bdff8de5 Branch rel/beta Document 11/417 ++ 62 --
onetechnical go-algorand
Merge 697cc227a449966bbdee7f7b67435e0e01ad123a into 48c92817b7d125afefd4bcb0c033bcffabc09bad
Git Commit f712e1bc Branch pull/6667/merge Document 9/415 ++ 60 --
cce go-algorand
falcon: sign ToBeHashed, not Hashed (#6669)
Git Commit 48c92817 Branch master Document 3/65 ++ 13 --
cce sortition
Merge 0fdbb9de7efd338de8bdf49d43cf7c5df97fb083 into 9ffbb4eb8f7b0acb233c9e6dcc5d1fa030350a94
Git Commit 0774d8bb Branch pull/8/merge Document 4/987 ++ 1 --
cce sortition
correct ratio==1.0 docs: both walk outcomes occur; pin both branches
At ratio exactly 1.0 (only the all-0xff digest IS exactly 1.0; the rest of the top 2^-129 digest interval rounds up to it), the accumulated f128 CDF reaches exactly 1.0 only for some distributions, decided at ulp granularity: money=1954/exp=1500 stops at j=3 with total=1_999_999_999_999_964 but falls through with total=2_000_000_000_000_000, 36 more. Other distributions never get within half an ulp of 1.0 (p=1/2 with money=100 leaves cdf(99) = 1 - 2^-100, 2^28 ulps short) and the walk runs to money -- which, with the rounded threshold fixed at 1.0, is also the exact-CDF count, since the exact CDF is < 1 for every j < money. The previous text presented the early stop as the behavior and money as hypothetical; this had it backwards.

Reframe the f128 round-to-nearest rationale accordingly: RNE is required because every result must be the correctly-rounded 128-bit value to stay bit-identical to the 128-bit big.Float oracle; the ratio==1.0 edge is a consequence, not the requirement. Boost's double CDF -- evaluated independently per j via ibetac rather than accumulated -- can also saturate to 1.0 on its far coarser grid, potentially at a different (typically earlier) j, so old-vs-new divergence at this edge can be as large as money vs. a few.

TestSelectF128RatioExactlyOne now pins both branches and both boundaries: the hair-trigger total pair (j=3 vs money), the provably-stuck money=100/p=1/2 case, and the exact tie money=129/p=1/2 where true cdf(128) = 1 - 2^-129 sits precisely on the rounding midpoint and ties-to-even rounds it up to 1.0 (stops at j=128). The rounds-to-1.0 digest is constructed with exactly 129 leading one bits, the minimal such digest.
Git Commit 0fdbb9de Branch sortition-f128 Document 3/61 ++ 26 --
cce sortition
update comment
Git Commit 9902d6de Branch sortition-f128 Document 1/6 ++ 7 --
cce sortition
take expectedSize as uint64 in SelectF128
The committee size is a uint64 in the protocol (CommitteeSize(proto)); the float64 parameter only mirrored the C++ double signature and forced casts at every caller. Passing the exact integers lets each PMF-recurrence constant be a SINGLE round-to-nearest-even f128 divide of exact values -- q = (total-expected)/total and pq = expected/(total-expected) -- instead of stacking roundings through an intermediate float64 p (float64(totalMoney) is itself inexact above 2^53). Invalid probabilities (NaN/Inf/negative/fractional) become unrepresentable and p >= 1 is an exact integer comparison, so the differential fuzz no longer needs any input filtering.

f128FromFloat64 loses its only caller and is removed; sub and its norm192s helper likewise lose theirs (1-p is now a direct divide of exact integers, one rounding instead of two) and are removed along with their fuzz checks. The oracle mirrors the integer-quotient constants. Boost agreement is unchanged (200000/200000); the fuzz explored the new signature for 8.1M execs clean. Setup now does two divs instead of convert+sub+div: ~170ns/op (was ~159), still 1 alloc.
Git Commit da28510a Branch sortition-f128 Document 3/68 ++ 154 --
cce sortition
Merge a6645efe919fdda8c7c1555a01151c8cbb196406 into 9ffbb4eb8f7b0acb233c9e6dcc5d1fa030350a94
Git Commit 74fa6603 Branch pull/8/merge Document 4/1,039 ++ 1 --
cce sortition
fuzz sub and div in FuzzF128Ops, add BenchmarkSelectF128
sub was previously exercised only through the (1, p) operand shape in newBinomialF128; fuzz it across the full operand space, with seeds for the sticky/borrow path (exponent diff >= 65) and near-equal cancellation. Fuzz div alongside TestDivVsBig for ongoing corpus-driven coverage.

Also correct the newBinomialF128 comment: 1-p is correctly rounded rather than exact for p below ~2^-76 (it still matches the 128-bit big.Float oracle bit-for-bit, which is the property the fuzz checks). BenchmarkSelectF128 mirrors BenchmarkSortition for direct comparison with the cgo/Boost path.
Git Commit a6645efe Branch sortition-f128 Document 2/32 ++ 4 --
cce sortition
Merge 789f596f6b698b2524578c749ca038a547fe48e1 into 9ffbb4eb8f7b0acb233c9e6dcc5d1fa030350a94
Git Commit 18b08ffb Branch pull/8/merge Document 4/1,011 ++ 1 --
jannotti sortition
add f128 div, drop big.Float from newBinomialF128 entirely
Compute p/(1-p) with a native round-to-nearest-even f128 divide (128/128
via Knuth long division, used once per setup) instead of big.Float. With
the earlier native 1-p, newBinomialF128 is now heap-free apart from the
returned struct: 658ns/19allocs -> 195ns/1alloc, and the SelectF128 common
path drops 984ns/25allocs -> 535ns/7allocs (the remaining allocs are the
VRF->ratio big.Float work shared with Select).

div is fuzz-checked bit-identical to the big.Float oracle via SelectF128,
and TestDivVsBig cross-checks it directly against a 128-bit big.Float
divide on 5M broad random operands. Removes the now-dead f128FromBigFloat,
f128bigMask, and toBigFloat helpers and the math/big import.
Git Commit 789f596f Branch sortition-f128 Document 2/154 ++ 45 --
jannotti sortition
add f128 sub, compute 1-p natively in newBinomialF128
1-p is exact for any float64 p, so compute it with a native f128
subtraction instead of big.Float, dropping one f128FromBigFloat
conversion (~6 fewer allocs, ~17% off newBinomialF128). sub is done
exactly in a 192-bit field so it is correct under cancellation, and is
fuzz-checked bit-identical to the big.Float oracle.
Git Commit b646576d Branch sortition-f128 Document 1/88 ++ 4 --
cce sortition
add TestSelectF128RatioExactlyOne
Git Commit 0b07a39a Branch sortition-f128 Document 3/50 ++ 2 --
cce sortition
add direct 256-bit digest-to-f128 ratio conversion and passes an f128 ratio into the CDF walk
Git Commit 623a5673 Branch sortition-f128 Document 4/176 ++ 96 --
cce sortition
trim comments
Git Commit c4febea5 Branch sortition-f128 Document 2/4 ++ 7 --