Skip to content

Run STF tests using only one VM#798

Merged
mateuszsikora merged 3 commits into
mainfrom
td-tests-with-one-vm
Nov 21, 2025
Merged

Run STF tests using only one VM#798
mateuszsikora merged 3 commits into
mainfrom
td-tests-with-one-vm

Conversation

@tomusdrw

Copy link
Copy Markdown
Member
  • Run test vectors with single PVM.
  • Update docs & fix tests.

Currently all test vectors are always run twice - once in bulit-in vm and second time in ananas. This is a bit annoying when debugging, hence this PR adds a CLI option to easily select only one of the VMs.

@coderabbitai

coderabbitai Bot commented Nov 21, 2025

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added --pvm command-line option to select specific PVM backend(s) for testing, supporting builtin and ananas backends or both by default
  • Documentation

    • Added "Selecting PVM Backend" section with usage instructions and command examples for debugging or optimizing test performance

✏️ Tip: You can customize this high-level summary in your review settings.

Walkthrough

Adds multi-PVM support to the test-runner: introduces a SelectedPvm enum (Ananas, Builtin), a parseArgs(argv) CLI parser (using minimist) and selectedPvmToBackend mapping, propagates selected pvms through main → prepareTest → createTestDefinitions to filter variants, updates runStateTransition and various test-runner entry points to use the enum, replaces string variant literals with enum values, adds tests validating parseArgs, updates package.json to add minimist, and expands README with a "Selecting PVM Backend" section. No behavioral changes outside PVM selection propagation are introduced.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Verify parseArgs validation and error messages (bin/test-runner/common.ts, common.test.ts).
  • Confirm all call sites updated to new main/prepareTest/createTestDefinitions signatures (multiple bin/test-runner/* entry files).
  • Check selectedPvmToBackend mapping and runStateTransition signature change (state-transition/state-transition.ts).
  • Review type transitions from string literals to SelectedPvm across runners (w3f/runners.ts and other entry files).

Possibly related PRs

Suggested reviewers

  • mateuszsikora
  • DrEverr
  • skoszuta

Poem

🐰 I nibble flags from argv bright,
I choose Ananas or Builtin light,
Enums hop in where strings once ran,
Tests parse true beneath my span,
A little rabbit tweaks the test-land night ✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Run STF tests using only one VM' directly aligns with the main objective of adding a CLI option to select a single PVM instead of always running tests twice.
Description check ✅ Passed The description clearly relates to the changeset, explaining the motivation (avoiding double test runs for easier debugging) and the solution (adding a CLI option for PVM selection).
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch td-tests-with-one-vm

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 928dc07 and b546474.

📒 Files selected for processing (1)
  • bin/test-runner/common.ts (7 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • bin/test-runner/common.ts
⏰ Context from checks skipped due to timeout of 120000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: run (22.x)
  • GitHub Check: run (22.x)
  • GitHub Check: run (22.x)
  • GitHub Check: state_transition (22.x)
  • GitHub Check: e2e (22.x)
  • GitHub Check: test (22.x)

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
bin/test-runner/common.ts (1)

384-422: Refactor to eliminate type casts in variant filtering logic.

The PVM filtering logic uses as SelectedPvm casts on lines 395 and 397, which violates the coding guideline stating "as conversions must not be used." Additionally, the comment on line 394 acknowledges the detection method is "a bit hacky."

As per coding guidelines.

Option 1 (Recommended): Add a type guard function

function isPvmVariant<V>(variant: V): variant is V & SelectedPvm {
  return ALL_PVMS.includes(variant as SelectedPvm);
}

// Then use in createTestDefinitions:
let possibleVariants: V[] = variants.length === 0 ? [noneVariant] : variants;
if (possibleVariants.length > 0 && isPvmVariant(possibleVariants[0])) {
  possibleVariants = possibleVariants.filter(isPvmVariant)
    .filter((x) => globalOptions.pvms.includes(x));
}

Option 2: Add a flag to the Runner type

Add a usesPvmVariants: boolean field to the Runner type, set it explicitly when creating runners with PVM variants, and use that flag instead of the runtime type check. This would eliminate the need for runtime type detection entirely.

🧹 Nitpick comments (1)
bin/test-runner/common.test.ts (1)

1-41: Good baseline test coverage.

The tests cover the main scenarios: specific PVM selection, default behavior, and error handling. The use of deepEqual for structured comparison is appropriate.

Consider adding tests for comma-separated PVM values to ensure the implementation handles multiple selections correctly:

it("should parse comma-separated pvms", () => {
  const args = ["--pvm", "ananas,builtin", "file1.json"];
  
  const result = parseArgs(args);
  
  deepEqual(result, {
    initialFiles: ["file1.json"],
    pvms: [SelectedPvm.Ananas, SelectedPvm.Builtin],
  });
});
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8408216 and 928dc07.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (14)
  • README.md (1 hunks)
  • bin/test-runner/common.test.ts (1 hunks)
  • bin/test-runner/common.ts (7 hunks)
  • bin/test-runner/jam-conformance-070.ts (1 hunks)
  • bin/test-runner/jam-conformance-071.ts (1 hunks)
  • bin/test-runner/jamduna-067.ts (1 hunks)
  • bin/test-runner/javajam.ts (1 hunks)
  • bin/test-runner/package.json (1 hunks)
  • bin/test-runner/state-transition/state-transition.ts (3 hunks)
  • bin/test-runner/w3f-davxy-067.ts (1 hunks)
  • bin/test-runner/w3f-davxy-070.ts (1 hunks)
  • bin/test-runner/w3f-davxy-071.ts (1 hunks)
  • bin/test-runner/w3f.ts (1 hunks)
  • bin/test-runner/w3f/runners.ts (2 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*.ts

⚙️ CodeRabbit configuration file

**/*.ts: rules from ./CODESTYLE.md should be adhered to.

**/*.ts: Any function whose documentation mention it must not be used in production code,
can be safely used in *.test.ts files. Other usage should be carefuly reviewed
and the comment must explain why it's safe to use there.

**/*.ts: as conversions must not be used. Suggest using tryAs conversion methods.

**/*.ts: Classes with static Codec field must have private constructor and static create method.

**/*.ts: Casting a bigint (or U64) using Number(x) must have an explanation comment why
it is safe.

**/*.ts: When making changes to code with comments containing links (in classes, constants, methods, etc.)
to graypaper.fluffylabs.dev, ensure those links point to the current version for this update.

Files:

  • bin/test-runner/common.test.ts
  • bin/test-runner/jam-conformance-070.ts
  • bin/test-runner/jamduna-067.ts
  • bin/test-runner/state-transition/state-transition.ts
  • bin/test-runner/w3f/runners.ts
  • bin/test-runner/w3f.ts
  • bin/test-runner/w3f-davxy-067.ts
  • bin/test-runner/w3f-davxy-070.ts
  • bin/test-runner/jam-conformance-071.ts
  • bin/test-runner/common.ts
  • bin/test-runner/w3f-davxy-071.ts
  • bin/test-runner/javajam.ts
🧠 Learnings (2)
📚 Learning: 2025-05-26T21:31:58.688Z
Learnt from: tomusdrw
Repo: FluffyLabs/typeberry PR: 399
File: .github/workflows/vectors-jamduna.yml:78-78
Timestamp: 2025-05-26T21:31:58.688Z
Learning: In the typeberry project, the npm start script in the test-runner workspace is designed to accept test suite names as arguments (e.g., "jamduna", "w3f"). The command `npm start -w typeberry/test-runner jamduna` is the correct way to run the jamduna test suite, not `npm run jamduna`. This is an architectural design choice where the start script acts as a unified entry point for different test suites.

Applied to files:

  • bin/test-runner/common.test.ts
  • bin/test-runner/jam-conformance-070.ts
  • bin/test-runner/jamduna-067.ts
  • README.md
  • bin/test-runner/jam-conformance-071.ts
  • bin/test-runner/common.ts
  • bin/test-runner/javajam.ts
  • bin/test-runner/package.json
📚 Learning: 2025-06-18T20:35:13.536Z
Learnt from: tomusdrw
Repo: FluffyLabs/typeberry PR: 442
File: packages/core/pvm-debugger-adapter/index.ts:22-40
Timestamp: 2025-06-18T20:35:13.536Z
Learning: The `typeberry/utils` package has browser compatibility issues due to Node.js-specific code like `measure` function using `process.hrtime()` and `testUtils` importing `node:assert`, causing white screens in browser environments.

Applied to files:

  • bin/test-runner/package.json
🧬 Code graph analysis (11)
bin/test-runner/common.test.ts (2)
bin/test-runner/common.ts (1)
  • parseArgs (137-166)
packages/core/utils/test.ts (1)
  • deepEqual (43-195)
bin/test-runner/jam-conformance-070.ts (2)
bin/test-runner/common.ts (2)
  • main (168-290)
  • parseArgs (137-166)
bin/test-runner/w3f/runners.ts (1)
  • runners (54-78)
bin/test-runner/jamduna-067.ts (1)
bin/test-runner/common.ts (3)
  • runner (86-92)
  • main (168-290)
  • parseArgs (137-166)
bin/test-runner/state-transition/state-transition.ts (2)
packages/jam/state-vectors/index.ts (1)
  • StateTransition (53-69)
bin/test-runner/common.ts (2)
  • RunOptions (94-98)
  • selectedPvmToBackend (24-33)
bin/test-runner/w3f.ts (1)
bin/test-runner/common.ts (2)
  • main (168-290)
  • parseArgs (137-166)
bin/test-runner/w3f-davxy-067.ts (1)
bin/test-runner/common.ts (2)
  • main (168-290)
  • parseArgs (137-166)
bin/test-runner/w3f-davxy-070.ts (2)
bin/test-runner/common.ts (2)
  • main (168-290)
  • parseArgs (137-166)
bin/test-runner/w3f/runners.ts (1)
  • runners (54-78)
bin/test-runner/jam-conformance-071.ts (1)
bin/test-runner/common.ts (2)
  • main (168-290)
  • parseArgs (137-166)
bin/test-runner/common.ts (3)
packages/core/utils/debug.ts (1)
  • assertNever (36-38)
bin/jam/args.ts (1)
  • parseArgs (114-190)
bin/test-runner/w3f/runners.ts (1)
  • runners (54-78)
bin/test-runner/w3f-davxy-071.ts (1)
bin/test-runner/common.ts (2)
  • main (168-290)
  • parseArgs (137-166)
bin/test-runner/javajam.ts (1)
bin/test-runner/common.ts (3)
  • runner (86-92)
  • main (168-290)
  • parseArgs (137-166)
⏰ Context from checks skipped due to timeout of 120000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: run (22.x)
  • GitHub Check: e2e (22.x)
  • GitHub Check: run (22.x)
  • GitHub Check: run (22.x)
  • GitHub Check: run (22.x)
  • GitHub Check: test (22.x)
🔇 Additional comments (15)
README.md (1)

171-189: LGTM! Clear documentation for the new feature.

The documentation clearly explains the new --pvm option and provides helpful examples. The note about its use cases (debugging and performance) adds valuable context.

bin/test-runner/jam-conformance-071.ts (1)

1-6: LGTM! Consistent refactoring to use parseArgs.

The changes properly integrate CLI argument parsing through the new parseArgs helper, spreading its results into the main options object.

bin/test-runner/w3f-davxy-067.ts (1)

1-5: LGTM! Consistent refactoring pattern.

Follows the same approach as other test runner files, properly integrating the new parseArgs functionality.

bin/test-runner/w3f-davxy-070.ts (1)

1-5: LGTM! Clean and consistent.

The refactoring follows the established pattern across all test runner entry points.

bin/test-runner/w3f/runners.ts (1)

16-49: LGTM! Improved type safety with enum values.

The change from string literals to the SelectedPvm enum provides better type safety and consistency across the codebase.

bin/test-runner/jam-conformance-070.ts (1)

1-5: LGTM! Final entry point updated consistently.

All test runner entry points now follow the same pattern, providing a uniform interface for PVM selection.

bin/test-runner/package.json (1)

34-34: minimist "^1.2.8" is current and secure.

The latest version is 1.2.8, and all known security vulnerabilities have been patched. The CRITICAL Prototype Pollution vulnerability affecting versions >= 1.0.0, < 1.2.6 was fixed in 1.2.6, so version 1.2.8 is not affected. Other reported advisories target older version ranges that are also not applicable to 1.2.8.

bin/test-runner/javajam.ts (2)

2-2: LGTM! Type-safe enum usage.

The transition from string literals to SelectedPvm enum values improves type safety and aligns with the PR's goal of adding PVM selection support.

Also applies to: 9-9


12-13: LGTM! Proper integration of CLI argument parsing.

The refactored main invocation correctly spreads parsed arguments into the options object, enabling PVM selection via command-line arguments.

bin/test-runner/w3f.ts (1)

1-1: LGTM! Consistent CLI argument parsing integration.

The changes properly integrate parseArgs to enable command-line argument support, maintaining consistency with other test runner entry points.

Also applies to: 4-5

bin/test-runner/w3f-davxy-071.ts (1)

1-1: LGTM! Consistent refactoring.

The integration of parseArgs follows the established pattern and correctly merges CLI-derived options into the main invocation.

Also applies to: 4-5

bin/test-runner/jamduna-067.ts (1)

2-2: LGTM! Consistent enum usage and CLI parsing integration.

The changes align with the refactoring pattern: type-safe SelectedPvm enum replaces string literals, and parseArgs enables command-line PVM selection.

Also applies to: 9-9, 12-13

bin/test-runner/state-transition/state-transition.ts (1)

16-16: LGTM! Clean refactoring with improved type safety.

The transition from string union types to SelectedPvm enum and the use of selectedPvmToBackend mapping function improves type safety and centralizes PVM backend selection logic.

Also applies to: 68-69

bin/test-runner/common.ts (2)

14-14: LGTM! Well-structured PVM infrastructure.

The SelectedPvm enum, ALL_PVMS constant, and selectedPvmToBackend mapping function provide a clean, type-safe foundation for PVM selection. The exhaustive switch with assertNever ensures compile-time completeness checking.

Also applies to: 19-33


168-236: LGTM! Well-integrated signature updates.

The updated main function signature properly accepts initialFiles and pvms as required parameters, enabling the PVM selection feature. The parameters are correctly propagated through the test preparation pipeline to prepareTest.

Comment thread bin/test-runner/common.ts
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown
View all
File Benchmark Ops
bytes/hex-from.ts[0] parse hex using Number with NaN checking 114505.65 ±2.33% 85.43% slower
bytes/hex-from.ts[1] parse hex from char codes 786002.97 ±0.99% fastest ✅
bytes/hex-from.ts[2] parse hex from string nibbles 466818.22 ±1.2% 40.61% slower
math/count-bits-u64.ts[0] standard method 1439805.75 ±0.88% 85.22% slower
math/count-bits-u64.ts[1] magic 9740812.67 ±1.24% fastest ✅
math/mul_overflow.ts[0] multiply and bring back to u32 229930503.09 ±5.42% 10.8% slower
math/mul_overflow.ts[1] multiply and take modulus 257770711.8 ±4.54% fastest ✅
hash/index.ts[0] hash with numeric representation 189.16 ±0.32% 26.72% slower
hash/index.ts[1] hash with string representation 114.03 ±1.09% 55.82% slower
hash/index.ts[2] hash with symbol representation 170.85 ±1.4% 33.81% slower
hash/index.ts[3] hash with uint8 representation 148.65 ±3.09% 42.41% slower
hash/index.ts[4] hash with packed representation 258.12 ±0.39% fastest ✅
hash/index.ts[5] hash with bigint representation 162.36 ±3.9% 37.1% slower
hash/index.ts[6] hash with uint32 representation 182.66 ±1.58% 29.23% slower
codec/bigint.compare.ts[0] compare custom 253010132.49 ±6.34% fastest ✅
codec/bigint.compare.ts[1] compare bigint 248907029.14 ±7.2% 1.62% slower
codec/bigint.decode.ts[0] decode custom 163762399.24 ±3.12% fastest ✅
codec/bigint.decode.ts[1] decode bigint 86133416.34 ±3.67% 47.4% slower
collections/map-set.ts[0] 2 gets + conditional set 111094.25 ±1.07% fastest ✅
collections/map-set.ts[1] 1 get 1 set 56006.4 ±0.95% 49.59% slower
logger/index.ts[0] console.log with string concat 6789095.62 ±41.12% fastest ✅
logger/index.ts[1] console.log with args 1153151.69 ±61.89% 83.01% slower
bytes/hex-to.ts[0] number toString + padding 79478.44 ±108.66% fastest ✅
bytes/hex-to.ts[1] manual 11074.56 ±1.06% 86.07% slower
math/add_one_overflow.ts[0] add and take modulus 237596172.66 ±5.91% 7.82% slower
math/add_one_overflow.ts[1] condition before calculation 257741677.79 ±5.44% fastest ✅
math/count-bits-u32.ts[0] standard method 96364297.67 ±1.61% 60.87% slower
math/count-bits-u32.ts[1] magic 246251308.47 ±6.12% fastest ✅
math/switch.ts[0] switch 261791332.37 ±4.67% 1.23% slower
math/switch.ts[1] if 265047545.65 ±4.83% fastest ✅
codec/decoding.ts[0] manual decode 12211510.69 ±1.48% 92.61% slower
codec/decoding.ts[1] int32array decode 165290026.63 ±2.66% fastest ✅
codec/decoding.ts[2] dataview decode 164293555.42 ±2.87% 0.6% slower
codec/encoding.ts[0] manual encode 2033544.09 ±1.21% 25.94% slower
codec/encoding.ts[1] int32array encode 2701960.41 ±1.29% 1.59% slower
codec/encoding.ts[2] dataview encode 2745677.61 ±0.82% fastest ✅
codec/view_vs_collection.ts[0] Get first element from Decoded 22490.8 ±1.44% 54.9% slower
codec/view_vs_collection.ts[1] Get first element from View 49866.72 ±1.5% fastest ✅
codec/view_vs_collection.ts[2] Get 50th element from Decoded 23473.19 ±1.26% 52.93% slower
codec/view_vs_collection.ts[3] Get 50th element from View 25480.48 ±1.46% 48.9% slower
codec/view_vs_collection.ts[4] Get last element from Decoded 21623.96 ±1.35% 56.64% slower
codec/view_vs_collection.ts[5] Get last element from View 17080.7 ±1.32% 65.75% slower
codec/view_vs_object.ts[0] Get the first field from Decoded 390239.86 ±0.87% fastest ✅
codec/view_vs_object.ts[1] Get the first field from View 79892.86 ±1.03% 79.53% slower
codec/view_vs_object.ts[2] Get the first field as view from View 77143.63 ±1.03% 80.23% slower
codec/view_vs_object.ts[3] Get two fields from Decoded 387134.66 ±1.05% 0.8% slower
codec/view_vs_object.ts[4] Get two fields from View 64496.66 ±0.8% 83.47% slower
codec/view_vs_object.ts[5] Get two fields from materialized from View 131748.83 ±1.2% 66.24% slower
codec/view_vs_object.ts[6] Get two fields as views from View 60826.38 ±0.75% 84.41% slower
codec/view_vs_object.ts[7] Get only third field from Decoded 385282.83 ±1.11% 1.27% slower
codec/view_vs_object.ts[8] Get only third field from View 79886.64 ±0.83% 79.53% slower
codec/view_vs_object.ts[9] Get only third field as view from View 78259.49 ±1.02% 79.95% slower
collections/hash-dict-vs-blob-dict_set.ts[0] StringHashDictionary 1374.49 ±76.86% 21.09% slower
collections/hash-dict-vs-blob-dict_set.ts[1] BlobDictionary(1) 1526.3 ±93.13% 12.37% slower
collections/hash-dict-vs-blob-dict_set.ts[2] BlobDictionary(2) 1021.5 ±63.99% 41.35% slower
collections/hash-dict-vs-blob-dict_set.ts[3] BlobDictionary(3) 1323.62 ±74.58% 24.01% slower
collections/hash-dict-vs-blob-dict_set.ts[4] BlobDictionary(4) 1741.77 ±74.44% fastest ✅
collections/hash-dict-vs-blob-dict_set.ts[5] BlobDictionary(5) 1536.88 ±98.28% 11.76% slower
collections/hash-dict-vs-blob-dict_get.ts[0] StringHashDictionary 3715.22 ±0.16% 0.44% slower
collections/hash-dict-vs-blob-dict_get.ts[1] BlobDictionary(1) 3731.54 ±0.15% fastest ✅
collections/hash-dict-vs-blob-dict_get.ts[2] BlobDictionary(2) 3693.03 ±0.28% 1.03% slower
collections/hash-dict-vs-blob-dict_get.ts[3] BlobDictionary(3) 3721.62 ±0.18% 0.27% slower
collections/hash-dict-vs-blob-dict_get.ts[4] BlobDictionary(4) 3718.99 ±0.18% 0.34% slower
collections/hash-dict-vs-blob-dict_get.ts[5] BlobDictionary(5) 3712.4 ±0.12% 0.51% slower
collections/hash-dict-vs-blob-dict_delete.ts[0] StringHashDictionary 1039.83 ±104.87% 0.81% slower
collections/hash-dict-vs-blob-dict_delete.ts[1] BlobDictionary(1) 45.74 ±53.11% 95.64% slower
collections/hash-dict-vs-blob-dict_delete.ts[2] BlobDictionary(2) 721.08 ±111.46% 31.22% slower
collections/hash-dict-vs-blob-dict_delete.ts[3] BlobDictionary(3) 1048.36 ±93.2% fastest ✅
collections/hash-dict-vs-blob-dict_delete.ts[4] BlobDictionary(4) 52.43 ±66.29% 95% slower
collections/hash-dict-vs-blob-dict_delete.ts[5] BlobDictionary(5) 601.29 ±74.12% 42.64% slower
collections/map_vs_sorted.ts[0] Map 288128.34 ±0.28% fastest ✅
collections/map_vs_sorted.ts[1] Map-array 103552.95 ±0.12% 64.06% slower
collections/map_vs_sorted.ts[2] Array 66305.74 ±1.98% 76.99% slower
collections/map_vs_sorted.ts[3] SortedArray 199808.89 ±0.48% 30.65% slower
bytes/bytes-to-number.ts[0] Conversion with bitops 8913.51 ±3.95% 3.25% slower
bytes/bytes-to-number.ts[1] Conversion without bitops 9212.86 ±4.78% fastest ✅
bytes/compare.ts[0] Comparing Uint32 bytes 20609.26 ±0.21% 2.97% slower
bytes/compare.ts[1] Comparing raw bytes 21239.56 ±0.21% fastest ✅
hash/blake2b.ts[0] our hasher 2.23 ±0.16% fastest ✅
hash/blake2b.ts[1] blake2b js 0.05 ±0.25% 97.76% slower
crypto/ed25519.ts[0] native crypto 5.76 ±17.33% 81.2% slower
crypto/ed25519.ts[1] wasm lib 10.89 ±0.02% 64.46% slower
crypto/ed25519.ts[2] wasm lib batch 30.64 ±0.48% fastest ✅

Benchmarks summary: 83/83 OK ✅

@mateuszsikora
mateuszsikora merged commit 96c9168 into main Nov 21, 2025
16 checks passed
@mateuszsikora
mateuszsikora deleted the td-tests-with-one-vm branch November 21, 2025 20:50
@coderabbitai coderabbitai Bot mentioned this pull request Mar 4, 2026
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.

2 participants