Skip to content

chore(sidecar): reorg/remove unsafe code in span FFI#1698

Open
yannham wants to merge 2 commits intomainfrom
yannham/sidecar-ffi-pass
Open

chore(sidecar): reorg/remove unsafe code in span FFI#1698
yannham wants to merge 2 commits intomainfrom
yannham/sidecar-ffi-pass

Conversation

@yannham
Copy link
Contributor

@yannham yannham commented Mar 10, 2026

What does this PR do?

This PR makes a pass on the span API to clean up unsafe annotations, add missing Safety comments, etc. leaving behavior unchanged and the C API unchanged (see the diff below), although the Rust's side types are richer/more restrictive. Some code is also written in a more idiomatic way, when applicable.

I believe the change from *mut to Option<&mut> for some return values could actually return immutable references (since the two functions are call get_xxx), but this is technically a breaking change (changing *mut to *const in the FFI) and I don't know if those values can actually be mutated, so I stayed with mut. Happy to make them const in the future if it's sufficient.

C header diff
751a752,755
> /**
>  * The returned slice is an owned allocation that must be properly freed using
>  * [`ddog_free_charslice`].
>  */
753a758,766
> /**
>  * Frees an owned [`CharSlice`]. Note that some functions of this API return borrowed slices that
>  * must NOT be freed. Only a few selected functions return slices that must be freed, and this is
>  * mentioned explicitly in their documentation.
>  *
>  * # Safety
>  *
>  * `slice` must be an owned char slice that has been returned by one of the functions of this API.
>  */
803a817,820
> /**
>  * The return value is an owned array of slices (`Box<[CharSlice]>`) that must be freed explicitly
>  * through [`ddog_span_free_keys_ptr`].
>  */
823a841,844
> /**
>  * The return value is an array of slices (`Box<[CharSlice]>`) that must be freed explicitly
>  * through [`ddog_span_free_keys_ptr`].
>  */
825a847,852
> /**
>  * # Safety
>  *
>  * `keys_ptr` must have been returned by one of the `ddog_xxx_get_keys()` functions, and must not
>  * have been already freed.
>  */
857a885,888
> /**
>  * The returned slice is an owned allocation that must be properly freed using
>  * [`ddog_free_charslice`].
>  */

Motivation

While reading the code, I realized some of the safety comments were missing, some unsafe annotations weren't required, or unsafe attributes on functions were missing. Since unsafe and FFI code must be particularly scrutinized, I think a little cleaning pass doesn't hurt.

Additional Notes

One could question the approach of making the lifetimes more precise in the FFI, since all that information is erased at the interface (indeed, the C header is identical, on purpose). However, I find that it's an efficient way to convey the constraints that the caller must uphold (most of the time, do not free the original allocation this function's return value borrows from). I originally wrote those conditions as "Safety" comments, but it's really verbose and repetitive.

Maybe both could be combined; make the Rust types more precise, but also propagate that information as text, so that it appears in the C header file?

How to test the change?

Run cbindgen in the datadog-sidecar-ffi crate directory to generate the C header file and see that the diff is only comments when compared to main. Run the tests.

@pr-commenter
Copy link

pr-commenter bot commented Mar 10, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-03-17 15:16:08

Comparing candidate commit 0b44657 in PR branch yannham/sidecar-ffi-pass with baseline commit bb2b2bb in branch main.

Found 0 performance improvements and 1 performance regressions! Performance is the same for 58 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:single_flag_killswitch/rules-based

  • 🟥 execution_time [+9.256ns; +10.029ns] or [+4.818%; +5.221%]

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 0b44657 1773759356 yannham/sidecar-ffi-pass
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.895µs 3.912µs ± 0.002µs 3.912µs ± 0.001µs 3.914µs 3.916µs 3.918µs 3.919µs 0.17% -1.618 14.686 0.06% 0.000µs 1 200
credit_card/is_card_number/ throughput 255172203.800op/s 255592009.594op/s ± 153525.327op/s 255610774.114op/s ± 85073.475op/s 255682265.770op/s 255767491.903op/s 255839426.827op/s 256746140.446op/s 0.44% 1.643 14.895 0.06% 10855.880op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 80.154µs 80.698µs ± 0.285µs 80.666µs ± 0.179µs 80.857µs 81.236µs 81.499µs 81.680µs 1.26% 0.676 0.489 0.35% 0.020µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12242963.184op/s 12392099.201op/s ± 43675.423op/s 12396800.386op/s ± 27497.422op/s 12422513.010op/s 12458067.364op/s 12474434.088op/s 12475937.287op/s 0.64% -0.654 0.446 0.35% 3088.319op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 72.990µs 73.595µs ± 0.313µs 73.546µs ± 0.194µs 73.759µs 74.243µs 74.453µs 74.592µs 1.42% 0.895 0.500 0.42% 0.022µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13406288.515op/s 13588140.622op/s ± 57502.721op/s 13597008.658op/s ± 35990.061op/s 13630182.677op/s 13662155.019op/s 13670987.574op/s 13700552.465op/s 0.76% -0.874 0.453 0.42% 4066.056op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.894µs 3.912µs ± 0.003µs 3.912µs ± 0.001µs 3.913µs 3.918µs 3.921µs 3.921µs 0.24% -0.174 6.274 0.08% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 255015682.567op/s 255605303.430op/s ± 202194.251op/s 255635904.064op/s ± 85353.094op/s 255707991.884op/s 255839844.747op/s 255935794.930op/s 256815507.798op/s 0.46% 0.194 6.371 0.08% 14297.293op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 69.957µs 70.681µs ± 0.281µs 70.654µs ± 0.196µs 70.871µs 71.139µs 71.448µs 71.582µs 1.31% 0.412 0.015 0.40% 0.020µs 1 200
credit_card/is_card_number/378282246310005 throughput 13969981.461op/s 14148366.651op/s ± 56247.128op/s 14153419.724op/s ± 39174.348op/s 14189549.043op/s 14229638.418op/s 14244905.128op/s 14294449.143op/s 1.00% -0.390 -0.016 0.40% 3977.273op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 53.068µs 53.145µs ± 0.041µs 53.139µs ± 0.024µs 53.165µs 53.204µs 53.283µs 53.381µs 0.45% 1.898 7.584 0.08% 0.003µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 18733422.408op/s 18816406.121op/s ± 14622.859op/s 18818555.175op/s ± 8447.828op/s 18826630.269op/s 18834003.113op/s 18840941.077op/s 18843618.011op/s 0.13% -1.884 7.496 0.08% 1033.992op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.429µs 6.440µs ± 0.006µs 6.439µs ± 0.004µs 6.444µs 6.451µs 6.456µs 6.465µs 0.41% 0.863 1.094 0.09% 0.000µs 1 200
credit_card/is_card_number/x371413321323331 throughput 154670337.058op/s 155269118.072op/s ± 145122.971op/s 155297701.596op/s ± 89623.576op/s 155371463.104op/s 155467224.440op/s 155508670.866op/s 155538331.385op/s 0.15% -0.857 1.072 0.09% 10261.744op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.898µs 3.913µs ± 0.003µs 3.913µs ± 0.002µs 3.915µs 3.919µs 3.922µs 3.924µs 0.29% 0.117 3.681 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 254829980.249op/s 255543794.365op/s ± 202628.291op/s 255558803.923op/s ± 119646.281op/s 255672662.171op/s 255813316.337op/s 255888933.152op/s 256574057.753op/s 0.40% -0.103 3.714 0.08% 14327.984op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 64.934µs 65.157µs ± 0.123µs 65.139µs ± 0.077µs 65.218µs 65.410µs 65.523µs 65.674µs 0.82% 1.091 1.634 0.19% 0.009µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15226747.027op/s 15347559.642op/s ± 28848.777op/s 15351807.608op/s ± 18208.567op/s 15369734.304op/s 15383876.467op/s 15391242.847op/s 15400267.965op/s 0.32% -1.077 1.585 0.19% 2039.917op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 58.197µs 58.385µs ± 0.116µs 58.365µs ± 0.077µs 58.461µs 58.610µs 58.702µs 58.723µs 0.61% 0.804 0.121 0.20% 0.008µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 17029235.931op/s 17127862.536op/s ± 33977.540op/s 17133621.780op/s ± 22727.330op/s 17153246.260op/s 17171416.289op/s 17180079.222op/s 17183048.922op/s 0.29% -0.795 0.103 0.20% 2402.575op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.894µs 3.913µs ± 0.003µs 3.913µs ± 0.002µs 3.914µs 3.918µs 3.921µs 3.923µs 0.25% -0.540 8.732 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 254930501.517op/s 255557160.056op/s ± 194041.397op/s 255580448.096op/s ± 106103.153op/s 255679171.056op/s 255782100.230op/s 255852022.178op/s 256815404.584op/s 0.48% 0.564 8.864 0.08% 13720.799op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 55.149µs 55.544µs ± 0.218µs 55.518µs ± 0.137µs 55.656µs 55.932µs 56.158µs 56.631µs 2.00% 1.296 3.033 0.39% 0.015µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 17658209.262op/s 18003927.259op/s ± 70387.410op/s 18012100.948op/s ± 44502.714op/s 18056595.105op/s 18090834.008op/s 18113954.387op/s 18132798.606op/s 0.67% -1.258 2.847 0.39% 4977.142op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 53.079µs 53.142µs ± 0.035µs 53.137µs ± 0.025µs 53.166µs 53.203µs 53.218µs 53.292µs 0.29% 0.681 0.723 0.07% 0.002µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 18764441.919op/s 18817504.426op/s ± 12332.510op/s 18819198.829op/s ± 8794.665op/s 18826742.791op/s 18834208.437op/s 18839365.540op/s 18839812.451op/s 0.11% -0.676 0.708 0.07% 872.040op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.432µs 6.447µs ± 0.007µs 6.446µs ± 0.005µs 6.452µs 6.460µs 6.466µs 6.470µs 0.36% 0.591 0.283 0.11% 0.001µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 154567278.844op/s 155105775.397op/s ± 172196.317op/s 155122965.935op/s ± 118447.237op/s 155233406.234op/s 155340143.994op/s 155440727.197op/s 155480081.819op/s 0.23% -0.584 0.272 0.11% 12176.118op/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.008%; +0.008%] None None None
credit_card/is_card_number/ throughput [255570732.461op/s; 255613286.728op/s] or [-0.008%; +0.008%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [80.658µs; 80.737µs] or [-0.049%; +0.049%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12386046.207op/s; 12398152.194op/s] or [-0.049%; +0.049%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [73.552µs; 73.638µs] or [-0.059%; +0.059%] None None None
credit_card/is_card_number/ 378282246310005 throughput [13580171.298op/s; 13596109.946op/s] or [-0.059%; +0.059%] None None None
credit_card/is_card_number/37828224631 execution_time [3.912µs; 3.913µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/37828224631 throughput [255577281.251op/s; 255633325.608op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/378282246310005 execution_time [70.642µs; 70.720µs] or [-0.055%; +0.055%] None None None
credit_card/is_card_number/378282246310005 throughput [14140571.340op/s; 14156161.962op/s] or [-0.055%; +0.055%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [53.139µs; 53.151µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [18814379.533op/s; 18818432.708op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.440µs; 6.441µs] or [-0.013%; +0.013%] None None None
credit_card/is_card_number/x371413321323331 throughput [155249005.424op/s; 155289230.720op/s] or [-0.013%; +0.013%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.913µs; 3.914µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ throughput [255515712.033op/s; 255571876.698op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [65.140µs; 65.174µs] or [-0.026%; +0.026%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15343561.479op/s; 15351557.805op/s] or [-0.026%; +0.026%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [58.369µs; 58.401µs] or [-0.028%; +0.028%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [17123153.576op/s; 17132571.496op/s] or [-0.027%; +0.027%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.913µs; 3.913µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255530267.785op/s; 255584052.328op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [55.514µs; 55.575µs] or [-0.054%; +0.054%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [17994172.241op/s; 18013682.277op/s] or [-0.054%; +0.054%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [53.137µs; 53.147µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [18815795.259op/s; 18819213.594op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.446µs; 6.448µs] or [-0.015%; +0.015%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [155081910.643op/s; 155129640.150op/s] or [-0.015%; +0.015%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching serializing traces from their internal representation to msgpack execution_time 14.189ms 14.235ms ± 0.029ms 14.230ms ± 0.011ms 14.241ms 14.272ms 14.360ms 14.402ms 1.21% 2.870 10.747 0.21% 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 [14.231ms; 14.239ms] or [-0.029%; +0.029%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
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.495µs ± 0.216µs 186.481µs ± 0.149µs 186.637µs 186.857µs 187.089µs 187.163µs 0.37% 0.485 0.216 0.12% 0.015µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5342934.230op/s 5362092.340op/s ± 6206.356op/s 5362473.012op/s ± 4294.208op/s 5366733.917op/s 5371693.817op/s 5373586.389op/s 5373940.259op/s 0.21% -0.478 0.204 0.12% 438.856op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.964µs 18.054µs ± 0.033µs 18.053µs ± 0.022µs 18.078µs 18.110µs 18.129µs 18.151µs 0.54% -0.020 0.216 0.18% 0.002µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 55093536.324op/s 55389013.149op/s ± 101963.663op/s 55392197.708op/s ± 68667.776op/s 55456319.295op/s 55550422.120op/s 55652434.450op/s 55665613.386op/s 0.49% 0.032 0.219 0.18% 7209.920op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.378µs 10.541µs ± 0.065µs 10.547µs ± 0.047µs 10.584µs 10.639µs 10.672µs 10.693µs 1.38% -0.210 -0.473 0.62% 0.005µs 1 200
normalization/normalize_name/normalize_name/good throughput 93516341.981op/s 94874877.523op/s ± 587391.988op/s 94809503.894op/s ± 424359.182op/s 95326389.155op/s 95932982.974op/s 96175546.299op/s 96356272.939op/s 1.63% 0.238 -0.464 0.62% 41534.886op/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.465µs; 186.525µs] or [-0.016%; +0.016%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5361232.198op/s; 5362952.481op/s] or [-0.016%; +0.016%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [18.050µs; 18.059µs] or [-0.026%; +0.026%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55374881.966op/s; 55403144.333op/s] or [-0.026%; +0.026%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.532µs; 10.550µs] or [-0.086%; +0.086%] None None None
normalization/normalize_name/normalize_name/good throughput [94793470.643op/s; 94956284.403op/s] or [-0.086%; +0.086%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
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.227µs 3.231µs ± 1.439µs 3.005µs ± 0.025µs 3.027µs 3.698µs 14.172µs 14.767µs 391.39% 7.288 54.471 44.44% 0.102µ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.031µs; 3.430µs] or [-6.174%; +6.174%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
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.367µs 496.263µs ± 0.808µs 496.163µs ± 0.239µs 496.392µs 497.070µs 498.132µs 505.385µs 1.86% 7.703 81.025 0.16% 0.057µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1978688.209op/s 2015066.365op/s ± 3239.498op/s 2015464.660op/s ± 969.506op/s 2016483.522op/s 2017567.465op/s 2018306.052op/s 2018706.003op/s 0.16% -7.588 79.212 0.16% 229.067op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 369.768µs 370.268µs ± 0.238µs 370.238µs ± 0.151µs 370.417µs 370.666µs 370.835µs 371.269µs 0.28% 0.581 0.878 0.06% 0.017µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2693462.954op/s 2700747.998op/s ± 1733.582op/s 2700968.021op/s ± 1105.068op/s 2701901.419op/s 2703251.104op/s 2704142.972op/s 2704399.706op/s 0.13% -0.576 0.864 0.06% 122.583op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 168.608µs 169.035µs ± 0.125µs 169.033µs ± 0.074µs 169.108µs 169.250µs 169.316µs 169.412µs 0.22% 0.056 0.775 0.07% 0.009µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5902773.631op/s 5915936.516op/s ± 4361.637op/s 5915991.137op/s ± 2578.931op/s 5918548.183op/s 5923321.256op/s 5926687.270op/s 5930911.774op/s 0.25% -0.050 0.776 0.07% 308.414op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.823µs 37.064µs ± 0.103µs 37.084µs ± 0.071µs 37.142µs 37.200µs 37.260µs 37.297µs 0.57% -0.364 -0.676 0.28% 0.007µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26811941.364op/s 26980304.617op/s ± 74729.139op/s 26965452.494op/s ± 51465.408op/s 27036368.904op/s 27117707.429op/s 27135745.990op/s 27157107.771op/s 0.71% 0.374 -0.672 0.28% 5284.148op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 46.212µs 46.303µs ± 0.049µs 46.299µs ± 0.032µs 46.332µs 46.396µs 46.459µs 46.518µs 0.47% 1.137 2.226 0.11% 0.003µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21497086.058op/s 21596724.388op/s ± 22801.428op/s 21598924.716op/s ± 14852.149op/s 21613670.574op/s 21626071.089op/s 21633847.896op/s 21639585.172op/s 0.19% -1.128 2.190 0.11% 1612.304op/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.151µs; 496.375µs] or [-0.023%; +0.023%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [2014617.402op/s; 2015515.328op/s] or [-0.022%; +0.022%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [370.235µs; 370.301µs] or [-0.009%; +0.009%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2700507.740op/s; 2700988.256op/s] or [-0.009%; +0.009%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [169.018µs; 169.052µs] or [-0.010%; +0.010%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5915332.035op/s; 5916540.997op/s] or [-0.010%; +0.010%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [37.050µs; 37.079µs] or [-0.038%; +0.038%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [26969947.877op/s; 26990661.357op/s] or [-0.038%; +0.038%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [46.297µs; 46.310µs] or [-0.015%; +0.015%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21593564.330op/s; 21599884.447op/s] or [-0.015%; +0.015%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
redis/obfuscate_redis_string execution_time 33.023µs 33.789µs ± 1.036µs 33.143µs ± 0.062µs 35.173µs 35.534µs 36.043µs 36.940µs 11.46% 1.028 -0.642 3.06% 0.073µ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 [33.645µs; 33.932µs] or [-0.425%; +0.425%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
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.571ms 3.608ms ± 0.022ms 3.602ms ± 0.012ms 3.622ms 3.649ms 3.668ms 3.672ms 1.94% 0.893 0.157 0.61% 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.605ms; 3.611ms] or [-0.084%; +0.084%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
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.422µs 2.450µs ± 0.014µs 2.449µs ± 0.008µs 2.456µs 2.483µs 2.487µs 2.494µs 1.88% 0.957 1.111 0.55% 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.448µs; 2.452µs] or [-0.077%; +0.077%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
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.177ms 4.183ms ± 0.009ms 4.181ms ± 0.001ms 4.182ms 4.187ms 4.215ms 4.288ms 2.56% 8.303 84.066 0.22% 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.181ms; 4.184ms] or [-0.031%; +0.031%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
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.296µs 86.570µs ± 0.259µs 86.548µs ± 0.037µs 86.584µs 86.680µs 86.821µs 90.058µs 4.06% 12.348 164.007 0.30% 0.018µ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.534µs; 86.605µs] or [-0.041%; +0.041%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
two way interface execution_time 17.203µs 24.332µs ± 8.914µs 17.475µs ± 0.134µs 32.402µs 41.027µs 41.666µs 58.526µs 234.90% 0.920 0.105 36.54% 0.630µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [23.097µs; 25.567µs] or [-5.077%; +5.077%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
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 160.784µs 161.347µs ± 0.690µs 161.259µs ± 0.139µs 161.417µs 161.788µs 162.345µs 170.326µs 5.62% 11.188 142.302 0.43% 0.049µ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 [161.251µs; 161.442µs] or [-0.059%; +0.059%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
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.209ms 49.763ms ± 1.143ms 49.618ms ± 0.077ms 49.694ms 49.851ms 55.786ms 60.196ms 21.32% 8.225 68.961 2.29% 0.081ms 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.605ms; 49.921ms] or [-0.318%; +0.318%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
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.973ms 13.003ms ± 0.015ms 13.001ms ± 0.009ms 13.010ms 13.030ms 13.039ms 13.064ms 0.48% 0.701 1.123 0.11% 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 [13.000ms; 13.005ms] or [-0.016%; +0.016%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
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 237.091ns 249.290ns ± 14.444ns 243.113ns ± 4.160ns 252.184ns 278.702ns 290.227ns 293.254ns 20.62% 1.534 1.092 5.78% 1.021ns 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.288ns; 251.292ns] or [-0.803%; +0.803%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
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.615µs 146.534µs ± 1.678µs 146.267µs ± 0.529µs 146.824µs 148.373µs 152.679µs 162.701µs 11.24% 5.659 45.683 1.14% 0.119µ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.302µs; 146.767µs] or [-0.159%; +0.159%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
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 199.442ns 201.749ns ± 2.048ns 201.533ns ± 1.507ns 202.879ns 205.886ns 208.883ns 209.909ns 4.16% 1.322 2.158 1.01% 0.145ns 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 [201.465ns; 202.032ns] or [-0.141%; +0.141%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
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 747.159µs 748.676µs ± 0.716µs 748.692µs ± 0.511µs 749.132µs 749.743µs 750.735µs 751.361µs 0.36% 0.556 0.745 0.10% 0.051µ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 [748.577µs; 748.776µs] or [-0.013%; +0.013%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
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.257ms 4.265ms ± 0.004ms 4.264ms ± 0.002ms 4.267ms 4.271ms 4.272ms 4.281ms 0.38% 0.550 0.929 0.09% 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.264ms; 4.265ms] or [-0.012%; +0.012%] None None None

Group 20

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0b44657 1773759356 yannham/sidecar-ffi-pass
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.021µs 5.077µs ± 0.036µs 5.081µs ± 0.034µs 5.101µs 5.129µs 5.135µs 5.137µs 1.11% -0.022 -1.362 0.70% 0.003µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
ip_address/quantize_peer_ip_address_benchmark execution_time [5.072µs; 5.082µs] or [-0.098%; +0.098%] None None None

Baseline

Omitted due to size.

@github-actions
Copy link

github-actions bot commented Mar 10, 2026

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/yannham/sidecar-ffi-pass

Summary by Rule

Rule Base Branch PR Branch Change

Annotation Counts by File

File Base Branch PR Branch Change

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 9 9 No change (0%)
libdd-trace-utils 15 15 No change (0%)
Total 208 208 No change (0%)

About This Report

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

@codecov-commenter
Copy link

codecov-commenter commented Mar 10, 2026

Codecov Report

❌ Patch coverage is 35.21127% with 46 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.53%. Comparing base (6a02f01) to head (0b44657).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1698      +/-   ##
==========================================
- Coverage   71.59%   71.53%   -0.06%     
==========================================
  Files         430      430              
  Lines       63967    63973       +6     
==========================================
- Hits        45796    45763      -33     
- Misses      18171    18210      +39     
Components Coverage Δ
libdd-crashtracker 63.97% <ø> (+0.09%) ⬆️
libdd-crashtracker-ffi 18.19% <ø> (+0.46%) ⬆️
libdd-alloc 98.77% <ø> (ø)
libdd-data-pipeline 87.94% <ø> (ø)
libdd-data-pipeline-ffi 74.85% <ø> (ø)
libdd-common 79.73% <ø> (ø)
libdd-common-ffi 73.40% <ø> (ø)
libdd-telemetry 62.48% <ø> (+0.03%) ⬆️
libdd-telemetry-ffi 16.75% <ø> (ø)
libdd-dogstatsd-client 82.64% <ø> (ø)
datadog-ipc 80.35% <ø> (ø)
libdd-profiling 81.60% <ø> (+0.01%) ⬆️
libdd-profiling-ffi 63.65% <ø> (ø)
datadog-sidecar 33.56% <35.21%> (-0.97%) ⬇️
datdog-sidecar-ffi 12.78% <35.21%> (-4.23%) ⬇️
spawn-worker 54.69% <ø> (ø)
libdd-tinybytes 93.16% <ø> (ø)
libdd-trace-normalization 81.71% <ø> (ø)
libdd-trace-obfuscation 91.80% <ø> (ø)
libdd-trace-protobuf 68.25% <ø> (ø)
libdd-trace-utils 88.98% <ø> (ø)
datadog-tracer-flare 90.45% <ø> (ø)
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.

@dd-octo-sts
Copy link
Contributor

dd-octo-sts bot commented Mar 10, 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.70 MB 0% (0 B) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 100.42 MB 100.42 MB 0% (0 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 117.12 MB 117.12 MB 0% (0 B) 👌
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.28 MB 11.28 MB 0% (0 B) 👌
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 27.19 MB 27.19 MB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 76.61 KB 76.61 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 186.18 MB 186.19 MB +0% (+8.00 KB) 👌
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 917.12 MB 917.12 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 9.94 MB 9.94 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 76.61 KB 76.61 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 24.80 MB 24.80 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 51.48 MB 51.48 MB 0% (0 B) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 22.99 MB 22.99 MB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 77.80 KB 77.80 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 190.39 MB 190.38 MB -0% (-8.00 KB) 👌
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 900.80 MB 900.80 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 7.54 MB 7.54 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 77.80 KB 77.80 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 26.54 MB 26.54 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 47.10 MB 47.10 MB 0% (0 B) 👌
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 87.62 MB 87.62 MB 0% (0 B) 👌
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 10.22 MB 10.22 MB 0% (0 B) 👌
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 109.99 MB 109.99 MB 0% (0 B) 👌
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.97 MB 11.97 MB 0% (0 B) 👌

@yannham yannham force-pushed the yannham/sidecar-ffi-pass branch 4 times, most recently from ef69164 to 93f4334 Compare March 10, 2026 16:14
@yannham yannham marked this pull request as ready for review March 11, 2026 14:35
@yannham yannham requested review from a team as code owners March 11, 2026 14:35
@yannham yannham requested a review from bwoebi March 11, 2026 14:36
yannham added 2 commits March 17, 2026 15:55
Some of the safety comments were missing, some unsafe annotations didn't
need to be there, etc. This commit makes a pass on the span API to clean
up `unsafe` annotations and add missing Safety comments, leaving
behavior unchanged.
We can keep those for later, after confirming they make sense.
@yannham yannham force-pushed the yannham/sidecar-ffi-pass branch from 7535924 to 0b44657 Compare March 17, 2026 14:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants