Skip to content

feat(capabilities): trait architecture http draft#1555

Open
Aaalibaba42 wants to merge 24 commits intomainfrom
jwiriath/capability-traits-architecture
Open

feat(capabilities): trait architecture http draft#1555
Aaalibaba42 wants to merge 24 commits intomainfrom
jwiriath/capability-traits-architecture

Conversation

@Aaalibaba42
Copy link
Contributor

What does this PR do?

Add capability trait architecture, and few native implementations.

Motivation

Ongoing effort to make libdatadog wasm compatible.

Additional Notes

In the long run, several other parts of the codebase ought to use these capabilities via the provided public structure, so that it can automagically choose the correct underlying implementation when compiling or not to wasm.

How to test the change?

I should add some tests...

@Aaalibaba42 Aaalibaba42 requested a review from a team as a code owner February 11, 2026 14:13
@github-actions
Copy link

github-actions bot commented Feb 11, 2026

📚 Documentation Check Results

⚠️ 2128 documentation warning(s) found

📦 libdd-capabilities - 9 warning(s)

📦 libdd-capabilities-impl - 178 warning(s)

📦 libdd-common - 177 warning(s)

📦 libdd-data-pipeline - 793 warning(s)

📦 libdd-telemetry - 489 warning(s)

📦 libdd-trace-utils - 482 warning(s)


Updated: 2026-02-23 17:29:14 UTC | Commit: b2ac367 | missing-docs job results

@github-actions
Copy link

github-actions bot commented Feb 11, 2026

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/jwiriath/capability-traits-architecture

Summary by Rule

Rule Base Branch PR Branch Change
todo 2 2 No change (0%)
unwrap_used 14 14 No change (0%)
Total 16 16 No change (0%)

Annotation Counts by File

File Base Branch PR Branch Change
datadog-sidecar/src/service/tracing/trace_flusher.rs 1 1 No change (0%)
libdd-common/src/lib.rs 3 3 No change (0%)
libdd-data-pipeline/src/stats_exporter.rs 1 1 No change (0%)
libdd-data-pipeline/src/telemetry/mod.rs 1 1 No change (0%)
libdd-data-pipeline/src/trace_exporter/error.rs 1 1 No change (0%)
libdd-data-pipeline/src/trace_exporter/mod.rs 2 2 No change (0%)
libdd-trace-utils/src/send_data/mod.rs 5 5 No change (0%)
libdd-trace-utils/src/trace_utils.rs 2 2 No change (0%)

Annotation Stats by Crate

Crate Base Branch PR Branch Change
clippy-annotation-reporter 5 5 No change (0%)
datadog-ffe-ffi 1 1 No change (0%)
datadog-ipc 27 27 No change (0%)
datadog-live-debugger 6 6 No change (0%)
datadog-live-debugger-ffi 10 10 No change (0%)
datadog-profiling-replayer 4 4 No change (0%)
datadog-remote-config 3 3 No change (0%)
datadog-sidecar 59 59 No change (0%)
libdd-common 10 10 No change (0%)
libdd-common-ffi 12 12 No change (0%)
libdd-crashtracker 12 12 No change (0%)
libdd-data-pipeline 5 5 No change (0%)
libdd-ddsketch 2 2 No change (0%)
libdd-dogstatsd-client 1 1 No change (0%)
libdd-profiling 13 13 No change (0%)
libdd-telemetry 19 19 No change (0%)
libdd-tinybytes 4 4 No change (0%)
libdd-trace-normalization 2 2 No change (0%)
libdd-trace-obfuscation 9 9 No change (0%)
libdd-trace-utils 15 15 No change (0%)
Total 219 219 No change (0%)

About This Report

This report tracks Clippy allow annotations for specific rules, showing how they've changed in this PR. Decreasing the number of these annotations generally improves code quality.

@github-actions
Copy link

github-actions bot commented Feb 11, 2026

🔒 Cargo Deny Results

⚠️ 7 issue(s) found, showing only errors (advisories, bans, sources)

📦 libdd-capabilities - 1 error(s)

Show output
error[vulnerability]: Integer overflow in `BytesMut::reserve`
  ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:1:1
  │
1 │ bytes 1.8.0 registry+https://github.com/rust-lang/crates.io-index
  │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
  │
  ├ ID: RUSTSEC-2026-0007
  ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0007
  ├ In the unique reclaim path of `BytesMut::reserve`, the condition
    ```rs
    if v_capacity >= new_cap + offset
    ```
    uses an unchecked addition. When `new_cap + offset` overflows `usize` in release builds, this condition may incorrectly pass, causing `self.cap` to be set to a value that exceeds the actual allocated capacity. Subsequent APIs such as `spare_capacity_mut()` then trust this corrupted `cap` value and may create out-of-bounds slices, leading to UB.
    
    This behavior is observable in release builds (integer overflow wraps), whereas debug builds panic due to overflow checks.
    
    ## PoC
    
    ```rs
    use bytes::*;
    
    fn main() {
        let mut a = BytesMut::from(&b"hello world"[..]);
        let mut b = a.split_off(5);
    
        // Ensure b becomes the unique owner of the backing storage
        drop(a);
    
        // Trigger overflow in new_cap + offset inside reserve
        b.reserve(usize::MAX - 6);
    
        // This call relies on the corrupted cap and may cause UB & HBO
        b.put_u8(b'h');
    }
    ```
    
    # Workarounds
    
    Users of `BytesMut::reserve` are only affected if integer overflow checks are configured to wrap. When integer overflow is configured to panic, this issue does not apply.
  ├ Announcement: https://github.com/advisories/GHSA-434x-w66g-qw3r
  ├ Solution: Upgrade to >=1.11.1 (try `cargo update -p bytes`)
  ├ bytes v1.8.0
    ├── http v1.1.0
    │   └── libdd-capabilities v0.1.0
    └── libdd-capabilities v0.1.0 (*)

advisories FAILED, bans ok, sources ok

📦 libdd-capabilities-impl - 1 error(s)

Show output
error[vulnerability]: Integer overflow in `BytesMut::reserve`
  ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:9:1
  │
9 │ bytes 1.8.0 registry+https://github.com/rust-lang/crates.io-index
  │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
  │
  ├ ID: RUSTSEC-2026-0007
  ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0007
  ├ In the unique reclaim path of `BytesMut::reserve`, the condition
    ```rs
    if v_capacity >= new_cap + offset
    ```
    uses an unchecked addition. When `new_cap + offset` overflows `usize` in release builds, this condition may incorrectly pass, causing `self.cap` to be set to a value that exceeds the actual allocated capacity. Subsequent APIs such as `spare_capacity_mut()` then trust this corrupted `cap` value and may create out-of-bounds slices, leading to UB.
    
    This behavior is observable in release builds (integer overflow wraps), whereas debug builds panic due to overflow checks.
    
    ## PoC
    
    ```rs
    use bytes::*;
    
    fn main() {
        let mut a = BytesMut::from(&b"hello world"[..]);
        let mut b = a.split_off(5);
    
        // Ensure b becomes the unique owner of the backing storage
        drop(a);
    
        // Trigger overflow in new_cap + offset inside reserve
        b.reserve(usize::MAX - 6);
    
        // This call relies on the corrupted cap and may cause UB & HBO
        b.put_u8(b'h');
    }
    ```
    
    # Workarounds
    
    Users of `BytesMut::reserve` are only affected if integer overflow checks are configured to wrap. When integer overflow is configured to panic, this issue does not apply.
  ├ Announcement: https://github.com/advisories/GHSA-434x-w66g-qw3r
  ├ Solution: Upgrade to >=1.11.1 (try `cargo update -p bytes`)
  ├ bytes v1.8.0
    ├── http v1.1.0
    │   ├── http-body v1.0.1
    │   │   ├── http-body-util v0.1.2
    │   │   │   ├── libdd-capabilities-impl v0.1.0
    │   │   │   └── libdd-common v1.1.0
    │   │   │       └── libdd-capabilities-impl v0.1.0 (*)
    │   │   ├── hyper v1.6.0
    │   │   │   ├── hyper-rustls v0.27.3
    │   │   │   │   └── libdd-common v1.1.0 (*)
    │   │   │   ├── hyper-util v0.1.17
    │   │   │   │   ├── hyper-rustls v0.27.3 (*)
    │   │   │   │   └── libdd-common v1.1.0 (*)
    │   │   │   ├── libdd-capabilities-impl v0.1.0 (*)
    │   │   │   └── libdd-common v1.1.0 (*)
    │   │   ├── hyper-util v0.1.17 (*)
    │   │   └── libdd-common v1.1.0 (*)
    │   ├── http-body-util v0.1.2 (*)
    │   ├── hyper v1.6.0 (*)
    │   ├── hyper-rustls v0.27.3 (*)
    │   ├── hyper-util v0.1.17 (*)
    │   ├── libdd-capabilities v0.1.0
    │   │   ├── libdd-capabilities-impl v0.1.0 (*)
    │   │   └── libdd-common v1.1.0 (*)
    │   ├── libdd-capabilities-impl v0.1.0 (*)
    │   ├── libdd-common v1.1.0 (*)
    │   └── multer v3.1.0
    │       └── (dev) libdd-common v1.1.0 (*)
    ├── http-body v1.0.1 (*)
    ├── http-body-util v0.1.2 (*)
    ├── hyper v1.6.0 (*)
    ├── hyper-util v0.1.17 (*)
    ├── libdd-capabilities v0.1.0 (*)
    ├── libdd-capabilities-impl v0.1.0 (*)
    ├── (dev) libdd-common v1.1.0 (*)
    ├── multer v3.1.0 (*)
    └── tokio v1.49.0
        ├── hyper v1.6.0 (*)
        ├── hyper-rustls v0.27.3 (*)
        ├── hyper-util v0.1.17 (*)
        ├── (dev) libdd-common v1.1.0 (*)
        └── tokio-rustls v0.26.0
            ├── hyper-rustls v0.27.3 (*)
            └── libdd-common v1.1.0 (*)

advisories FAILED, bans ok, sources ok

📦 libdd-common - 1 error(s)

Show output
error[vulnerability]: Integer overflow in `BytesMut::reserve`
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:12:1
   │
12 │ bytes 1.8.0 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2026-0007
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0007
   ├ In the unique reclaim path of `BytesMut::reserve`, the condition
     ```rs
     if v_capacity >= new_cap + offset
     ```
     uses an unchecked addition. When `new_cap + offset` overflows `usize` in release builds, this condition may incorrectly pass, causing `self.cap` to be set to a value that exceeds the actual allocated capacity. Subsequent APIs such as `spare_capacity_mut()` then trust this corrupted `cap` value and may create out-of-bounds slices, leading to UB.
     
     This behavior is observable in release builds (integer overflow wraps), whereas debug builds panic due to overflow checks.
     
     ## PoC
     
     ```rs
     use bytes::*;
     
     fn main() {
         let mut a = BytesMut::from(&b"hello world"[..]);
         let mut b = a.split_off(5);
     
         // Ensure b becomes the unique owner of the backing storage
         drop(a);
     
         // Trigger overflow in new_cap + offset inside reserve
         b.reserve(usize::MAX - 6);
     
         // This call relies on the corrupted cap and may cause UB & HBO
         b.put_u8(b'h');
     }
     ```
     
     # Workarounds
     
     Users of `BytesMut::reserve` are only affected if integer overflow checks are configured to wrap. When integer overflow is configured to panic, this issue does not apply.
   ├ Announcement: https://github.com/advisories/GHSA-434x-w66g-qw3r
   ├ Solution: Upgrade to >=1.11.1 (try `cargo update -p bytes`)
   ├ bytes v1.8.0
     ├── combine v4.6.7
     │   └── jni v0.21.1
     │       └── rustls-platform-verifier v0.6.2
     │           └── reqwest v0.13.1
     │               └── libdd-common v1.1.0
     ├── http v1.1.0
     │   ├── http-body v1.0.1
     │   │   ├── http-body-util v0.1.2
     │   │   │   ├── libdd-common v1.1.0 (*)
     │   │   │   └── reqwest v0.13.1 (*)
     │   │   ├── hyper v1.6.0
     │   │   │   ├── hyper-rustls v0.27.3
     │   │   │   │   ├── libdd-common v1.1.0 (*)
     │   │   │   │   └── reqwest v0.13.1 (*)
     │   │   │   ├── hyper-util v0.1.17
     │   │   │   │   ├── hyper-rustls v0.27.3 (*)
     │   │   │   │   ├── libdd-common v1.1.0 (*)
     │   │   │   │   └── reqwest v0.13.1 (*)
     │   │   │   ├── libdd-common v1.1.0 (*)
     │   │   │   └── reqwest v0.13.1 (*)
     │   │   ├── hyper-util v0.1.17 (*)
     │   │   ├── libdd-common v1.1.0 (*)
     │   │   ├── reqwest v0.13.1 (*)
     │   │   └── tower-http v0.6.8
     │   │       └── reqwest v0.13.1 (*)
     │   ├── http-body-util v0.1.2 (*)
     │   ├── hyper v1.6.0 (*)
     │   ├── hyper-rustls v0.27.3 (*)
     │   ├── hyper-util v0.1.17 (*)
     │   ├── libdd-capabilities v0.1.0
     │   │   └── libdd-common v1.1.0 (*)
     │   ├── libdd-common v1.1.0 (*)
     │   ├── multer v3.1.0
     │   │   └── libdd-common v1.1.0 (*)
     │   ├── reqwest v0.13.1 (*)
     │   └── tower-http v0.6.8 (*)
     ├── http-body v1.0.1 (*)
     ├── http-body-util v0.1.2 (*)
     ├── hyper v1.6.0 (*)
     ├── hyper-util v0.1.17 (*)
     ├── libdd-capabilities v0.1.0 (*)
     ├── (dev) libdd-common v1.1.0 (*)
     ├── multer v3.1.0 (*)
     ├── reqwest v0.13.1 (*)
     ├── tokio v1.49.0
     │   ├── hickory-proto v0.25.2
     │   │   └── hickory-resolver v0.25.2
     │   │       └── reqwest v0.13.1 (*)
     │   ├── hickory-resolver v0.25.2 (*)
     │   ├── hyper v1.6.0 (*)
     │   ├── hyper-rustls v0.27.3 (*)
     │   ├── hyper-util v0.1.17 (*)
     │   ├── (dev) libdd-common v1.1.0 (*)
     │   ├── reqwest v0.13.1 (*)
     │   ├── tokio-rustls v0.26.0
     │   │   ├── hyper-rustls v0.27.3 (*)
     │   │   ├── libdd-common v1.1.0 (*)
     │   │   └── reqwest v0.13.1 (*)
     │   └── tower v0.5.2
     │       ├── reqwest v0.13.1 (*)
     │       └── tower-http v0.6.8 (*)
     └── tower-http v0.6.8 (*)

advisories FAILED, bans ok, sources ok

📦 libdd-data-pipeline - 2 error(s)

Show output
error[vulnerability]: Integer overflow in `BytesMut::reserve`
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:50:1
   │
50 │ bytes 1.8.0 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2026-0007
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0007
   ├ In the unique reclaim path of `BytesMut::reserve`, the condition
     ```rs
     if v_capacity >= new_cap + offset
     ```
     uses an unchecked addition. When `new_cap + offset` overflows `usize` in release builds, this condition may incorrectly pass, causing `self.cap` to be set to a value that exceeds the actual allocated capacity. Subsequent APIs such as `spare_capacity_mut()` then trust this corrupted `cap` value and may create out-of-bounds slices, leading to UB.
     
     This behavior is observable in release builds (integer overflow wraps), whereas debug builds panic due to overflow checks.
     
     ## PoC
     
     ```rs
     use bytes::*;
     
     fn main() {
         let mut a = BytesMut::from(&b"hello world"[..]);
         let mut b = a.split_off(5);
     
         // Ensure b becomes the unique owner of the backing storage
         drop(a);
     
         // Trigger overflow in new_cap + offset inside reserve
         b.reserve(usize::MAX - 6);
     
         // This call relies on the corrupted cap and may cause UB & HBO
         b.put_u8(b'h');
     }
     ```
     
     # Workarounds
     
     Users of `BytesMut::reserve` are only affected if integer overflow checks are configured to wrap. When integer overflow is configured to panic, this issue does not apply.
   ├ Announcement: https://github.com/advisories/GHSA-434x-w66g-qw3r
   ├ Solution: Upgrade to >=1.11.1 (try `cargo update -p bytes`)
   ├ bytes v1.8.0
     ├── h2 v0.4.6
     │   └── hyper v1.6.0
     │       ├── httpmock v0.8.0-alpha.1
     │       │   ├── (dev) libdd-data-pipeline v1.0.0
     │       │   └── libdd-trace-utils v1.0.0
     │       │       ├── libdd-data-pipeline v1.0.0 (*)
     │       │       ├── libdd-trace-stats v1.0.0
     │       │       │   └── libdd-data-pipeline v1.0.0 (*)
     │       │       └── (dev) libdd-trace-utils v1.0.0 (*)
     │       ├── hyper-rustls v0.27.3
     │       │   └── libdd-common v1.1.0
     │       │       ├── libdd-capabilities-impl v0.1.0
     │       │       │   ├── libdd-data-pipeline v1.0.0 (*)
     │       │       │   ├── libdd-telemetry v2.0.0
     │       │       │   │   └── libdd-data-pipeline v1.0.0 (*)
     │       │       │   └── libdd-trace-utils v1.0.0 (*)
     │       │       ├── libdd-data-pipeline v1.0.0 (*)
     │       │       ├── libdd-dogstatsd-client v1.0.0
     │       │       │   └── libdd-data-pipeline v1.0.0 (*)
     │       │       ├── libdd-telemetry v2.0.0 (*)
     │       │       └── libdd-trace-utils v1.0.0 (*)
     │       ├── hyper-util v0.1.17
     │       │   ├── httpmock v0.8.0-alpha.1 (*)
     │       │   ├── hyper-rustls v0.27.3 (*)
     │       │   └── libdd-common v1.1.0 (*)
     │       ├── libdd-capabilities-impl v0.1.0 (*)
     │       ├── libdd-common v1.1.0 (*)
     │       └── libdd-trace-utils v1.0.0 (*)
     ├── headers v0.4.0
     │   └── httpmock v0.8.0-alpha.1 (*)
     ├── http v1.1.0
     │   ├── h2 v0.4.6 (*)
     │   ├── headers v0.4.0 (*)
     │   ├── headers-core v0.3.0
     │   │   └── headers v0.4.0 (*)
     │   ├── http-body v1.0.1
     │   │   ├── http-body-util v0.1.2
     │   │   │   ├── httpmock v0.8.0-alpha.1 (*)
     │   │   │   ├── libdd-capabilities-impl v0.1.0 (*)
     │   │   │   ├── libdd-common v1.1.0 (*)
     │   │   │   ├── libdd-data-pipeline v1.0.0 (*)
     │   │   │   ├── libdd-telemetry v2.0.0 (*)
     │   │   │   └── libdd-trace-utils v1.0.0 (*)
     │   │   ├── hyper v1.6.0 (*)
     │   │   ├── hyper-util v0.1.17 (*)
     │   │   ├── libdd-common v1.1.0 (*)
     │   │   └── libdd-trace-utils v1.0.0 (*)
     │   ├── http-body-util v0.1.2 (*)
     │   ├── httpmock v0.8.0-alpha.1 (*)
     │   ├── hyper v1.6.0 (*)
     │   ├── hyper-rustls v0.27.3 (*)
     │   ├── hyper-util v0.1.17 (*)
     │   ├── libdd-capabilities v0.1.0
     │   │   ├── libdd-capabilities-impl v0.1.0 (*)
     │   │   ├── libdd-common v1.1.0 (*)
     │   │   ├── libdd-data-pipeline v1.0.0 (*)
     │   │   ├── libdd-telemetry v2.0.0 (*)
     │   │   └── libdd-trace-utils v1.0.0 (*)
     │   ├── libdd-capabilities-impl v0.1.0 (*)
     │   ├── libdd-common v1.1.0 (*)
     │   ├── libdd-data-pipeline v1.0.0 (*)
     │   ├── libdd-dogstatsd-client v1.0.0 (*)
     │   ├── libdd-telemetry v2.0.0 (*)
     │   ├── libdd-trace-utils v1.0.0 (*)
     │   └── multer v3.1.0
     │       └── (dev) libdd-common v1.1.0 (*)
     ├── http-body v1.0.1 (*)
     ├── http-body-util v0.1.2 (*)
     ├── httpmock v0.8.0-alpha.1 (*)
     ├── hyper v1.6.0 (*)
     ├── hyper-util v0.1.17 (*)
     ├── libdd-capabilities v0.1.0 (*)
     ├── libdd-capabilities-impl v0.1.0 (*)
     ├── (dev) libdd-common v1.1.0 (*)
     ├── libdd-data-pipeline v1.0.0 (*)
     ├── libdd-telemetry v2.0.0 (*)
     ├── libdd-trace-utils v1.0.0 (*)
     ├── multer v3.1.0 (*)
     ├── prost v0.14.3
     │   ├── libdd-ddsketch v1.0.0
     │   │   ├── libdd-data-pipeline v1.0.0 (*)
     │   │   ├── libdd-telemetry v2.0.0 (*)
     │   │   └── libdd-trace-stats v1.0.0 (*)
     │   ├── libdd-trace-protobuf v1.0.0
     │   │   ├── libdd-data-pipeline v1.0.0 (*)
     │   │   ├── libdd-trace-normalization v1.0.0
     │   │   │   └── libdd-trace-utils v1.0.0 (*)
     │   │   ├── libdd-trace-stats v1.0.0 (*)
     │   │   └── libdd-trace-utils v1.0.0 (*)
     │   └── libdd-trace-utils v1.0.0 (*)
     ├── tokio v1.49.0
     │   ├── h2 v0.4.6 (*)
     │   ├── httpmock v0.8.0-alpha.1 (*)
     │   ├── hyper v1.6.0 (*)
     │   ├── hyper-rustls v0.27.3 (*)
     │   ├── hyper-util v0.1.17 (*)
     │   ├── (dev) libdd-common v1.1.0 (*)
     │   ├── (dev) libdd-data-pipeline v1.0.0 (*)
     │   ├── (dev) libdd-dogstatsd-client v1.0.0 (*)
     │   ├── (dev) libdd-telemetry v2.0.0 (*)
     │   ├── (dev) libdd-trace-protobuf v1.0.0 (*)
     │   ├── (dev) libdd-trace-utils v1.0.0 (*)
     │   ├── tokio-rustls v0.26.0
     │   │   ├── hyper-rustls v0.27.3 (*)
     │   │   └── libdd-common v1.1.0 (*)
     │   └── tokio-util v0.7.12
     │       ├── h2 v0.4.6 (*)
     │       ├── libdd-data-pipeline v1.0.0 (*)
     │       └── libdd-telemetry v2.0.0 (*)
     └── tokio-util v0.7.12 (*)

error[vulnerability]: Denial of Service via Stack Exhaustion
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:293:1
    │
293 │ time 0.3.41 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2026-0009
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0009
    ├ ## Impact
      
      When user-provided input is provided to any type that parses with the RFC 2822 format, a denial of
      service attack via stack exhaustion is possible. The attack relies on formally deprecated and
      rarely-used features that are part of the RFC 2822 format used in a malicious manner. Ordinary,
      non-malicious input will never encounter this scenario.
      
      ## Patches
      
      A limit to the depth of recursion was added in v0.3.47. From this version, an error will be returned
      rather than exhausting the stack.
      
      ## Workarounds
      
      Limiting the length of user input is the simplest way to avoid stack exhaustion, as the amount of
      the stack consumed would be at most a factor of the length of the input.
    ├ Announcement: https://github.com/time-rs/time/blob/main/CHANGELOG.md#0347-2026-02-05
    ├ Solution: Upgrade to >=0.3.47 (try `cargo update -p time`)
    ├ time v0.3.41
      └── tracing-appender v0.2.3
          └── libdd-log v1.0.0
              └── (dev) libdd-data-pipeline v1.0.0

advisories FAILED, bans ok, sources ok

📦 libdd-telemetry - 1 error(s)

Show output
error[vulnerability]: Integer overflow in `BytesMut::reserve`
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:11:1
   │
11 │ bytes 1.8.0 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2026-0007
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0007
   ├ In the unique reclaim path of `BytesMut::reserve`, the condition
     ```rs
     if v_capacity >= new_cap + offset
     ```
     uses an unchecked addition. When `new_cap + offset` overflows `usize` in release builds, this condition may incorrectly pass, causing `self.cap` to be set to a value that exceeds the actual allocated capacity. Subsequent APIs such as `spare_capacity_mut()` then trust this corrupted `cap` value and may create out-of-bounds slices, leading to UB.
     
     This behavior is observable in release builds (integer overflow wraps), whereas debug builds panic due to overflow checks.
     
     ## PoC
     
     ```rs
     use bytes::*;
     
     fn main() {
         let mut a = BytesMut::from(&b"hello world"[..]);
         let mut b = a.split_off(5);
     
         // Ensure b becomes the unique owner of the backing storage
         drop(a);
     
         // Trigger overflow in new_cap + offset inside reserve
         b.reserve(usize::MAX - 6);
     
         // This call relies on the corrupted cap and may cause UB & HBO
         b.put_u8(b'h');
     }
     ```
     
     # Workarounds
     
     Users of `BytesMut::reserve` are only affected if integer overflow checks are configured to wrap. When integer overflow is configured to panic, this issue does not apply.
   ├ Announcement: https://github.com/advisories/GHSA-434x-w66g-qw3r
   ├ Solution: Upgrade to >=1.11.1 (try `cargo update -p bytes`)
   ├ bytes v1.8.0
     ├── http v1.1.0
     │   ├── http-body v1.0.1
     │   │   ├── http-body-util v0.1.2
     │   │   │   ├── libdd-capabilities-impl v0.1.0
     │   │   │   │   └── libdd-telemetry v2.0.0
     │   │   │   ├── libdd-common v1.1.0
     │   │   │   │   ├── libdd-capabilities-impl v0.1.0 (*)
     │   │   │   │   └── libdd-telemetry v2.0.0 (*)
     │   │   │   └── libdd-telemetry v2.0.0 (*)
     │   │   ├── hyper v1.6.0
     │   │   │   ├── hyper-rustls v0.27.3
     │   │   │   │   └── libdd-common v1.1.0 (*)
     │   │   │   ├── hyper-util v0.1.17
     │   │   │   │   ├── hyper-rustls v0.27.3 (*)
     │   │   │   │   └── libdd-common v1.1.0 (*)
     │   │   │   ├── libdd-capabilities-impl v0.1.0 (*)
     │   │   │   └── libdd-common v1.1.0 (*)
     │   │   ├── hyper-util v0.1.17 (*)
     │   │   └── libdd-common v1.1.0 (*)
     │   ├── http-body-util v0.1.2 (*)
     │   ├── hyper v1.6.0 (*)
     │   ├── hyper-rustls v0.27.3 (*)
     │   ├── hyper-util v0.1.17 (*)
     │   ├── libdd-capabilities v0.1.0
     │   │   ├── libdd-capabilities-impl v0.1.0 (*)
     │   │   ├── libdd-common v1.1.0 (*)
     │   │   └── libdd-telemetry v2.0.0 (*)
     │   ├── libdd-capabilities-impl v0.1.0 (*)
     │   ├── libdd-common v1.1.0 (*)
     │   ├── libdd-telemetry v2.0.0 (*)
     │   └── multer v3.1.0
     │       └── (dev) libdd-common v1.1.0 (*)
     ├── http-body v1.0.1 (*)
     ├── http-body-util v0.1.2 (*)
     ├── hyper v1.6.0 (*)
     ├── hyper-util v0.1.17 (*)
     ├── libdd-capabilities v0.1.0 (*)
     ├── libdd-capabilities-impl v0.1.0 (*)
     ├── (dev) libdd-common v1.1.0 (*)
     ├── libdd-telemetry v2.0.0 (*)
     ├── multer v3.1.0 (*)
     ├── prost v0.14.3
     │   └── libdd-ddsketch v1.0.0
     │       └── libdd-telemetry v2.0.0 (*)
     ├── tokio v1.49.0
     │   ├── hyper v1.6.0 (*)
     │   ├── hyper-rustls v0.27.3 (*)
     │   ├── hyper-util v0.1.17 (*)
     │   ├── (dev) libdd-common v1.1.0 (*)
     │   ├── (dev) libdd-telemetry v2.0.0 (*)
     │   ├── tokio-rustls v0.26.0
     │   │   ├── hyper-rustls v0.27.3 (*)
     │   │   └── libdd-common v1.1.0 (*)
     │   └── tokio-util v0.7.12
     │       └── libdd-telemetry v2.0.0 (*)
     └── tokio-util v0.7.12 (*)

advisories FAILED, bans ok, sources ok

📦 libdd-trace-utils - 1 error(s)

Show output
error[vulnerability]: Integer overflow in `BytesMut::reserve`
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:42:1
   │
42 │ bytes 1.8.0 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2026-0007
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0007
   ├ In the unique reclaim path of `BytesMut::reserve`, the condition
     ```rs
     if v_capacity >= new_cap + offset
     ```
     uses an unchecked addition. When `new_cap + offset` overflows `usize` in release builds, this condition may incorrectly pass, causing `self.cap` to be set to a value that exceeds the actual allocated capacity. Subsequent APIs such as `spare_capacity_mut()` then trust this corrupted `cap` value and may create out-of-bounds slices, leading to UB.
     
     This behavior is observable in release builds (integer overflow wraps), whereas debug builds panic due to overflow checks.
     
     ## PoC
     
     ```rs
     use bytes::*;
     
     fn main() {
         let mut a = BytesMut::from(&b"hello world"[..]);
         let mut b = a.split_off(5);
     
         // Ensure b becomes the unique owner of the backing storage
         drop(a);
     
         // Trigger overflow in new_cap + offset inside reserve
         b.reserve(usize::MAX - 6);
     
         // This call relies on the corrupted cap and may cause UB & HBO
         b.put_u8(b'h');
     }
     ```
     
     # Workarounds
     
     Users of `BytesMut::reserve` are only affected if integer overflow checks are configured to wrap. When integer overflow is configured to panic, this issue does not apply.
   ├ Announcement: https://github.com/advisories/GHSA-434x-w66g-qw3r
   ├ Solution: Upgrade to >=1.11.1 (try `cargo update -p bytes`)
   ├ bytes v1.8.0
     ├── h2 v0.4.6
     │   └── hyper v1.6.0
     │       ├── httpmock v0.8.0-alpha.1
     │       │   └── libdd-trace-utils v1.0.0
     │       │       └── (dev) libdd-trace-utils v1.0.0 (*)
     │       ├── hyper-rustls v0.27.3
     │       │   └── libdd-common v1.1.0
     │       │       ├── libdd-capabilities-impl v0.1.0
     │       │       │   └── libdd-trace-utils v1.0.0 (*)
     │       │       └── libdd-trace-utils v1.0.0 (*)
     │       ├── hyper-util v0.1.17
     │       │   ├── httpmock v0.8.0-alpha.1 (*)
     │       │   ├── hyper-rustls v0.27.3 (*)
     │       │   └── libdd-common v1.1.0 (*)
     │       ├── libdd-capabilities-impl v0.1.0 (*)
     │       ├── libdd-common v1.1.0 (*)
     │       └── libdd-trace-utils v1.0.0 (*)
     ├── headers v0.4.0
     │   └── httpmock v0.8.0-alpha.1 (*)
     ├── http v1.1.0
     │   ├── h2 v0.4.6 (*)
     │   ├── headers v0.4.0 (*)
     │   ├── headers-core v0.3.0
     │   │   └── headers v0.4.0 (*)
     │   ├── http-body v1.0.1
     │   │   ├── http-body-util v0.1.2
     │   │   │   ├── httpmock v0.8.0-alpha.1 (*)
     │   │   │   ├── libdd-capabilities-impl v0.1.0 (*)
     │   │   │   ├── libdd-common v1.1.0 (*)
     │   │   │   └── libdd-trace-utils v1.0.0 (*)
     │   │   ├── hyper v1.6.0 (*)
     │   │   ├── hyper-util v0.1.17 (*)
     │   │   ├── libdd-common v1.1.0 (*)
     │   │   └── libdd-trace-utils v1.0.0 (*)
     │   ├── http-body-util v0.1.2 (*)
     │   ├── httpmock v0.8.0-alpha.1 (*)
     │   ├── hyper v1.6.0 (*)
     │   ├── hyper-rustls v0.27.3 (*)
     │   ├── hyper-util v0.1.17 (*)
     │   ├── libdd-capabilities v0.1.0
     │   │   ├── libdd-capabilities-impl v0.1.0 (*)
     │   │   ├── libdd-common v1.1.0 (*)
     │   │   └── libdd-trace-utils v1.0.0 (*)
     │   ├── libdd-capabilities-impl v0.1.0 (*)
     │   ├── libdd-common v1.1.0 (*)
     │   ├── libdd-trace-utils v1.0.0 (*)
     │   └── multer v3.1.0
     │       └── (dev) libdd-common v1.1.0 (*)
     ├── http-body v1.0.1 (*)
     ├── http-body-util v0.1.2 (*)
     ├── httpmock v0.8.0-alpha.1 (*)
     ├── hyper v1.6.0 (*)
     ├── hyper-util v0.1.17 (*)
     ├── libdd-capabilities v0.1.0 (*)
     ├── libdd-capabilities-impl v0.1.0 (*)
     ├── (dev) libdd-common v1.1.0 (*)
     ├── libdd-trace-utils v1.0.0 (*)
     ├── multer v3.1.0 (*)
     ├── prost v0.14.3
     │   ├── libdd-trace-protobuf v1.0.0
     │   │   ├── libdd-trace-normalization v1.0.0
     │   │   │   └── libdd-trace-utils v1.0.0 (*)
     │   │   └── libdd-trace-utils v1.0.0 (*)
     │   └── libdd-trace-utils v1.0.0 (*)
     ├── tokio v1.49.0
     │   ├── h2 v0.4.6 (*)
     │   ├── httpmock v0.8.0-alpha.1 (*)
     │   ├── hyper v1.6.0 (*)
     │   ├── hyper-rustls v0.27.3 (*)
     │   ├── hyper-util v0.1.17 (*)
     │   ├── (dev) libdd-common v1.1.0 (*)
     │   ├── (dev) libdd-trace-protobuf v1.0.0 (*)
     │   ├── (dev) libdd-trace-utils v1.0.0 (*)
     │   ├── tokio-rustls v0.26.0
     │   │   ├── hyper-rustls v0.27.3 (*)
     │   │   └── libdd-common v1.1.0 (*)
     │   └── tokio-util v0.7.12
     │       └── h2 v0.4.6 (*)
     └── tokio-util v0.7.12 (*)

advisories FAILED, bans ok, sources ok

Updated: 2026-02-23 17:32:03 UTC | Commit: b2ac367 | dependency-check job results

@codecov-commenter
Copy link

codecov-commenter commented Feb 11, 2026

Codecov Report

❌ Patch coverage is 61.98083% with 119 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.14%. Comparing base (c8121f4) to head (78b3826).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1555      +/-   ##
==========================================
- Coverage   71.20%   71.14%   -0.07%     
==========================================
  Files         423      425       +2     
  Lines       62486    62481       -5     
==========================================
- Hits        44492    44449      -43     
- Misses      17994    18032      +38     
Components Coverage Δ
libdd-crashtracker 63.18% <ø> (+0.16%) ⬆️
libdd-crashtracker-ffi 17.02% <ø> (+1.39%) ⬆️
libdd-alloc 98.77% <ø> (ø)
libdd-data-pipeline 87.66% <64.44%> (+0.38%) ⬆️
libdd-data-pipeline-ffi 76.20% <0.00%> (+4.68%) ⬆️
libdd-common 79.17% <85.71%> (-0.57%) ⬇️
libdd-common-ffi 73.40% <ø> (ø)
libdd-telemetry 62.48% <ø> (ø)
libdd-telemetry-ffi 16.75% <ø> (ø)
libdd-dogstatsd-client 82.64% <ø> (ø)
datadog-ipc 80.74% <ø> (-0.12%) ⬇️
libdd-profiling 81.56% <ø> (ø)
libdd-profiling-ffi 63.65% <ø> (ø)
datadog-sidecar 34.11% <50.00%> (-0.07%) ⬇️
datdog-sidecar-ffi 15.32% <ø> (-0.31%) ⬇️
spawn-worker 54.69% <ø> (ø)
libdd-tinybytes 93.16% <ø> (ø)
libdd-trace-normalization 81.71% <ø> (ø)
libdd-trace-obfuscation 94.21% <ø> (ø)
libdd-trace-protobuf 68.00% <ø> (ø)
libdd-trace-utils 88.75% <50.00%> (-0.23%) ⬇️
datadog-tracer-flare 86.86% <ø> (ø)
libdd-log 74.69% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@Aaalibaba42 Aaalibaba42 force-pushed the jwiriath/capability-traits-architecture branch from 91daca7 to b727c1c Compare February 12, 2026 12:46
@dd-octo-sts
Copy link
Contributor

dd-octo-sts bot commented Feb 12, 2026

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.51 MB 8.51 MB +0% (+24 B) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 97.20 MB 97.16 MB --.04% (-41.92 KB) 💪
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 112.85 MB 112.80 MB --.03% (-43.72 KB) 💪
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.12 MB 11.11 MB --.05% (-6.03 KB) 💪
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 27.13 MB 27.11 MB --.06% (-17.50 KB) 💪
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 76.26 KB 76.26 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 185.74 MB 185.71 MB --.01% (-32.00 KB) 💪
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 912.24 MB 910.45 MB --.19% (-1.78 MB) 💪
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 9.93 MB 9.92 MB --.10% (-10.50 KB) 💪
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 76.26 KB 76.26 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 24.75 MB 24.74 MB --.03% (-8.00 KB) 💪
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 51.40 MB 51.36 MB --.07% (-40.68 KB) 💪
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 22.95 MB 22.93 MB --.11% (-26.00 KB) 💪
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 77.44 KB 77.44 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 190.07 MB 189.92 MB --.07% (-152.00 KB) 💪
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 896.28 MB 894.46 MB --.20% (-1.81 MB) 💪
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 7.53 MB 7.52 MB --.09% (-7.50 KB) 💪
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 77.44 KB 77.44 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 26.50 MB 26.48 MB --.08% (-24.00 KB) 💪
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 47.03 MB 46.99 MB --.08% (-39.13 KB) 💪
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 85.25 MB 85.21 MB --.04% (-36.51 KB) 💪
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 10.04 MB 10.03 MB --.07% (-7.97 KB) 💪
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 105.87 MB 105.84 MB --.03% (-32.71 KB) 💪
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.79 MB 11.78 MB --.06% (-8.39 KB) 💪

@Aaalibaba42 Aaalibaba42 force-pushed the jwiriath/capability-traits-architecture branch from b727c1c to 624bdac Compare February 12, 2026 16:18
@Aaalibaba42 Aaalibaba42 marked this pull request as draft February 13, 2026 12:40
@Aaalibaba42 Aaalibaba42 force-pushed the jwiriath/capability-traits-architecture branch from a7a3941 to 3941878 Compare February 18, 2026 20:44
@datadog-official
Copy link

datadog-official bot commented Feb 18, 2026

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: f44f4cb | Docs | Datadog PR Page | Was this helpful? Give us feedback!

@Aaalibaba42 Aaalibaba42 force-pushed the jwiriath/capability-traits-architecture branch from dd6ca9d to 853e0db Compare February 19, 2026 13:01
@Aaalibaba42 Aaalibaba42 force-pushed the jwiriath/capability-traits-architecture branch from c0843b5 to 280cf5d Compare February 19, 2026 14:16
@pr-commenter
Copy link

pr-commenter bot commented Feb 19, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-02-26 14:51:15

Comparing candidate commit f44f4cb in PR branch jwiriath/capability-traits-architecture with baseline commit 40898a4 in branch main.

Found 11 performance improvements and 6 performance regressions! Performance is the same for 40 metrics, 2 unstable metrics.

scenario:credit_card/is_card_number/ 3782-8224-6310-005

  • 🟥 execution_time [+4.659µs; +4.917µs] or [+5.991%; +6.322%]
  • 🟥 throughput [-765588.836op/s; -725593.701op/s] or [-5.954%; -5.643%]

scenario:credit_card/is_card_number/ 378282246310005

  • 🟥 execution_time [+4.260µs; +4.465µs] or [+6.010%; +6.299%]
  • 🟥 throughput [-838902.887op/s; -799213.261op/s] or [-5.945%; -5.664%]

scenario:credit_card/is_card_number/378282246310005

  • 🟥 execution_time [+4.329µs; +4.513µs] or [+6.372%; +6.642%]
  • 🟥 throughput [-919086.135op/s; -880592.480op/s] or [-6.245%; -5.983%]

scenario:credit_card/is_card_number/x371413321323331

  • 🟩 execution_time [-301.679ns; -283.003ns] or [-4.997%; -4.688%]
  • 🟩 throughput [+8174686.904op/s; +8728854.578op/s] or [+4.935%; +5.270%]

scenario:credit_card/is_card_number_no_luhn/x371413321323331

  • 🟩 execution_time [-291.560ns; -272.591ns] or [-4.827%; -4.513%]
  • 🟩 throughput [+7853381.382op/s; +8416319.111op/s] or [+4.743%; +5.083%]

scenario:normalization/normalize_name/normalize_name/good

  • 🟩 execution_time [-519.221ns; -506.861ns] or [-5.015%; -4.895%]
  • 🟩 throughput [+4975245.371op/s; +5094678.564op/s] or [+5.151%; +5.275%]

scenario:normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000...

  • 🟩 execution_time [-39.859µs; -39.658µs] or [-7.454%; -7.417%]
  • 🟩 throughput [+149843.547op/s; +150616.033op/s] or [+8.012%; +8.054%]

scenario:normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters

  • 🟩 execution_time [-22.385µs; -22.325µs] or [-11.759%; -11.727%]
  • 🟩 throughput [+697963.614op/s; +699868.883op/s] or [+13.287%; +13.323%]

scenario:sql/obfuscate_sql_string

  • 🟩 execution_time [-4.481µs; -4.418µs] or [-4.989%; -4.919%]

Candidate

Candidate benchmark details

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching serializing traces from their internal representation to msgpack execution_time 14.881ms 14.937ms ± 0.036ms 14.931ms ± 0.013ms 14.947ms 14.985ms 15.041ms 15.258ms 2.19% 4.413 32.240 0.24% 0.003ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching serializing traces from their internal representation to msgpack execution_time [14.932ms; 14.942ms] or [-0.033%; +0.033%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sql/obfuscate_sql_string execution_time 85.223µs 85.373µs ± 0.134µs 85.355µs ± 0.047µs 85.400µs 85.496µs 85.777µs 86.770µs 1.66% 6.316 58.867 0.16% 0.009µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sql/obfuscate_sql_string execution_time [85.355µs; 85.392µs] or [-0.022%; +0.022%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample_frames_x1000 execution_time 4.202ms 4.208ms ± 0.007ms 4.207ms ± 0.001ms 4.208ms 4.213ms 4.233ms 4.288ms 1.93% 7.732 76.796 0.17% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample_frames_x1000 execution_time [4.207ms; 4.209ms] or [-0.024%; +0.024%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
tags/replace_trace_tags execution_time 2.320µs 2.381µs ± 0.017µs 2.382µs ± 0.007µs 2.389µs 2.405µs 2.412µs 2.417µs 1.48% -1.532 3.766 0.70% 0.001µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
tags/replace_trace_tags execution_time [2.379µs; 2.384µs] or [-0.097%; +0.097%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time 185.342µs 185.864µs ± 0.361µs 185.830µs ± 0.214µs 186.022µs 186.423µs 187.155µs 187.384µs 0.84% 1.774 4.476 0.19% 0.026µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5336645.611op/s 5380285.126op/s ± 10412.035op/s 5381271.494op/s ± 6195.135op/s 5387779.177op/s 5392641.207op/s 5394552.208op/s 5395436.971op/s 0.26% -1.755 4.396 0.19% 736.242op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.778µs 17.903µs ± 0.064µs 17.893µs ± 0.039µs 17.935µs 18.021µs 18.095µs 18.168µs 1.53% 1.084 1.682 0.36% 0.005µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 55043068.908op/s 55855888.347op/s ± 200076.333op/s 55886671.145op/s ± 121089.438op/s 56000990.285op/s 56102150.234op/s 56162985.020op/s 56250773.448op/s 0.65% -1.058 1.582 0.36% 14147.533op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 9.788µs 9.841µs ± 0.026µs 9.841µs ± 0.015µs 9.857µs 9.884µs 9.903µs 9.907µs 0.68% 0.078 -0.097 0.26% 0.002µs 1 200
normalization/normalize_name/normalize_name/good throughput 100936491.830op/s 101620730.277op/s ± 265538.927op/s 101619679.147op/s ± 157088.036op/s 101754552.986op/s 102105314.923op/s 102131499.879op/s 102164494.123op/s 0.54% -0.063 -0.105 0.26% 18776.438op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time [185.814µs; 185.914µs] or [-0.027%; +0.027%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5378842.118op/s; 5381728.133op/s] or [-0.027%; +0.027%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [17.895µs; 17.912µs] or [-0.050%; +0.050%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55828159.691op/s; 55883617.002op/s] or [-0.050%; +0.050%] None None None
normalization/normalize_name/normalize_name/good execution_time [9.837µs; 9.844µs] or [-0.036%; +0.036%] None None None
normalization/normalize_name/normalize_name/good throughput [101583929.136op/s; 101657531.419op/s] or [-0.036%; +0.036%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching deserializing traces from msgpack to their internal representation execution_time 48.292ms 48.582ms ± 1.009ms 48.446ms ± 0.070ms 48.521ms 48.694ms 54.154ms 58.045ms 19.81% 8.257 69.040 2.07% 0.071ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching deserializing traces from msgpack to their internal representation execution_time [48.443ms; 48.722ms] or [-0.288%; +0.288%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample2_frames_x1000 execution_time 720.430µs 722.603µs ± 0.948µs 722.537µs ± 0.618µs 723.156µs 724.276µs 724.790µs 726.534µs 0.55% 0.531 0.902 0.13% 0.067µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample2_frames_x1000 execution_time [722.472µs; 722.735µs] or [-0.018%; +0.018%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
two way interface execution_time 17.879µs 25.498µs ± 9.515µs 18.130µs ± 0.208µs 33.804µs 43.112µs 43.608µs 71.680µs 295.37% 1.035 1.174 37.22% 0.673µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [24.179µs; 26.817µs] or [-5.172%; +5.172%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sdk_test_data/rules-based execution_time 144.257µs 146.511µs ± 1.713µs 146.257µs ± 0.562µs 146.815µs 148.323µs 152.950µs 162.682µs 11.23% 5.482 43.033 1.17% 0.121µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sdk_test_data/rules-based execution_time [146.273µs; 146.748µs] or [-0.162%; +0.162%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
receiver_entry_point/report/2597 execution_time 3.418ms 3.442ms ± 0.014ms 3.441ms ± 0.008ms 3.448ms 3.467ms 3.498ms 3.506ms 1.91% 1.567 4.475 0.40% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
receiver_entry_point/report/2597 execution_time [3.440ms; 3.444ms] or [-0.056%; +0.056%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
ip_address/quantize_peer_ip_address_benchmark execution_time 4.976µs 5.065µs ± 0.049µs 5.063µs ± 0.034µs 5.092µs 5.149µs 5.154µs 5.155µs 1.82% 0.203 -0.853 0.96% 0.003µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
ip_address/quantize_peer_ip_address_benchmark execution_time [5.059µs; 5.072µs] or [-0.133%; +0.133%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
single_flag_killswitch/rules-based execution_time 186.899ns 189.513ns ± 2.073ns 189.067ns ± 1.381ns 190.687ns 193.360ns 194.856ns 199.249ns 5.39% 1.203 1.844 1.09% 0.147ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
single_flag_killswitch/rules-based execution_time [189.226ns; 189.800ns] or [-0.152%; +0.152%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_trace/test_trace execution_time 244.763ns 253.984ns ± 11.528ns 250.134ns ± 3.399ns 254.557ns 285.677ns 291.368ns 294.097ns 17.58% 2.063 3.295 4.53% 0.815ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_trace/test_trace execution_time [252.386ns; 255.582ns] or [-0.629%; +0.629%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
concentrator/add_spans_to_concentrator execution_time 10.688ms 10.720ms ± 0.016ms 10.720ms ± 0.010ms 10.730ms 10.747ms 10.765ms 10.778ms 0.54% 0.584 0.547 0.15% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
concentrator/add_spans_to_concentrator execution_time [10.718ms; 10.723ms] or [-0.020%; +0.020%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
redis/obfuscate_redis_string execution_time 33.844µs 34.304µs ± 0.684µs 34.009µs ± 0.048µs 34.063µs 35.695µs 35.767µs 37.794µs 11.13% 1.985 3.291 1.99% 0.048µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
redis/obfuscate_redis_string execution_time [34.209µs; 34.399µs] or [-0.277%; +0.277%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time 494.040µs 494.950µs ± 0.553µs 494.878µs ± 0.304µs 495.193µs 495.719µs 496.470µs 498.925µs 0.82% 2.676 14.573 0.11% 0.039µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 2004308.595op/s 2020407.445op/s ± 2251.426op/s 2020699.598op/s ± 1241.411op/s 2021921.164op/s 2022995.298op/s 2023712.594op/s 2024128.511op/s 0.17% -2.645 14.297 0.11% 159.200op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 372.623µs 373.242µs ± 0.273µs 373.239µs ± 0.175µs 373.409µs 373.745µs 373.901µs 373.939µs 0.19% 0.227 -0.368 0.07% 0.019µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2674235.140op/s 2679228.809op/s ± 1956.952op/s 2679246.077op/s ± 1259.490op/s 2680533.572op/s 2682214.774op/s 2683048.975op/s 2683681.049op/s 0.17% -0.224 -0.370 0.07% 138.377op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 167.704µs 168.015µs ± 0.149µs 168.004µs ± 0.096µs 168.104µs 168.291µs 168.425µs 168.542µs 0.32% 0.675 0.671 0.09% 0.011µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5933249.017op/s 5951849.867op/s ± 5274.916op/s 5952242.528op/s ± 3412.633op/s 5955646.500op/s 5959246.171op/s 5961343.361op/s 5962889.472op/s 0.18% -0.669 0.658 0.09% 372.993op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.569µs 36.683µs ± 0.054µs 36.681µs ± 0.036µs 36.719µs 36.764µs 36.832µs 36.864µs 0.50% 0.388 0.333 0.15% 0.004µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 27127086.933op/s 27260534.087op/s ± 40399.244op/s 27261724.602op/s ± 26727.425op/s 27286890.302op/s 27324272.086op/s 27339080.247op/s 27345383.320op/s 0.31% -0.379 0.316 0.15% 2856.658op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 45.287µs 45.503µs ± 0.226µs 45.492µs ± 0.061µs 45.545µs 45.601µs 46.003µs 47.739µs 4.94% 7.887 70.928 0.50% 0.016µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 20947107.158op/s 21977258.471op/s ± 105111.259op/s 21981835.922op/s ± 29445.892op/s 22016782.539op/s 22054325.096op/s 22074331.471op/s 22081419.099op/s 0.45% -7.727 68.888 0.48% 7432.488op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time [494.874µs; 495.027µs] or [-0.015%; +0.015%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [2020095.419op/s; 2020719.471op/s] or [-0.015%; +0.015%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [373.204µs; 373.280µs] or [-0.010%; +0.010%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2678957.594op/s; 2679500.024op/s] or [-0.010%; +0.010%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [167.994µs; 168.036µs] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5951118.814op/s; 5952580.919op/s] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [36.676µs; 36.691µs] or [-0.021%; +0.021%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [27254935.140op/s; 27266133.033op/s] or [-0.021%; +0.021%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [45.471µs; 45.534µs] or [-0.069%; +0.069%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21962691.061op/s; 21991825.880op/s] or [-0.066%; +0.066%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
write only interface execution_time 1.241µs 3.164µs ± 1.429µs 2.995µs ± 0.024µs 3.015µs 3.340µs 13.741µs 15.157µs 406.06% 7.523 57.164 45.06% 0.101µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [2.966µs; 3.362µs] or [-6.261%; +6.261%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
credit_card/is_card_number/ execution_time 3.892µs 3.911µs ± 0.002µs 3.911µs ± 0.001µs 3.912µs 3.915µs 3.918µs 3.919µs 0.22% -1.646 17.759 0.06% 0.000µs 1 200
credit_card/is_card_number/ throughput 255143608.333op/s 255681553.753op/s ± 163224.507op/s 255701137.873op/s ± 76618.565op/s 255770688.626op/s 255862217.935op/s 255909624.787op/s 256953160.564op/s 0.49% 1.679 18.019 0.06% 11541.716op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 80.027µs 82.563µs ± 0.703µs 82.610µs ± 0.532µs 83.124µs 83.573µs 83.668µs 84.127µs 1.84% -0.416 -0.114 0.85% 0.050µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 11886762.184op/s 12112880.220op/s ± 103555.431op/s 12105012.108op/s ± 78425.589op/s 12184386.035op/s 12301310.071op/s 12347218.263op/s 12495816.225op/s 3.23% 0.461 -0.021 0.85% 7322.475op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 74.278µs 75.237µs ± 0.320µs 75.189µs ± 0.226µs 75.463µs 75.800µs 75.933µs 76.013µs 1.10% 0.270 -0.428 0.42% 0.023µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13155653.538op/s 13291517.216op/s ± 56508.527op/s 13299791.890op/s ± 40049.192op/s 13332556.438op/s 13365166.821op/s 13403631.937op/s 13462895.652op/s 1.23% -0.251 -0.423 0.42% 3995.756op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.902µs 3.911µs ± 0.003µs 3.911µs ± 0.001µs 3.912µs 3.917µs 3.919µs 3.922µs 0.30% 0.912 1.987 0.07% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254952962.325op/s 255677482.609op/s ± 184585.839op/s 255711749.958op/s ± 93501.124op/s 255794010.696op/s 255920435.788op/s 256000224.017op/s 256288207.064op/s 0.23% -0.905 1.976 0.07% 13052.190op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 71.523µs 72.370µs ± 0.334µs 72.316µs ± 0.214µs 72.600µs 72.969µs 73.164µs 73.305µs 1.37% 0.341 -0.120 0.46% 0.024µs 1 200
credit_card/is_card_number/378282246310005 throughput 13641635.607op/s 13818232.167op/s ± 63698.838op/s 13828116.619op/s ± 40742.916op/s 13861790.669op/s 13915547.354op/s 13948979.909op/s 13981505.184op/s 1.11% -0.317 -0.131 0.46% 4504.188op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 52.136µs 52.197µs ± 0.032µs 52.191µs ± 0.018µs 52.214µs 52.245µs 52.277µs 52.423µs 0.44% 1.974 10.742 0.06% 0.002µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 19075570.057op/s 19158196.894op/s ± 11837.544op/s 19160420.320op/s ± 6702.314op/s 19165949.295op/s 19174421.609op/s 19178755.597op/s 19180782.774op/s 0.11% -1.958 10.601 0.06% 837.041op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 5.691µs 5.745µs ± 0.067µs 5.718µs ± 0.023µs 5.767µs 5.908µs 5.958µs 5.993µs 4.81% 1.702 2.446 1.16% 0.005µs 1 200
credit_card/is_card_number/x371413321323331 throughput 166859687.238op/s 174096526.177op/s ± 1978807.082op/s 174882753.475op/s ± 697748.827op/s 175532870.349op/s 175640481.307op/s 175666292.377op/s 175703387.596op/s 0.47% -1.649 2.227 1.13% 139922.791op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.895µs 3.911µs ± 0.002µs 3.911µs ± 0.001µs 3.912µs 3.915µs 3.916µs 3.918µs 0.16% -1.460 11.576 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 255251421.152op/s 255671933.084op/s ± 147167.789op/s 255668565.550op/s ± 87363.529op/s 255761619.369op/s 255858002.551op/s 255930170.916op/s 256718685.416op/s 0.41% 1.479 11.729 0.06% 10406.334op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 64.209µs 64.405µs ± 0.131µs 64.380µs ± 0.065µs 64.455µs 64.694µs 64.794µs 65.077µs 1.08% 1.934 5.660 0.20% 0.009µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15366353.065op/s 15526752.919op/s ± 31374.351op/s 15532771.063op/s ± 15645.167op/s 15547654.545op/s 15562689.941op/s 15571815.031op/s 15574028.750op/s 0.27% -1.910 5.526 0.20% 2218.502op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 57.378µs 57.609µs ± 0.144µs 57.580µs ± 0.071µs 57.659µs 57.910µs 58.092µs 58.228µs 1.12% 1.521 3.354 0.25% 0.010µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 17173959.776op/s 17358608.410op/s ± 43278.989op/s 17367108.434op/s ± 21330.862op/s 17387619.146op/s 17413497.377op/s 17424514.204op/s 17428216.282op/s 0.35% -1.498 3.258 0.25% 3060.287op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.893µs 3.911µs ± 0.002µs 3.911µs ± 0.001µs 3.913µs 3.915µs 3.917µs 3.917µs 0.16% -1.642 12.302 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 255267347.373op/s 255664331.497op/s ± 163384.026op/s 255665280.663op/s ± 88627.536op/s 255753510.029op/s 255885892.145op/s 256000568.228op/s 256845350.471op/s 0.46% 1.664 12.483 0.06% 11552.995op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 54.626µs 54.952µs ± 0.250µs 54.890µs ± 0.130µs 55.076µs 55.381µs 55.685µs 56.625µs 3.16% 2.159 9.447 0.45% 0.018µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 17660148.110op/s 18197969.659op/s ± 81991.364op/s 18218096.908op/s ± 43126.298op/s 18254064.104op/s 18287902.370op/s 18301767.567op/s 18306449.362op/s 0.48% -2.070 8.690 0.45% 5797.665op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 52.128µs 52.197µs ± 0.038µs 52.191µs ± 0.018µs 52.211µs 52.264µs 52.303µs 52.450µs 0.50% 1.985 9.305 0.07% 0.003µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 19065875.380op/s 19158069.121op/s ± 13893.383op/s 19160469.079op/s ± 6562.259op/s 19166105.701op/s 19176105.710op/s 19180980.274op/s 19183511.772op/s 0.12% -1.970 9.179 0.07% 982.411op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 5.691µs 5.758µs ± 0.068µs 5.731µs ± 0.035µs 5.796µs 5.894µs 5.950µs 6.016µs 4.97% 1.279 1.415 1.17% 0.005µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 166231228.120op/s 173709731.891op/s ± 2008880.238op/s 174486065.549op/s ± 1054336.934op/s 175481544.838op/s 175639858.191op/s 175708206.552op/s 175718295.592op/s 0.71% -1.219 1.166 1.15% 142049.284op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
credit_card/is_card_number/ execution_time [3.911µs; 3.911µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/ throughput [255658932.406op/s; 255704175.100op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [82.465µs; 82.660µs] or [-0.118%; +0.118%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12098528.433op/s; 12127232.007op/s] or [-0.118%; +0.118%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [75.193µs; 75.282µs] or [-0.059%; +0.059%] None None None
credit_card/is_card_number/ 378282246310005 throughput [13283685.678op/s; 13299348.754op/s] or [-0.059%; +0.059%] None None None
credit_card/is_card_number/37828224631 execution_time [3.911µs; 3.912µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/37828224631 throughput [255651900.787op/s; 255703064.431op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/378282246310005 execution_time [72.323µs; 72.416µs] or [-0.064%; +0.064%] None None None
credit_card/is_card_number/378282246310005 throughput [13809404.121op/s; 13827060.214op/s] or [-0.064%; +0.064%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [52.193µs; 52.201µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [19156556.324op/s; 19159837.464op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/x371413321323331 execution_time [5.735µs; 5.754µs] or [-0.161%; +0.161%] None None None
credit_card/is_card_number/x371413321323331 throughput [173822282.547op/s; 174370769.808op/s] or [-0.158%; +0.158%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.911µs; 3.912µs] or [-0.008%; +0.008%] None None None
credit_card/is_card_number_no_luhn/ throughput [255651537.044op/s; 255692329.124op/s] or [-0.008%; +0.008%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [64.387µs; 64.423µs] or [-0.028%; +0.028%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15522404.735op/s; 15531101.102op/s] or [-0.028%; +0.028%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [57.589µs; 57.629µs] or [-0.035%; +0.035%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [17352610.359op/s; 17364606.462op/s] or [-0.035%; +0.035%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.911µs; 3.912µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255641688.042op/s; 255686974.952op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [54.918µs; 54.987µs] or [-0.063%; +0.063%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [18186606.445op/s; 18209332.874op/s] or [-0.062%; +0.062%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [52.192µs; 52.203µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [19156143.631op/s; 19159994.610op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [5.748µs; 5.767µs] or [-0.163%; +0.163%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [173431320.410op/s; 173988143.371op/s] or [-0.160%; +0.160%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz f44f4cb 1772116461 jwiriath/capability-traits-architecture
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching string interning on wordpress profile execution_time 162.352µs 163.235µs ± 0.319µs 163.210µs ± 0.134µs 163.345µs 163.657µs 163.863µs 166.226µs 1.85% 4.297 38.052 0.19% 0.023µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching string interning on wordpress profile execution_time [163.191µs; 163.279µs] or [-0.027%; +0.027%] None None None

Baseline

Omitted due to size.

@Aaalibaba42 Aaalibaba42 force-pushed the jwiriath/capability-traits-architecture branch from 16a302a to 78b3826 Compare February 23, 2026 17:26
@Aaalibaba42 Aaalibaba42 marked this pull request as ready for review February 23, 2026 17:59
@Aaalibaba42 Aaalibaba42 requested review from a team as code owners February 23, 2026 17:59
let default_client = http_common::new_default_client();
default_client.request(req).await
};
let client = DefaultHttpClient::new_client();
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think that's ok, the reason we passed the http client all the way down here is to allow connection reuse when sending traces, as recreating connections everytime has a pretty big performance impact

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yep my bad, originally the request method was static and created a new client everytime, then I added the possibility of reusing a client but missed this one to rollback

Timeout,
ResponseBody(String),
InvalidRequest(String),
Other(String),
Copy link
Contributor

Choose a reason for hiding this comment

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

Good use case for thiserror, also I think having the content of the enum as anyhow::Error rather than String will be slightly more efficient in the happy path as anyhow::Error is a single pointer wide, whereas String is 3 pointer wide.

So the Error type will be smaller

Comment on lines 31 to 32
let (parts, body) = req.into_parts();
let hyper_req = hyper::Request::from_parts(parts, http_common::Body::from_bytes(body));
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
let (parts, body) = req.into_parts();
let hyper_req = hyper::Request::from_parts(parts, http_common::Body::from_bytes(body));
let hyper_req = req.map(http_common::Body::from_bytes)

Comment on lines 17 to 19
[dependencies]
http = "1.0"
bytes = "1"
Copy link
Contributor

Choose a reason for hiding this comment

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

🔥

Copy link
Contributor

Choose a reason for hiding this comment

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

minimum should be 1.11.1 #1628

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Consolidated with 1.4 as other crates had.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants