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 41 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📦
|
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.
🎉 All green!❄️ No new flaky tests detected 🎯 Code Coverage (details) 🔗 Commit SHA: b5eb35d | Docs | Datadog PR Page | 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.61% 71.77% +0.16%
==========================================
Files 431 432 +1
Lines 69183 69252 +69
==========================================
+ Hits 49543 49707 +164
+ Misses 19640 19545 -95
🚀 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).
|
@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
…config # Conflicts: # libdd-data-pipeline-ffi/Cargo.toml # libdd-library-config/Cargo.toml
- Remove trailing whitespace in test YAML - Remove needless borrows on to_string_lossy() calls
Merge latest origin/main, resolving conflicts in libdd-common-ffi and libdd-data-pipeline-ffi Cargo.toml files. Also remove the `ddog_library_configurator_get_from_bytes` FFI function and its associated types (LibraryConfigBytesResult, OkBytesResult, ddog_library_config_bytes_result_drop), along with the now-orphaned `Configurator::get_config_from_bytes` Rust method. Tests updated to use `parse_stable_config_slice` + `get_config` directly.
|
@copilot fix lint/rusfmt error |
Agent-Logs-Url: https://github.com/DataDog/libdatadog/sessions/9bb2dfdb-ccf1-42c4-8b92-4095efd7d326 Co-authored-by: pawelchcki <812891+pawelchcki@users.noreply.github.com>
Fixed in No UI changes in this commit.
There is a concrete need now: this enables config parsing in injected/minimal-runtime contexts where |
- Derive thiserror::Error for SliceConversionError to drop the parallel Display/core::error::Error impls. - Hoist stable_config.config_id clone out of the Phase 1 extend loop in get_single_source_config. - Drop narrative comments duplicated by cfg attrs or by Cargo.toml TODO.
Mirrors the Phase 1 hoist so each iteration reuses the cached Option<String> instead of re-borrowing stable_config.
Drop the generalized $err_ctor parameter, the no_std macro variant, and the body rewrite. The only caller is itself std-gated, so the macro just needs feature = "std" added to its existing arms.

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