feat(library-config)!: make libdd-library-config no_std compatible#1770
feat(library-config)!: make libdd-library-config no_std compatible#1770pawelchcki wants to merge 32 commits intomainfrom
Conversation
…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.
📚 Documentation Check Results📦
|
Clippy Allow Annotation ReportComparing clippy allow annotations between branches:
Summary by Rule
Annotation Counts by File
Annotation Stats by Crate
About This ReportThis 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. |
🔒 Cargo Deny Results✅ No issues found! 📦
|
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.
|
✅ Tests 🎉 All green!❄️ No new flaky tests detected 🔗 Commit SHA: bc5fdf6 | 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).
Artifact Size Benchmark Reportaarch64-alpine-linux-musl
aarch64-unknown-linux-gnu
libdatadog-x64-windows
libdatadog-x86-windows
x86_64-alpine-linux-musl
x86_64-unknown-linux-gnu
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #1770 +/- ##
==========================================
- Coverage 71.51% 71.49% -0.03%
==========================================
Files 426 426
Lines 67369 67427 +58
==========================================
+ Hits 48179 48204 +25
- Misses 19190 19223 +33
🚀 New features to boost your workflow:
|
BenchmarksComparisonBenchmark execution time: 2026-03-20 20:49:20 Comparing candidate commit 3243266 in PR branch Found 14 performance improvements and 0 performance regressions! Performance is the same for 45 metrics, 2 unstable metrics.
|
| 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.
ee51658 to
e77ef42
Compare
…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).
libdd-library-config/src/lib.rs
Outdated
| Ok(s) => s, | ||
| Err(e) => return LoggedResult::Err(anyhow::Error::msg(e)), | ||
| }; | ||
| match yaml_peg::serde::from_str::<StableConfig>(s) { |
There was a problem hiding this comment.
I don't feel good replacing serde_yaml with a basically unknown yaml parser crate
There was a problem hiding this comment.
yes but, https://github.com/dtolnay/serde-yaml was deprecated 2 years ago and stopped receiving any updates. same https://github.com/sebastienrousseau/serde_yml
yaml_peg is one of recommended alternatives, although with caveat. Generally looks like the state of yaml parsing in Rust is not_great:tm:
There was a problem hiding this comment.
I used to rely on https://github.com/Ethiraric/yaml-rust2 and/or https://github.com/saphyr-rs/saphyr. They are not super active, but still slightly more than yaml-peg? Alas, they don't have a no_std feature it seems...
There was a problem hiding this comment.
@yannham yesterday I found https://github.com/yaml/yaml-serde - which is resurected serde-yaml now under new auspices.
Luckily converting it into no_std was super simple yaml/yaml-serde#7
bantonsson
left a comment
There was a problem hiding this comment.
I'm not super confident about the changes either. Besides, is there a need for no_std right now, or is it just a nice to have?
|
If you're good with the idea of these changes, I'll be happy to add more testing to cover more of the yaml edgecases. Making this a no_std will also help with pushing these changes to other 3 repositories (httpd and maybe even cpp) The difference in artifact size is hundreds of kB vs MB of size - I can also add tests in |
|
I converted back to draft, as it looks like the consesus leans towards slight ok-go on this issue. Because of it I need to add more tests and push this change through some automated code reviews. |
- Replace yaml_peg with yaml_serde (serde on libyaml-rs) for YAML parsing - Fix panic on comment-only YAML by using unwrap_or_default - Add yaml wrapper module to isolate YAML dependency - Add tests for comment-only and empty YAML inputs - Remove unused no-std-dev/no-std-release profiles
…comments - Add ddog_library_configurator_get_from_bytes FFI function available in both std and no_std builds, completing the no_std FFI surface - Add LibraryConfigBytesResult type and drop function for the new API - Refactor vec_to_ffi to use alloc::ffi types, making it no_std-compatible - Change get_config_from_bytes to take &ProcessInfo (only borrows internally) - Add SAFETY comments on unsafe blocks (abort, CStr::from_bytes_with_nul_unchecked) - Document rust_eh_personality linkage constraint and panic handler behavior - Add comment explaining no_std_entry feature gating on #![no_std] - Fix safety doc reference (std::str::from_raw_parts -> core::slice::from_raw_parts) - Document ConfigMap duplicate key behavior - Fix typo: varriable -> variable
…config # Conflicts: # Cargo.lock # LICENSE-3rdparty.yml # libdd-common-ffi/Cargo.toml # libdd-library-config/Cargo.toml
Avoid full lockfile regeneration that pulled newer transitive deps incompatible with MSRV 1.84.1.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 464fcecca5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…c safety Ensures ddog_library_configurator_get_from_bytes returns LibraryConfigBytesResult::Err on panic (e.g. invalid FFI slice input) instead of aborting the process in std+catch_panic+unwind builds.
…le return types Accept an error constructor parameter instead of hardcoding LibraryConfigLoggedResult::Err, so both get and get_from_bytes share the same panic-catching logic.
|
@paullegranddc @bantonsson not sure if you'd strongly prefer to wait until yaml/yaml-serde#7 is merged ? If you'r ok with branch version the this PR is now ready to review. If not, I can mark it again as draft |
…avoid duplication
…port Introduce a no_std-compatible ConfigRead trait so 3rd-party libraries can provide custom file readers (in-memory, sandboxed, etc.) instead of relying on std::fs. get_config_from_file now delegates to the new get_config_from_reader + StdConfigRead.
- Fix TOCTOU in StdConfigRead::read() by reading from already-opened file handle instead of re-opening via fs::read() - Propagate debug logs through get_config_from_bytes (returns LoggedResult instead of anyhow::Result), add logs to LibraryConfigBytesResult FFI type - Use thiserror for ConfigReadError to get core::error::Error impl (works in no_std via default-features = false) - Fix ConfigMap deserializer expecting message (stale HashMap reference) - Add no_std CI build step for library-config crates
…e yaml wrapper - Move MAX_CONFIG_FILE_SIZE, ConfigReadError, ConfigRead trait, and StdConfigRead into dedicated config_read.rs module - Remove yaml::from_bytes wrapper — yaml_serde::from_slice already handles empty, comment-only, and whitespace-only documents - Remove unused trim_bytes utility

What does this PR do?
Make
libdd-library-configandlibdd-library-config-ffiusable inno_stdenvironments.Motivation
Enable library config parsing in contexts without a full std runtime (e.g. injected into processes).
Key changes
serde_yamlwithyaml_serde(no_std-compatible),HashMapwithBTreeMapno_std_entryfeature for standalone staticlib builds (allocator, panic handler)ddog_library_configurator_get_from_bytesFFI function (works in both std and no_std)stdfeature to workspace consumers oflibdd-common-ffiUses a fork of yaml_serde pending upstream no_std support: yaml/yaml-serde#7
How to test