Skip to content

Conversation

@danielsn
Copy link
Contributor

What does this PR do?

Takes sample types by enum rather than as tuples of strings.

Motivation

  • A way to avoid random inconsistencies between names, units, redundancy, etc
  • First step towards an OTEL style API

Additional Notes

Added experimental enum variants to allow users to experiment without needing to update libdatadog.

How to test the change?

Describe here in detail how the change can be validated.

@pr-commenter
Copy link

pr-commenter bot commented Jan 14, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-02-10 15:27:07

Comparing candidate commit ff3e02b in PR branch dsn/sample-type-enum with baseline commit 081c3e3 in branch main.

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

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 ff3e02b 1770736288 dsn/sample-type-enum
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 535.262µs 536.767µs ± 1.365µs 536.257µs ± 0.499µs 537.072µs 539.610µs 541.342µs 543.932µs 1.43% 1.868 4.274 0.25% 0.097µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1838464.506op/s 1863018.001op/s ± 4715.040op/s 1864778.648op/s ± 1736.941op/s 1866150.109op/s 1867334.322op/s 1868053.227op/s 1868245.605op/s 0.19% -1.847 4.140 0.25% 333.404op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 381.241µs 382.144µs ± 0.444µs 382.099µs ± 0.168µs 382.266µs 382.646µs 383.061µs 386.788µs 1.23% 5.901 58.517 0.12% 0.031µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2585392.420op/s 2616818.900op/s ± 3017.841op/s 2617120.107op/s ± 1147.353op/s 2618251.703op/s 2619779.926op/s 2620758.783op/s 2623016.031op/s 0.23% -5.812 57.287 0.12% 213.394op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 189.308µs 189.642µs ± 0.328µs 189.612µs ± 0.102µs 189.718µs 189.872µs 189.970µs 193.838µs 2.23% 10.493 131.603 0.17% 0.023µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5158958.081op/s 5273115.270op/s ± 8970.673op/s 5273921.392op/s ± 2847.148op/s 5276668.766op/s 5279631.056op/s 5281650.071op/s 5282383.346op/s 0.16% -10.371 129.532 0.17% 634.322op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.542µs 36.635µs ± 0.056µs 36.623µs ± 0.034µs 36.667µs 36.739µs 36.787µs 36.854µs 0.63% 1.032 1.195 0.15% 0.004µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 27134298.302op/s 27296264.632op/s ± 41299.494op/s 27305420.647op/s ± 25594.420op/s 27327573.180op/s 27346897.519op/s 27357292.891op/s 27365610.419op/s 0.22% -1.023 1.162 0.15% 2920.315op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 45.950µs 46.071µs ± 0.126µs 46.054µs ± 0.035µs 46.094µs 46.171µs 46.253µs 47.634µs 3.43% 9.720 117.332 0.27% 0.009µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 20993290.544op/s 21705853.852op/s ± 57798.537op/s 21713467.634op/s ± 16380.377op/s 21727892.549op/s 21744966.648op/s 21759047.851op/s 21762601.453op/s 0.23% -9.517 113.906 0.27% 4086.974op/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 [536.578µs; 536.956µs] or [-0.035%; +0.035%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [1862364.542op/s; 1863671.460op/s] or [-0.035%; +0.035%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [382.082µs; 382.205µs] or [-0.016%; +0.016%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2616400.656op/s; 2617237.144op/s] or [-0.016%; +0.016%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [189.596µs; 189.687µs] or [-0.024%; +0.024%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5271872.021op/s; 5274358.519op/s] or [-0.024%; +0.024%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [36.627µs; 36.643µs] or [-0.021%; +0.021%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [27290540.919op/s; 27301988.344op/s] or [-0.021%; +0.021%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [46.053µs; 46.088µs] or [-0.038%; +0.038%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21697843.531op/s; 21713864.174op/s] or [-0.037%; +0.037%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
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 204.942µs 205.677µs ± 0.412µs 205.600µs ± 0.283µs 205.928µs 206.444µs 206.779µs 206.900µs 0.63% 0.664 0.212 0.20% 0.029µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 4833254.042op/s 4862017.475op/s ± 9730.796op/s 4863824.100op/s ± 6687.311op/s 4868887.442op/s 4876388.687op/s 4878386.190op/s 4879433.163op/s 0.32% -0.653 0.193 0.20% 688.071op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 18.532µs 18.670µs ± 0.079µs 18.654µs ± 0.036µs 18.700µs 18.827µs 18.935µs 19.105µs 2.42% 1.787 5.184 0.42% 0.006µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 52341273.978op/s 53561410.572op/s ± 224819.440op/s 53608925.649op/s ± 103685.490op/s 53704819.029op/s 53811274.775op/s 53899570.188op/s 53959310.107op/s 0.65% -1.737 4.887 0.42% 15897.135op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.753µs 10.833µs ± 0.034µs 10.835µs ± 0.021µs 10.852µs 10.893µs 10.925µs 10.957µs 1.13% 0.459 0.833 0.31% 0.002µs 1 200
normalization/normalize_name/normalize_name/good throughput 91266366.115op/s 92312239.944op/s ± 287727.209op/s 92296094.328op/s ± 182624.594op/s 92510678.051op/s 92745276.984op/s 92926220.638op/s 92993210.076op/s 0.76% -0.434 0.790 0.31% 20345.386op/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 [205.620µs; 205.734µs] or [-0.028%; +0.028%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [4860668.880op/s; 4863366.070op/s] or [-0.028%; +0.028%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [18.660µs; 18.681µs] or [-0.059%; +0.059%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [53530252.759op/s; 53592568.384op/s] or [-0.058%; +0.058%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.828µs; 10.838µs] or [-0.043%; +0.043%] None None None
normalization/normalize_name/normalize_name/good throughput [92272363.720op/s; 92352116.168op/s] or [-0.043%; +0.043%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching deserializing traces from msgpack to their internal representation execution_time 48.211ms 48.599ms ± 1.404ms 48.396ms ± 0.061ms 48.489ms 48.634ms 56.688ms 61.961ms 28.03% 8.291 69.206 2.88% 0.099ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching deserializing traces from msgpack to their internal representation execution_time [48.404ms; 48.793ms] or [-0.400%; +0.400%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
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 241.603ns 254.674ns ± 13.665ns 248.041ns ± 5.442ns 264.514ns 286.389ns 287.601ns 289.271ns 16.62% 1.058 -0.041 5.35% 0.966ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_trace/test_trace execution_time [252.780ns; 256.568ns] or [-0.744%; +0.744%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
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.000ms 4.004ms ± 0.007ms 4.003ms ± 0.001ms 4.005ms 4.008ms 4.013ms 4.091ms 2.20% 11.563 149.083 0.16% 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.003ms; 4.005ms] or [-0.023%; +0.023%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
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 84.449µs 84.905µs ± 0.189µs 84.893µs ± 0.059µs 84.948µs 85.086µs 85.482µs 86.739µs 2.18% 5.518 47.232 0.22% 0.013µ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 [84.879µs; 84.931µs] or [-0.031%; +0.031%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
receiver_entry_point/report/2597 execution_time 9.846ms 10.144ms ± 0.072ms 10.140ms ± 0.037ms 10.182ms 10.252ms 10.336ms 10.367ms 2.24% -0.305 2.997 0.71% 0.005ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
receiver_entry_point/report/2597 execution_time [10.134ms; 10.153ms] or [-0.098%; +0.098%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
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 161.316µs 162.344µs ± 0.426µs 162.267µs ± 0.141µs 162.440µs 162.868µs 163.307µs 166.896µs 2.85% 6.356 63.989 0.26% 0.030µ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 [162.285µs; 162.403µs] or [-0.036%; +0.036%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
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.001ms 14.059ms ± 0.042ms 14.051ms ± 0.016ms 14.069ms 14.168ms 14.204ms 14.215ms 1.17% 2.002 4.247 0.30% 0.003ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching serializing traces from their internal representation to msgpack execution_time [14.053ms; 14.065ms] or [-0.041%; +0.041%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
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.250µs 3.251µs ± 1.436µs 3.027µs ± 0.030µs 3.057µs 3.683µs 14.227µs 14.796µs 388.74% 7.305 54.661 44.06% 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.052µs; 3.450µs] or [-6.121%; +6.121%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
ip_address/quantize_peer_ip_address_benchmark execution_time 4.995µs 5.075µs ± 0.044µs 5.069µs ± 0.035µs 5.110µs 5.148µs 5.157µs 5.163µs 1.87% 0.380 -1.088 0.86% 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.069µs; 5.081µs] or [-0.119%; +0.119%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
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 32.547µs 33.483µs ± 1.323µs 32.647µs ± 0.042µs 35.315µs 35.787µs 36.095µs 36.190µs 10.85% 0.935 -1.055 3.94% 0.094µ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.300µs; 33.666µs] or [-0.547%; +0.547%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
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 188.970ns 191.468ns ± 2.060ns 191.288ns ± 1.543ns 192.565ns 195.247ns 198.401ns 199.212ns 4.14% 1.004 1.290 1.07% 0.146ns 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.182ns; 191.753ns] or [-0.149%; +0.149%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
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.430µs 2.451µs ± 0.015µs 2.449µs ± 0.011µs 2.460µs 2.486µs 2.492µs 2.494µs 1.80% 0.887 0.232 0.61% 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.449µs; 2.453µs] or [-0.085%; +0.085%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
credit_card/is_card_number/ execution_time 3.892µs 3.912µs ± 0.003µs 3.912µs ± 0.001µs 3.914µs 3.917µs 3.918µs 3.918µs 0.15% -1.771 14.256 0.07% 0.000µs 1 200
credit_card/is_card_number/ throughput 255214479.973op/s 255605416.529op/s ± 176116.172op/s 255609348.148op/s ± 96498.532op/s 255705702.253op/s 255816317.123op/s 255917937.421op/s 256927238.648op/s 0.52% 1.798 14.490 0.07% 12453.294op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 77.035µs 77.511µs ± 0.529µs 77.289µs ± 0.164µs 77.722µs 78.738µs 79.498µs 79.861µs 3.33% 2.094 4.898 0.68% 0.037µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12521790.323op/s 12901954.124op/s ± 86894.638op/s 12938412.538op/s ± 27487.747op/s 12960173.065op/s 12972254.233op/s 12978968.050op/s 12981056.744op/s 0.33% -2.043 4.624 0.67% 6144.379op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 70.614µs 70.854µs ± 0.245µs 70.738µs ± 0.058µs 70.955µs 71.354µs 71.710µs 71.778µs 1.47% 1.756 2.640 0.34% 0.017µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13931915.618op/s 14113698.604op/s ± 48493.240op/s 14136698.162op/s ± 11533.159op/s 14144903.349op/s 14153635.698op/s 14157774.124op/s 14161402.425op/s 0.17% -1.740 2.565 0.34% 3428.990op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.896µs 3.913µs ± 0.003µs 3.913µs ± 0.002µs 3.914µs 3.917µs 3.918µs 3.924µs 0.29% -0.833 8.596 0.07% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254825178.562op/s 255584312.354op/s ± 174290.470op/s 255574736.437op/s ± 107724.746op/s 255700081.013op/s 255814874.267op/s 255935745.725op/s 256701557.725op/s 0.44% 0.853 8.691 0.07% 12324.197op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 67.429µs 67.635µs ± 0.286µs 67.530µs ± 0.045µs 67.660µs 68.055µs 69.009µs 69.392µs 2.76% 3.339 13.225 0.42% 0.020µs 1 200
credit_card/is_card_number/378282246310005 throughput 14410937.824op/s 14785427.940op/s ± 61694.853op/s 14808283.754op/s ± 9943.407op/s 14816158.505op/s 14824673.297op/s 14827225.457op/s 14830449.880op/s 0.15% -3.288 12.808 0.42% 4362.485op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 44.798µs 45.188µs ± 0.147µs 45.193µs ± 0.107µs 45.312µs 45.410µs 45.476µs 45.488µs 0.65% -0.233 -0.431 0.32% 0.010µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 21983930.935op/s 22130081.998op/s ± 71952.747op/s 22127441.919op/s ± 52478.845op/s 22177441.136op/s 22256967.041op/s 22295238.601op/s 22322400.418op/s 0.88% 0.247 -0.417 0.32% 5087.828op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.028µs 6.038µs ± 0.011µs 6.036µs ± 0.003µs 6.039µs 6.044µs 6.102µs 6.110µs 1.22% 5.062 28.358 0.17% 0.001µs 1 200
credit_card/is_card_number/x371413321323331 throughput 163669645.316op/s 165623018.229op/s ± 286520.454op/s 165662129.638op/s ± 69520.653op/s 165742699.477op/s 165825308.382op/s 165868381.620op/s 165881839.673op/s 0.13% -5.037 28.142 0.17% 20260.056op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.894µs 3.912µs ± 0.003µs 3.913µs ± 0.002µs 3.914µs 3.917µs 3.918µs 3.919µs 0.17% -1.438 9.942 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 255166523.350op/s 255594305.271op/s ± 174239.485op/s 255590990.445op/s ± 114699.860op/s 255701489.463op/s 255823008.656op/s 255906853.663op/s 256798816.456op/s 0.47% 1.458 10.099 0.07% 12320.592op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 65.503µs 65.713µs ± 0.083µs 65.720µs ± 0.060µs 65.778µs 65.834µs 65.858µs 65.887µs 0.25% -0.320 -0.544 0.13% 0.006µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15177515.929op/s 15217670.939op/s ± 19179.971op/s 15216117.350op/s ± 13953.913op/s 15231182.093op/s 15251668.228op/s 15261679.103op/s 15266392.563op/s 0.33% 0.325 -0.539 0.13% 1356.229op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 52.961µs 53.016µs ± 0.030µs 53.012µs ± 0.020µs 53.038µs 53.073µs 53.092µs 53.104µs 0.18% 0.552 0.080 0.06% 0.002µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 18830798.698op/s 18862062.940op/s ± 10600.636op/s 18863817.312op/s ± 7067.743op/s 18869997.176op/s 18877640.757op/s 18881319.050op/s 18881839.447op/s 0.10% -0.549 0.075 0.06% 749.578op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.893µs 3.912µs ± 0.003µs 3.912µs ± 0.002µs 3.914µs 3.919µs 3.920µs 3.921µs 0.24% -0.433 7.414 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 255011062.115op/s 255602768.998op/s ± 200398.838op/s 255630289.639op/s ± 104369.234op/s 255723187.705op/s 255833589.908op/s 255881657.558op/s 256864288.762op/s 0.48% 0.455 7.536 0.08% 14170.338op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 49.741µs 49.804µs ± 0.033µs 49.799µs ± 0.021µs 49.821µs 49.871µs 49.895µs 49.939µs 0.28% 0.974 1.257 0.07% 0.002µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 20024363.972op/s 20078823.481op/s ± 13358.996op/s 20080797.737op/s ± 8416.799op/s 20088565.087op/s 20096197.096op/s 20101753.496op/s 20104127.377op/s 0.12% -0.969 1.243 0.07% 944.624op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 44.825µs 45.194µs ± 0.135µs 45.197µs ± 0.080µs 45.278µs 45.410µs 45.501µs 45.510µs 0.69% -0.143 -0.082 0.30% 0.010µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 21973381.920op/s 22127268.040op/s ± 66122.011op/s 22125142.905op/s ± 39400.525op/s 22165122.091op/s 22239008.024op/s 22292910.810op/s 22309205.793op/s 0.83% 0.160 -0.072 0.30% 4675.532op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.027µs 6.036µs ± 0.006µs 6.035µs ± 0.002µs 6.038µs 6.042µs 6.046µs 6.105µs 1.15% 7.706 86.037 0.10% 0.000µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 163802592.668op/s 165671414.875op/s ± 162940.987op/s 165690729.604op/s ± 59260.593op/s 165743138.812op/s 165814885.675op/s 165877078.625op/s 165920425.285op/s 0.14% -7.621 84.740 0.10% 11521.668op/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.010%; +0.010%] None None None
credit_card/is_card_number/ throughput [255581008.522op/s; 255629824.537op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [77.438µs; 77.585µs] or [-0.095%; +0.095%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12889911.363op/s; 12913996.885op/s] or [-0.093%; +0.093%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [70.820µs; 70.888µs] or [-0.048%; +0.048%] None None None
credit_card/is_card_number/ 378282246310005 throughput [14106977.907op/s; 14120419.300op/s] or [-0.048%; +0.048%] None None None
credit_card/is_card_number/37828224631 execution_time [3.912µs; 3.913µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/37828224631 throughput [255560157.371op/s; 255608467.337op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/378282246310005 execution_time [67.596µs; 67.675µs] or [-0.059%; +0.059%] None None None
credit_card/is_card_number/378282246310005 throughput [14776877.627op/s; 14793978.254op/s] or [-0.058%; +0.058%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [45.167µs; 45.208µs] or [-0.045%; +0.045%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [22120110.039op/s; 22140053.956op/s] or [-0.045%; +0.045%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.036µs; 6.039µs] or [-0.024%; +0.024%] None None None
credit_card/is_card_number/x371413321323331 throughput [165583309.250op/s; 165662727.208op/s] or [-0.024%; +0.024%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.912µs; 3.913µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ throughput [255570157.354op/s; 255618453.187op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [65.702µs; 65.725µs] or [-0.017%; +0.017%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15215012.780op/s; 15220329.099op/s] or [-0.017%; +0.017%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [53.012µs; 53.021µs] or [-0.008%; +0.008%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [18860593.794op/s; 18863532.087op/s] or [-0.008%; +0.008%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.912µs; 3.913µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255574995.646op/s; 255630542.350op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [49.799µs; 49.808µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [20076972.053op/s; 20080674.910op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [45.175µs; 45.212µs] or [-0.041%; +0.041%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [22118104.165op/s; 22136431.915op/s] or [-0.041%; +0.041%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.035µs; 6.037µs] or [-0.014%; +0.014%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [165648832.821op/s; 165693996.929op/s] or [-0.014%; +0.014%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
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 531.983µs 532.738µs ± 0.342µs 532.733µs ± 0.222µs 532.948µs 533.366µs 533.526µs 533.728µs 0.19% 0.284 -0.217 0.06% 0.024µ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 [532.691µs; 532.785µs] or [-0.009%; +0.009%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
concentrator/add_spans_to_concentrator execution_time 10.630ms 10.656ms ± 0.014ms 10.654ms ± 0.008ms 10.664ms 10.678ms 10.694ms 10.722ms 0.64% 0.854 1.685 0.13% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
concentrator/add_spans_to_concentrator execution_time [10.654ms; 10.658ms] or [-0.019%; +0.019%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
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.345µs 146.117µs ± 1.841µs 145.784µs ± 0.588µs 146.440µs 147.669µs 152.059µs 164.708µs 12.98% 6.442 55.988 1.26% 0.130µ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 [145.862µs; 146.373µs] or [-0.175%; +0.175%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ff3e02b 1770736288 dsn/sample-type-enum
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.891µs 25.834µs ± 9.242µs 18.249µs ± 0.200µs 33.620µs 43.036µs 44.155µs 61.528µs 237.16% 0.794 -0.101 35.69% 0.654µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [24.553µs; 27.115µs] or [-4.958%; +4.958%] None None None

Baseline

Omitted due to size.

@codecov-commenter
Copy link

codecov-commenter commented Jan 14, 2026

Codecov Report

❌ Patch coverage is 75.50336% with 73 lines in your changes missing coverage. Please review.
✅ Project coverage is 70.86%. Comparing base (081c3e3) to head (ff3e02b).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1450      +/-   ##
==========================================
- Coverage   70.89%   70.86%   -0.04%     
==========================================
  Files         423      423              
  Lines       61709    61786      +77     
==========================================
+ Hits        43748    43783      +35     
- Misses      17961    18003      +42     
Components Coverage Δ
libdd-crashtracker 62.32% <ø> (+0.01%) ⬆️
libdd-crashtracker-ffi 15.80% <ø> (ø)
libdd-alloc 98.77% <ø> (ø)
libdd-data-pipeline 85.68% <ø> (ø)
libdd-data-pipeline-ffi 74.66% <ø> (ø)
libdd-common 79.82% <ø> (ø)
libdd-common-ffi 73.75% <ø> (ø)
libdd-telemetry 62.52% <ø> (ø)
libdd-telemetry-ffi 16.75% <ø> (ø)
libdd-dogstatsd-client 82.64% <ø> (ø)
datadog-ipc 80.71% <ø> (ø)
libdd-profiling 81.23% <78.39%> (-0.31%) ⬇️
libdd-profiling-ffi 63.66% <68.42%> (+0.09%) ⬆️
datadog-sidecar 33.61% <ø> (ø)
datdog-sidecar-ffi 12.16% <ø> (ø)
spawn-worker 54.69% <ø> (ø)
libdd-tinybytes 93.16% <ø> (ø)
libdd-trace-normalization 81.71% <ø> (ø)
libdd-trace-obfuscation 94.18% <ø> (ø)
libdd-trace-protobuf 68.00% <ø> (ø)
libdd-trace-utils 88.58% <ø> (ø)
datadog-tracer-flare 86.86% <ø> (ø)
libdd-log 74.69% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@danielsn danielsn force-pushed the dsn/sample-type-enum branch 2 times, most recently from 79ff759 to bd8abfc Compare January 14, 2026 23:19
@dd-octo-sts
Copy link

dd-octo-sts bot commented Jan 15, 2026

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 91.69 MB 91.65 MB --.04% (-39.38 KB) 💪
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.38 MB 8.38 MB 0% (0 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 10.76 MB 10.76 MB +0% (+104 B) 👌
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 106.40 MB 106.35 MB --.04% (-52.66 KB) 💪
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 25.08 MB 25.07 MB --.04% (-12.50 KB) 💪
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 75.94 KB 75.94 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 172.51 MB 172.30 MB --.12% (-224.00 KB) 💪
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 882.80 MB 881.91 MB --.10% (-915.71 KB) 💪
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 9.57 MB 9.56 MB --.03% (-3.50 KB) 💪
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 75.94 KB 75.94 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 23.04 MB 23.03 MB --.03% (-8.00 KB) 💪
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 48.45 MB 48.44 MB --.02% (-10.93 KB) 💪
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 21.22 MB 21.21 MB --.06% (-13.50 KB) 💪
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 77.12 KB 77.12 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 176.62 MB 176.44 MB --.10% (-184.00 KB) 💪
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 866.89 MB 866.61 MB --.03% (-287.95 KB) 💪
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 7.24 MB 7.24 MB -0% (-512 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 77.12 KB 77.12 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 24.62 MB 24.60 MB --.06% (-16.00 KB) 💪
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 44.15 MB 44.14 MB --.02% (-10.58 KB) 💪
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 80.18 MB 80.14 MB --.05% (-43.06 KB) 💪
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 9.88 MB 9.87 MB --.03% (-4.00 KB) 💪
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 100.31 MB 100.26 MB --.04% (-50.32 KB) 💪
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.44 MB 11.44 MB -0% (-1016 B) 👌

@danielsn danielsn force-pushed the dsn/sample-type-enum branch 2 times, most recently from 60395d1 to 4650827 Compare January 22, 2026 21:52
@danielsn danielsn marked this pull request as ready for review January 22, 2026 21:53
@danielsn danielsn requested review from a team as code owners January 22, 2026 21:53
@danielsn danielsn force-pushed the dsn/sample-type-enum branch 2 times, most recently from 3c1a633 to 2e7531b Compare January 23, 2026 13:56
Copy link
Member

@ivoanjo ivoanjo left a comment

Choose a reason for hiding this comment

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

Looks very reasonable! Left a few small comments + this would probably benefit from a pass from a real rustacean as I won't catch the more minute details there ;)

Comment on lines -44 to -46
/// When profiles are reset, the period needs to be preserved. This
/// stores it in a way that does not depend on the string table.
owned_period: Option<owned_types::Period>,
Copy link
Member

Choose a reason for hiding this comment

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

I'm curious, why change the period as well?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Now that we have a structured enum, might as well use it

@danielsn danielsn force-pushed the dsn/sample-type-enum branch from 2e7531b to 16bc2b2 Compare February 5, 2026 19:51
@github-actions
Copy link

github-actions bot commented Feb 5, 2026

📚 Documentation Check Results

⚠️ 632 documentation warning(s) found

📦 libdd-profiling - 632 warning(s)


Updated: 2026-02-10 15:55:32 UTC | Commit: 2a95d5d | missing-docs job results

@github-actions
Copy link

github-actions bot commented Feb 5, 2026

🔒 Cargo Deny Results

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

📦 libdd-profiling - 6 error(s)

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

error[vulnerability]: Lenient `hyper` header parsing of `Content-Length` could allow request smuggling
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:100:1
    │
100 │ hyper 0.10.16 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2021-0078
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2021-0078
    ├ `hyper`'s HTTP header parser accepted, according to RFC 7230, illegal contents inside `Content-Length` headers.
      Due to this, upstream HTTP proxies that ignore the header may still forward them along if it chooses to ignore the error.
      
      To be vulnerable, `hyper` must be used as an HTTP/1 server and using an HTTP proxy upstream that ignores the header's contents
      but still forwards it. Due to all the factors that must line up, an attack exploiting this vulnerability is unlikely.
    ├ Announcement: https://github.com/hyperium/hyper/security/advisories/GHSA-f3pg-qwvg-p99c
    ├ Solution: Upgrade to >=0.14.10 (try `cargo update -p hyper`)
    ├ hyper v0.10.16
      ├── iron v0.6.1
      │   └── multipart v0.18.0
      │       ├── libdd-common v1.1.0
      │       │   └── (dev) libdd-profiling v1.0.0
      │       │       └── (dev) libdd-profiling v1.0.0 (*)
      │       └── libdd-profiling v1.0.0 (*)
      ├── multipart v0.18.0 (*)
      └── nickel v0.11.0
          └── multipart v0.18.0 (*)

error[vulnerability]: Integer overflow in `hyper`'s parsing of the `Transfer-Encoding` header leads to data loss
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:100:1
    │
100 │ hyper 0.10.16 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2021-0079
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2021-0079
    ├ When decoding chunk sizes that are too large, `hyper`'s code would encounter an integer overflow. Depending on the situation,
      this could lead to data loss from an incorrect total size, or in rarer cases, a request smuggling attack.
      
      To be vulnerable, you must be using `hyper` for any HTTP/1 purpose, including as a client or server, and consumers must send
      requests or responses that specify a chunk size greater than 18 exabytes. For a possible request smuggling attack to be possible,
      any upstream proxies must accept a chunk size greater than 64 bits.
    ├ Announcement: https://github.com/hyperium/hyper/security/advisories/GHSA-5h46-h7hh-c6x9
    ├ Solution: Upgrade to >=0.14.10 (try `cargo update -p hyper`)
    ├ hyper v0.10.16
      ├── iron v0.6.1
      │   └── multipart v0.18.0
      │       ├── libdd-common v1.1.0
      │       │   └── (dev) libdd-profiling v1.0.0
      │       │       └── (dev) libdd-profiling v1.0.0 (*)
      │       └── libdd-profiling v1.0.0 (*)
      ├── multipart v0.18.0 (*)
      └── nickel v0.11.0
          └── multipart v0.18.0 (*)

error[vulnerability]: `idna` accepts Punycode labels that do not produce any non-ASCII when decoded
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:116:1
    │
116 │ idna 0.1.5 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2024-0421
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2024-0421
    ├ `idna` 0.5.0 and earlier accepts Punycode labels that do not produce any non-ASCII output, which means that either ASCII labels or the empty root label can be masked such that they appear unequal without IDNA processing or when processed with a different implementation and equal when processed with `idna` 0.5.0 or earlier.
      
      Concretely, `example.org` and `xn--example-.org` become equal after processing by `idna` 0.5.0 or earlier. Also, `example.org.xn--` and `example.org.` become equal after processing by `idna` 0.5.0 or earlier.
      
      In applications using `idna` (but not in `idna` itself) this may be able to lead to privilege escalation when host name comparison is part of a privilege check and the behavior is combined with a client that resolves domains with such labels instead of treating them as errors that preclude DNS resolution / URL fetching and with the attacker managing to introduce a DNS entry (and TLS certificate) for an `xn--`-masked name that turns into the name of the target when processed by `idna` 0.5.0 or earlier.
      
      ## Remedy
      
      Upgrade to `idna` 1.0.3 or later, if depending on `idna` directly, or to `url` 2.5.4 or later, if depending on `idna` via `url`. (This issue was fixed in `idna` 1.0.0, but versions earlier than 1.0.3 are not recommended for other reasons.)
      
      When upgrading, please take a moment to read about [alternative Unicode back ends for `idna`](https://docs.rs/crate/idna_adapter/latest).
      
      If you are using Rust earlier than 1.81 in combination with SQLx 0.8.2 or earlier, please also read an [issue](https://github.com/servo/rust-url/issues/992) about combining them with `url` 2.5.4 and `idna` 1.0.3.
      
      ## Additional information
      
      This issue resulted from `idna` 0.5.0 and earlier implementing the UTS 46 specification literally on this point and the specification having this bug. The specification bug has been fixed in [revision 33 of UTS 46](https://www.unicode.org/reports/tr46/tr46-33.html#Modifications).
      
      ## Acknowledgements
      
      Thanks to kageshiron for recognizing the security implications of this behavior.
    ├ Announcement: https://bugzilla.mozilla.org/show_bug.cgi?id=1887898
    ├ Solution: Upgrade to >=1.0.0 (try `cargo update -p idna`)
    ├ idna v0.1.5
      └── url v1.7.2
          ├── hyper v0.10.16
          │   ├── iron v0.6.1
          │   │   └── multipart v0.18.0
          │   │       ├── libdd-common v1.1.0
          │   │       │   └── (dev) libdd-profiling v1.0.0
          │   │       │       └── (dev) libdd-profiling v1.0.0 (*)
          │   │       └── libdd-profiling v1.0.0 (*)
          │   ├── multipart v0.18.0 (*)
          │   └── nickel v0.11.0
          │       └── multipart v0.18.0 (*)
          ├── iron v0.6.1 (*)
          ├── nickel v0.11.0 (*)
          └── tiny_http v0.6.4
              └── multipart v0.18.0 (*)

error[unmaintained]: multipart is Unmaintained
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:157:1
    │
157 │ multipart 0.18.0 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unmaintained advisory detected
    │
    ├ ID: RUSTSEC-2023-0050
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2023-0050
    ├ The `multipart` crate is unmaintained. The author has archived the github
      repository.
      
      Alternatives:
      
      - [multer](https://crates.io/crates/multer)
      - [multiparty](https://crates.io/crates/multiparty)
    ├ Solution: No safe upgrade is available!
    ├ multipart v0.18.0
      ├── libdd-common v1.1.0
      │   └── (dev) libdd-profiling v1.0.0
      │       └── (dev) libdd-profiling v1.0.0 (*)
      └── libdd-profiling v1.0.0 (*)

error[vulnerability]: Potential segfault in the time crate
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:266:1
    │
266 │ time 0.1.45 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2020-0071
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2020-0071
    ├ ### Impact
      
      The affected functions set environment variables without synchronization. On Unix-like operating systems, this can crash in multithreaded programs. Programs may segfault due to dereferencing a dangling pointer if an environment variable is read in a different thread than the affected functions. This may occur without the user's knowledge, notably in the Rust standard library or third-party libraries.
      
      The affected functions from time 0.2.7 through 0.2.22 are:
      
      - `time::UtcOffset::local_offset_at`
      - `time::UtcOffset::try_local_offset_at`
      - `time::UtcOffset::current_local_offset`
      - `time::UtcOffset::try_current_local_offset`
      - `time::OffsetDateTime::now_local`
      - `time::OffsetDateTime::try_now_local`
      
      The affected functions in time 0.1 (all versions) are:
      
      - `time::at_utc`
      - `time::at`
      - `time::now`
      - `time::tzset`
      
      Non-Unix targets (including Windows and wasm) are unaffected.
      
      ### Patches
      
      Pending a proper fix, the internal method that determines the local offset has been modified to always return `None` on the affected operating systems. This has the effect of returning an `Err` on the `try_*` methods and `UTC` on the non-`try_*` methods.
      
      Users and library authors with time in their dependency tree should perform `cargo update`, which will pull in the updated, unaffected code.
      
      Users of time 0.1 do not have a patch and should upgrade to an unaffected version: time 0.2.23 or greater or the 0.3 series.
      
      ### Workarounds
      
      A possible workaround for crates affected through the transitive dependency in `chrono`, is to avoid using the default `oldtime` feature dependency of the `chrono` crate by disabling its `default-features` and manually specifying the required features instead.
      
      #### Examples:
      
      `Cargo.toml`:  
      
      ```toml
      chrono = { version = "0.4", default-features = false, features = ["serde"] }
      ```
      
      ```toml
      chrono = { version = "0.4.22", default-features = false, features = ["clock"] }
      ```
      
      Commandline:  
      
      ```bash
      cargo add chrono --no-default-features -F clock
      ```
      
      Sources:  
       - [chronotope/chrono#602 (comment)](https://github.com/chronotope/chrono/issues/602#issuecomment-1242149249)  
       - [vityafx/serde-aux#21](https://github.com/vityafx/serde-aux/issues/21)
    ├ Announcement: https://github.com/time-rs/time/issues/293
    ├ Solution: Upgrade to >=0.2.23 (try `cargo update -p time`)
    ├ time v0.1.45
      ├── hyper v0.10.16
      │   ├── iron v0.6.1
      │   │   └── multipart v0.18.0
      │   │       ├── libdd-common v1.1.0
      │   │       │   └── (dev) libdd-profiling v1.0.0
      │   │       │       └── (dev) libdd-profiling v1.0.0 (*)
      │   │       └── libdd-profiling v1.0.0 (*)
      │   ├── multipart v0.18.0 (*)
      │   └── nickel v0.11.0
      │       └── multipart v0.18.0 (*)
      └── nickel v0.11.0 (*)

advisories FAILED, bans ok, sources ok

Updated: 2026-02-10 15:58:19 UTC | Commit: 2a95d5d | dependency-check job results

@danielsn danielsn force-pushed the dsn/sample-type-enum branch from 16bc2b2 to d401aa8 Compare February 5, 2026 20:44
@danielsn
Copy link
Contributor Author

danielsn commented Feb 5, 2026

/merge

@gh-worker-devflow-routing-ef8351
Copy link

gh-worker-devflow-routing-ef8351 bot commented Feb 5, 2026

View all feedbacks in Devflow UI.

2026-02-05 22:04:33 UTC ℹ️ Start processing command /merge


2026-02-05 22:04:38 UTC ℹ️ MergeQueue: waiting for PR to be ready

This pull request is not mergeable according to GitHub. Common reasons include pending required checks, missing approvals, or merge conflicts — but it could also be blocked by other repository rules or settings.
It will be added to the queue as soon as checks pass and/or get approvals. View in MergeQueue UI.
Note: if you pushed new commits since the last approval, you may need additional approval.
You can remove it from the waiting list with /remove command.


2026-02-06 02:05:07 UTC ⚠️ MergeQueue: This merge request was unqueued

devflow unqueued this merge request: It did not become mergeable within the expected time

@danielsn
Copy link
Contributor Author

danielsn commented Feb 6, 2026

/merge

@gh-worker-devflow-routing-ef8351
Copy link

gh-worker-devflow-routing-ef8351 bot commented Feb 6, 2026

View all feedbacks in Devflow UI.

2026-02-06 16:25:26 UTC ℹ️ Start processing command /merge


2026-02-06 16:25:33 UTC ℹ️ MergeQueue: waiting for PR to be ready

This pull request is not mergeable according to GitHub. Common reasons include pending required checks, missing approvals, or merge conflicts — but it could also be blocked by other repository rules or settings.
It will be added to the queue as soon as checks pass and/or get approvals. View in MergeQueue UI.
Note: if you pushed new commits since the last approval, you may need additional approval.
You can remove it from the waiting list with /remove command.


2026-02-06 18:13:08 UTC ℹ️ MergeQueue: merge request added to the queue

The expected merge time in main is approximately 35m (p90).


2026-02-06 18:27:58 UTC ℹ️ MergeQueue: Retrying because an high priority merge request needed to be processed first. No action is needed from your side.


2026-02-06 18:28:06 UTCMergeQueue: This merge request is not mergeable, blocked by github

PR can't be merged according to github policy. It's probably because:

  • some status checks are failing:
    • dd-gitlab/default-pipeline
    • dd-gitlab/report_gitlab_CI_status

@danielsn
Copy link
Contributor Author

danielsn commented Feb 6, 2026

/merge

@gh-worker-devflow-routing-ef8351
Copy link

gh-worker-devflow-routing-ef8351 bot commented Feb 6, 2026

View all feedbacks in Devflow UI.

2026-02-06 19:24:45 UTC ℹ️ Start processing command /merge


2026-02-06 19:24:51 UTC ℹ️ MergeQueue: waiting for PR to be ready

This pull request is not mergeable according to GitHub. Common reasons include pending required checks, missing approvals, or merge conflicts — but it could also be blocked by other repository rules or settings.
It will be added to the queue as soon as checks pass and/or get approvals. View in MergeQueue UI.
Note: if you pushed new commits since the last approval, you may need additional approval.
You can remove it from the waiting list with /remove command.


2026-02-06 23:25:12 UTC ⚠️ MergeQueue: This merge request was unqueued

devflow unqueued this merge request: It did not become mergeable within the expected time

@github-actions github-actions bot removed the ci-build label Feb 10, 2026
@danielsn
Copy link
Contributor Author

/merge

@gh-worker-devflow-routing-ef8351
Copy link

gh-worker-devflow-routing-ef8351 bot commented Feb 10, 2026

View all feedbacks in Devflow UI.

2026-02-10 15:13:00 UTC ℹ️ Start processing command /merge


2026-02-10 15:13:16 UTC ℹ️ MergeQueue: waiting for PR to be ready

This pull request is not mergeable according to GitHub. Common reasons include pending required checks, missing approvals, or merge conflicts — but it could also be blocked by other repository rules or settings.
It will be added to the queue as soon as checks pass and/or get approvals. View in MergeQueue UI.
Note: if you pushed new commits since the last approval, you may need additional approval.
You can remove it from the waiting list with /remove command.


2026-02-10 15:44:31 UTC ℹ️ MergeQueue: merge request added to the queue

The expected merge time in main is approximately 42m (p90).


2026-02-10 16:29:53 UTC ℹ️ MergeQueue: This merge request was merged

@github-actions
Copy link

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/dsn/sample-type-enum

Summary by Rule

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

Annotation Counts by File

File Base Branch PR Branch Change
datadog-profiling-replayer/src/replayer.rs 1 1 No change (0%)
libdd-profiling/src/internal/profile/mod.rs 1 1 No change (0%)

Annotation Stats by Crate

Crate Base Branch PR Branch Change
clippy-annotation-reporter 5 5 No change (0%)
datadog-ffe-ffi 1 1 No change (0%)
datadog-ipc 27 27 No change (0%)
datadog-live-debugger 6 6 No change (0%)
datadog-live-debugger-ffi 10 10 No change (0%)
datadog-profiling-replayer 4 4 No change (0%)
datadog-remote-config 3 3 No change (0%)
datadog-sidecar 59 59 No change (0%)
libdd-common 10 10 No change (0%)
libdd-common-ffi 12 12 No change (0%)
libdd-crashtracker 12 12 No change (0%)
libdd-data-pipeline 6 6 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 220 220 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.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants