Skip to content

feat: rust service (web api) - #607

Open
tziemek wants to merge 12 commits into
mainfrom
feat/rust-service
Open

feat: rust service (web api)#607
tziemek wants to merge 12 commits into
mainfrom
feat/rust-service

Conversation

@tziemek

@tziemek tziemek commented Apr 29, 2026

Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI 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.

Pull request overview

Adds a new csaf-service Axum-based web API for CSAF validation, and refactors csaf-rs preset handling to use typed preset enums (instead of free-form strings) to support both the CLI and the new service.

Changes:

  • Introduces csaf-service crate with REST endpoints (presets, preset tests, validate JSON, validate file) plus Swagger UI/OpenAPI.
  • Refactors csaf-rs validation preset APIs to use version-specific Preset enums and adds detect_version_from_json helper.
  • Updates workspace membership and adapts consumers (WASM bindings + csaf-validator CLI preset selection).

Reviewed changes

Copilot reviewed 19 out of 20 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
csaf-validator/src/main.rs Updates CLI preset/test argument expansion logic to use typed presets.
csaf-service/src/models.rs Adds shared API error response model/helper.
csaf-service/src/main.rs Sets up Axum router, OpenAPI/Swagger UI, CORS, tracing, and port binding.
csaf-service/src/handlers/validate.rs Implements validation endpoints (JSON body + file upload) and request parsing.
csaf-service/src/handlers/mod.rs Exposes handler modules for the service.
csaf-service/src/handlers/health.rs Adds health endpoint.
csaf-service/src/handlers/get_presets.rs Adds endpoint to list presets per CSAF version.
csaf-service/src/handlers/get_preset_tests.rs Adds endpoint intended to list tests for a preset (currently incomplete/incorrect).
csaf-service/README.md Documents how to run the service and configure the port.
csaf-service/Dockerfile Builds and packages the service as a musl-linked binary for Alpine.
csaf-service/Cargo.toml New crate manifest and dependencies (axum/tokio/utoipa/etc.).
csaf-rs/src/wasm.rs Updates WASM bindings to parse typed presets before validating.
csaf-rs/src/validation.rs Changes Validatable/validate_by_preset APIs to use associated PresetType.
csaf-rs/src/csaf2_1/validation.rs Introduces CSAF 2.1 Preset enum + mapping to test sets.
csaf-rs/src/csaf2_0/validation.rs Introduces CSAF 2.0 Preset enum + mapping to test sets.
csaf-rs/src/csaf/raw.rs Plumbs preset type + get_presets/tests_in_preset through RawDocument.
csaf-rs/src/csaf/loader.rs Adds detect_version_from_json and reuses it from detect_version.
csaf-rs/src/csaf/enums/csaf_version.rs Adds TryFrom<String> for CsafVersion parsing.
Cargo.toml Adds csaf-service to workspace members.
Cargo.lock Locks new service dependencies (axum/tower-http/utoipa/etc.).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread csaf-service/src/handlers/get_preset_tests.rs Outdated
Comment thread csaf-service/src/main.rs Outdated
Comment thread csaf-service/README.md Outdated
Comment thread csaf-rs/src/validation.rs Outdated
Comment thread csaf-rs/src/validation.rs Outdated
Comment thread csaf-validator/src/main.rs Outdated
Comment thread csaf-service/src/handlers/get_preset_tests.rs Outdated
Comment thread csaf-service/src/handlers/validate.rs Outdated
Comment thread csaf-service/Dockerfile Outdated
Comment thread csaf-validator/src/main.rs
Comment thread csaf-service/src/handlers/get_preset_tests.rs Outdated
@peinjoh

peinjoh commented Apr 29, 2026

Copy link
Copy Markdown
Contributor

General remark: I propose to add basic API testing.

Done.

Comment thread csaf-service/src/handlers/validate.rs Outdated

Copilot AI 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.

Pull request overview

Adds a new Rust csaf-service web API crate (Axum + OpenAPI) on top of csaf-rs, and refactors preset handling in csaf-rs/csaf-validator to use typed preset enums and preset discovery.

Changes:

  • Introduces csaf-service HTTP API with endpoints for health, presets, preset test listings, and CSAF validation (JSON + file upload), including integration tests and a Dockerfile.
  • Refactors csaf-rs validation preset APIs to use a typed Preset enum per CSAF version and adds get_presets.
  • Updates csaf-validator CLI preset/test selection logic (including case-insensitive preset matching).

Reviewed changes

Copilot reviewed 26 out of 27 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
csaf-validator/src/main.rs Updates CLI test/preset resolution logic (now case-insensitive presets).
csaf-service/src/main.rs Adds service binary (Swagger UI, tracing, CORS, router wiring).
csaf-service/src/lib.rs Exposes app() router for main + integration tests.
csaf-service/src/models.rs Adds a shared ErrorResponse helper.
csaf-service/src/handlers/mod.rs Wires handler modules.
csaf-service/src/handlers/health.rs Adds /api/v1/health endpoint.
csaf-service/src/handlers/get_presets.rs Adds presets listing endpoint.
csaf-service/src/handlers/get_preset_tests.rs Adds “tests in preset” endpoint.
csaf-service/src/handlers/validate.rs Adds validate + validate_file endpoints and OpenAPI schema types.
csaf-service/tests/utils/mod.rs Adds integration test HTTP helpers using app().oneshot(...).
csaf-service/tests/health_api.rs Adds health endpoint integration test.
csaf-service/tests/presets_api.rs Adds presets endpoint integration tests.
csaf-service/tests/preset_tests_api.rs Adds preset test listing integration tests.
csaf-service/tests/validate_api.rs Adds JSON-body validation integration tests.
csaf-service/tests/validate_file_api.rs Adds file-upload validation integration tests.
csaf-service/README.md Documents running the new service.
csaf-service/Dockerfile Adds container build/run for the service (musl build, alpine runtime).
csaf-service/Cargo.toml Defines the new csaf-service crate and dependencies.
csaf-rs/src/validation.rs Changes preset APIs to use associated PresetType + get_presets.
csaf-rs/src/csaf2_0/validation.rs Introduces CSAF 2.0 Preset enum + parsing + preset test mapping.
csaf-rs/src/csaf2_1/validation.rs Introduces CSAF 2.1 Preset enum + parsing + preset test mapping.
csaf-rs/src/csaf/raw.rs Plumbs typed presets through raw document validatable impl.
csaf-rs/src/csaf/loader.rs Extracts detect_version_from_json helper for in-memory detection.
csaf-rs/src/csaf/enums/csaf_version.rs Adds Display + TryFrom<String> for CSAF version.
csaf-rs/src/wasm.rs Updates WASM validation to parse typed presets before validating.
Cargo.toml Adds csaf-service to workspace members.
Cargo.lock Locks new dependencies for csaf-service and transitive deps.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread csaf-service/src/main.rs Outdated
Comment thread csaf-rs/src/validation.rs
Comment thread csaf-service/Dockerfile Outdated
Comment thread csaf-service/src/handlers/validate.rs Outdated
Comment thread csaf-validator/src/main.rs
Comment thread csaf-validator/src/main.rs
@tziemek
tziemek force-pushed the feat/rust-service branch 2 times, most recently from 9650ecd to 4dc47ae Compare April 30, 2026 15:09
@tziemek
tziemek force-pushed the feat/rust-service branch 4 times, most recently from f20b0fb to 2501255 Compare May 20, 2026 06:54
@tziemek
tziemek marked this pull request as ready for review May 20, 2026 06:54
@tziemek
tziemek requested a review from a team as a code owner May 20, 2026 06:54
Comment thread csaf-service/src/errors.rs Outdated
Comment thread Dockerfile Outdated
Comment thread csaf-service/src/handlers/validate.rs Outdated
Comment thread csaf-service/src/main.rs Outdated
Comment thread csaf-service/src/main.rs
Comment thread csaf-service/src/handlers/validate.rs Outdated
Comment thread csaf-service/src/handlers/validate.rs Outdated

@tschmidtb51 tschmidtb51 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.

Please make sure it can be used as a drop-in replacement for the csaf-validator-service. If you think, that this is not worth it or want to change the API, please provide a suggestion for our next meeting that takes oasis-tcs/csaf#1231 into account.

Comment thread csaf-service/src/main.rs Outdated
@tziemek
tziemek force-pushed the feat/rust-service branch 2 times, most recently from 7e0b8c2 to 0c77b24 Compare May 21, 2026 08:33
@tziemek
tziemek requested review from peinjoh and tschmidtb51 May 21, 2026 08:35

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

CSAF Validation Benchmark

Details
Benchmark suite Current: 0b25e35 Previous: 2c93e4a Ratio
csaf_2_0_tests/6.1.1 112504 ns/iter (± 1638) 131344 ns/iter (± 364) 0.86
csaf_2_0_tests/6.1.2 48150 ns/iter (± 855) 52957 ns/iter (± 148) 0.91
csaf_2_0_tests/6.1.3 13143 ns/iter (± 223) 13240 ns/iter (± 180) 0.99
csaf_2_0_tests/6.1.4 26455 ns/iter (± 392) 28135 ns/iter (± 227) 0.94
csaf_2_0_tests/6.1.5 14066 ns/iter (± 179) 13954 ns/iter (± 7) 1.01
csaf_2_0_tests/6.1.6 33870 ns/iter (± 452) 37953 ns/iter (± 49) 0.89
csaf_2_0_tests/6.1.7 30536 ns/iter (± 414) 33181 ns/iter (± 45) 0.92
csaf_2_0_tests/6.1.8 76791 ns/iter (± 1145) 87611 ns/iter (± 200) 0.88
csaf_2_0_tests/6.1.9 61127 ns/iter (± 1244) 68424 ns/iter (± 317) 0.89
csaf_2_0_tests/6.1.10 149565 ns/iter (± 2564) 156555 ns/iter (± 288) 0.96
csaf_2_0_tests/6.1.11 14550 ns/iter (± 286) 14271 ns/iter (± 36) 1.02
csaf_2_0_tests/6.1.12 30695 ns/iter (± 431) 29162 ns/iter (± 49) 1.05
csaf_2_0_tests/6.1.13 31487 ns/iter (± 540) 32993 ns/iter (± 81) 0.95
csaf_2_0_tests/6.1.14 57340 ns/iter (± 1031) 65965 ns/iter (± 110) 0.87
csaf_2_0_tests/6.1.15 12950 ns/iter (± 263) 12698 ns/iter (± 13) 1.02
csaf_2_0_tests/6.1.16 43379 ns/iter (± 1025) 49546 ns/iter (± 69) 0.88
csaf_2_0_tests/6.1.17 14536 ns/iter (± 266) 13876 ns/iter (± 20) 1.05
csaf_2_0_tests/6.1.18 16964 ns/iter (± 188) 16382 ns/iter (± 109) 1.04
csaf_2_0_tests/6.1.19 16160 ns/iter (± 147) 15860 ns/iter (± 740) 1.02
csaf_2_0_tests/6.1.20 14120 ns/iter (± 249) 13732 ns/iter (± 24) 1.03
csaf_2_0_tests/6.1.21 45711 ns/iter (± 507) 52570 ns/iter (± 259) 0.87
csaf_2_0_tests/6.1.22 55035 ns/iter (± 813) 59485 ns/iter (± 136) 0.93
csaf_2_0_tests/6.1.23 16006 ns/iter (± 244) 17292 ns/iter (± 205) 0.93
csaf_2_0_tests/6.1.24 16522 ns/iter (± 241) 16065 ns/iter (± 29) 1.03
csaf_2_0_tests/6.1.25 35114 ns/iter (± 703) 36418 ns/iter (± 50) 0.96
csaf_2_0_tests/6.1.26 20262 ns/iter (± 445) 20468 ns/iter (± 24) 0.99
csaf_2_0_tests/6.1.27.1 14839 ns/iter (± 336) 13624 ns/iter (± 27) 1.09
csaf_2_0_tests/6.1.27.2 14603 ns/iter (± 214) 13598 ns/iter (± 39) 1.07
csaf_2_0_tests/6.1.27.3 13984 ns/iter (± 274) 13131 ns/iter (± 17) 1.06
csaf_2_0_tests/6.1.27.4 13371 ns/iter (± 103) 13861 ns/iter (± 18) 0.96
csaf_2_0_tests/6.1.27.5 14425 ns/iter (± 256) 14460 ns/iter (± 179) 1.00
csaf_2_0_tests/6.1.27.6 13736 ns/iter (± 130) 13734 ns/iter (± 12) 1.00
csaf_2_0_tests/6.1.27.7 14033 ns/iter (± 88) 12695 ns/iter (± 74) 1.11
csaf_2_0_tests/6.1.27.8 13926 ns/iter (± 200) 12928 ns/iter (± 14) 1.08
csaf_2_0_tests/6.1.27.9 26581 ns/iter (± 449) 26207 ns/iter (± 76) 1.01
csaf_2_0_tests/6.1.27.10 15136 ns/iter (± 200) 14031 ns/iter (± 17) 1.08
csaf_2_0_tests/6.1.27.11 13455 ns/iter (± 138) 13181 ns/iter (± 13) 1.02
csaf_2_0_tests/6.1.28 24155 ns/iter (± 675) 23735 ns/iter (± 42) 1.02
csaf_2_0_tests/6.1.29 13507 ns/iter (± 107) 12876 ns/iter (± 15) 1.05
csaf_2_0_tests/6.1.30 37632 ns/iter (± 566) 43178 ns/iter (± 92) 0.87
csaf_2_0_tests/6.1.31 34226 ns/iter (± 958) 36678 ns/iter (± 233) 0.93
csaf_2_0_tests/6.1.32 12899 ns/iter (± 160) 13073 ns/iter (± 38) 0.99
csaf_2_0_tests/6.1.33 19084 ns/iter (± 343) 20026 ns/iter (± 36) 0.95
csaf_2_0_tests/6.2.1 133770 ns/iter (± 3581) 156118 ns/iter (± 460) 0.86
csaf_2_0_tests/6.2.2 18002 ns/iter (± 194) 18424 ns/iter (± 23) 0.98
csaf_2_0_tests/6.2.3 18225 ns/iter (± 179) 17442 ns/iter (± 30) 1.04
csaf_2_0_tests/6.2.4 16367 ns/iter (± 288) 16050 ns/iter (± 20) 1.02
csaf_2_0_tests/6.2.5 46802 ns/iter (± 1167) 54746 ns/iter (± 167) 0.85
csaf_2_0_tests/6.2.6 46899 ns/iter (± 791) 55349 ns/iter (± 161) 0.85
csaf_2_0_tests/6.2.7 13727 ns/iter (± 171) 13145 ns/iter (± 24) 1.04
csaf_2_0_tests/6.2.8 32688 ns/iter (± 699) 34751 ns/iter (± 105) 0.94
csaf_2_0_tests/6.2.9 32457 ns/iter (± 724) 34685 ns/iter (± 85) 0.94
csaf_2_0_tests/6.2.10 33374 ns/iter (± 436) 39709 ns/iter (± 164) 0.84
csaf_2_0_tests/6.2.11 117304 ns/iter (± 2120) 168676 ns/iter (± 857) 0.70
csaf_2_0_tests/6.2.12 40497 ns/iter (± 341) 44955 ns/iter (± 171) 0.90
csaf_2_0_tests/6.2.13 684608 ns/iter (± 5964) 846719 ns/iter (± 1789) 0.81
csaf_2_0_tests/6.2.14 42106 ns/iter (± 671) 41229 ns/iter (± 68) 1.02
csaf_2_0_tests/6.2.15 32073 ns/iter (± 499) 31928 ns/iter (± 48) 1.00
csaf_2_0_tests/6.2.16 44637 ns/iter (± 135) 52684 ns/iter (± 73) 0.85
csaf_2_0_tests/6.2.17 13930 ns/iter (± 154) 17537 ns/iter (± 59) 0.79
csaf_2_0_tests/6.2.18 24388 ns/iter (± 462) 28908 ns/iter (± 59) 0.84
csaf_2_0_tests/6.2.19 12833 ns/iter (± 153) 16478 ns/iter (± 31) 0.78
csaf_2_0_tests/6.2.20 1286861 ns/iter (± 26146) 1614522 ns/iter (± 6983) 0.80
csaf_2_0_tests/6.3.1 32533 ns/iter (± 356) 34925 ns/iter (± 23) 0.93
csaf_2_0_tests/6.3.2 20112 ns/iter (± 490) 20921 ns/iter (± 63) 0.96
csaf_2_0_tests/6.3.3 23369 ns/iter (± 388) 25454 ns/iter (± 55) 0.92
csaf_2_0_tests/6.3.4 30742 ns/iter (± 896) 34024 ns/iter (± 30) 0.90
csaf_2_0_tests/6.3.5 33315 ns/iter (± 555) 36112 ns/iter (± 45) 0.92
csaf_2_0_tests/6.3.6 12334 ns/iter (± 328) 12009 ns/iter (± 12) 1.03
csaf_2_0_tests/6.3.7 12323 ns/iter (± 145) 11988 ns/iter (± 109) 1.03
csaf_2_0_tests/6.3.8 12457 ns/iter (± 214) 12001 ns/iter (± 13) 1.04
csaf_2_0_tests/6.3.9 28243 ns/iter (± 310) 28860 ns/iter (± 983) 0.98
csaf_2_0_tests/6.3.10 24908 ns/iter (± 333) 29390 ns/iter (± 25) 0.85
csaf_2_0_tests/6.3.11 24972 ns/iter (± 387) 29785 ns/iter (± 43) 0.84
csaf_2_1_tests/6.1.1 590274 ns/iter (± 7840) 681456 ns/iter (± 1952) 0.87
csaf_2_1_tests/6.1.2 230749 ns/iter (± 2950) 263024 ns/iter (± 444) 0.88
csaf_2_1_tests/6.1.3 72983 ns/iter (± 772) 74148 ns/iter (± 167) 0.98
csaf_2_1_tests/6.1.4 113697 ns/iter (± 2357) 132236 ns/iter (± 723) 0.86
csaf_2_1_tests/6.1.5 53112 ns/iter (± 777) 51264 ns/iter (± 49) 1.04
csaf_2_1_tests/6.1.6 105725 ns/iter (± 1149) 121962 ns/iter (± 195) 0.87
csaf_2_1_tests/6.1.7 144627 ns/iter (± 1432) 172736 ns/iter (± 376) 0.84
csaf_2_1_tests/6.1.8 45091 ns/iter (± 826) 43023 ns/iter (± 59) 1.05
csaf_2_1_tests/6.1.9 439518 ns/iter (± 7273) 501989 ns/iter (± 1353) 0.88
csaf_2_1_tests/6.1.10 781891 ns/iter (± 11495) 810066 ns/iter (± 2527) 0.97
csaf_2_1_tests/6.1.11 65811 ns/iter (± 988) 67972 ns/iter (± 683) 0.97
csaf_2_1_tests/6.1.12 88214 ns/iter (± 1205) 84097 ns/iter (± 91) 1.05
csaf_2_1_tests/6.1.13 182894 ns/iter (± 2540) 206804 ns/iter (± 2258) 0.88
csaf_2_1_tests/6.1.14 170237 ns/iter (± 3013) 224368 ns/iter (± 866) 0.76
csaf_2_1_tests/6.1.15 46481 ns/iter (± 1142) 46368 ns/iter (± 58) 1.00
csaf_2_1_tests/6.1.16 128298 ns/iter (± 2490) 169990 ns/iter (± 213) 0.75
csaf_2_1_tests/6.1.17 53179 ns/iter (± 527) 50943 ns/iter (± 86) 1.04
csaf_2_1_tests/6.1.18 58674 ns/iter (± 874) 61420 ns/iter (± 124) 0.96
csaf_2_1_tests/6.1.19 56152 ns/iter (± 1245) 59569 ns/iter (± 1119) 0.94
csaf_2_1_tests/6.1.20 52814 ns/iter (± 620) 51341 ns/iter (± 210) 1.03
csaf_2_1_tests/6.1.21 139380 ns/iter (± 1930) 181050 ns/iter (± 496) 0.77
csaf_2_1_tests/6.1.22 163658 ns/iter (± 4446) 190261 ns/iter (± 934) 0.86
csaf_2_1_tests/6.1.23 56118 ns/iter (± 494) 56701 ns/iter (± 753) 0.99
csaf_2_1_tests/6.1.24 55378 ns/iter (± 883) 53878 ns/iter (± 73) 1.03
csaf_2_1_tests/6.1.25 162812 ns/iter (± 3365) 182499 ns/iter (± 300) 0.89
csaf_2_1_tests/6.1.26 75558 ns/iter (± 1729) 77404 ns/iter (± 240) 0.98
csaf_2_1_tests/6.1.27.1 54471 ns/iter (± 876) 50384 ns/iter (± 78) 1.08
csaf_2_1_tests/6.1.27.2 54060 ns/iter (± 416) 50918 ns/iter (± 264) 1.06
csaf_2_1_tests/6.1.27.3 51096 ns/iter (± 639) 51492 ns/iter (± 51) 0.99
csaf_2_1_tests/6.1.27.4 51217 ns/iter (± 535) 51688 ns/iter (± 163) 0.99
csaf_2_1_tests/6.1.27.5 54716 ns/iter (± 677) 52361 ns/iter (± 448) 1.04
csaf_2_1_tests/6.1.27.6 53502 ns/iter (± 752) 51444 ns/iter (± 73) 1.04
csaf_2_1_tests/6.1.27.7 52596 ns/iter (± 891) 48516 ns/iter (± 140) 1.08
csaf_2_1_tests/6.1.27.8 53071 ns/iter (± 864) 48428 ns/iter (± 48) 1.10
csaf_2_1_tests/6.1.27.9 72035 ns/iter (± 879) 69292 ns/iter (± 225) 1.04
csaf_2_1_tests/6.1.27.10 51000 ns/iter (± 1307) 49376 ns/iter (± 32) 1.03
csaf_2_1_tests/6.1.27.11 51815 ns/iter (± 1028) 51050 ns/iter (± 45) 1.01
csaf_2_1_tests/6.1.27.12 51320 ns/iter (± 427) 51231 ns/iter (± 98) 1.00
csaf_2_1_tests/6.1.27.13 44903 ns/iter (± 828) 41591 ns/iter (± 60) 1.08
csaf_2_1_tests/6.1.27.14 52623 ns/iter (± 576) 51419 ns/iter (± 67) 1.02
csaf_2_1_tests/6.1.27.15 50363 ns/iter (± 785) 51037 ns/iter (± 70) 0.99
csaf_2_1_tests/6.1.27.16 53257 ns/iter (± 1105) 51383 ns/iter (± 171) 1.04
csaf_2_1_tests/6.1.27.17 55100 ns/iter (± 921) 55857 ns/iter (± 273) 0.99
csaf_2_1_tests/6.1.27.18 61302 ns/iter (± 1364) 58729 ns/iter (± 199) 1.04
csaf_2_1_tests/6.1.27.19 56898 ns/iter (± 788) 55673 ns/iter (± 69) 1.02
csaf_2_1_tests/6.1.28 71486 ns/iter (± 1855) 72103 ns/iter (± 91) 0.99
csaf_2_1_tests/6.1.29 49840 ns/iter (± 844) 49267 ns/iter (± 2973) 1.01
csaf_2_1_tests/6.1.30 126067 ns/iter (± 1124) 165373 ns/iter (± 1605) 0.76
csaf_2_1_tests/6.1.31 160453 ns/iter (± 1473) 177894 ns/iter (± 389) 0.90
csaf_2_1_tests/6.1.32 51182 ns/iter (± 1162) 52807 ns/iter (± 96) 0.97
csaf_2_1_tests/6.1.33 47436 ns/iter (± 1194) 45334 ns/iter (± 107) 1.05
csaf_2_1_tests/6.1.34 59142 ns/iter (± 1192) 60522 ns/iter (± 97) 0.98
csaf_2_1_tests/6.1.35 77804 ns/iter (± 1396) 80283 ns/iter (± 174) 0.97
csaf_2_1_tests/6.1.36 47277 ns/iter (± 592) 46678 ns/iter (± 277) 1.01
csaf_2_1_tests/6.1.37 48263 ns/iter (± 747) 46943 ns/iter (± 51) 1.03
csaf_2_1_tests/6.1.38 49301 ns/iter (± 1149) 49217 ns/iter (± 38) 1.00
csaf_2_1_tests/6.1.39 51346 ns/iter (± 781) 53968 ns/iter (± 344) 0.95
csaf_2_1_tests/6.1.40 47949 ns/iter (± 1407) 49187 ns/iter (± 37) 0.97
csaf_2_1_tests/6.1.41 51938 ns/iter (± 521) 49691 ns/iter (± 71) 1.05
csaf_2_1_tests/6.1.42 192575 ns/iter (± 7922) 217527 ns/iter (± 618) 0.89
csaf_2_1_tests/6.1.43 162097 ns/iter (± 3668) 182106 ns/iter (± 519) 0.89
csaf_2_1_tests/6.1.44 170274 ns/iter (± 1958) 183947 ns/iter (± 637) 0.93
csaf_2_1_tests/6.1.45 135634 ns/iter (± 3410) 175119 ns/iter (± 277) 0.77
csaf_2_1_tests/6.1.46 251618 ns/iter (± 1942) 280878 ns/iter (± 1004) 0.90
csaf_2_1_tests/6.1.47 383967 ns/iter (± 7207) 441489 ns/iter (± 1696) 0.87
csaf_2_1_tests/6.1.48 52264 ns/iter (± 1022) 49011 ns/iter (± 58) 1.07
csaf_2_1_tests/6.1.49 54313 ns/iter (± 1647) 49881 ns/iter (± 183) 1.09
csaf_2_1_tests/6.1.50 53745 ns/iter (± 447) 50127 ns/iter (± 62) 1.07
csaf_2_1_tests/6.1.51 141159 ns/iter (± 1242) 179323 ns/iter (± 974) 0.79
csaf_2_1_tests/6.1.52 139453 ns/iter (± 2198) 181811 ns/iter (± 325) 0.77
csaf_2_1_tests/6.1.53 61529 ns/iter (± 459) 58264 ns/iter (± 181) 1.06
csaf_2_1_tests/6.1.54 67163 ns/iter (± 759) 67708 ns/iter (± 78) 0.99
csaf_2_1_tests/6.1.55 69424 ns/iter (± 1188) 67095 ns/iter (± 74) 1.03
csaf_2_1_tests/6.1.56 92052 ns/iter (± 1866) 100687 ns/iter (± 250) 0.91
csaf_2_1_tests/6.1.57 127383 ns/iter (± 1876) 133112 ns/iter (± 140) 0.96
csaf_2_1_tests/6.1.58 94656 ns/iter (± 1593) 94969 ns/iter (± 202) 1.00
csaf_2_1_tests/6.1.59 54903 ns/iter (± 540) 52434 ns/iter (± 87) 1.05
csaf_2_1_tests/6.1.60.1 48879 ns/iter (± 751) 42433 ns/iter (± 109) 1.15
csaf_2_1_tests/6.1.60.2 48280 ns/iter (± 688) 42460 ns/iter (± 38) 1.14
csaf_2_1_tests/6.1.60.3 49353 ns/iter (± 773) 42454 ns/iter (± 56) 1.16
csaf_2_1_tests/6.1.61 168853 ns/iter (± 2225) 186905 ns/iter (± 486) 0.90
csaf_2_1_tests/6.2.1 631022 ns/iter (± 16997) 727417 ns/iter (± 1385) 0.87
csaf_2_1_tests/6.2.2 72701 ns/iter (± 878) 73859 ns/iter (± 293) 0.98
csaf_2_1_tests/6.2.3 69068 ns/iter (± 1171) 69768 ns/iter (± 184) 0.99
csaf_2_1_tests/6.2.4 58619 ns/iter (± 958) 59316 ns/iter (± 176) 0.99
csaf_2_1_tests/6.2.5 154543 ns/iter (± 2621) 203031 ns/iter (± 484) 0.76
csaf_2_1_tests/6.2.6 153323 ns/iter (± 2312) 206973 ns/iter (± 474) 0.74
csaf_2_1_tests/6.2.7 52651 ns/iter (± 1041) 49798 ns/iter (± 125) 1.06
csaf_2_1_tests/6.2.8 161302 ns/iter (± 2765) 178085 ns/iter (± 348) 0.91
csaf_2_1_tests/6.2.9 162608 ns/iter (± 1330) 177503 ns/iter (± 360) 0.92
csaf_2_1_tests/6.2.11 453275 ns/iter (± 8220) 629807 ns/iter (± 5071) 0.72
csaf_2_1_tests/6.2.12 150521 ns/iter (± 2164) 163893 ns/iter (± 308) 0.92
csaf_2_1_tests/6.2.13 3489705 ns/iter (± 26160) 3969013 ns/iter (± 37189) 0.88
csaf_2_1_tests/6.2.14 118872 ns/iter (± 2366) 113981 ns/iter (± 162) 1.04
csaf_2_1_tests/6.2.15 101212 ns/iter (± 1592) 94588 ns/iter (± 120) 1.07
csaf_2_1_tests/6.2.16 237535 ns/iter (± 3054) 265196 ns/iter (± 2388) 0.90
csaf_2_1_tests/6.2.17 67024 ns/iter (± 996) 59286 ns/iter (± 95) 1.13
csaf_2_1_tests/6.2.18 139550 ns/iter (± 1452) 151505 ns/iter (± 855) 0.92
csaf_2_1_tests/6.2.19 59724 ns/iter (± 1063) 54277 ns/iter (± 79) 1.10
csaf_2_1_tests/6.2.20 7191216 ns/iter (± 111202) 9734120 ns/iter (± 62164) 0.74
csaf_2_1_tests/6.2.21 300182 ns/iter (± 2399) 367463 ns/iter (± 1531) 0.82
csaf_2_1_tests/6.2.22 138769 ns/iter (± 1528) 159930 ns/iter (± 328) 0.87
csaf_2_1_tests/6.2.23 80922 ns/iter (± 791) 74222 ns/iter (± 118) 1.09
csaf_2_1_tests/6.2.24 200930 ns/iter (± 1602) 231896 ns/iter (± 257) 0.87
csaf_2_1_tests/6.2.25 75630 ns/iter (± 1228) 75311 ns/iter (± 151) 1.00
csaf_2_1_tests/6.2.26 74564 ns/iter (± 1236) 75407 ns/iter (± 57) 0.99
csaf_2_1_tests/6.2.27 61310 ns/iter (± 535) 56238 ns/iter (± 122) 1.09
csaf_2_1_tests/6.2.28 64822 ns/iter (± 1154) 60728 ns/iter (± 269) 1.07
csaf_2_1_tests/6.2.29 64270 ns/iter (± 930) 60707 ns/iter (± 329) 1.06
csaf_2_1_tests/6.2.30 66206 ns/iter (± 1678) 61774 ns/iter (± 234) 1.07
csaf_2_1_tests/6.2.31 198872 ns/iter (± 1793) 215817 ns/iter (± 478) 0.92
csaf_2_1_tests/6.2.32 290001 ns/iter (± 7947) 320944 ns/iter (± 54629) 0.90
csaf_2_1_tests/6.2.33 191377 ns/iter (± 2046) 242762 ns/iter (± 2931) 0.79
csaf_2_1_tests/6.2.34 429239 ns/iter (± 5581) 489182 ns/iter (± 4211) 0.88
csaf_2_1_tests/6.2.35 376824 ns/iter (± 3118) 447948 ns/iter (± 6010) 0.84
csaf_2_1_tests/6.2.36 377750 ns/iter (± 1961) 450167 ns/iter (± 752) 0.84
csaf_2_1_tests/6.2.37 388833 ns/iter (± 3653) 472024 ns/iter (± 1560) 0.82
csaf_2_1_tests/6.2.38 89055 ns/iter (± 1317) 91887 ns/iter (± 120) 0.97
csaf_2_1_tests/6.2.39.1 49327 ns/iter (± 1160) 42471 ns/iter (± 42) 1.16
csaf_2_1_tests/6.2.39.2 59436 ns/iter (± 867) 54085 ns/iter (± 108) 1.10
csaf_2_1_tests/6.2.39.3 61588 ns/iter (± 979) 57194 ns/iter (± 77) 1.08
csaf_2_1_tests/6.2.39.4 50261 ns/iter (± 912) 42719 ns/iter (± 51) 1.18
csaf_2_1_tests/6.2.39.5 50433 ns/iter (± 838) 43033 ns/iter (± 63) 1.17
csaf_2_1_tests/6.2.40 64121 ns/iter (± 293) 60818 ns/iter (± 115) 1.05
csaf_2_1_tests/6.2.41 149363 ns/iter (± 2313) 194614 ns/iter (± 358) 0.77
csaf_2_1_tests/6.2.42 65252 ns/iter (± 1230) 61153 ns/iter (± 75) 1.07
csaf_2_1_tests/6.2.43 64555 ns/iter (± 769) 61287 ns/iter (± 284) 1.05
csaf_2_1_tests/6.2.44 67897 ns/iter (± 741) 64441 ns/iter (± 52) 1.05
csaf_2_1_tests/6.2.45 68988 ns/iter (± 1662) 61294 ns/iter (± 941) 1.13
csaf_2_1_tests/6.2.46 66386 ns/iter (± 1074) 61208 ns/iter (± 303) 1.08
csaf_2_1_tests/6.2.47 224203 ns/iter (± 2206) 305139 ns/iter (± 828) 0.73
csaf_2_1_tests/6.2.48 148690 ns/iter (± 2380) 161661 ns/iter (± 344) 0.92
csaf_2_1_tests/6.2.49 65192 ns/iter (± 1079) 61959 ns/iter (± 56) 1.05
csaf_2_1_tests/6.2.50.1 50791 ns/iter (± 877) 42970 ns/iter (± 50) 1.18
csaf_2_1_tests/6.2.50.2 50012 ns/iter (± 601) 42980 ns/iter (± 39) 1.16
csaf_2_1_tests/6.2.50.3 49973 ns/iter (± 2304) 43028 ns/iter (± 40) 1.16
csaf_2_1_tests/6.2.51 67857 ns/iter (± 895) 62308 ns/iter (± 48) 1.09
csaf_2_1_tests/6.2.52 184734 ns/iter (± 1949) 197375 ns/iter (± 643) 0.94
csaf_2_1_tests/6.2.53 72134 ns/iter (± 1857) 69144 ns/iter (± 128) 1.04
csaf_2_1_tests/6.2.54.1 51163 ns/iter (± 710) 43041 ns/iter (± 224) 1.19
csaf_2_1_tests/6.2.54.2 49882 ns/iter (± 964) 43049 ns/iter (± 49) 1.16
csaf_2_1_tests/6.2.54.3 52216 ns/iter (± 536) 43047 ns/iter (± 72) 1.21
csaf_2_1_tests/6.2.54.4 51453 ns/iter (± 688) 43029 ns/iter (± 73) 1.20
csaf_2_1_tests/6.3.1 48859 ns/iter (± 385) 43795 ns/iter (± 60) 1.12
csaf_2_1_tests/6.3.2 74929 ns/iter (± 2609) 74697 ns/iter (± 414) 1.00
csaf_2_1_tests/6.3.3 49325 ns/iter (± 555) 44274 ns/iter (± 25) 1.11
csaf_2_1_tests/6.3.4 48622 ns/iter (± 899) 44404 ns/iter (± 52) 1.09
csaf_2_1_tests/6.3.5 166638 ns/iter (± 2971) 179694 ns/iter (± 224) 0.93
csaf_2_1_tests/6.3.6 48778 ns/iter (± 716) 45408 ns/iter (± 51) 1.07
csaf_2_1_tests/6.3.7 48830 ns/iter (± 620) 45705 ns/iter (± 159) 1.07
csaf_2_1_tests/6.3.8 49172 ns/iter (± 885) 45851 ns/iter (± 191) 1.07
csaf_2_1_tests/6.3.9 165221 ns/iter (± 1658) 172684 ns/iter (± 159) 0.96
csaf_2_1_tests/6.3.10 69898 ns/iter (± 853) 64062 ns/iter (± 132) 1.09
csaf_2_1_tests/6.3.11 71942 ns/iter (± 773) 63790 ns/iter (± 93) 1.13
csaf_2_1_tests/6.3.12 201328 ns/iter (± 1623) 230098 ns/iter (± 2380) 0.87
csaf_2_1_tests/6.3.13 69972 ns/iter (± 1509) 63775 ns/iter (± 208) 1.10
csaf_2_1_tests/6.3.14 124461 ns/iter (± 2302) 123734 ns/iter (± 354) 1.01
csaf_2_1_tests/6.3.15 118777 ns/iter (± 1973) 124066 ns/iter (± 160) 0.96
csaf_2_1_tests/6.3.16 69404 ns/iter (± 1401) 64540 ns/iter (± 81) 1.08
csaf_2_1_tests/6.3.17 67851 ns/iter (± 678) 64720 ns/iter (± 113) 1.05
csaf_2_1_tests/6.3.18 82248 ns/iter (± 1128) 80079 ns/iter (± 346) 1.03
csaf_2_1_tests/6.3.19.1 49857 ns/iter (± 769) 43006 ns/iter (± 29) 1.16
csaf_2_1_tests/6.3.19.2 50459 ns/iter (± 2166) 43015 ns/iter (± 119) 1.17
csaf_2_1_tests/6.3.19.3 48118 ns/iter (± 607) 43007 ns/iter (± 56) 1.12
csaf_2_1_tests/6.3.19.4 49012 ns/iter (± 765) 43022 ns/iter (± 69) 1.14
csaf_2_1_tests/6.3.19.5 48666 ns/iter (± 1040) 43035 ns/iter (± 55) 1.13
csaf_2_1_tests/6.3.20 80403 ns/iter (± 1804) 77001 ns/iter (± 128) 1.04
csaf_2_1_tests/6.3.21.1 49846 ns/iter (± 847) 43061 ns/iter (± 37) 1.16
csaf_2_1_tests/6.3.21.2 49612 ns/iter (± 857) 43031 ns/iter (± 125) 1.15
csaf_2_1_tests/6.3.21.3 49530 ns/iter (± 973) 43047 ns/iter (± 40) 1.15
csaf_2_1_tests/6.3.21.4 50220 ns/iter (± 449) 43045 ns/iter (± 53) 1.17
csaf_2_1_tests/6.3.21.5 48696 ns/iter (± 398) 43027 ns/iter (± 36) 1.13
csaf_2_1_tests/6.3.21.6 49217 ns/iter (± 865) 43052 ns/iter (± 66) 1.14
csaf_2_1_tests/6.3.21.7 49270 ns/iter (± 868) 43062 ns/iter (± 64) 1.14
csaf_2_1_tests/6.3.21.8 48373 ns/iter (± 628) 43039 ns/iter (± 140) 1.12
csaf_2_1_tests/6.3.21.9 48287 ns/iter (± 597) 43047 ns/iter (± 82) 1.12
csaf_2_1_tests/6.3.22 67963 ns/iter (± 597) 64832 ns/iter (± 57) 1.05
full_validation/csaf_2_0_full_preset 6568881 ns/iter (± 39425) 8018911 ns/iter (± 74125) 0.82
full_validation/csaf_2_1_full_preset 46598237 ns/iter (± 882661) 57875089 ns/iter (± 177156) 0.81
parse_only/csaf_2_0 980393 ns/iter (± 14837) 1150550 ns/iter (± 1927) 0.85
parse_only/csaf_2_1 5024156 ns/iter (± 66133) 5768406 ns/iter (± 29267) 0.87
typed_parse/csaf_2_0 1685091 ns/iter (± 28185) 1986284 ns/iter (± 5943) 0.85
typed_parse/csaf_2_1 8074266 ns/iter (± 138650) 9432153 ns/iter (± 84832) 0.86

This comment was automatically generated by workflow using github-action-benchmark.

@tziemek
tziemek force-pushed the feat/rust-service branch from 0c77b24 to d919786 Compare May 21, 2026 09:08
Comment thread csaf-service/src/handlers/validate.rs Outdated
Comment thread csaf-service/src/main.rs
Comment thread csaf-service/src/handlers/get_tests.rs Outdated
Comment thread csaf-service/src/handlers/get_tests.rs Outdated
Comment thread Dockerfile
Comment thread README.md
@tziemek
tziemek requested a review from peinjoh May 22, 2026 07:17

@peinjoh peinjoh 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.

LGTM 🪨

@tziemek
tziemek force-pushed the feat/rust-service branch from f8ed691 to c71d31c Compare June 11, 2026 09:48
github-actions[bot]

This comment was marked as outdated.

github-actions[bot]

This comment was marked as outdated.

@tziemek
tziemek force-pushed the feat/rust-service branch from 82204c8 to 9e7d677 Compare June 29, 2026 14:14
github-actions[bot]

This comment was marked as outdated.

@tziemek
tziemek force-pushed the feat/rust-service branch 3 times, most recently from d2d1af7 to e592cf8 Compare July 23, 2026 07:16

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'CSAF Validation Benchmark'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.50.

Benchmark suite Current: e592cf8 Previous: 51af09a Ratio
csaf_2_0_tests/6.1.3 18456 ns/iter (± 24) 12271 ns/iter (± 152) 1.50
csaf_2_0_tests/6.1.27.6 18885 ns/iter (± 34) 12575 ns/iter (± 78) 1.50
csaf_2_0_tests/6.1.27.11 18780 ns/iter (± 21) 12470 ns/iter (± 146) 1.51
csaf_2_0_tests/6.1.29 18373 ns/iter (± 430) 12188 ns/iter (± 168) 1.51
csaf_2_0_tests/6.1.32 18358 ns/iter (± 22) 12236 ns/iter (± 59) 1.50
csaf_2_1_tests/6.1.18 80312 ns/iter (± 280) 52542 ns/iter (± 171) 1.53
csaf_2_1_tests/6.1.27.10 70363 ns/iter (± 135) 45683 ns/iter (± 302) 1.54
csaf_2_1_tests/6.1.27.11 71807 ns/iter (± 72) 46973 ns/iter (± 538) 1.53
csaf_2_1_tests/6.1.27.12 72651 ns/iter (± 75) 45568 ns/iter (± 337) 1.59
csaf_2_1_tests/6.1.27.14 72914 ns/iter (± 149) 47159 ns/iter (± 249) 1.55
csaf_2_1_tests/6.1.27.15 72638 ns/iter (± 99) 47774 ns/iter (± 205) 1.52
csaf_2_1_tests/6.1.27.16 73009 ns/iter (± 177) 47447 ns/iter (± 362) 1.54
csaf_2_1_tests/6.1.27.17 76333 ns/iter (± 104) 50502 ns/iter (± 351) 1.51
csaf_2_1_tests/6.1.38 69567 ns/iter (± 103) 44926 ns/iter (± 888) 1.55
csaf_2_1_tests/6.1.39 69911 ns/iter (± 992) 45907 ns/iter (± 445) 1.52
csaf_2_1_tests/6.1.40 69789 ns/iter (± 184) 45298 ns/iter (± 329) 1.54
csaf_2_1_tests/6.1.41 70677 ns/iter (± 96) 45166 ns/iter (± 432) 1.56

This comment was automatically generated by workflow using github-action-benchmark.

@tziemek
tziemek force-pushed the feat/rust-service branch from ddd7185 to 99a4370 Compare July 24, 2026 12:18

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'CSAF Validation Benchmark'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.50.

Benchmark suite Current: 99a4370 Previous: 23f794b Ratio
csaf_2_0_tests/6.1.3 18083 ns/iter (± 105) 11482 ns/iter (± 15) 1.57
csaf_2_0_tests/6.1.5 18907 ns/iter (± 54) 12261 ns/iter (± 10) 1.54
csaf_2_0_tests/6.1.11 19339 ns/iter (± 18) 12764 ns/iter (± 98) 1.52
csaf_2_0_tests/6.1.15 17285 ns/iter (± 67) 10664 ns/iter (± 40) 1.62
csaf_2_0_tests/6.1.17 19411 ns/iter (± 1018) 12228 ns/iter (± 32) 1.59
csaf_2_0_tests/6.1.20 19282 ns/iter (± 226) 12006 ns/iter (± 14) 1.61
csaf_2_0_tests/6.1.27.1 18289 ns/iter (± 173) 11414 ns/iter (± 16) 1.60
csaf_2_0_tests/6.1.27.2 18346 ns/iter (± 18) 11254 ns/iter (± 17) 1.63
csaf_2_0_tests/6.1.27.3 17286 ns/iter (± 72) 11160 ns/iter (± 18) 1.55
csaf_2_0_tests/6.1.27.4 18532 ns/iter (± 153) 11453 ns/iter (± 13) 1.62
csaf_2_0_tests/6.1.27.5 19108 ns/iter (± 34) 12026 ns/iter (± 72) 1.59
csaf_2_0_tests/6.1.27.6 18593 ns/iter (± 20) 11730 ns/iter (± 19) 1.59
csaf_2_0_tests/6.1.27.7 17537 ns/iter (± 47) 10619 ns/iter (± 29) 1.65
csaf_2_0_tests/6.1.27.8 17765 ns/iter (± 35) 10816 ns/iter (± 11) 1.64
csaf_2_0_tests/6.1.27.10 19303 ns/iter (± 26) 11926 ns/iter (± 57) 1.62
csaf_2_0_tests/6.1.27.11 18352 ns/iter (± 62) 11220 ns/iter (± 22) 1.64
csaf_2_0_tests/6.1.29 18076 ns/iter (± 639) 11512 ns/iter (± 18) 1.57
csaf_2_0_tests/6.1.32 18431 ns/iter (± 162) 11660 ns/iter (± 25) 1.58
csaf_2_1_tests/6.1.5 69106 ns/iter (± 2884) 44214 ns/iter (± 115) 1.56
csaf_2_1_tests/6.1.15 63147 ns/iter (± 195) 37653 ns/iter (± 63) 1.68
csaf_2_1_tests/6.1.17 69843 ns/iter (± 541) 43136 ns/iter (± 90) 1.62
csaf_2_1_tests/6.1.18 81207 ns/iter (± 230) 48532 ns/iter (± 33) 1.67
csaf_2_1_tests/6.1.19 79876 ns/iter (± 536) 48264 ns/iter (± 41) 1.65
csaf_2_1_tests/6.1.20 72196 ns/iter (± 622) 42995 ns/iter (± 135) 1.68
csaf_2_1_tests/6.1.23 80893 ns/iter (± 2184) 50524 ns/iter (± 243) 1.60
csaf_2_1_tests/6.1.24 75425 ns/iter (± 250) 48130 ns/iter (± 264) 1.57
csaf_2_1_tests/6.1.27.1 68728 ns/iter (± 165) 41807 ns/iter (± 62) 1.64
csaf_2_1_tests/6.1.27.2 68762 ns/iter (± 115) 42379 ns/iter (± 76) 1.62
csaf_2_1_tests/6.1.27.4 70401 ns/iter (± 72) 43709 ns/iter (± 487) 1.61
csaf_2_1_tests/6.1.27.5 71698 ns/iter (± 1359) 44583 ns/iter (± 92) 1.61
csaf_2_1_tests/6.1.27.6 72236 ns/iter (± 4118) 44380 ns/iter (± 85) 1.63
csaf_2_1_tests/6.1.27.7 69096 ns/iter (± 288) 40035 ns/iter (± 56) 1.73
csaf_2_1_tests/6.1.27.8 68744 ns/iter (± 206) 40327 ns/iter (± 59) 1.70
csaf_2_1_tests/6.1.27.10 70993 ns/iter (± 147) 40553 ns/iter (± 114) 1.75
csaf_2_1_tests/6.1.27.11 74851 ns/iter (± 979) 43096 ns/iter (± 85) 1.74
csaf_2_1_tests/6.1.27.12 72108 ns/iter (± 489) 43493 ns/iter (± 1705) 1.66
csaf_2_1_tests/6.1.27.14 67997 ns/iter (± 115) 44452 ns/iter (± 212) 1.53
csaf_2_1_tests/6.1.27.15 71656 ns/iter (± 87) 43894 ns/iter (± 57) 1.63
csaf_2_1_tests/6.1.27.16 71727 ns/iter (± 197) 44156 ns/iter (± 55) 1.62
csaf_2_1_tests/6.1.27.17 72546 ns/iter (± 265) 48104 ns/iter (± 339) 1.51
csaf_2_1_tests/6.1.29 70971 ns/iter (± 2849) 44589 ns/iter (± 187) 1.59
csaf_2_1_tests/6.1.32 72605 ns/iter (± 1838) 44274 ns/iter (± 76) 1.64
csaf_2_1_tests/6.1.34 83150 ns/iter (± 1761) 54248 ns/iter (± 113) 1.53
csaf_2_1_tests/6.1.38 69831 ns/iter (± 123) 43745 ns/iter (± 101) 1.60
csaf_2_1_tests/6.1.39 70465 ns/iter (± 1010) 44262 ns/iter (± 296) 1.59
csaf_2_1_tests/6.1.40 70616 ns/iter (± 477) 43998 ns/iter (± 83) 1.60
csaf_2_1_tests/6.1.41 71301 ns/iter (± 626) 46228 ns/iter (± 129) 1.54
csaf_2_1_tests/6.2.4 92447 ns/iter (± 7202) 61622 ns/iter (± 62) 1.50

This comment was automatically generated by workflow using github-action-benchmark.

@tziemek

tziemek commented Jul 24, 2026

Copy link
Copy Markdown
Contributor Author

@tschmidtb51 could you look over this again, so we are able to merge this.

@tziemek

tziemek commented Jul 24, 2026

Copy link
Copy Markdown
Contributor Author

@aschierl-xitaso as the last rebase basically had no changes and the benchmark results changed nonetheless, I would merge this for now and make more general perf improvements elsewhere.

@tziemek
tziemek force-pushed the feat/rust-service branch from eceb8b9 to 80737f7 Compare July 27, 2026 15:34
@peinjoh peinjoh mentioned this pull request Jul 29, 2026
@tziemek
tziemek force-pushed the feat/rust-service branch from 80737f7 to f2c71cd Compare August 14, 2026 09:51

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'CSAF Validation Benchmark'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.50.

Benchmark suite Current: f2c71cd Previous: 8a22c4e Ratio
csaf_2_0_tests/6.1.27.2 20346 ns/iter (± 249) 12774 ns/iter (± 23) 1.59
csaf_2_0_tests/6.1.27.3 19877 ns/iter (± 155) 13243 ns/iter (± 21) 1.50
csaf_2_0_tests/6.1.27.11 19898 ns/iter (± 38) 13160 ns/iter (± 19) 1.51
csaf_2_1_tests/6.1.27.2 73176 ns/iter (± 375) 47241 ns/iter (± 459) 1.55
csaf_2_1_tests/6.1.27.11 76456 ns/iter (± 400) 49993 ns/iter (± 55) 1.53
csaf_2_1_tests/6.1.27.12 76194 ns/iter (± 201) 50322 ns/iter (± 87) 1.51
csaf_2_1_tests/6.1.27.14 75566 ns/iter (± 116) 50055 ns/iter (± 86) 1.51
csaf_2_1_tests/6.1.27.15 75471 ns/iter (± 167) 50296 ns/iter (± 206) 1.50
csaf_2_1_tests/6.1.27.19 83538 ns/iter (± 689) 52645 ns/iter (± 165) 1.59

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'CSAF Validation Benchmark'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.50.

Benchmark suite Current: db3a8f5 Previous: 5de40d9 Ratio
csaf_2_0_tests/6.1.3 18240 ns/iter (± 423) 10380 ns/iter (± 47) 1.76
csaf_2_0_tests/6.1.4 35142 ns/iter (± 796) 21801 ns/iter (± 85) 1.61
csaf_2_0_tests/6.1.5 19606 ns/iter (± 441) 10769 ns/iter (± 9) 1.82
csaf_2_0_tests/6.1.11 19414 ns/iter (± 284) 11142 ns/iter (± 13) 1.74
csaf_2_0_tests/6.1.13 39783 ns/iter (± 944) 26116 ns/iter (± 29) 1.52
csaf_2_0_tests/6.1.15 20806 ns/iter (± 876) 10299 ns/iter (± 63) 2.02
csaf_2_0_tests/6.1.17 21109 ns/iter (± 387) 11178 ns/iter (± 616) 1.89
csaf_2_0_tests/6.1.18 22966 ns/iter (± 320) 12944 ns/iter (± 67) 1.77
csaf_2_0_tests/6.1.19 21998 ns/iter (± 74) 12553 ns/iter (± 82) 1.75
csaf_2_0_tests/6.1.20 20954 ns/iter (± 186) 11060 ns/iter (± 58) 1.89
csaf_2_0_tests/6.1.23 22219 ns/iter (± 239) 12944 ns/iter (± 70) 1.72
csaf_2_0_tests/6.1.24 21718 ns/iter (± 61) 12307 ns/iter (± 89) 1.76
csaf_2_0_tests/6.1.26 26311 ns/iter (± 30) 15969 ns/iter (± 28) 1.65
csaf_2_0_tests/6.1.27.1 18733 ns/iter (± 266) 10921 ns/iter (± 9) 1.72
csaf_2_0_tests/6.1.27.2 18532 ns/iter (± 145) 10861 ns/iter (± 28) 1.71
csaf_2_0_tests/6.1.27.3 18443 ns/iter (± 71) 10674 ns/iter (± 15) 1.73
csaf_2_0_tests/6.1.27.4 17520 ns/iter (± 148) 9995 ns/iter (± 7) 1.75
csaf_2_0_tests/6.1.27.5 18161 ns/iter (± 569) 10580 ns/iter (± 6) 1.72
csaf_2_0_tests/6.1.27.6 18717 ns/iter (± 38) 10181 ns/iter (± 21) 1.84
csaf_2_0_tests/6.1.27.7 17656 ns/iter (± 240) 10003 ns/iter (± 32) 1.77
csaf_2_0_tests/6.1.27.8 18440 ns/iter (± 827) 10353 ns/iter (± 20) 1.78
csaf_2_0_tests/6.1.27.9 31111 ns/iter (± 52) 20163 ns/iter (± 25) 1.54
csaf_2_0_tests/6.1.27.10 20070 ns/iter (± 118) 11161 ns/iter (± 10) 1.80
csaf_2_0_tests/6.1.27.11 19810 ns/iter (± 321) 10794 ns/iter (± 825) 1.84
csaf_2_0_tests/6.1.29 18846 ns/iter (± 258) 10080 ns/iter (± 64) 1.87
csaf_2_0_tests/6.1.31 42360 ns/iter (± 143) 27034 ns/iter (± 54) 1.57
csaf_2_0_tests/6.1.32 18825 ns/iter (± 740) 10163 ns/iter (± 57) 1.85
csaf_2_0_tests/6.1.33 25745 ns/iter (± 68) 15525 ns/iter (± 35) 1.66
csaf_2_0_tests/6.2.2 26684 ns/iter (± 185) 16886 ns/iter (± 93) 1.58
csaf_2_0_tests/6.2.3 26017 ns/iter (± 51) 16678 ns/iter (± 93) 1.56
csaf_2_0_tests/6.2.4 25725 ns/iter (± 50) 16003 ns/iter (± 29) 1.61
csaf_2_0_tests/6.2.7 22774 ns/iter (± 433) 14016 ns/iter (± 129) 1.62
csaf_2_0_tests/6.2.17 23482 ns/iter (± 74) 14778 ns/iter (± 37) 1.59
csaf_2_0_tests/6.2.18 34963 ns/iter (± 246) 22750 ns/iter (± 69) 1.54
csaf_2_0_tests/6.3.6 24900 ns/iter (± 33) 16345 ns/iter (± 154) 1.52
csaf_2_0_tests/6.3.7 25280 ns/iter (± 23) 16557 ns/iter (± 27) 1.53
csaf_2_1_tests/6.1.3 92255 ns/iter (± 919) 57784 ns/iter (± 257) 1.60
csaf_2_1_tests/6.1.4 157775 ns/iter (± 618) 102352 ns/iter (± 676) 1.54
csaf_2_1_tests/6.1.5 68616 ns/iter (± 73) 40417 ns/iter (± 46) 1.70
csaf_2_1_tests/6.1.8 92586 ns/iter (± 3080) 60189 ns/iter (± 110) 1.54
csaf_2_1_tests/6.1.11 101382 ns/iter (± 234) 66175 ns/iter (± 227) 1.53
csaf_2_1_tests/6.1.15 71788 ns/iter (± 3827) 35711 ns/iter (± 56) 2.01
csaf_2_1_tests/6.1.16 196680 ns/iter (± 928) 123917 ns/iter (± 530) 1.59
csaf_2_1_tests/6.1.17 78312 ns/iter (± 2404) 39009 ns/iter (± 32) 2.01
csaf_2_1_tests/6.1.18 83914 ns/iter (± 835) 43502 ns/iter (± 54) 1.93
csaf_2_1_tests/6.1.19 81309 ns/iter (± 963) 42670 ns/iter (± 23) 1.91
csaf_2_1_tests/6.1.20 74214 ns/iter (± 1127) 38997 ns/iter (± 128) 1.90
csaf_2_1_tests/6.1.21 205865 ns/iter (± 1469) 134683 ns/iter (± 4773) 1.53
csaf_2_1_tests/6.1.23 82600 ns/iter (± 1845) 43716 ns/iter (± 33) 1.89
csaf_2_1_tests/6.1.24 75119 ns/iter (± 105) 41713 ns/iter (± 44) 1.80
csaf_2_1_tests/6.1.25 205933 ns/iter (± 1908) 136028 ns/iter (± 177) 1.51
csaf_2_1_tests/6.1.26 99215 ns/iter (± 143) 58996 ns/iter (± 67) 1.68
csaf_2_1_tests/6.1.27.1 70339 ns/iter (± 840) 39528 ns/iter (± 1790) 1.78
csaf_2_1_tests/6.1.27.2 69339 ns/iter (± 362) 40175 ns/iter (± 207) 1.73
csaf_2_1_tests/6.1.27.3 70181 ns/iter (± 304) 40486 ns/iter (± 41) 1.73
csaf_2_1_tests/6.1.27.4 65056 ns/iter (± 66) 37478 ns/iter (± 85) 1.74
csaf_2_1_tests/6.1.27.5 67223 ns/iter (± 3192) 38129 ns/iter (± 42) 1.76
csaf_2_1_tests/6.1.27.6 71225 ns/iter (± 333) 37815 ns/iter (± 42) 1.88
csaf_2_1_tests/6.1.27.7 68230 ns/iter (± 814) 38624 ns/iter (± 79) 1.77
csaf_2_1_tests/6.1.27.8 66588 ns/iter (± 102) 38278 ns/iter (± 107) 1.74
csaf_2_1_tests/6.1.27.9 88696 ns/iter (± 463) 54546 ns/iter (± 2282) 1.63
csaf_2_1_tests/6.1.27.10 71141 ns/iter (± 210) 39191 ns/iter (± 46) 1.82
csaf_2_1_tests/6.1.27.11 73629 ns/iter (± 116) 40768 ns/iter (± 43) 1.81
csaf_2_1_tests/6.1.27.12 78202 ns/iter (± 828) 40755 ns/iter (± 131) 1.92
csaf_2_1_tests/6.1.27.14 72017 ns/iter (± 89) 40924 ns/iter (± 44) 1.76
csaf_2_1_tests/6.1.27.15 72214 ns/iter (± 188) 40233 ns/iter (± 30) 1.79
csaf_2_1_tests/6.1.27.16 72424 ns/iter (± 134) 40256 ns/iter (± 35) 1.80
csaf_2_1_tests/6.1.27.17 75891 ns/iter (± 398) 41632 ns/iter (± 90) 1.82
csaf_2_1_tests/6.1.27.18 77848 ns/iter (± 127) 43898 ns/iter (± 3123) 1.77
csaf_2_1_tests/6.1.27.19 76851 ns/iter (± 196) 44507 ns/iter (± 23) 1.73
csaf_2_1_tests/6.1.28 92268 ns/iter (± 794) 59807 ns/iter (± 170) 1.54
csaf_2_1_tests/6.1.29 68498 ns/iter (± 649) 37451 ns/iter (± 85) 1.83
csaf_2_1_tests/6.1.30 187227 ns/iter (± 1410) 117410 ns/iter (± 254) 1.59
csaf_2_1_tests/6.1.31 203247 ns/iter (± 285) 130830 ns/iter (± 279) 1.55
csaf_2_1_tests/6.1.32 69690 ns/iter (± 112) 38501 ns/iter (± 232) 1.81
csaf_2_1_tests/6.1.33 107753 ns/iter (± 178) 67300 ns/iter (± 73) 1.60
csaf_2_1_tests/6.1.34 88309 ns/iter (± 1123) 46290 ns/iter (± 58) 1.91
csaf_2_1_tests/6.1.35 104297 ns/iter (± 652) 62016 ns/iter (± 194) 1.68
csaf_2_1_tests/6.1.36 109317 ns/iter (± 49) 68314 ns/iter (± 130) 1.60
csaf_2_1_tests/6.1.37 109174 ns/iter (± 5635) 68677 ns/iter (± 275) 1.59
csaf_2_1_tests/6.1.38 69043 ns/iter (± 390) 37934 ns/iter (± 98) 1.82
csaf_2_1_tests/6.1.39 73308 ns/iter (± 1433) 38293 ns/iter (± 120) 1.91
csaf_2_1_tests/6.1.40 69996 ns/iter (± 1063) 38211 ns/iter (± 61) 1.83
csaf_2_1_tests/6.1.41 70114 ns/iter (± 118) 38616 ns/iter (± 73) 1.82
csaf_2_1_tests/6.1.44 202403 ns/iter (± 1145) 133542 ns/iter (± 148) 1.52
csaf_2_1_tests/6.1.48 113543 ns/iter (± 767) 71734 ns/iter (± 204) 1.58
csaf_2_1_tests/6.1.49 113703 ns/iter (± 216) 71409 ns/iter (± 83) 1.59
csaf_2_1_tests/6.1.50 114004 ns/iter (± 290) 72039 ns/iter (± 93) 1.58
csaf_2_1_tests/6.1.53 79791 ns/iter (± 239) 44921 ns/iter (± 98) 1.78
csaf_2_1_tests/6.1.54 87695 ns/iter (± 205) 58249 ns/iter (± 26) 1.51
csaf_2_1_tests/6.1.55 89579 ns/iter (± 1588) 53549 ns/iter (± 135) 1.67
csaf_2_1_tests/6.1.56 123810 ns/iter (± 663) 76713 ns/iter (± 520) 1.61
csaf_2_1_tests/6.1.58 116834 ns/iter (± 486) 69605 ns/iter (± 117) 1.68
csaf_2_1_tests/6.1.59 116778 ns/iter (± 167) 74235 ns/iter (± 180) 1.57
csaf_2_1_tests/6.1.60.3 90138 ns/iter (± 179) 57198 ns/iter (± 844) 1.58
csaf_2_1_tests/6.1.61 211236 ns/iter (± 14107) 137876 ns/iter (± 237) 1.53
csaf_2_1_tests/6.2.2 103603 ns/iter (± 261) 63410 ns/iter (± 3234) 1.63
csaf_2_1_tests/6.2.3 99446 ns/iter (± 195) 61924 ns/iter (± 143) 1.61
csaf_2_1_tests/6.2.4 97076 ns/iter (± 768) 55926 ns/iter (± 121) 1.74
csaf_2_1_tests/6.2.5 239319 ns/iter (± 789) 159119 ns/iter (± 269) 1.50
csaf_2_1_tests/6.2.6 249102 ns/iter (± 1196) 162589 ns/iter (± 231) 1.53
csaf_2_1_tests/6.2.7 81630 ns/iter (± 188) 51220 ns/iter (± 440) 1.59
csaf_2_1_tests/6.2.17 97424 ns/iter (± 1310) 56861 ns/iter (± 44) 1.71
csaf_2_1_tests/6.2.18 186258 ns/iter (± 8540) 120752 ns/iter (± 5778) 1.54
csaf_2_1_tests/6.2.19 107437 ns/iter (± 185) 66631 ns/iter (± 828) 1.61
csaf_2_1_tests/6.2.23 110685 ns/iter (± 257) 68019 ns/iter (± 124) 1.63
csaf_2_1_tests/6.2.25 111945 ns/iter (± 400) 69270 ns/iter (± 33) 1.62
csaf_2_1_tests/6.2.26 111491 ns/iter (± 256) 69531 ns/iter (± 14571) 1.60
csaf_2_1_tests/6.2.27 109207 ns/iter (± 171) 68767 ns/iter (± 361) 1.59
csaf_2_1_tests/6.2.28 95823 ns/iter (± 4238) 57980 ns/iter (± 66) 1.65
csaf_2_1_tests/6.2.29 95753 ns/iter (± 2300) 58120 ns/iter (± 113) 1.65
csaf_2_1_tests/6.2.30 96601 ns/iter (± 624) 58541 ns/iter (± 3450) 1.65
csaf_2_1_tests/6.2.31 261869 ns/iter (± 597) 169222 ns/iter (± 1607) 1.55
csaf_2_1_tests/6.2.33 281222 ns/iter (± 789) 186966 ns/iter (± 309) 1.50
csaf_2_1_tests/6.2.34 113908 ns/iter (± 843) 70069 ns/iter (± 73) 1.63
csaf_2_1_tests/6.2.35 111494 ns/iter (± 154) 70437 ns/iter (± 53) 1.58
csaf_2_1_tests/6.2.36 112205 ns/iter (± 145) 70533 ns/iter (± 80) 1.59
csaf_2_1_tests/6.2.37 112084 ns/iter (± 188) 70929 ns/iter (± 86) 1.58
csaf_2_1_tests/6.2.38 129205 ns/iter (± 309) 80947 ns/iter (± 178) 1.60
csaf_2_1_tests/6.2.39.2 90474 ns/iter (± 667) 58811 ns/iter (± 151) 1.54
csaf_2_1_tests/6.2.39.3 89968 ns/iter (± 188) 58028 ns/iter (± 212) 1.55
csaf_2_1_tests/6.2.40 112854 ns/iter (± 389) 71532 ns/iter (± 1137) 1.58
csaf_2_1_tests/6.2.42 113888 ns/iter (± 465) 72866 ns/iter (± 157) 1.56
csaf_2_1_tests/6.2.43 114666 ns/iter (± 128) 71999 ns/iter (± 87) 1.59
csaf_2_1_tests/6.2.44 114765 ns/iter (± 575) 72200 ns/iter (± 77) 1.59
csaf_2_1_tests/6.2.45 114959 ns/iter (± 196) 72527 ns/iter (± 76) 1.59
csaf_2_1_tests/6.2.46 119281 ns/iter (± 640) 72976 ns/iter (± 73) 1.63
csaf_2_1_tests/6.2.48 202603 ns/iter (± 755) 132118 ns/iter (± 295) 1.53
csaf_2_1_tests/6.2.49 115537 ns/iter (± 1464) 73706 ns/iter (± 159) 1.57
csaf_2_1_tests/6.2.50.2 89843 ns/iter (± 558) 59344 ns/iter (± 480) 1.51
csaf_2_1_tests/6.2.50.3 90389 ns/iter (± 397) 59967 ns/iter (± 57) 1.51
csaf_2_1_tests/6.2.51 116736 ns/iter (± 1734) 73857 ns/iter (± 47) 1.58
csaf_2_1_tests/6.2.53 109555 ns/iter (± 158) 66540 ns/iter (± 4521) 1.65
csaf_2_1_tests/6.2.54.3 90236 ns/iter (± 183) 58825 ns/iter (± 606) 1.53
csaf_2_1_tests/6.2.54.4 89948 ns/iter (± 125) 59737 ns/iter (± 209) 1.51
csaf_2_1_tests/6.3.1 91955 ns/iter (± 174) 58554 ns/iter (± 196) 1.57
csaf_2_1_tests/6.3.2 122938 ns/iter (± 1392) 79304 ns/iter (± 177) 1.55
csaf_2_1_tests/6.3.4 93355 ns/iter (± 1151) 61938 ns/iter (± 1434) 1.51
csaf_2_1_tests/6.3.5 97131 ns/iter (± 1065) 62073 ns/iter (± 76) 1.56
csaf_2_1_tests/6.3.8 94433 ns/iter (± 598) 62558 ns/iter (± 66) 1.51
csaf_2_1_tests/6.3.10 115190 ns/iter (± 370) 72458 ns/iter (± 76) 1.59
csaf_2_1_tests/6.3.11 119474 ns/iter (± 203) 72996 ns/iter (± 176) 1.64
csaf_2_1_tests/6.3.13 115697 ns/iter (± 147) 73072 ns/iter (± 84) 1.58
csaf_2_1_tests/6.3.14 115871 ns/iter (± 147) 73240 ns/iter (± 56) 1.58
csaf_2_1_tests/6.3.15 115564 ns/iter (± 177) 73499 ns/iter (± 95) 1.57
csaf_2_1_tests/6.3.16 116611 ns/iter (± 378) 73894 ns/iter (± 273) 1.58
csaf_2_1_tests/6.3.18 130597 ns/iter (± 372) 81833 ns/iter (± 84) 1.60
csaf_2_1_tests/6.3.19.2 90704 ns/iter (± 251) 59717 ns/iter (± 74) 1.52
csaf_2_1_tests/6.3.19.3 90441 ns/iter (± 709) 59712 ns/iter (± 30) 1.51
csaf_2_1_tests/6.3.19.5 91843 ns/iter (± 357) 60496 ns/iter (± 85) 1.52
csaf_2_1_tests/6.3.20 129992 ns/iter (± 927) 82474 ns/iter (± 3829) 1.58
csaf_2_1_tests/6.3.21.7 92024 ns/iter (± 916) 60694 ns/iter (± 74) 1.52
csaf_2_1_tests/6.3.21.8 89919 ns/iter (± 166) 59782 ns/iter (± 85) 1.50
csaf_2_1_tests/6.3.22 122473 ns/iter (± 401) 74438 ns/iter (± 111) 1.65

This comment was automatically generated by workflow using github-action-benchmark.

@tschmidtb51 tschmidtb51 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.

I did a quick test and it seems to work as expected. I left some comments of things to be considered. Nevertheless, I approve to remove the blocking "changes requested" state.

Differences in results will vanish over time (if more results being provided form OASIS).

I wonder whether it would make sense to have some arguments implemented (e.g. --version, --config) which have precedence 4.

Comment thread csaf-rs/src/csaf2_0/validation.rs Outdated
Comment thread csaf-rs/src/csaf2_1/validation.rs Outdated
Comment thread csaf-service/config/default.toml Outdated
Comment thread csaf-service/src/handlers/v1/validate.rs Outdated
Comment thread csaf-service/src/main.rs Outdated
Comment thread csaf-service/src/main.rs Outdated
Comment thread csaf-service/src/settings.rs Outdated
Comment thread csaf-service/README.md
Comment thread go/csaf_ffi/csaf_ffi.go
checksum := rustCall(func(_uniffiStatus *C.RustCallStatus) C.uint16_t {
return C.uniffi_csaf_ffi_checksum_func_get_tests()
})
if checksum != 26988 {

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.

Where does that number come from? Is that a fixed value or how to we get there? Do we need to change it, if something is changed or is it autogenerated?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

These are hashes auto-generated via uniffi-rs/uniffi-bindgen to prevent ABI/API drift from rust to the go bindings.

Comment thread go/csaf_ffi/csaf_ffi.go
checksum := rustCall(func(_uniffiStatus *C.RustCallStatus) C.uint16_t {
return C.uniffi_csaf_ffi_checksum_func_get_tests_in_preset()
})
if checksum != 22002 {

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.

Same here...

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

See above

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.

4 participants