Skip to content

feat: use stateless as default feature for rln in wasm module#322

Merged
vinhtc27 merged 3 commits into
masterfrom
default-stateless-in-wasm
Jul 4, 2025
Merged

feat: use stateless as default feature for rln in wasm module#322
vinhtc27 merged 3 commits into
masterfrom
default-stateless-in-wasm

Conversation

@vinhtc27

@vinhtc27 vinhtc27 commented Jun 30, 2025

Copy link
Copy Markdown
Contributor

Changes:

  • Excluded the rln-wasm module from the workspace members to avoid conflicts caused by the stateless feature being enabled by default in the rln module.
  • Enabled the stateless feature by default in the rln module, removing the need for a feature flag or the required-features tag in Cargo.toml.

@github-actions

Copy link
Copy Markdown

Benchmark for 562ed9e

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.2±0.14µs 17.2±0.21µs 0.00%
FullMerkleTree::get 0.8±0.01ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 982.1±8.11µs 983.9±10.26µs +0.18%
FullMerkleTree::get_subtree_root 11.6±0.08ns 11.7±0.07ns +0.86%
FullMerkleTree::override_range 2.0±0.06ms 2.0±0.07ms 0.00%
FullMerkleTree::set 8.6±0.11µs 8.6±0.07µs 0.00%
OptimalMerkleTree::delete 20.2±0.21µs 19.8±0.32µs -1.98%
OptimalMerkleTree::get 50.6±0.43ns 51.4±0.38ns +1.58%
OptimalMerkleTree::get_empty_leaves_indices 981.7±5.98µs 982.5±10.11µs +0.08%
OptimalMerkleTree::get_subtree_root 25.1±0.28ns 25.1±0.22ns 0.00%
OptimalMerkleTree::override_range 5.1±0.17ms 5.0±0.36ms -1.96%
OptimalMerkleTree::set 10.3±0.17µs 10.0±0.19µs -2.91%
poseidon Fr/Array hash/10 138.7±0.29µs 70.4 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1494.0±3.11µs 65.4 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.1±0.02ms 64.8 KElem/sec N/A N/A
poseidon Fr/Single hash 13.8±0.03µs 69.2 MElem/sec N/A N/A

@github-actions

Copy link
Copy Markdown

Benchmark for 562ed9e

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.0±0.19ms 12.6±0.11ms -3.08%
OptimalMerkleTree::::full_height_gen 788.1±5.23µs 789.4±3.91µs +0.16%
Pmtree::get 378.7±7.33ns 387.4±4.06ns +2.30%
Pmtree::get_empty_leaves_indices 8.7±0.12ns 8.7±0.11ns 0.00%
Pmtree::get_subtree_root 516.6±5.00ns 523.2±5.57ns +1.28%
Pmtree::override_range 224.6±3.04µs 224.6±2.36µs 0.00%
Pmtree::set 50.4±0.48µs 50.4±0.46µs 0.00%
Pmtree:delete 50.4±0.34µs 50.7±0.89µs +0.60%
Set/FullMerkleTree::::set/1 511.9±2.64µs 512.0±4.79µs +0.02%
Set/FullMerkleTree::::set/10 5.1±0.01ms 5.1±0.02ms 0.00%
Set/FullMerkleTree::::set/100 51.5±0.13ms 51.4±0.14ms -0.19%
Set/FullMerkleTree::::set_range/1 511.8±2.30µs 511.4±2.90µs -0.08%
Set/FullMerkleTree::::set_range/10 697.0±5.41µs 696.9±5.80µs -0.01%
Set/FullMerkleTree::::set_range/100 1852.5±26.10µs 1858.6±65.31µs +0.33%
Set/OptimalMerkleTree::::set/1 513.4±5.70µs 513.6±3.63µs +0.04%
Set/OptimalMerkleTree::::set/10 5.1±0.02ms 5.1±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 51.6±0.14ms 51.6±0.10ms 0.00%
Set/OptimalMerkleTree::::set_range/1 513.7±5.28µs 512.9±4.67µs -0.16%
Set/OptimalMerkleTree::::set_range/10 707.6±4.15µs 701.8±7.50µs -0.82%
Set/OptimalMerkleTree::::set_range/100 1821.7±40.82µs 1822.1±45.91µs +0.02%
zkey::zkey_from_raw 653.5±0.40ms 654.1±2.03ms +0.09%

@github-actions

Copy link
Copy Markdown

Benchmark for 562ed9e

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.0±0.15ms 13.3±0.13ms +2.31%
OptimalMerkleTree::::full_height_gen 776.5±3.42µs 776.7±5.16µs +0.03%
Pmtree::get 367.0±6.33ns 371.4±4.62ns +1.20%
Pmtree::get_empty_leaves_indices 8.8±0.30ns 8.8±0.35ns 0.00%
Pmtree::get_subtree_root 522.5±7.69ns 532.0±8.04ns +1.82%
Pmtree::override_range 227.0±2.98µs 225.1±3.81µs -0.84%
Pmtree::set 49.8±0.55µs 50.2±1.32µs +0.80%
Pmtree:delete 49.9±0.46µs 49.8±0.58µs -0.20%
Set/FullMerkleTree::::set/1 512.3±3.01µs 512.5±4.36µs +0.04%
Set/FullMerkleTree::::set/10 5.1±0.01ms 5.1±0.01ms 0.00%
Set/FullMerkleTree::::set/100 51.6±0.63ms 51.8±1.93ms +0.39%
Set/FullMerkleTree::::set_range/1 512.9±5.57µs 512.1±3.04µs -0.16%
Set/FullMerkleTree::::set_range/10 697.7±2.32µs 701.8±15.06µs +0.59%
Set/FullMerkleTree::::set_range/100 1847.4±37.54µs 1848.6±22.75µs +0.06%
Set/OptimalMerkleTree::::set/1 515.7±8.70µs 516.8±15.37µs +0.21%
Set/OptimalMerkleTree::::set/10 5.2±0.01ms 5.2±0.04ms 0.00%
Set/OptimalMerkleTree::::set/100 51.8±0.15ms 51.9±1.43ms +0.19%
Set/OptimalMerkleTree::::set_range/1 514.8±3.18µs 514.7±4.64µs -0.02%
Set/OptimalMerkleTree::::set_range/10 708.5±12.34µs 709.2±5.87µs +0.10%
Set/OptimalMerkleTree::::set_range/100 1815.8±33.17µs 1829.4±95.69µs +0.75%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.00ms 5.8±0.01ms 0.00%
zkey::zkey_from_raw 654.9±1.07ms 655.4±0.85ms +0.08%

@vinhtc27
vinhtc27 requested a review from seemenkina June 30, 2025 07:30
@github-actions

Copy link
Copy Markdown

Benchmark for 7acc222

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.2±0.21µs 17.2±0.14µs 0.00%
FullMerkleTree::get 0.8±0.02ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 982.9±8.42µs 981.8±7.03µs -0.11%
FullMerkleTree::get_subtree_root 11.6±0.07ns 11.6±0.11ns 0.00%
FullMerkleTree::override_range 2.1±0.06ms 2.0±0.06ms -4.76%
FullMerkleTree::set 8.6±0.11µs 8.6±0.09µs 0.00%
OptimalMerkleTree::delete 19.8±0.24µs 20.0±0.65µs +1.01%
OptimalMerkleTree::get 51.5±1.57ns 51.2±0.95ns -0.58%
OptimalMerkleTree::get_empty_leaves_indices 983.8±13.62µs 983.0±9.96µs -0.08%
OptimalMerkleTree::get_subtree_root 25.1±0.32ns 24.9±0.22ns -0.80%
OptimalMerkleTree::override_range 5.2±0.51ms 5.3±0.61ms +1.92%
OptimalMerkleTree::set 10.1±0.16µs 10.2±0.19µs +0.99%
poseidon Fr/Array hash/10 139.5±5.61µs 70.0 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1485.6±3.60µs 65.7 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.0±0.02ms 65.3 KElem/sec N/A N/A
poseidon Fr/Single hash 13.7±0.08µs 69.8 MElem/sec N/A N/A

@github-actions

Copy link
Copy Markdown

Benchmark for 7acc222

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.6±0.46ms 12.8±0.11ms +1.59%
OptimalMerkleTree::::full_height_gen 791.5±9.55µs 790.2±12.04µs -0.16%
Pmtree::get 380.7±7.46ns 385.8±4.09ns +1.34%
Pmtree::get_empty_leaves_indices 8.7±0.07ns 8.8±0.54ns +1.15%
Pmtree::get_subtree_root 509.4±4.25ns 530.9±10.46ns +4.22%
Pmtree::override_range 234.7±3.92µs 223.8±3.88µs -4.64%
Pmtree::set 50.3±0.21µs 50.4±0.33µs +0.20%
Pmtree:delete 50.4±0.46µs 50.4±0.45µs 0.00%
Set/FullMerkleTree::::set/1 511.1±3.31µs 512.6±4.32µs +0.29%
Set/FullMerkleTree::::set/10 5.1±0.12ms 5.1±0.02ms 0.00%
Set/FullMerkleTree::::set/100 51.4±0.22ms 51.4±0.16ms 0.00%
Set/FullMerkleTree::::set_range/1 511.2±5.34µs 513.4±9.53µs +0.43%
Set/FullMerkleTree::::set_range/10 695.2±9.36µs 698.0±8.08µs +0.40%
Set/FullMerkleTree::::set_range/100 1847.1±14.72µs 1849.4±28.93µs +0.12%
Set/OptimalMerkleTree::::set/1 514.9±4.43µs 513.3±7.24µs -0.31%
Set/OptimalMerkleTree::::set/10 5.2±0.02ms 5.2±0.22ms 0.00%
Set/OptimalMerkleTree::::set/100 51.8±0.09ms 51.6±0.15ms -0.39%
Set/OptimalMerkleTree::::set_range/1 515.1±3.50µs 510.0±4.44µs -0.99%
Set/OptimalMerkleTree::::set_range/10 709.2±8.33µs 704.3±4.80µs -0.69%
Set/OptimalMerkleTree::::set_range/100 1818.8±34.10µs 1820.8±37.93µs +0.11%
zkey::zkey_from_raw 658.0±9.81ms 653.7±0.53ms -0.65%

@github-actions

Copy link
Copy Markdown

Benchmark for 7acc222

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.1±0.08ms 12.8±0.08ms +5.79%
OptimalMerkleTree::::full_height_gen 793.5±7.03µs 792.9±6.89µs -0.08%
Pmtree::get 377.8±7.46ns 370.1±4.78ns -2.04%
Pmtree::get_empty_leaves_indices 8.7±0.08ns 8.7±0.20ns 0.00%
Pmtree::get_subtree_root 523.0±11.96ns 517.3±7.05ns -1.09%
Pmtree::override_range 231.0±3.81µs 228.1±4.81µs -1.26%
Pmtree::set 49.9±1.07µs 49.9±0.75µs 0.00%
Pmtree:delete 49.9±0.43µs 49.9±0.49µs 0.00%
Set/FullMerkleTree::::set/1 513.2±4.87µs 520.7±18.50µs +1.46%
Set/FullMerkleTree::::set/10 5.1±0.02ms 5.1±0.01ms 0.00%
Set/FullMerkleTree::::set/100 51.5±0.30ms 51.6±0.11ms +0.19%
Set/FullMerkleTree::::set_range/1 512.5±3.20µs 513.5±8.66µs +0.20%
Set/FullMerkleTree::::set_range/10 701.4±14.15µs 701.6±18.81µs +0.03%
Set/FullMerkleTree::::set_range/100 1851.5±36.94µs 1848.8±24.65µs -0.15%
Set/OptimalMerkleTree::::set/1 517.1±4.20µs 515.2±3.27µs -0.37%
Set/OptimalMerkleTree::::set/10 5.2±0.06ms 5.2±0.03ms 0.00%
Set/OptimalMerkleTree::::set/100 52.0±0.13ms 51.7±0.05ms -0.58%
Set/OptimalMerkleTree::::set_range/1 517.5±5.58µs 514.1±2.17µs -0.66%
Set/OptimalMerkleTree::::set_range/10 710.7±11.73µs 704.4±10.18µs -0.89%
Set/OptimalMerkleTree::::set_range/100 1815.2±25.09µs 1814.3±36.46µs -0.05%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.01ms 5.8±0.02ms 0.00%
zkey::zkey_from_raw 655.3±0.49ms 655.4±0.66ms +0.02%

@github-actions

Copy link
Copy Markdown

Benchmark for 4ac3b54

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.2±0.28µs 17.2±0.19µs 0.00%
FullMerkleTree::get 0.8±0.03ns 0.8±0.02ns 0.00%
FullMerkleTree::get_empty_leaves_indices 981.9±5.12µs 985.8±27.74µs +0.40%
FullMerkleTree::get_subtree_root 12.3±0.10ns 11.6±0.07ns -5.69%
FullMerkleTree::override_range 2.0±0.07ms 2.0±0.05ms 0.00%
FullMerkleTree::set 8.6±0.05µs 8.6±0.17µs 0.00%
OptimalMerkleTree::delete 20.4±1.12µs 19.9±0.21µs -2.45%
OptimalMerkleTree::get 51.6±0.78ns 50.1±0.38ns -2.91%
OptimalMerkleTree::get_empty_leaves_indices 982.6±7.62µs 984.7±25.07µs +0.21%
OptimalMerkleTree::get_subtree_root 25.6±1.63ns 25.2±0.34ns -1.56%
OptimalMerkleTree::override_range 5.2±0.28ms 4.2±0.36ms -19.23%
OptimalMerkleTree::set 10.4±0.14µs 10.2±0.51µs -1.92%
poseidon Fr/Array hash/10 137.6±0.18µs 71.0 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1484.5±3.93µs 65.8 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.0±0.02ms 65.3 KElem/sec N/A N/A
poseidon Fr/Single hash 13.6±0.02µs 70.0 MElem/sec N/A N/A

@github-actions

Copy link
Copy Markdown

Benchmark for 4ac3b54

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.3±0.21ms 13.2±0.98ms +7.32%
OptimalMerkleTree::::full_height_gen 776.6±4.49µs 774.4±8.20µs -0.28%
Pmtree::get 385.1±5.58ns 381.8±5.06ns -0.86%
Pmtree::get_empty_leaves_indices 8.7±0.08ns 8.7±0.10ns 0.00%
Pmtree::get_subtree_root 520.8±7.36ns 515.3±8.45ns -1.06%
Pmtree::override_range 229.6±9.55µs 239.9±17.78µs +4.49%
Pmtree::set 50.3±0.31µs 50.4±0.61µs +0.20%
Pmtree:delete 50.4±0.29µs 50.4±0.42µs 0.00%
Set/FullMerkleTree::::set/1 511.0±6.49µs 512.9±6.07µs +0.37%
Set/FullMerkleTree::::set/10 5.1±0.01ms 5.1±0.01ms 0.00%
Set/FullMerkleTree::::set/100 51.4±0.44ms 51.5±1.17ms +0.19%
Set/FullMerkleTree::::set_range/1 509.1±4.10µs 514.8±6.49µs +1.12%
Set/FullMerkleTree::::set_range/10 694.3±2.09µs 695.2±5.64µs +0.13%
Set/FullMerkleTree::::set_range/100 1886.2±76.13µs 1960.9±119.62µs +3.96%
Set/OptimalMerkleTree::::set/1 513.5±3.85µs 514.0±10.79µs +0.10%
Set/OptimalMerkleTree::::set/10 5.1±0.02ms 5.1±0.02ms 0.00%
Set/OptimalMerkleTree::::set/100 51.7±0.19ms 51.6±0.15ms -0.19%
Set/OptimalMerkleTree::::set_range/1 512.7±3.09µs 515.1±14.63µs +0.47%
Set/OptimalMerkleTree::::set_range/10 770.7±66.79µs 795.7±104.54µs +3.24%
Set/OptimalMerkleTree::::set_range/100 1892.0±94.80µs 1948.4±215.57µs +2.98%
zkey::zkey_from_raw 653.8±0.54ms 653.7±0.53ms -0.02%

@github-actions

Copy link
Copy Markdown

Benchmark for 4ac3b54

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 11.6±0.10ms 11.4±0.08ms -1.72%
OptimalMerkleTree::::full_height_gen 777.8±14.95µs 789.7±10.15µs +1.53%
Pmtree::get 369.7±3.18ns 373.2±6.83ns +0.95%
Pmtree::get_empty_leaves_indices 8.7±0.13ns 8.7±0.12ns 0.00%
Pmtree::get_subtree_root 530.0±6.69ns 533.6±6.69ns +0.68%
Pmtree::override_range 231.6±2.81µs 225.7±3.75µs -2.55%
Pmtree::set 49.7±0.42µs 49.9±0.60µs +0.40%
Pmtree:delete 49.7±0.45µs 49.9±0.53µs +0.40%
Set/FullMerkleTree::::set/1 509.5±6.89µs 511.9±4.44µs +0.47%
Set/FullMerkleTree::::set/10 5.1±0.02ms 5.1±0.02ms 0.00%
Set/FullMerkleTree::::set/100 51.4±0.32ms 51.5±0.13ms +0.19%
Set/FullMerkleTree::::set_range/1 510.9±3.74µs 512.1±4.31µs +0.23%
Set/FullMerkleTree::::set_range/10 695.1±13.35µs 699.8±6.76µs +0.68%
Set/FullMerkleTree::::set_range/100 1845.1±28.62µs 1842.0±29.13µs -0.17%
Set/OptimalMerkleTree::::set/1 524.6±5.96µs 513.9±4.40µs -2.04%
Set/OptimalMerkleTree::::set/10 5.2±0.01ms 5.2±0.14ms 0.00%
Set/OptimalMerkleTree::::set/100 52.6±0.36ms 51.6±0.48ms -1.90%
Set/OptimalMerkleTree::::set_range/1 512.8±4.99µs 514.7±2.47µs +0.37%
Set/OptimalMerkleTree::::set_range/10 705.4±9.65µs 705.1±7.63µs -0.04%
Set/OptimalMerkleTree::::set_range/100 1813.2±39.08µs 1818.5±46.92µs +0.29%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.03ms 5.8±0.09ms 0.00%
zkey::zkey_from_raw 654.0±2.07ms 654.7±7.58ms +0.11%

@vinhtc27
vinhtc27 requested a review from sydhds July 1, 2025 07:44

@seemenkina seemenkina left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thank you!

@vinhtc27
vinhtc27 merged commit 042f8a9 into master Jul 4, 2025
18 checks passed
@vinhtc27
vinhtc27 deleted the default-stateless-in-wasm branch July 4, 2025 06:50

@sydhds sydhds left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good to me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants