Skip to content

feat(library-config)!: make libdd-library-config no_std compatible#1770

Draft
pawelchcki wants to merge 19 commits intomainfrom
pawel/no-std-library-config
Draft

feat(library-config)!: make libdd-library-config no_std compatible#1770
pawelchcki wants to merge 19 commits intomainfrom
pawel/no-std-library-config

Conversation

@pawelchcki
Copy link
Contributor

Summary

  • Make libdd-library-config compile under no_std (with alloc), with std enabled by default. Core types (ProcessInfo, LibraryConfig, Configurator, etc.) and the matching engine are available in no_std; file I/O, YAML parsing, and protobuf support are gated behind the std feature.
  • Make libdd-library-config-ffi gate all FFI bindings behind a std feature (default on). Without std, the crate is effectively empty since C bindings require a hosted environment.
  • Fix downstream libdd-profiling-ffi to explicitly enable std when pulling in the config FFI crate.

Changes

  • libdd-library-config/Cargo.toml: Added std feature (default) gating serde_yaml, prost, rand, rmp, rmp-serde, libdd-trace-protobuf, memfd, rustix. Changed serde and anyhow to default-features = false. Added hashbrown for no_std HashMap support.
  • libdd-library-config/src/lib.rs: Added #![cfg_attr(not(feature = "std"), no_std)], replaced std imports with core/alloc equivalents, gated modules and functions requiring std.
  • libdd-library-config-ffi/Cargo.toml: Added std feature gating libdd-common, libdd-common-ffi, anyhow. cbindgen implies std.
  • libdd-library-config-ffi/src/lib.rs: Gated all FFI types and extern "C" functions behind #[cfg(feature = "std")].
  • libdd-profiling-ffi/Cargo.toml: Added libdd-library-config-ffi/std to datadog-library-config-ffi feature.

Test plan

  • cargo build -p libdd-library-config --no-default-features — compiles under no_std
  • cargo build -p libdd-library-config — compiles with std (default)
  • cargo check -p libdd-library-config-ffi --no-default-features — checks under no_std
  • cargo build -p libdd-library-config-ffi — compiles with std (default)
  • cargo test -p libdd-library-config — all 10 tests pass
  • cargo test -p libdd-library-config-ffi — tests pass

…fig-ffi no_std compatible

Add no_std support to both crates with std enabled by default. Core
types and the matching engine compile under no_std+alloc, while
file I/O, YAML parsing, and FFI bindings are gated behind the std
feature flag.
@github-actions
Copy link

github-actions bot commented Mar 20, 2026

📚 Documentation Check Results

⚠️ 316 documentation warning(s) found

📦 libdd-common - 166 warning(s)

📦 libdd-library-config - 150 warning(s)


Updated: 2026-03-20 20:33:06 UTC | Commit: 623c3f4 | missing-docs job results

@github-actions
Copy link

github-actions bot commented Mar 20, 2026

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/pawel/no-std-library-config

Summary by Rule

Rule Base Branch PR Branch Change
expect_used 2 2 No change (0%)
panic 1 1 No change (0%)
unwrap_used 1 1 No change (0%)
Total 4 4 No change (0%)

Annotation Counts by File

File Base Branch PR Branch Change
libdd-common-ffi/src/cstr.rs 1 1 No change (0%)
libdd-common-ffi/src/slice.rs 2 2 No change (0%)
libdd-common/src/cstr.rs 1 1 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 28 28 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-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 8 9 ⚠️ +1 (+12.5%)
libdd-trace-utils 15 15 No change (0%)
Total 207 208 ⚠️ +1 (+0.5%)

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 Mar 20, 2026

🔒 Cargo Deny Results

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

📦 libdd-common - 2 error(s)

Show output
error[vulnerability]: AWS-LC X.509 Name Constraints Bypass via Wildcard/Unicode CN
  ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:6:1
  │
6 │ aws-lc-sys 0.38.0 registry+https://github.com/rust-lang/crates.io-index
  │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
  │
  ├ ID: RUSTSEC-2026-0044
  ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0044
  ├ A logic error in CN (Common Name) validation allows certificates with
    wildcard or raw UTF-8 Unicode CN values to bypass name constraints
    enforcement. The `cn2dnsid` function does not recognize these CN patterns
    as valid DNS identifiers, causing `NAME_CONSTRAINTS_check_CN` to skip
    validation. However, `X509_check_host` accepts these CN values when no
    dNSName SAN is present, allowing certificates to bypass name constraints
    while still being used for hostname verification.
    
    Customers of AWS services do not need to take action. Applications using
    `aws-lc-sys` should upgrade to the most recent release of `aws-lc-sys`.
    
    ## Workarounds
    
    Applications that set `X509_CHECK_FLAG_NEVER_CHECK_SUBJECT` to disable CN
    fallback are not affected. Applications that only encounter certificates
    with dNSName SANs (standard for public WebPKI) are also not affected.
    
    Otherwise, there is no workaround and applications using `aws-lc-sys` should
    upgrade to the most recent releases of `aws-lc-sys`.
  ├ Solution: Upgrade to >=0.39.0 (try `cargo update -p aws-lc-sys`)
  ├ aws-lc-sys v0.38.0
    └── aws-lc-rs v1.16.1
        ├── rustls v0.23.37
        │   ├── hyper-rustls v0.27.7
        │   │   ├── libdd-common v3.0.0
        │   │   └── reqwest v0.13.1
        │   │       └── libdd-common v3.0.0 (*)
        │   ├── libdd-common v3.0.0 (*)
        │   ├── reqwest v0.13.1 (*)
        │   ├── rustls-platform-verifier v0.6.2
        │   │   └── reqwest v0.13.1 (*)
        │   └── tokio-rustls v0.26.0
        │       ├── hyper-rustls v0.27.7 (*)
        │       ├── libdd-common v3.0.0 (*)
        │       └── reqwest v0.13.1 (*)
        └── rustls-webpki v0.103.9
            ├── rustls v0.23.37 (*)
            └── rustls-platform-verifier v0.6.2 (*)

error[vulnerability]: CRL Distribution Point Scope Check Logic Error in AWS-LC
  ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:6:1
  │
6 │ aws-lc-sys 0.38.0 registry+https://github.com/rust-lang/crates.io-index
  │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
  │
  ├ ID: RUSTSEC-2026-0048
  ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0048
  ├ A logic error in CRL distribution point matching in AWS-LC allows a revoked
    certificate to bypass revocation checks during certificate validation, when
    the application enables CRL checking and uses partitioned CRLs with Issuing
    Distribution Point (IDP) extensions.
    
    Customers of AWS services do not need to take action. `aws-lc-sys` contains
    code from AWS-LC. Applications using `aws-lc-sys` should upgrade to the most
    recent release of `aws-lc-sys`.
    
    ## Workarounds
    
    Applications can workaround this issue if they do not enable CRL checking
    (`X509_V_FLAG_CRL_CHECK`). Applications using complete (non-partitioned)
    CRLs without IDP extensions are also not affected.
    
    Otherwise, there is no workaround and applications using `aws-lc-sys` should
    upgrade to the most recent releases of `aws-lc-sys`.
  ├ Announcement: https://aws.amazon.com/security/security-bulletins/2026-010-AWS
  ├ Solution: Upgrade to >=0.39.0 (try `cargo update -p aws-lc-sys`)
  ├ aws-lc-sys v0.38.0
    └── aws-lc-rs v1.16.1
        ├── rustls v0.23.37
        │   ├── hyper-rustls v0.27.7
        │   │   ├── libdd-common v3.0.0
        │   │   └── reqwest v0.13.1
        │   │       └── libdd-common v3.0.0 (*)
        │   ├── libdd-common v3.0.0 (*)
        │   ├── reqwest v0.13.1 (*)
        │   ├── rustls-platform-verifier v0.6.2
        │   │   └── reqwest v0.13.1 (*)
        │   └── tokio-rustls v0.26.0
        │       ├── hyper-rustls v0.27.7 (*)
        │       ├── libdd-common v3.0.0 (*)
        │       └── reqwest v0.13.1 (*)
        └── rustls-webpki v0.103.9
            ├── rustls v0.23.37 (*)
            └── rustls-platform-verifier v0.6.2 (*)

advisories FAILED, bans ok, sources ok

📦 libdd-library-config - ✅ No issues


Updated: 2026-03-20 20:33:09 UTC | Commit: 623c3f4 | dependency-check job results

Add dlmalloc (non-Linux) and rustix-dlmalloc (Linux) as global
allocators, a panic handler, and no-std-dev/no-std-release profiles
with panic="abort" to support building the FFI crate as
staticlib/cdylib without std.
… builds

Define minimal #[repr(C)] FFI types (Slice, CharSlice, CStr, AsBytes)
locally for no_std, matching libdd-common-ffi layout. This enables
ddog_library_configurator_new, with_local_path, with_fleet_path,
with_process_info, and drop to compile and link without std.
Add CString and Vec types to the local ffi_types module for no_std,
with proper Drop impls using alloc::ffi::CString. Un-gate the
LibraryConfig struct while keeping rs_vec_to_ffi and
logged_result_to_ffi_with_messages behind std.
@datadog-prod-us1-3
Copy link

datadog-prod-us1-3 bot commented Mar 20, 2026

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

🎯 Code Coverage (details)
Patch Coverage: 56.52%
Overall Coverage: 71.27% (-0.05%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 3243266 | Docs | Datadog PR Page | Was this helpful? React with 👍/👎 or give us feedback!

Replace the custom ffi_types::CString and Vec wrappers with a
re-export of alloc::ffi::CString. In no_std mode LibraryConfig
fields are alloc::ffi::CString (no C header generation happens
without std anyway).
@dd-octo-sts
Copy link
Contributor

dd-octo-sts bot commented Mar 20, 2026

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.70 MB 8.63 MB --.71% (-64.00 KB) 💪
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 100.37 MB 100.55 MB +.17% (+179.10 KB) 🔍
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 117.04 MB 117.36 MB +.27% (+328.37 KB) 🔍
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.28 MB 11.22 MB --.54% (-62.50 KB) 💪
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 27.18 MB 27.16 MB --.08% (-24.00 KB) 💪
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 77.50 KB 77.50 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 186.53 MB 187.33 MB +.43% (+824.00 KB) 🔍
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 917.79 MB 916.72 MB --.11% (-1.07 MB) 💪
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 9.94 MB 9.95 MB +.07% (+8.00 KB) 🔍
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 77.50 KB 77.50 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 24.78 MB 24.82 MB +.15% (+40.00 KB) 🔍
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 51.47 MB 51.52 MB +.10% (+53.07 KB) 🔍
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 22.97 MB 22.95 MB --.10% (-24.50 KB) 💪
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 78.71 KB 78.71 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 190.30 MB 191.10 MB +.41% (+816.00 KB) 🔍
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 900.94 MB 899.79 MB --.12% (-1.14 MB) 💪
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 7.54 MB 7.53 MB --.12% (-10.00 KB) 💪
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 78.71 KB 78.71 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 26.52 MB 26.55 MB +.08% (+24.00 KB) 🔍
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 47.09 MB 47.11 MB +.04% (+21.50 KB) 🔍
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 87.59 MB 87.73 MB +.16% (+150.42 KB) 🔍
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 10.22 MB 10.21 MB --.11% (-12.00 KB) 💪
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 109.92 MB 110.17 MB +.22% (+258.61 KB) 🔍
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.97 MB 11.96 MB --.03% (-4.36 KB) 💪

@codecov-commenter
Copy link

codecov-commenter commented Mar 20, 2026

Codecov Report

❌ Patch coverage is 56.52174% with 20 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.26%. Comparing base (d88e70e) to head (3243266).
⚠️ Report is 8 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1770      +/-   ##
==========================================
- Coverage   71.28%   71.26%   -0.02%     
==========================================
  Files         431      432       +1     
  Lines       64585    64873     +288     
==========================================
+ Hits        46038    46233     +195     
- Misses      18547    18640      +93     
Components Coverage Δ
libdd-crashtracker 64.91% <ø> (-0.02%) ⬇️
libdd-crashtracker-ffi 34.86% <ø> (ø)
libdd-alloc 98.77% <ø> (ø)
libdd-data-pipeline 87.65% <ø> (-0.34%) ⬇️
libdd-data-pipeline-ffi 73.69% <ø> (-1.52%) ⬇️
libdd-common 79.70% <47.82%> (-0.18%) ⬇️
libdd-common-ffi 73.64% <47.82%> (-0.23%) ⬇️
libdd-telemetry 62.48% <ø> (ø)
libdd-telemetry-ffi 16.75% <ø> (ø)
libdd-dogstatsd-client 82.64% <ø> (ø)
datadog-ipc 80.29% <ø> (ø)
libdd-profiling 81.61% <ø> (ø)
libdd-profiling-ffi 64.94% <ø> (ø)
datadog-sidecar 31.54% <ø> (-0.06%) ⬇️
datdog-sidecar-ffi 8.64% <ø> (-0.08%) ⬇️
spawn-worker 54.69% <ø> (ø)
libdd-tinybytes 93.16% <ø> (ø)
libdd-trace-normalization 81.71% <ø> (ø)
libdd-trace-obfuscation 92.26% <ø> (+0.46%) ⬆️
libdd-trace-protobuf 68.25% <ø> (ø)
libdd-trace-utils 89.08% <ø> (+0.02%) ⬆️
datadog-tracer-flare 88.30% <ø> (+1.42%) ⬆️
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.

@pr-commenter
Copy link

pr-commenter bot commented Mar 20, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-03-20 20:49:20

Comparing candidate commit 3243266 in PR branch pawel/no-std-library-config with baseline commit 5d5a596 in branch main.

Found 14 performance improvements and 0 performance regressions! Performance is the same for 45 metrics, 2 unstable metrics.

Explanation

This is an A/B test comparing a candidate commit's performance against that of a baseline commit. Performance changes are noted in the tables below as:

  • 🟩 = significantly better candidate vs. baseline
  • 🟥 = significantly worse candidate vs. baseline

We compute a confidence interval (CI) over the relative difference of means between metrics from the candidate and baseline commits, considering the baseline as the reference.

If the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD), the change is considered significant.

Feel free to reach out to #apm-benchmarking-platform on Slack if you have any questions.

More details about the CI and significant changes

You can imagine this CI as a range of values that is likely to contain the true difference of means between the candidate and baseline commits.

CIs of the difference of means are often centered around 0%, because often changes are not that big:

---------------------------------(------|---^--------)-------------------------------->
                              -0.6%    0%  0.3%     +1.2%
                                 |          |        |
         lower bound of the CI --'          |        |
sample mean (center of the CI) -------------'        |
         upper bound of the CI ----------------------'

As described above, a change is considered significant if the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD).

For instance, for an execution time metric, this confidence interval indicates a significantly worse performance:

----------------------------------------|---------|---(---------^---------)---------->
                                       0%        1%  1.3%      2.2%      3.1%
                                                  |   |         |         |
       significant impact threshold --------------'   |         |         |
                      lower bound of CI --------------'         |         |
       sample mean (center of the CI) --------------------------'         |
                      upper bound of CI ----------------------------------'

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

  • 🟩 execution_time [-3.491µs; -3.213µs] or [-4.360%; -4.013%]
  • 🟩 throughput [+523892.248op/s; +570070.617op/s] or [+4.194%; +4.564%]

scenario:credit_card/is_card_number/ 378282246310005

  • 🟩 execution_time [-15.872µs; -15.714µs] or [-18.814%; -18.627%]
  • 🟩 throughput [+2718514.960op/s; +2740916.111op/s] or [+22.932%; +23.121%]

scenario:credit_card/is_card_number/378282246310005

  • 🟩 execution_time [-5.647µs; -5.530µs] or [-8.018%; -7.853%]
  • 🟩 throughput [+1211504.087op/s; +1235522.463op/s] or [+8.532%; +8.701%]

scenario:credit_card/is_card_number/37828224631000521389798

  • 🟩 execution_time [-7.458µs; -7.420µs] or [-14.038%; -13.967%]
  • 🟩 throughput [+3056203.836op/s; +3073912.169op/s] or [+16.236%; +16.330%]

scenario:credit_card/is_card_number_no_luhn/ 378282246310005

  • 🟩 execution_time [-4.763µs; -4.710µs] or [-8.086%; -7.997%]
  • 🟩 throughput [+1476664.639op/s; +1492285.631op/s] or [+8.698%; +8.790%]

scenario:credit_card/is_card_number_no_luhn/378282246310005

  • 🟩 execution_time [-5.135µs; -5.075µs] or [-9.228%; -9.120%]
  • 🟩 throughput [+1804975.558op/s; +1825414.378op/s] or [+10.043%; +10.157%]

scenario:credit_card/is_card_number_no_luhn/37828224631000521389798

  • 🟩 execution_time [-7.428µs; -7.387µs] or [-13.979%; -13.903%]
  • 🟩 throughput [+3039350.567op/s; +3058359.021op/s] or [+16.150%; +16.251%]

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 3243266 1774038746 pawel/no-std-library-config
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 49.114ms 49.583ms ± 1.225ms 49.458ms ± 0.076ms 49.507ms 49.631ms 57.430ms 62.017ms 25.39% 8.308 71.149 2.46% 0.087ms 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 [49.413ms; 49.753ms] or [-0.342%; +0.342%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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 12.948ms 12.981ms ± 0.016ms 12.980ms ± 0.011ms 12.991ms 13.006ms 13.019ms 13.040ms 0.46% 0.411 0.176 0.12% 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 [12.979ms; 12.983ms] or [-0.017%; +0.017%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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 186.083µs 186.470µs ± 0.200µs 186.460µs ± 0.157µs 186.621µs 186.796µs 186.897µs 187.261µs 0.43% 0.387 0.161 0.11% 0.014µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5340139.519op/s 5362797.113op/s ± 5748.120op/s 5363076.958op/s ± 4528.355op/s 5367452.800op/s 5371467.422op/s 5373211.201op/s 5373955.421op/s 0.20% -0.381 0.144 0.11% 406.453op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.882µs 17.956µs ± 0.035µs 17.954µs ± 0.021µs 17.974µs 18.017µs 18.054µs 18.073µs 0.66% 0.614 0.642 0.19% 0.002µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 55332649.192op/s 55693007.668op/s ± 107863.069op/s 55697659.997op/s ± 65174.739op/s 55768691.153op/s 55851433.879op/s 55906006.909op/s 55921000.074op/s 0.40% -0.601 0.617 0.19% 7627.071op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.338µs 10.537µs ± 0.123µs 10.534µs ± 0.043µs 10.574µs 10.631µs 10.721µs 11.998µs 13.90% 8.298 96.366 1.17% 0.009µs 1 200
normalization/normalize_name/normalize_name/good throughput 83344224.908op/s 94915170.699op/s ± 1019481.724op/s 94928993.899op/s ± 383407.414op/s 95362493.090op/s 95958810.295op/s 96372104.864op/s 96731501.200op/s 1.90% -7.297 81.238 1.07% 72088.244op/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 [186.442µs; 186.498µs] or [-0.015%; +0.015%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5362000.478op/s; 5363593.747op/s] or [-0.015%; +0.015%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [17.951µs; 17.960µs] or [-0.027%; +0.027%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55678058.884op/s; 55707956.452op/s] or [-0.027%; +0.027%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.520µs; 10.554µs] or [-0.162%; +0.162%] None None None
normalization/normalize_name/normalize_name/good throughput [94773880.337op/s; 95056461.061op/s] or [-0.149%; +0.149%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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 159.525µs 160.684µs ± 0.386µs 160.639µs ± 0.202µs 160.854µs 161.367µs 161.749µs 162.426µs 1.11% 1.014 2.668 0.24% 0.027µ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 [160.630µs; 160.737µs] or [-0.033%; +0.033%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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.891µs 3.913µs ± 0.003µs 3.912µs ± 0.001µs 3.914µs 3.918µs 3.920µs 3.921µs 0.21% -1.311 12.437 0.08% 0.000µs 1 200
credit_card/is_card_number/ throughput 255062089.714op/s 255570178.439op/s ± 195452.472op/s 255602181.072op/s ± 97781.372op/s 255684390.472op/s 255795574.180op/s 255840982.755op/s 256984511.382op/s 0.54% 1.340 12.664 0.08% 13820.577op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 74.611µs 76.708µs ± 0.874µs 76.693µs ± 0.628µs 77.317µs 78.079µs 79.230µs 79.438µs 3.58% 0.255 0.050 1.14% 0.062µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12588500.280op/s 13038085.647op/s ± 148261.337op/s 13039046.402op/s ± 105886.017op/s 13144877.877op/s 13274049.067op/s 13331540.374op/s 13402819.278op/s 2.79% -0.189 -0.040 1.13% 10483.660op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 68.370µs 68.568µs ± 0.074µs 68.561µs ± 0.044µs 68.613µs 68.679µs 68.713µs 69.055µs 0.72% 1.295 8.178 0.11% 0.005µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 14481164.667op/s 14584149.457op/s ± 15761.225op/s 14585454.655op/s ± 9300.720op/s 14593816.241op/s 14606389.714op/s 14618270.167op/s 14626342.042op/s 0.28% -1.267 7.986 0.11% 1114.487op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.894µs 3.914µs ± 0.003µs 3.914µs ± 0.002µs 3.915µs 3.917µs 3.919µs 3.920µs 0.17% -1.998 15.114 0.07% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 255072891.869op/s 255519590.296op/s ± 172317.122op/s 255501951.170op/s ± 107391.353op/s 255630771.555op/s 255750170.106op/s 255820726.352op/s 256828410.286op/s 0.52% 2.025 15.348 0.07% 12184.661op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 64.612µs 64.838µs ± 0.156µs 64.806µs ± 0.089µs 64.907µs 65.122µs 65.381µs 65.555µs 1.16% 1.430 3.012 0.24% 0.011µs 1 200
credit_card/is_card_number/378282246310005 throughput 15254338.038op/s 15423109.014op/s ± 36911.446op/s 15430714.550op/s ± 21231.847op/s 15449721.970op/s 15468930.653op/s 15473065.402op/s 15477095.446op/s 0.30% -1.409 2.916 0.24% 2610.033op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 45.400µs 45.686µs ± 0.131µs 45.695µs ± 0.095µs 45.776µs 45.896µs 45.935µs 45.963µs 0.59% -0.153 -0.711 0.29% 0.009µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 21756643.302op/s 21888547.819op/s ± 62631.822op/s 21884462.109op/s ± 45304.908op/s 21933555.603op/s 21999054.708op/s 22017762.846op/s 22026405.134op/s 0.65% 0.164 -0.708 0.29% 4428.739op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.430µs 6.436µs ± 0.003µs 6.436µs ± 0.002µs 6.438µs 6.442µs 6.447µs 6.449µs 0.20% 0.999 1.586 0.05% 0.000µs 1 200
credit_card/is_card_number/x371413321323331 throughput 155069423.004op/s 155378556.187op/s ± 83694.159op/s 155385090.803op/s ± 51513.289op/s 155440616.634op/s 155491588.433op/s 155516760.118op/s 155522536.206op/s 0.09% -0.994 1.573 0.05% 5918.071op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.898µs 3.913µs ± 0.002µs 3.913µs ± 0.001µs 3.914µs 3.917µs 3.918µs 3.919µs 0.16% -0.892 7.006 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 255168943.812op/s 255566246.776op/s ± 155944.121op/s 255573426.283op/s ± 89853.071op/s 255663183.419op/s 255777375.235op/s 255850615.125op/s 256557169.473op/s 0.38% 0.907 7.104 0.06% 11026.915op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 61.457µs 62.681µs ± 0.505µs 62.714µs ± 0.358µs 63.009µs 63.470µs 63.597µs 63.845µs 1.80% -0.200 -0.421 0.80% 0.036µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15662866.622op/s 15954835.016op/s ± 128844.795op/s 15945455.999op/s ± 91470.929op/s 16040868.187op/s 16188204.580op/s 16262951.172op/s 16271499.983op/s 2.04% 0.237 -0.397 0.81% 9110.703op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 53.950µs 54.165µs ± 0.076µs 54.163µs ± 0.045µs 54.210µs 54.295µs 54.340µs 54.369µs 0.38% 0.011 0.245 0.14% 0.005µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 18392775.636op/s 18462268.490op/s ± 25982.182op/s 18462793.778op/s ± 15292.387op/s 18476289.379op/s 18507208.285op/s 18524449.569op/s 18535675.615op/s 0.39% -0.001 0.244 0.14% 1837.218op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.897µs 3.913µs ± 0.002µs 3.912µs ± 0.001µs 3.914µs 3.917µs 3.919µs 3.921µs 0.22% -0.530 8.566 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 255036318.728op/s 255577507.017op/s ± 157555.171op/s 255597367.349op/s ± 83988.573op/s 255669490.968op/s 255759536.405op/s 255870573.921op/s 256591057.300op/s 0.39% 0.549 8.668 0.06% 11140.833op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 50.313µs 50.538µs ± 0.106µs 50.525µs ± 0.059µs 50.585µs 50.721µs 50.872µs 50.990µs 0.92% 1.022 1.928 0.21% 0.007µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 19611700.221op/s 19787263.316op/s ± 41307.198op/s 19792110.865op/s ± 23113.761op/s 19814976.655op/s 19840734.128op/s 19861670.598op/s 19875536.978op/s 0.42% -1.004 1.869 0.21% 2920.860op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 45.396µs 45.728µs ± 0.140µs 45.738µs ± 0.101µs 45.835µs 45.936µs 45.969µs 45.988µs 0.55% -0.279 -0.735 0.30% 0.010µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 21744567.656op/s 21868880.636op/s ± 66803.566op/s 21863575.284op/s ± 48344.984op/s 21911825.814op/s 21989595.426op/s 22005589.151op/s 22028365.897op/s 0.75% 0.290 -0.727 0.30% 4723.725op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.430µs 6.438µs ± 0.004µs 6.437µs ± 0.003µs 6.440µs 6.445µs 6.448µs 6.454µs 0.26% 0.641 0.886 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 154949005.425op/s 155333051.866op/s ± 97351.367op/s 155344526.474op/s ± 63541.584op/s 155402793.370op/s 155478687.787op/s 155505433.774op/s 155529307.066op/s 0.12% -0.637 0.874 0.06% 6883.781op/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.912µs; 3.913µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/ throughput [255543090.606op/s; 255597266.272op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [76.587µs; 76.829µs] or [-0.158%; +0.158%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [13017538.052op/s; 13058633.243op/s] or [-0.158%; +0.158%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [68.557µs; 68.578µs] or [-0.015%; +0.015%] None None None
credit_card/is_card_number/ 378282246310005 throughput [14581965.103op/s; 14586333.811op/s] or [-0.015%; +0.015%] None None None
credit_card/is_card_number/37828224631 execution_time [3.913µs; 3.914µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/37828224631 throughput [255495708.800op/s; 255543471.791op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/378282246310005 execution_time [64.817µs; 64.860µs] or [-0.033%; +0.033%] None None None
credit_card/is_card_number/378282246310005 throughput [15417993.443op/s; 15428224.585op/s] or [-0.033%; +0.033%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [45.668µs; 45.704µs] or [-0.040%; +0.040%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [21879867.651op/s; 21897227.987op/s] or [-0.040%; +0.040%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.435µs; 6.436µs] or [-0.007%; +0.007%] None None None
credit_card/is_card_number/x371413321323331 throughput [155366956.982op/s; 155390155.393op/s] or [-0.007%; +0.007%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.913µs; 3.913µs] or [-0.008%; +0.008%] None None None
credit_card/is_card_number_no_luhn/ throughput [255544634.421op/s; 255587859.132op/s] or [-0.008%; +0.008%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [62.611µs; 62.751µs] or [-0.112%; +0.112%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15936978.367op/s; 15972691.666op/s] or [-0.112%; +0.112%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [54.154µs; 54.175µs] or [-0.020%; +0.020%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [18458667.609op/s; 18465869.370op/s] or [-0.020%; +0.020%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.912µs; 3.913µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255555671.386op/s; 255599342.648op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [50.523µs; 50.552µs] or [-0.029%; +0.029%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [19781538.536op/s; 19792988.097op/s] or [-0.029%; +0.029%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [45.708µs; 45.747µs] or [-0.042%; +0.042%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [21859622.304op/s; 21878138.968op/s] or [-0.042%; +0.042%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.437µs; 6.438µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [155319559.903op/s; 155346543.829op/s] or [-0.009%; +0.009%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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 189.970ns 192.206ns ± 1.751ns 192.055ns ± 1.247ns 193.198ns 195.589ns 196.831ns 200.229ns 4.26% 1.045 1.610 0.91% 0.124ns 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 [191.964ns; 192.449ns] or [-0.126%; +0.126%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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 5.017µs 5.075µs ± 0.028µs 5.070µs ± 0.020µs 5.092µs 5.136µs 5.138µs 5.144µs 1.46% 0.818 0.080 0.56% 0.002µ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.071µs; 5.079µs] or [-0.077%; +0.077%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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.066µs 146.725µs ± 1.713µs 146.419µs ± 0.592µs 147.120µs 148.560µs 152.883µs 161.733µs 10.46% 4.936 34.787 1.16% 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.488µs; 146.963µs] or [-0.162%; +0.162%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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 34.319µs 34.772µs ± 0.755µs 34.433µs ± 0.055µs 34.523µs 36.364µs 36.394µs 38.026µs 10.43% 1.824 1.907 2.17% 0.053µ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.668µs; 34.877µs] or [-0.301%; +0.301%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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.219ms 4.224ms ± 0.003ms 4.224ms ± 0.002ms 4.226ms 4.228ms 4.232ms 4.254ms 0.72% 3.861 32.638 0.08% 0.000ms 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.224ms; 4.225ms] or [-0.011%; +0.011%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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/2598 execution_time 3.402ms 3.435ms ± 0.032ms 3.424ms ± 0.007ms 3.433ms 3.520ms 3.543ms 3.556ms 3.86% 2.182 3.872 0.93% 0.002ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
receiver_entry_point/report/2598 execution_time [3.430ms; 3.439ms] or [-0.129%; +0.129%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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 13.930ms 13.973ms ± 0.025ms 13.970ms ± 0.012ms 13.983ms 14.016ms 14.067ms 14.104ms 0.96% 1.815 6.138 0.18% 0.002ms 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 [13.970ms; 13.977ms] or [-0.025%; +0.025%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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 86.368µs 86.727µs ± 0.133µs 86.719µs ± 0.053µs 86.770µs 86.849µs 87.037µs 88.082µs 1.57% 5.415 53.044 0.15% 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 [86.709µs; 86.745µs] or [-0.021%; +0.021%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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 495.453µs 497.119µs ± 1.855µs 496.327µs ± 0.402µs 497.004µs 500.559µs 503.511µs 506.162µs 1.98% 1.724 2.866 0.37% 0.131µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1975652.931op/s 2011619.765op/s ± 7459.876op/s 2014800.839op/s ± 1632.194op/s 2016158.107op/s 2017615.917op/s 2018271.327op/s 2018356.504op/s 0.18% -1.703 2.728 0.37% 527.493op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 377.107µs 377.948µs ± 0.420µs 377.940µs ± 0.294µs 378.210µs 378.697µs 379.002µs 379.275µs 0.35% 0.425 -0.165 0.11% 0.030µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2636611.134op/s 2645871.277op/s ± 2936.437op/s 2645926.134op/s ± 2063.075op/s 2648127.091op/s 2650181.783op/s 2650969.736op/s 2651765.742op/s 0.22% -0.420 -0.174 0.11% 207.637op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 168.540µs 168.878µs ± 0.133µs 168.866µs ± 0.077µs 168.961µs 169.118µs 169.229µs 169.283µs 0.25% 0.357 0.312 0.08% 0.009µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5907277.450op/s 5921433.873op/s ± 4669.255op/s 5921857.646op/s ± 2683.541op/s 5924190.817op/s 5928745.128op/s 5931178.265op/s 5933307.144op/s 0.19% -0.352 0.308 0.08% 330.166op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.827µs 37.034µs ± 0.123µs 37.067µs ± 0.103µs 37.138µs 37.199µs 37.235µs 37.247µs 0.48% -0.190 -1.455 0.33% 0.009µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26847786.874op/s 27002749.368op/s ± 89872.594op/s 26977882.674op/s ± 75057.453op/s 27099282.655op/s 27134688.371op/s 27141319.393op/s 27153928.466op/s 0.65% 0.195 -1.456 0.33% 6354.952op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 46.217µs 46.316µs ± 0.065µs 46.304µs ± 0.036µs 46.352µs 46.422µs 46.452µs 46.820µs 1.11% 2.710 16.959 0.14% 0.005µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21358573.247op/s 21590865.579op/s ± 29993.568op/s 21596511.169op/s ± 16688.328op/s 21611003.159op/s 21625825.688op/s 21630327.091op/s 21637186.203op/s 0.19% -2.662 16.462 0.14% 2120.866op/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 [496.862µs; 497.376µs] or [-0.052%; +0.052%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [2010585.898op/s; 2012653.632op/s] or [-0.051%; +0.051%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [377.890µs; 378.006µs] or [-0.015%; +0.015%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2645464.316op/s; 2646278.239op/s] or [-0.015%; +0.015%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [168.860µs; 168.897µs] or [-0.011%; +0.011%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5920786.760op/s; 5922080.987op/s] or [-0.011%; +0.011%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [37.017µs; 37.051µs] or [-0.046%; +0.046%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [26990293.890op/s; 27015204.845op/s] or [-0.046%; +0.046%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [46.307µs; 46.325µs] or [-0.019%; +0.019%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21586708.759op/s; 21595022.399op/s] or [-0.019%; +0.019%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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.307µs 2.353µs ± 0.013µs 2.352µs ± 0.004µs 2.359µs 2.374µs 2.378µs 2.380µs 1.17% -0.982 2.559 0.56% 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.351µs; 2.355µs] or [-0.077%; +0.077%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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_timestamped_x1000 execution_time 4.232ms 4.236ms ± 0.008ms 4.235ms ± 0.001ms 4.236ms 4.240ms 4.246ms 4.345ms 2.60% 11.941 154.706 0.19% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample_timestamped_x1000 execution_time [4.235ms; 4.237ms] or [-0.027%; +0.027%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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 728.096µs 729.441µs ± 0.612µs 729.423µs ± 0.354µs 729.797µs 730.541µs 730.960µs 732.439µs 0.41% 0.754 2.186 0.08% 0.043µ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 [729.356µs; 729.526µs] or [-0.012%; +0.012%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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 235.877ns 249.118ns ± 14.979ns 242.679ns ± 4.069ns 251.441ns 283.017ns 290.129ns 292.849ns 20.67% 1.504 0.953 6.00% 1.059ns 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 [247.042ns; 251.194ns] or [-0.833%; +0.833%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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.207µs 3.205µs ± 1.418µs 2.982µs ± 0.030µs 3.014µs 3.684µs 13.945µs 14.734µs 394.17% 7.332 55.007 44.14% 0.100µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [3.009µs; 3.402µs] or [-6.132%; +6.132%] None None None

Group 20

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3243266 1774038746 pawel/no-std-library-config
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 18.194µs 26.725µs ± 10.111µs 18.670µs ± 0.400µs 35.281µs 45.520µs 46.194µs 70.428µs 277.22% 0.925 0.612 37.74% 0.715µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [25.323µs; 28.126µs] or [-5.244%; +5.244%] None None None

Baseline

Omitted due to size.

cbindgen doesn't evaluate cfg(not(feature = "std")) and picks up
the ffi_types module types, causing redefinitions with common.h.
Exclude Slice_CChar, CharSlice, CStr, Error, and Vec_U8 from the
generated header since they are already provided by common.h.

Also simplify ffi_types::CString to a re-export of alloc::ffi::CString.
- Fix import ordering for rustfmt (cfg(not(...)) before cfg(feature))
- Remove ddog_CStr from cbindgen exclude list (not in common.h)
- Regenerate LICENSE-3rdparty.yml for new deps
… builds

Make the minimum subset of libdd-common-ffi work in no_std+alloc so that
libdd-library-config-ffi can use the real FFI types instead of duplicating
them in a local ffi_types module (~55 lines removed).

- Add std feature to libdd-common-ffi (default on), gating std-only modules
- Replace std:: imports with core::/alloc:: equivalents in slice.rs and cstr.rs
- Replace std::ffi::CStr with core::ffi::CStr in libdd-common cstr macros
- Make libdd-common-ffi a non-optional dependency of libdd-library-config-ffi
- Delete the duplicated ffi_types module from libdd-library-config-ffi
- Remove cbindgen exclude list (no longer needed without ffi_types)
…wn dep

BTreeMap from alloc::collections works in both std and no_std without
needing the hashbrown crate. The config maps are small, so O(log n) vs
O(1) is negligible, and deterministic iteration order is a bonus.
… YAML parsing

yaml-peg supports no_std+alloc, enabling parse_stable_config_slice to
work without std. Moved trim_bytes into parse_stable_config_slice so
all callers (including get_config_from_bytes) benefit from whitespace
trimming. Removed serde_yaml dependency.
…staticlib/cdylib compat

The staticlib/cdylib crate types require an unwinding runtime that doesn't
exist in no_std. Gate #![no_std] on the new no_std_entry feature so that
--no-default-features compiles with implicit std, while true no_std builds
use --features no_std_entry with -Zbuild-std panic=abort.
@pawelchcki pawelchcki force-pushed the pawel/no-std-library-config branch from ee51658 to e77ef42 Compare March 20, 2026 20:07
…eature to consumers

Make vec.rs no_std-compatible (core/alloc imports, gate anyhow impl).
Move vec module out of #[cfg(feature = "std")] gate since it only needs
alloc. Add features = ["std"] to all workspace crates that depend on
libdd-common-ffi with default-features = false, since they all need the
std-gated types (Handle, Result, Error, etc).
Remove #[cfg(feature = "std")] from get_config_from_bytes and its call
chain (get_config, get_single_source_config, get_single_source_process_config).
These functions only use alloc types, not std I/O or filesystem.
@pawelchcki pawelchcki changed the title feat(library-config): make libdd-library-config no_std compatible feat(library-config)1: make libdd-library-config no_std compatible Mar 20, 2026
@pawelchcki pawelchcki changed the title feat(library-config)1: make libdd-library-config no_std compatible feat(library-config)!: make libdd-library-config no_std compatible Mar 20, 2026
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.

2 participants