Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1473 commits
Select commit Hold shift + click to select a range
94e1fd2
perf: reduce proving memory — compress idle data, PrefixCovector, eli…
Bisht13 Feb 19, 2026
356d5e7
refactor: remove dead code and clean up zkWHIR 2.0 migration
Bisht13 Feb 19, 2026
6803065
refactor: extract PrefixCovector and shared functions to provekit-common
Bisht13 Feb 20, 2026
28b5445
refactor: deduplicate AND/XOR opcode handling via process_binop_opcod…
Bisht13 Feb 20, 2026
88d4422
fix: replace panic-prone .take().unwrap() with proper error in verifier
Bisht13 Feb 20, 2026
a972ee2
refactor: improve prover/verifier construction and add #[must_use] an…
Bisht13 Feb 20, 2026
29fe49e
perf: parallelize sparse matrix multiplication, optimize sumcheck, sw…
Bisht13 Feb 20, 2026
fd5aa4d
chore: clean up dead code, fix imports/formatting, disable jemalloc d…
Bisht13 Feb 20, 2026
07f84f9
chore: pin whir to git rev, enable profiling-allocator by default
Bisht13 Feb 20, 2026
44f7369
perf: optimize verification path — eliminate clones, parallel I/O and…
Bisht13 Feb 20, 2026
b210d9c
perf: switch file compression from XZ to zstd for faster I/O with bac…
Bisht13 Feb 20, 2026
82c6e2f
perf: overlap R1CS transpose with sumcheck and use parallel sort
Bisht13 Feb 20, 2026
395ff09
chore: fix clippy warnings in verifier (if-let, remove useless try_into)
Bisht13 Feb 20, 2026
7ce5bb0
fix: replace panic-prone unwraps with proper error handling in verifi…
Bisht13 Feb 20, 2026
f0fd273
Reduce proving memory: PrefixCovector, CompressedR1CS/Layers, elimina…
Bisht13 Feb 17, 2026
ce5e38c
Flatten nested linear_forms vec for ownership-based whir prove()
Bisht13 Feb 18, 2026
43f98fc
Integrate whir PR #225 and fix PrefixCovector MLE variable ordering
Bisht13 Feb 18, 2026
939f759
Update whir to latest PR #225 commit (ed7002a0)
Bisht13 Feb 18, 2026
580b54c
Address PR review: simplify trait, conditional compression, parallel …
Bisht13 Feb 20, 2026
3cebedf
Merge pull request #294 from worldfnd/px/mem-opts
ashpect Feb 20, 2026
0c80757
fix: pin whir to git rev, stream decompression, propagate errors, sor…
Bisht13 Feb 21, 2026
118ba3f
revert: restore noir_sha256 example to original assertion-based test
Bisht13 Feb 21, 2026
8120fde
chore: remove redundant inline comments
Bisht13 Feb 21, 2026
d35b9da
Add constant optimization for SHA256 decomposition to improve efficiency
Feb 21, 2026
9a4f4c5
Refactor spread table constraints for improved clarity and efficiency
Feb 21, 2026
fbb591b
Refactor code for improved readability and consistency in ROM and SHA…
Feb 21, 2026
61b94e6
refactor: address review feedback — update whir rev, fix verify API, …
Bisht13 Feb 21, 2026
af989cb
refactor: parameterize compression (zstd/xz per file type), remove st…
Bisht13 Feb 22, 2026
b1a5a8b
fix: lower MIN_WHIR_NUM_VARIABLES to 13 (verified minimum for 128-bit…
Bisht13 Feb 22, 2026
f3d8152
Merge pull request #296 from worldfnd/px/zk-whir-2.0
ashpect Feb 22, 2026
65d02e3
feat: embed blinding polynomial G in w1 zero-padding, eliminating sep…
Bisht13 Feb 23, 2026
05e3994
fix: restore pre-existing navigation and protocol comments
Bisht13 Feb 23, 2026
1d7277c
Refactor SpreadBitExtract to compute sum inline from terms, eliminati…
Feb 23, 2026
4665869
test: add unit tests for OffsetCovector
Bisht13 Feb 23, 2026
8ac732d
Merge pull request #305 from worldfnd/px/plain-whir-blinding
ashpect Feb 23, 2026
51882d6
Refactor SHA256 spread witness calculations to optimize for constant …
Feb 25, 2026
4e9bc9b
Fix doc comment for ROM table-entry quotient constraint count
Bisht13 Feb 25, 2026
24ba481
Merge pull request #297 from worldfnd/rs/sha_micro_ops
Bisht13 Feb 25, 2026
4dc9d52
Port to whir b3c86d7 with sound parameters (starting_log_inv_rate=2)
Bisht13 Feb 25, 2026
adbbedd
Remove unused poseidon2 dep from acir_assert_zero
Bisht13 Feb 25, 2026
dbe5105
Merge pull request #307 from worldfnd/px/upgrade-whir-b3c86d7
Bisht13 Feb 25, 2026
34e3a99
fix : unchecked witness derived indices in witness solving
ocdbytes Mar 21, 2026
75de982
fix : unbound logup challanges in verifier
ocdbytes Mar 21, 2026
8a962c0
fix : lint
ocdbytes Mar 21, 2026
d217442
fix: R1CS binding in transcript [LA - I]
ashpect Mar 21, 2026
aab2e5d
fix: bind evals to transcript
ashpect Mar 21, 2026
1892fe5
fix DSC Key Smuggling via Unsigned TBS Data
x-senpai-x Mar 22, 2026
43e0b63
fix: enforce end-of-transcript validation in WhirR1CS verifier [LA - F]
Bisht13 Mar 20, 2026
978855e
fix: binop width selection to preserve byte semantics
Mar 22, 2026
c4e8b8f
fix: assert num_entries <= full_size
ashpect Mar 23, 2026
de977aa
fix: canonicalize duplicate witness terms in R1CS constraints [LA - C]
Bisht13 Mar 20, 2026
1403a19
feat : resolved comments
ocdbytes Mar 23, 2026
012f9d3
add regression tests
x-senpai-x Mar 24, 2026
21528db
asn.1 length validation, der subjectpublickeyinfo structural validati…
x-senpai-x Mar 25, 2026
4ae8c05
Merge pull request #376 from worldfnd/ash/audit3
ashpect Mar 26, 2026
100c809
Merge pull request #373 from worldfnd/rs/issue_d_v1
ashpect Mar 26, 2026
52f1243
Merge pull request #368 from worldfnd/us/fix-dsckey-smuggling
ashpect Mar 26, 2026
93cc8b7
Merge pull request #352 from worldfnd/px/fix-duplicate-witness-canoni…
ashpect Mar 26, 2026
370baef
Merge pull request #361 from worldfnd/aj/v1/fix-unbound-logup-challanges
ashpect Mar 26, 2026
18c1e1a
Merge pull request #364 from worldfnd/ash/audit2
ashpect Mar 26, 2026
e1e4241
Merge pull request #363 from worldfnd/ash/audit1
ashpect Mar 26, 2026
54abd26
Merge pull request #355 from worldfnd/px/fix-eof-validation
ashpect Mar 26, 2026
c40db93
Merge pull request #358 from worldfnd/aj/v1/fix-unchecked-witness-der…
ashpect Mar 26, 2026
b19dd28
fix: public inputs binding to transcript [LA - B]
ashpect Mar 21, 2026
59c7ee7
chore: cleanup
ashpect Mar 23, 2026
c18038a
Merge pull request #360 from worldfnd/ash/audit
ashpect Mar 26, 2026
0004f51
feat: add assertions to validate constants do not exceed 32 bits in b…
Mar 23, 2026
b8453aa
Merge pull request #375 from worldfnd/rs/suggestion3_v1
ashpect Mar 26, 2026
43af625
hotfix: fix bug created while rebasing
ashpect Mar 27, 2026
4b39d6e
chore: enable ci and fmt
ashpect Mar 27, 2026
ba1dfe6
conflicts addressed
x-senpai-x Mar 27, 2026
9ea6ab9
fix: bump version
ashpect Mar 27, 2026
b146411
Update nightly to fix multilimb subtraction bug
xrvdg Mar 5, 2026
1676aae
Merge pull request #366 from worldfnd/us/fix-unbound-rsa-exponent
ashpect Mar 27, 2026
001c4fc
fix: clean up unused deps and fix compiler tests
ashpect Mar 27, 2026
ab78537
chore: update rusttoolchain
ashpect Mar 27, 2026
ab96403
chore: debug
ashpect Mar 27, 2026
5d0f9c1
fix: update whir ref commit
ashpect Mar 27, 2026
b886fb2
Merge pull request #385 from worldfnd/ash/v1
Bisht13 Mar 30, 2026
0a48d42
fix: vendor noir-date library after upstream repo was deleted
Bisht13 Mar 30, 2026
b3337a0
Merge pull request #387 from worldfnd/px/vendor-noir-date-v1
ashpect Mar 30, 2026
3cdaf7e
fix: provekitffi v2.0 on v1
ashpect Mar 30, 2026
7e8ef6d
feat: add cdylib crate type to provekit-ffi for Android dynamic linking
Bisht13 Mar 30, 2026
3980c24
feat: add release-mobile profile with opt-level z for iOS/Android builds
Bisht13 Mar 30, 2026
53e7330
fix: keep staticlib only in provekit-ffi, use cargo rustc --crate-typ…
Bisht13 Mar 30, 2026
dfa3f42
fix: resolve comments
ashpect Mar 30, 2026
161d0d8
chore: cargofmt
ashpect Mar 31, 2026
82439ee
fix: activate mmap mode directly in pk_configure_memory
ashpect Mar 31, 2026
b16b140
chore: cleanup
ashpect Mar 31, 2026
b87ea9d
refactor: move serialization logic to provekit_common, remove duplica…
ashpect Mar 31, 2026
bc72bab
Merge pull request #388 from worldfnd/ash/v1-ffi-sdk
Bisht13 Mar 31, 2026
757a9cd
fix: split prove fucntion for ffi
ashpect Apr 1, 2026
99ce4c5
Merge pull request #393 from worldfnd/ash/v1-improve
Bisht13 Apr 1, 2026
b9ac2db
fix: update whir witness references from blinded_commitment to blinde…
Apr 2, 2026
128f681
fix: remove dead num_polynomials parameter from WhirR1CSSchemeBuilder
Bisht13 Apr 3, 2026
26f22c5
Merge pull request #396 from worldfnd/rs/whir-change-v1
Bisht13 Apr 3, 2026
de64272
Add mobench BrowserStack benchmark pipeline
dcbuild3r Apr 3, 2026
5c725ae
Wire Browserstack env into mobile bench CI
dcbuild3r Apr 3, 2026
12546cd
Add missing iOS simulator Rust target for CI
dcbuild3r Apr 3, 2026
b3190e0
Install Rust directly in mobile bench workflow
dcbuild3r Apr 3, 2026
19075c1
Fix mobile benchmark artifact builds in CI
dcbuild3r Apr 4, 2026
5554e00
Forward BrowserStack secrets to reusable workflow
dcbuild3r Apr 4, 2026
59ec0db
Run PR benchmarks via reusable workflow
dcbuild3r Apr 4, 2026
862048f
Fix fork mobile benchmark runners
dcbuild3r Apr 4, 2026
3ad5f33
Use portable checks in mobile bench install
dcbuild3r Apr 4, 2026
fef4aba
Add bench-mobile UniFFI exports for CI builds
dcbuild3r Apr 4, 2026
da2d5a8
Fix BrowserStack mobile benchmark recovery
dcbuild3r Apr 4, 2026
517aed1
Serialize Android mobile benchmark scope
dcbuild3r Apr 4, 2026
c6b19f9
Use mobench 0.1.29 release in CI
dcbuild3r Apr 5, 2026
9a3f3dd
Simplify mobench 0.1.29 release install
dcbuild3r Apr 5, 2026
ac84be4
feat: Add input generation for passport processing
rose2221 Apr 7, 2026
396eefb
Fix mobench 0.1.29 install in Android and summary jobs
dcbuild3r Apr 7, 2026
6a86d35
Add support for 1850-byte TBS certificates in passport verification
rose2221 Apr 8, 2026
a57c072
Use short prove-only profile for mobile CI
dcbuild3r Apr 8, 2026
62d0cc7
Remove obsolete scripts and files related to the tbs_1300 and tbs_720…
rose2221 Apr 8, 2026
505d06b
Remove generated input TOML files and the input generation script
rose2221 Apr 8, 2026
2336318
Refactor code structure for improved readability and maintainability
rose2221 Apr 8, 2026
d20886d
Merge pull request #399 from worldfnd/rs/padding_tbs_1400
Bisht13 Apr 8, 2026
e30f427
Fix mobile bench empty-sample CI handling
dcbuild3r Apr 9, 2026
10a7608
Fix mobench patch application in CI
dcbuild3r Apr 9, 2026
4962fbf
Clarify mobench 0.1.30 upstream requirements
dcbuild3r Apr 9, 2026
0076227
Accept nested mobench summary layout in validation
dcbuild3r Apr 9, 2026
4dd60ab
Fix iOS embedded bench spec path
dcbuild3r Apr 9, 2026
725fcdf
Handle nested summary layout in summary job
dcbuild3r Apr 9, 2026
ef58470
Fix iOS mobench spec propagation
dcbuild3r Apr 9, 2026
0054d72
Fix mobench install assertions in summary jobs
dcbuild3r Apr 9, 2026
7594493
Restore iOS mobench resource metrics
dcbuild3r Apr 9, 2026
4e5f658
Preserve raw iOS peak memory in summaries
dcbuild3r Apr 9, 2026
44c514f
Publish workspace crates to crates.io with provekit- prefix
Bisht13 Apr 9, 2026
b3c54db
test fix for exponents
x-senpai-x Apr 10, 2026
8797b4f
Add mobench 0.1.30 upgrade agent brief
dcbuild3r Apr 10, 2026
3f44aa6
Add prove_with_json and expose InputMap from provekit-common
Bisht13 Apr 10, 2026
7d2a30d
fix(r1cs-compiler): address LA Suggestion 3 review on v1
rose2221 Apr 10, 2026
3dac068
chore(tests): remove unnecessary trailing newline in tests module
rose2221 Apr 10, 2026
e1e13d1
Add worst BrowserStack device profile
dcbuild3r Apr 11, 2026
b4930d1
Adjust worst iOS device profile
dcbuild3r Apr 11, 2026
b5d08bf
Use oldest viable iOS worst profile
dcbuild3r Apr 11, 2026
1436beb
Rewrite mobench 0.1.30 upstream brief
dcbuild3r Apr 11, 2026
6ca04c1
Upgrade mobench to 0.1.30
dcbuild3r Apr 11, 2026
204c759
Adjust mobench device profiles
dcbuild3r Apr 11, 2026
b8af821
Use iPhone SE 2020 for worst iOS bench
dcbuild3r Apr 11, 2026
5b27094
Validate mobench CSV resource metrics
dcbuild3r Apr 12, 2026
2760f74
Use upstream mobench summary rendering
dcbuild3r Apr 12, 2026
8d78ee6
Pin mobench CPU total formatting fix
dcbuild3r Apr 12, 2026
9ed87df
fix mobile bench reporting and CI fetch retries
dcbuild3r Apr 13, 2026
28308b5
fix mobench 0.1.31 workflow compatibility
dcbuild3r Apr 13, 2026
c62bcac
fix mobench android abi selection
dcbuild3r Apr 13, 2026
e3b9d3c
fixed tbs_len in tests
x-senpai-x Apr 13, 2026
d693d5d
additional safety check
x-senpai-x Apr 13, 2026
4220c70
nargo fmt
x-senpai-x Apr 13, 2026
2fdac70
fix: align mobile bench workflow with mobench compatibility
dcbuild3r Apr 14, 2026
656ca11
cleanup in future
Bisht13 Apr 16, 2026
4be9932
added assertions for exponent offset
x-senpai-x Apr 16, 2026
0d18675
remove redundant bounds check for exponent bytes in verify_rsa_pubkey…
rose2221 Apr 17, 2026
8e78f22
remove redundant exponent offset bounds check in verify_rsa_pubkey_in…
rose2221 Apr 17, 2026
1ce5b1a
Merge pull request #405 from worldfnd/us/fix-tbs-exptests
rose2221 Apr 17, 2026
6ae36be
Merge pull request #406 from worldfnd/rs/suggestion3_v1
Bisht13 Apr 17, 2026
4201ccb
Gate native-only deps and witness generation behind cfg(target_arch)
Bisht13 Apr 21, 2026
0097d9b
Remove .omc/ state files and ignore agent state dirs
Bisht13 Apr 21, 2026
14767e9
Ignore .omc/ and .omx/ agent state directories
Bisht13 Apr 21, 2026
4c174b9
Enable wasm32 builds and bump provekit crates to 0.1.4
Bisht13 Apr 21, 2026
81780d1
style: apply cargo fmt to provekit-bench compiler test
Bisht13 Apr 21, 2026
ea973e3
Pin rust-toolchain.toml to nightly-2026-03-04
Bisht13 Apr 21, 2026
8820eb9
Merge pull request #404 from worldfnd/ab/publish-crates-io
Bisht13 Apr 21, 2026
e50a685
feat(cli): add compile subcommand and rename circuit-stats
Bisht13 Apr 23, 2026
63c7e23
chore(cli): bump provekit-cli to 0.1.4
Bisht13 Apr 23, 2026
a9fa2cc
Merge pull request #422 from worldfnd/px/provekit-cli-compile
Bisht13 Apr 23, 2026
e35a5aa
chore: bump mobench to 0.1.34
dcbuild3r Apr 23, 2026
b7e91e8
feat(cli): unify prepare/prove/verify with zero-arg defaults
Bisht13 Apr 24, 2026
24fc799
style(cli): apply cargo fmt to util.rs
Bisht13 Apr 24, 2026
0be0112
chore(cli): bump provekit-cli to 0.1.5
Bisht13 Apr 24, 2026
6a0778b
docs(cli): wrap <circuit> placeholder in backticks
Bisht13 Apr 24, 2026
5cef770
Merge pull request #423 from worldfnd/px/cli-zero-arg-defaults
Bisht13 Apr 24, 2026
57971f1
chore: bump mobench to 0.1.35
dcbuild3r Apr 24, 2026
0ea2ef2
chore: test mobench 0.1.36 branch
dcbuild3r Apr 27, 2026
88dd21f
chore: repin mobench harness fix
dcbuild3r Apr 27, 2026
bc1a40f
chore: update mobench integration to 0.1.37
dcbuild3r Apr 27, 2026
17083a3
Merge commit 'refs/tmp/v1-head' into codex/pr398-resolve-v1
dcbuild3r Apr 27, 2026
db0dc83
ci: rely on mobench output contract
dcbuild3r Apr 27, 2026
4fdb672
ci: add oprf and p256 mobench fixtures
dcbuild3r Apr 28, 2026
66def1c
ci: harden mobench sticky comment reporting
dcbuild3r Apr 28, 2026
d35e5e1
ci: run mobench smoke on low-end devices
dcbuild3r Apr 29, 2026
0384208
ci: lower mobench ios deployment target
dcbuild3r Apr 29, 2026
a1949d7
ci: patch generated ios deployment target
dcbuild3r Apr 29, 2026
bf41e49
ci: test provekit fixtures with mobench 0.1.40
dcbuild3r May 2, 2026
5aaf68d
ci: target iphone 7 on supported ios
dcbuild3r May 2, 2026
7200a95
ci: use browserstack iphone 7 ios 10 target
dcbuild3r May 2, 2026
d837017
ci: retry v1 ios on supported browserstack target
dcbuild3r May 2, 2026
4cfa0b9
ci: request iphone 7 without ios pin
dcbuild3r May 2, 2026
09a8681
ci: fall back ios smoke to iphone se
dcbuild3r May 2, 2026
d5a6e95
ci: pin mobench ios readiness fix
dcbuild3r May 2, 2026
8827e0a
ci: fix mobench automation permissions
dcbuild3r May 3, 2026
d3e151e
ci: generate mobile bench fixtures in workflows
dcbuild3r May 11, 2026
e3b4712
ci: serialize BrowserStack mobile benchmarks
dcbuild3r May 14, 2026
918884d
ci: add iOS BrowserStack backup devices
dcbuild3r May 14, 2026
b8f2fce
Use mobench native C ABI backend
dcbuild3r May 14, 2026
eb78ffd
Point mobile bench workflows at native mobench
dcbuild3r May 14, 2026
53831a9
Update mobench native backend revision
dcbuild3r May 14, 2026
c8fe906
Update mobench native backend revision
dcbuild3r May 14, 2026
45554e9
Use released mobench native backend
dcbuild3r May 14, 2026
040a1a4
Test mobench native backend fix from git
dcbuild3r May 14, 2026
d823bc9
Use full mobench fix ref
dcbuild3r May 14, 2026
c2d7730
Use mobench Android flag fix ref
dcbuild3r May 15, 2026
50ac6c8
Require Android age-check benchmark results
dcbuild3r May 15, 2026
92536bc
Pin mobench Android timeout fix
dcbuild3r May 15, 2026
e2eaa15
Bake Android benchmark timeout into test APK
dcbuild3r May 15, 2026
c3cc9ea
Run fragmented age check on Android mobench
dcbuild3r May 15, 2026
f47a94f
Align mobile bench PR targets with native path
dcbuild3r May 15, 2026
fdecffd
Benchmark 720-byte fragmented age check
dcbuild3r May 15, 2026
0949d77
Fix mobile bench prove timing matrix
dcbuild3r May 16, 2026
c46d0c3
Allow manual bench label reruns
dcbuild3r May 16, 2026
89ccfc0
Run mobile bench on branch pushes
dcbuild3r May 16, 2026
7a6b799
Fix mobile bench push reruns
dcbuild3r May 16, 2026
74212c7
Add platform-specific mobile bench push markers
dcbuild3r May 16, 2026
d1e12b0
Run PR 430 Android mobile bench [mobench:android]
dcbuild3r May 16, 2026
df529c9
Bound Android mobile bench timeouts
dcbuild3r May 17, 2026
750a3ce
Run PR 430 Android mobile bench [mobench:android]
dcbuild3r May 17, 2026
98e5cee
Run Android mobile bench devices serially
dcbuild3r May 17, 2026
cf4077b
Run PR 430 serial Android mobile bench [mobench:android]
dcbuild3r May 17, 2026
859926f
Preserve Android mobile bench fixture failures
dcbuild3r May 17, 2026
5b77088
Run PR 430 serial Android mobile bench after failure capture [mobench…
dcbuild3r May 17, 2026
da18180
Run PR 430 iOS mobile bench after Android capture [mobench:ios]
dcbuild3r May 17, 2026
46e6d7f
Run PR 430 iOS mobile bench after PR429 fallback fix [mobench:ios]
dcbuild3r May 17, 2026
0a7cb5e
Fix mobile benchmark fixture CI
dcbuild3r May 17, 2026
14e506b
Run full mobile bench [mobench:both]
dcbuild3r May 17, 2026
76b62c6
Serialize mobile bench platforms
dcbuild3r May 17, 2026
182889b
Run full mobile bench after serialization [mobench:both]
dcbuild3r May 17, 2026
fb0a8a6
Use single-sample Vivo Android benchmarks
dcbuild3r May 17, 2026
9b97e86
Run Android mobile bench after Vivo sampling fix [mobench:android]
dcbuild3r May 17, 2026
99dd5bc
Stabilize low-tier Android benchmarks
dcbuild3r May 17, 2026
073d5cb
Run Android mobile bench after low-tier stabilization [mobench:android]
dcbuild3r May 17, 2026
5a0e24b
Restore required Vivo monolithic benchmark
dcbuild3r May 17, 2026
47071d5
Run full mobile bench with Vivo monolithic restored [mobench:both]
dcbuild3r May 17, 2026
983e806
Extend Vivo monolithic benchmark wait
dcbuild3r May 17, 2026
669acfe
Run full mobile bench with extended Vivo wait [mobench:both]
dcbuild3r May 17, 2026
b59cfda
Harden mobile bench retries [mobench:both]
dcbuild3r May 17, 2026
03cf5e5
Fix Android mobench prove timing and allocator
dcbuild3r May 18, 2026
ac0fe90
Trigger full mobile bench [mobench:both]
dcbuild3r May 18, 2026
38eaacd
Add platform Sina plots to mobile bench reports
dcbuild3r May 18, 2026
7a579cf
Fix Android jemalloc link in mobile bench CI
dcbuild3r May 18, 2026
5c1fe73
Trigger full mobile bench after Android linker fix [mobench:both]
dcbuild3r May 18, 2026
1379280
Use system allocator for Android mobile bench
dcbuild3r May 18, 2026
cf2b135
Trigger Android mobile bench after allocator rollback [mobench:android]
dcbuild3r May 18, 2026
432d169
Cap Android mobile bench job at 100 minutes
dcbuild3r May 18, 2026
4c6c8d4
Trigger Android mobile bench with 100 minute cap [mobench:android]
dcbuild3r May 18, 2026
52a85a4
Cap Android mobile bench job timeout [mobench:android]
dcbuild3r May 18, 2026
36f41e2
Support gated 100-run mobile bench trigger
dcbuild3r May 18, 2026
9c9e79c
Bound Android Vivo monolithic validation [mobench:android]
dcbuild3r May 18, 2026
5f54b5d
Prioritize stable Android validation rows [mobench:android]
dcbuild3r May 19, 2026
802e67b
Tighten Android validation fixture timeouts [mobench:android]
dcbuild3r May 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
10 changes: 10 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# This enables KaTex in docs, but requires running `cargo doc --no-deps`.
[build]
rustdocflags = "--html-in-header .cargo/katex-header.html"

[target.wasm32-wasip2]
rustflags = ["-C", "target-feature=+simd128,+relaxed-simd"]

[target.wasm32-wasip1]
runner = "wasmtime run --dir . "
rustflags = ["-C", "target-feature=+simd128,+relaxed-simd"]
45 changes: 45 additions & 0 deletions .cargo/katex-header.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/katex.min.css"
integrity="sha384-5TcZemv2l/9On385z///+d7MSYlvIEw9FuZTIdZ14vJLqWphw7e7ZPuOiCHJcFCP"
crossorigin="anonymous"
/>
<script
defer
src="https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/katex.min.js"
integrity="sha384-cMkvdD8LoxVzGF/RPUKAcvmm49FQ0oxwDF3BGKtDXcEc+T1b2N+teh/OJfpU0jr6"
crossorigin="anonymous"
></script>
<script
defer
src="https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/contrib/auto-render.min.js"
integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh"
crossorigin="anonymous"
></script>
<script defer>
document.addEventListener("DOMContentLoaded", function () {
var macros = {};
katex.renderToString(
String.raw`
\gdef\N{\mathbb N}
\gdef\∀{\forall}
\gdef\delim#1#2#3{\mathopen{}\mathclose{\left#1 #2 \right#3}}
\gdef\p#1{\delim({#1})}
\gdef\floor#1{\delim{\lfloor}{#1}{\rfloor}}
\gdef\ceil#1{\delim{\lceil}{#1}{\rceil}}
\gdef\mod#1{\delim[{#1}]}
\gdef\dummyarg{\operatorname{-}}
`,
{ macros },
);
renderMathInElement(document.body, {
output: "html",
delimiters: [
{ left: "$$", right: "$$", display: true },
{ left: "$", right: "$", display: false },
],
maxExpand: 50,
macros,
});
});
</script>
315 changes: 315 additions & 0 deletions .github/scripts/issue_tracker.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,315 @@
#!/usr/bin/env python3

# TODO: The git blame is wrong. It seems to take the last commit instead.

import glob
import re
import os
from datetime import date
import json
import sys

# pip3 install PyGithub numpy
from github import Github
import numpy as np

# Only actually change things on master
# TODO: Make this a command line or env option
DRY_RUN = os.environ["DRY_RUN"] != "false"
print("DRY_RUN =", DRY_RUN)

# Git current commit id
commit_hash = None
with os.popen("git rev-parse HEAD") as process:
commit_hash = process.read().strip()
print("Commit hash:", commit_hash)

# Connect to the GitHub repo
gh = Github(os.environ["GITHUB_TOKEN"])
repo = gh.get_repo(os.environ["REPO_NAME"])
print("Connected to", repo)

# GitHub labels for issues
labels = {
"TODO": ["tracker", "to do"],
"FEATURE": ["tracker", "feature"],
"REFACTOR": ["tracker", "refactor"],
"OPT": ["tracker", "optimize"],
"HACK": ["tracker", "hack"],
}

# GitHub users for emails
users = {
"<remco@wicked.ventures>": "recmo",
"<james@prestwi.ch>": "prestwich",
}

# Translation from labels to PyGitHub `Label`s
repo_labels = {l.name: l for l in repo.get_labels()}

# Translate users ot PyGitHub `User`s
users = {k: gh.get_user(v) for k, v in users.items()}

# Collect existing tracker issues
open_issues = []
issue_body_json = re.compile("^<!--({.*})-->$", re.MULTILINE)
for gh_issue in repo.get_issues():
if repo_labels["tracker"] in gh_issue.labels:
issue = json.loads(issue_body_json.search(gh_issue.body).group(1))
issue["github"] = gh_issue
open_issues += [issue]
print("Found", len(open_issues), "tracked issues on GitHub.")

# Number of lines to give before and after the TODO comment.
CONTEXT_LINES = 5

# Rust like todos. For *.{rs}
rust_todo = re.compile(r"//\W*(TODO|HACK|OPT|FEATURE|REFACTOR)\W*(.*)$")
rust_continuation = re.compile(r"//\W*(?!(TODO|HACK|OPT|FEATURE|REFACTOR))(.*)$")
rust_todo_macro = re.compile(r"\btodo!\((.*)\)")

# Shell like todos. For *.{sh, yml, toml, py, Dockerfile, editorconfig, gitignore}
# TODO: `# TODO: {message}`

# Markdown like todos. For *.{md}
# TODO: `<!-- TODO: {message} -->`

# Markdown todo lists.
# TODO: `* [] {message}`


def git_blame(filename, line):
# Git line numbers start at one
command = "git blame {filename} --line-porcelain -L {line},{line}".format(
filename=filename, line=line + 1
)
with os.popen(command) as process:
lines = process.readlines()
result = dict()
result["commit-hash"] = lines[0].split(" ")[0]
for line in lines[1:-1]:
line = line.replace("\n", "")
if " " in line:
[key, value] = line.split(" ", 1)
result[key] = value
result["author-time"] = int(result["author-time"])
result["committer-time"] = int(result["committer-time"])
return result


def get_context(filename, start, end):
with open(filename, "r") as file:
lines = file.readlines()
start = max(0, start)
end = min(end, len(lines))
return "".join(lines[start:end])


def prep_filename(filename):
if filename.startswith("src/"):
filename = filename[4:]
if filename.endswith(".rs"):
filename = filename[:-3]
return f"`{filename}`: "


def issues_from_file(filename):
with open(filename, "r") as file:
line_number = 0
issue = None
kind = None
issue_line = 0
for line in file:
match = rust_todo.search(line)
continuation = rust_continuation.search(line)
if match:
issue = match.group(2)
kind = match.group(1)
issue_line = line_number
elif issue and continuation:
issue += "\n" + continuation.group(2)
elif issue:
result = git_blame(filename, issue_line)
context = get_context(
filename, issue_line - CONTEXT_LINES, line_number + CONTEXT_LINES
)
result["filename"] = filename
result["line"] = issue_line
result["line_end"] = line_number
result["kind"] = kind
result["issue"] = issue
result["head"] = prep_filename(filename) + issue.split("\n")[0]
result["context"] = context
result["repo"] = repo.full_name
result["branch-hash"] = commit_hash
yield result
issue = None
kind = None
issue_line = 0
else:
match = rust_todo_macro.search(line)
if match:
issue = match.group(1)
if issue == "":
issue = "todo!()"
kind = "TODO"
issue_line = line_number
result = git_blame(filename, issue_line)
context = get_context(
filename,
issue_line - CONTEXT_LINES,
line_number + CONTEXT_LINES,
)
result["filename"] = filename
result["line"] = issue_line
result["line_end"] = line_number
result["kind"] = kind
result["issue"] = issue
result["head"] = prep_filename(filename) + issue.split("\n")[0]
result["context"] = context
result["repo"] = repo.full_name
result["branch-hash"] = commit_hash
yield result
line_number += 1


def issues_from_glob(pattern):
for filename in glob.iglob(pattern, recursive=True):
for issue in issues_from_file(filename):
yield issue


def render(issue):
issue = issue.copy()
issue.pop("open-issue-index", None)
issue["json"] = json.dumps(issue)

if issue["author-mail"] in users:
issue["user-mention"] = "@" + users[issue["author-mail"]].login + " wrote in"
else:
issue["user-mention"] = "in"

issue["author-time-pretty"] = date.fromtimestamp(issue["author-time"]).isoformat()
issue["commit-hash-short"] = issue["commit-hash"][0:7]
issue["line-one"] = issue["line"] + 1

issue_obj = dict(
title="{head}".format(**issue),
body="""
*On {author-time-pretty} {user-mention} [`{commit-hash-short}`](https://github.com/{repo}/commit/{commit-hash}) “{summary}”:*

{issue}

```rust
{context}
```
*From [`{filename}:{line-one}`](https://github.com/{repo}/blob/{branch-hash}/{filename}#L{line-one})*

<!--{json}-->
""".strip().format(**issue),
labels=labels[issue["kind"]] + (["blocked"] if "blocked" in issue else []),
)

if issue["author-mail"] in users:
issue_obj["assignee"] = users[issue["author-mail"]]

return issue_obj


def create_issue(source_issue):
print("Creating issue...")
r = render(source_issue)
r["labels"] = [repo_labels[l] for l in r["labels"]]
if not DRY_RUN:
gh_issue = repo.create_issue(**r)
print("Created issue", gh_issue.number)


def update_issue(github_issue, source_issue):
# We update headline, body and labels
gh = github_issue["github"]
r = render(source_issue)
if (
gh.title == r["title"]
and github_issue["issue"] == source_issue["issue"]
and set([l.name for l in gh.labels]) == set(r["labels"])
):
# Issue up to date
return
# NOTE: We don't update if the body changed because this changes with each
# commit hash. It is a good check to add if the json structure or the
# render function is modified.
print("Updating issue", github_issue["github"].number)
if not DRY_RUN:
gh.edit(**r)


def close_issue(github_issue):
print("Closing issue", github_issue["github"].number)
gh = github_issue["github"]
if not DRY_RUN:
gh.edit(state="closed")


# Collect source issues
source_issues = list(issues_from_glob("**/*.rs"))
print("Found", len(source_issues), "issues in source.")

# Match source issues with open issues
print("Issue closeness matrix")
closeness = np.zeros((len(open_issues), len(source_issues)))
for i in range(len(open_issues)):
open_issue = open_issues[i]
for j in range(len(source_issues)):
source_issue = source_issues[j]
score = 0
if open_issue["head"] == source_issue["head"]:
# Three point if the head matches
score += 3
if (
open_issue["filename"] == source_issue["filename"]
and open_issue["line"] == source_issue["line"]
):
# Three points if location matches
score += 3
if open_issue["commit-hash"] == source_issue["commit-hash"]:
# Two points if commit-hash matches
score += 2
closeness[i, j] = score
sys.stdout.write(str(score) + " ")
sys.stdout.flush()
sys.stdout.write("\n")

# Greedy match up pairs by highest scores first
min_score = 2.5
if len(source_issues) > 0 and len(open_issues) > 0:
while True:
# Pick a highest score
(i, j) = np.unravel_index(np.argmax(closeness), closeness.shape)

# If the score is less than the minimum required we are done
if closeness[i, j] <= min_score:
break

# Remove pair from matrix
closeness[i, :] = 0.0
closeness[:, j] = 0.0

# Pair up issues
open_issues[i]["source-issue-index"] = j
source_issues[j]["open-issue-index"] = i

# Process issues
for issue in open_issues:
if "source-issue-index" in issue:
# TODO: Update github issue
update_issue(issue, source_issues[issue["source-issue-index"]])
else:
# Close issue
close_issue(issue)
for issue in source_issues:
if "open-issue-index" in issue:
# already handles above
pass
else:
create_issue(issue)
Loading