Skip to content

feat(ruby): add macOS (darwin) platform support - #1463

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 8 commits into
mainfrom
add-macos-darwin-support
Jan 22, 2026
Merged

gh-worker-dd-mergequeue-cf854d[bot] merged 8 commits into
mainfrom
add-macos-darwin-support

Conversation

@leoromanovsky

@leoromanovsky leoromanovsky commented Jan 21, 2026 •

Copy link
Copy Markdown
Contributor

Motivation

A customer is unable to use the openfeature (FFE) SDKs in their local Ruby server which blocks their integration.

D, [2026-01-07T11:12:41.919209 #86007] DEBUG -- datadog: [datadog] (/Users/XXX/.rbenv/versions/3.2.7/lib/ruby/gems/3.2.0/gems/datadog-2.23.0/lib/datadog/core/configuration/components.rb:74:in `build_crashtracker') Cannot enable crashtracking: cannot load such file -- libdatadog_api.3.2_arm64-darwin24
W, [2026-01-07T11:12:41.919539 #86007]  WARN -- datadog: [datadog] (/Users/XXX/.rbenv/versions/3.2.7/lib/ruby/gems/3.2.0/gems/datadog-2.23.0/lib/datadog/open_feature/component.rb:40:in `build') OpenFeature could not be enabled as `libdatadog` is not loaded: "cannot load such file -- libdatadog_api.3.2_arm64-darwin24". For help solving this issue, please contact Datadog support at https://docs.datadoghq.com/help/.

What does this PR do?

Add support for publishing macOS gems to RubyGems, enabling OpenFeature and Remote Configuration on macOS for local Ruby development.

Changes:

  • Add arm64-darwin to LIB_GITHUB_RELEASES
  • Add darwin gems to push_to_rubygems task
  • Add darwin platform normalization (arm64-darwin-24 -> arm64-darwin)
  • Add .dylib to EXECUTABLE_FILES for macOS permissions

This addresses the issue where macOS users see:
"cannot load such file -- libdatadog_api.3.2_arm64-darwin24"

The darwin binaries are already built in GitHub releases but were not being packaged and published to RubyGems.

https://github.com/DataDog/libdatadog/releases/tag/v25.0.0

Screenshot 2026-01-21 at 11 41 40 AM

Decisions

Artifact naming normalization

On macOS, Gem::Platform.local includes the Darwin kernel version:

  • macOS Sonoma → arm64-darwin-23
  • macOS Sequoia → arm64-darwin-24
  • macOS Ventura → arm64-darwin-22

But we can't publish a separate gem for every macOS version - that would mean releasing libdatadog-1.0.0-arm64-darwin-22.gem, libdatadog-1.0.0-arm64-darwin-23.gem, libdatadog-1.0.0-arm64-darwin-24.gem, etc. And we'd need to release new gems every time Apple ships a new macOS.

How Linux avoids this:

On Linux, Gem::Platform.local returns just x86_64-linux or aarch64-linux - no version number. The libc variant (glibc vs musl) is a separate concern. So one gem works across all Linux versions.

The workaround:

We publish a single arm64-darwin gem, then normalize at runtime:

# arm64-darwin-24 → arm64-darwin
platform = platform.gsub(/-darwin-?\d*$/, "-darwin")

Additional Notes

Anything else we should know when reviewing?

How to test the change?

Github CI was expanded to include these platforms and all supported ruby versions with available github runners:

    ┌─────────┬───────┬──────────────────┐
    │  Ruby   │ Linux │    macOS ARM     │
    ├─────────┼───────┼──────────────────┤
    │ 2.5     │ ✓     │ -                │
    ├─────────┼───────┼──────────────────┤
    │ 2.6     │ ✓     │ -                │
    ├─────────┼───────┼──────────────────┤
    │ 2.7-3.4 │ ✓     │ ✓ (macos-latest) │
    └─────────┴───────┴──────────────────┘

Local builds

I compiled locally, and installed both libdatadog and dd-trace-rb into a ruby server; along with running dd agent I was able to perform an e2e test of the openfeature (FFE) SDKs.

================================================================================
   PROOF: Datadog OpenFeature Gems Working on macOS (M3 arm64-darwin)
================================================================================

Generated: 2026-01-21 15:24:37 UTC

=== FRESH INSTALL TEST ===
Gems installed from tarball into clean environment:

=== LIBDATADOG VERIFICATION ===
  Version:          25.0.0.1.0
  Current Platform: arm64-darwin
  Available Bins:   arm64-darwin
  pkgconfig folder: FOUND
  LD library path:  FOUND

=== DATADOG VERIFICATION ===
  Version: 2.27.0

=== PLATFORM ===
  Machine:  M3 Mac (Apple Silicon)
  Ruby:     3.2.2
  Platform: arm64-darwin24
  Arch:     arm64

=== LIVE FEATURE FLAG TEST ===
(from running dogfood app using these gems)

  eppo-dogfooding-boolean-flag
    Type:    boolean
    Value:   true
    Variant: true
    Status:  OK

  eppo-dogfooding-string-flag
    Type:    string
    Value:   "variant_b"
    Variant: variant_b
    Status:  OK

  eppo-dogfooding-float-flag
    Type:    float
    Value:   -1.23
    Variant: -1.23
    Status:  OK

  eppo-dogfooding-json-flag
    Type:    object
    Value:   {"enabled"=>true, "model"=>"claude"}
    Variant: claude-0
    Status:  OK

================================================================================
   SUCCESS: Gems install and work correctly on macOS arm64-darwin (M3)
================================================================================

Next Steps

Enable RC-based tests in dd-trace-rb to exercise loading libdatadog in macos.

Add support for publishing macOS gems to RubyGems, enabling OpenFeature
and Remote Configuration on macOS for local Ruby development.

Changes:
- Add arm64-darwin and x86_64-darwin to LIB_GITHUB_RELEASES
- Add darwin gems to push_to_rubygems task
- Add darwin platform normalization (arm64-darwin-24 -> arm64-darwin)
- Add .dylib to EXECUTABLE_FILES for macOS permissions

This addresses the issue where macOS users see:
  "cannot load such file -- libdatadog_api.3.2_arm64-darwin24"

The darwin binaries are already built in GitHub releases but were not
being packaged and published to RubyGems.
@pr-commenter

pr-commenter Bot commented Jan 21, 2026 •

Copy link
Copy Markdown

Benchmarks

Comparison

Benchmark execution time: 2026-01-22 19:55:17

Comparing candidate commit e5e3db6 in PR branch add-macos-darwin-support with baseline commit d430cbd in branch main.

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

scenario:profile_add_sample2_frames_x1000

  • 🟩 execution_time [-23.377µs; -23.124µs] or [-4.233%; -4.187%]

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 e5e3db6 1769110802 add-macos-darwin-support
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 162.234µs 162.836µs ± 0.292µs 162.783µs ± 0.141µs 162.971µs 163.291µs 163.771µs 164.752µs 1.21% 2.245 10.148 0.18% 0.021µ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.795µs; 162.876µs] or [-0.025%; +0.025%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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.556ms 14.642ms ± 0.037ms 14.637ms ± 0.018ms 14.658ms 14.701ms 14.779ms 14.850ms 1.46% 1.669 6.007 0.26% 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.637ms; 14.647ms] or [-0.035%; +0.035%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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.636ms 10.664ms ± 0.016ms 10.662ms ± 0.009ms 10.671ms 10.691ms 10.723ms 10.741ms 0.73% 1.352 3.658 0.15% 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.662ms; 10.666ms] or [-0.020%; +0.020%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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 527.882µs 528.976µs ± 0.842µs 528.666µs ± 0.375µs 529.313µs 530.382µs 530.648µs 533.786µs 0.97% 1.537 3.946 0.16% 0.060µ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 [528.859µs; 529.093µs] or [-0.022%; +0.022%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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 3.945ms 3.952ms ± 0.007ms 3.952ms ± 0.002ms 3.954ms 3.957ms 3.962ms 4.039ms 2.18% 9.684 118.099 0.17% 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 [3.952ms; 3.953ms] or [-0.024%; +0.024%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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 89.629µs 89.846µs ± 0.114µs 89.835µs ± 0.040µs 89.876µs 89.970µs 90.133µs 90.821µs 1.10% 4.532 33.327 0.13% 0.008µ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 [89.830µs; 89.862µs] or [-0.018%; +0.018%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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 243.014ns 253.848ns ± 13.432ns 248.094ns ± 2.991ns 255.589ns 287.337ns 290.079ns 301.197ns 21.40% 1.740 1.968 5.28% 0.950ns 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 [251.986ns; 255.710ns] or [-0.733%; +0.733%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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.409µs 2.439µs ± 0.023µs 2.434µs ± 0.009µs 2.445µs 2.507µs 2.513µs 2.514µs 3.31% 1.816 3.367 0.94% 0.002µ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.436µs; 2.442µs] or [-0.131%; +0.131%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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.137µs 3.134µs ± 1.411µs 2.963µs ± 0.026µs 2.989µs 3.293µs 13.551µs 15.006µs 406.41% 7.531 57.265 44.92% 0.100µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [2.938µs; 3.329µs] or [-6.241%; +6.241%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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 143.791µs 145.958µs ± 1.635µs 145.755µs ± 0.534µs 146.322µs 147.476µs 150.857µs 161.764µs 10.98% 5.875 48.705 1.12% 0.116µ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.731µs; 146.184µs] or [-0.155%; +0.155%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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.095µs 33.715µs ± 1.066µs 33.209µs ± 0.067µs 33.389µs 35.988µs 36.090µs 37.127µs 11.80% 1.700 1.029 3.16% 0.075µ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.567µs; 33.863µs] or [-0.438%; +0.438%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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.032µs 5.119µs ± 0.050µs 5.130µs ± 0.032µs 5.156µs 5.202µs 5.205µs 5.207µs 1.51% -0.079 -1.139 0.97% 0.004µ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.112µs; 5.126µs] or [-0.135%; +0.135%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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.911µs 205.581µs ± 0.361µs 205.533µs ± 0.246µs 205.825µs 206.210µs 206.508µs 206.726µs 0.58% 0.546 -0.109 0.18% 0.026µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 4837331.017op/s 4864273.273op/s ± 8529.549op/s 4865395.547op/s ± 5820.907op/s 4870227.042op/s 4875868.043op/s 4879618.628op/s 4880169.418op/s 0.30% -0.538 -0.123 0.17% 603.130op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 18.575µs 18.701µs ± 0.077µs 18.680µs ± 0.043µs 18.745µs 18.844µs 18.958µs 19.026µs 1.85% 1.237 2.076 0.41% 0.005µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 52559210.400op/s 53473105.914op/s ± 217886.059op/s 53532182.719op/s ± 124582.691op/s 53627911.171op/s 53747872.149op/s 53788048.045op/s 53835014.841op/s 0.57% -1.207 1.958 0.41% 15406.871op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.783µs 10.864µs ± 0.033µs 10.863µs ± 0.020µs 10.881µs 10.928µs 10.948µs 11.008µs 1.34% 0.716 1.510 0.30% 0.002µs 1 200
normalization/normalize_name/normalize_name/good throughput 90841763.357op/s 92044823.698op/s ± 278794.217op/s 92058124.685op/s ± 168362.294op/s 92229018.768op/s 92445185.443op/s 92588939.698op/s 92735024.886op/s 0.74% -0.689 1.432 0.30% 19713.728op/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.531µs; 205.631µs] or [-0.024%; +0.024%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [4863091.160op/s; 4865455.387op/s] or [-0.024%; +0.024%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [18.691µs; 18.712µs] or [-0.057%; +0.057%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [53442909.002op/s; 53503302.826op/s] or [-0.056%; +0.056%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.860µs; 10.869µs] or [-0.042%; +0.042%] None None None
normalization/normalize_name/normalize_name/good throughput [92006185.501op/s; 92083461.895op/s] or [-0.042%; +0.042%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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 12.733ms 13.021ms ± 0.084ms 13.035ms ± 0.031ms 13.065ms 13.116ms 13.179ms 13.308ms 2.09% -1.365 3.341 0.64% 0.006ms 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 [13.009ms; 13.032ms] or [-0.090%; +0.090%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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.115µs 536.807µs ± 1.394µs 536.236µs ± 0.540µs 537.687µs 539.316µs 541.063µs 544.962µs 1.63% 1.825 5.348 0.26% 0.099µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1834990.330op/s 1862880.959op/s ± 4814.520op/s 1864849.630op/s ± 1881.267op/s 1866152.106op/s 1867532.739op/s 1868296.634op/s 1868756.156op/s 0.21% -1.794 5.116 0.26% 340.438op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 381.338µs 382.150µs ± 0.309µs 382.125µs ± 0.204µs 382.341µs 382.642µs 382.913µs 383.109µs 0.26% 0.291 -0.229 0.08% 0.022µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2610225.570op/s 2616773.380op/s ± 2117.315op/s 2616944.868op/s ± 1397.077op/s 2618271.671op/s 2619854.410op/s 2620625.408op/s 2622345.830op/s 0.21% -0.287 -0.233 0.08% 149.717op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 189.985µs 190.759µs ± 0.301µs 190.830µs ± 0.131µs 190.946µs 191.159µs 191.238µs 191.246µs 0.22% -0.951 0.165 0.16% 0.021µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5228859.820op/s 5242220.179op/s ± 8288.517op/s 5240255.292op/s ± 3589.202op/s 5244733.737op/s 5259807.944op/s 5262736.237op/s 5263577.702op/s 0.45% 0.957 0.173 0.16% 586.087op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.445µs 36.576µs ± 0.055µs 36.574µs ± 0.040µs 36.615µs 36.667µs 36.706µs 36.758µs 0.50% 0.339 -0.045 0.15% 0.004µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 27205024.230op/s 27340672.256op/s ± 41202.273op/s 27342089.412op/s ± 30185.837op/s 27370325.505op/s 27399835.524op/s 27418487.153op/s 27438484.397op/s 0.35% -0.331 -0.056 0.15% 2913.441op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 45.928µs 46.063µs ± 0.112µs 46.048µs ± 0.030µs 46.087µs 46.167µs 46.234µs 47.459µs 3.06% 9.739 117.827 0.24% 0.008µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21070907.819op/s 21709502.227op/s ± 51703.095op/s 21716624.353op/s ± 14090.755op/s 21728422.374op/s 21745427.420op/s 21755332.476op/s 21773015.347op/s 0.26% -9.557 114.763 0.24% 3655.961op/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.613µs; 537.000µs] or [-0.036%; +0.036%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [1862213.713op/s; 1863548.205op/s] or [-0.036%; +0.036%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [382.107µs; 382.193µs] or [-0.011%; +0.011%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2616479.941op/s; 2617066.820op/s] or [-0.011%; +0.011%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [190.718µs; 190.801µs] or [-0.022%; +0.022%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5241071.470op/s; 5243368.888op/s] or [-0.022%; +0.022%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [36.568µs; 36.583µs] or [-0.021%; +0.021%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [27334962.017op/s; 27346382.495op/s] or [-0.021%; +0.021%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [46.047µs; 46.079µs] or [-0.034%; +0.034%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21702336.675op/s; 21716667.779op/s] or [-0.033%; +0.033%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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.969ns 191.192ns ± 2.004ns 190.990ns ± 1.306ns 192.114ns 194.640ns 198.877ns 200.190ns 4.82% 1.568 3.514 1.05% 0.142ns 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 [190.914ns; 191.470ns] or [-0.145%; +0.145%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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.655µs 25.436µs ± 10.100µs 17.846µs ± 0.129µs 34.889µs 44.187µs 45.082µs 73.693µs 312.94% 1.088 1.149 39.61% 0.714µ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.037µs; 26.836µs] or [-5.503%; +5.503%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
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.274ms 48.648ms ± 0.933ms 48.508ms ± 0.076ms 48.587ms 48.933ms 51.323ms 58.600ms 20.81% 8.621 80.569 1.91% 0.066ms 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.518ms; 48.777ms] or [-0.266%; +0.266%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e5e3db6 1769110802 add-macos-darwin-support
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
credit_card/is_card_number/ execution_time 3.891µs 3.913µs ± 0.003µs 3.912µs ± 0.002µs 3.914µs 3.917µs 3.918µs 3.918µs 0.15% -1.724 12.470 0.08% 0.000µs 1 200
credit_card/is_card_number/ throughput 255204305.724op/s 255586441.145op/s ± 196608.099op/s 255593814.630op/s ± 107646.492op/s 255691748.594op/s 255864120.886op/s 255931275.672op/s 257019518.802op/s 0.56% 1.751 12.696 0.08% 13902.292op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 77.048µs 77.682µs ± 0.407µs 77.652µs ± 0.264µs 77.907µs 78.343µs 78.631µs 80.243µs 3.34% 1.490 6.662 0.52% 0.029µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12462213.650op/s 12873360.924op/s ± 66886.458op/s 12878033.295op/s ± 43643.976op/s 12922340.789op/s 12966638.603op/s 12974758.457op/s 12979001.887op/s 0.78% -1.393 5.955 0.52% 4729.587op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 70.660µs 71.113µs ± 0.277µs 71.064µs ± 0.157µs 71.251µs 71.602µs 71.830µs 72.001µs 1.32% 0.638 0.059 0.39% 0.020µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13888635.796op/s 14062250.885op/s ± 54607.584op/s 14071782.579op/s ± 31142.204op/s 14098610.604op/s 14141093.665op/s 14148289.806op/s 14152287.040op/s 0.57% -0.619 0.024 0.39% 3861.339op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.892µs 3.913µs ± 0.003µs 3.913µs ± 0.002µs 3.915µs 3.917µs 3.919µs 3.919µs 0.17% -1.492 9.380 0.08% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 255148903.883op/s 255562828.023op/s ± 195828.485op/s 255575177.122op/s ± 137493.448op/s 255693454.249op/s 255808588.194op/s 255956809.221op/s 256906251.925op/s 0.52% 1.513 9.550 0.08% 13847.165op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 67.422µs 67.859µs ± 0.293µs 67.788µs ± 0.224µs 68.066µs 68.324µs 68.695µs 68.867µs 1.59% 0.669 0.148 0.43% 0.021µs 1 200
credit_card/is_card_number/378282246310005 throughput 14520731.484op/s 14736759.109op/s ± 63429.173op/s 14751765.426op/s ± 48964.250op/s 14780981.348op/s 14822473.018op/s 14830596.559op/s 14831849.915op/s 0.54% -0.648 0.090 0.43% 4485.120op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 44.767µs 45.209µs ± 0.187µs 45.213µs ± 0.144µs 45.343µs 45.497µs 45.531µs 45.557µs 0.76% -0.180 -0.709 0.41% 0.013µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 21950284.780op/s 22120096.317op/s ± 91477.125op/s 22117393.746op/s ± 70747.803op/s 22191891.090op/s 22268893.665op/s 22326781.100op/s 22337819.881op/s 1.00% 0.196 -0.697 0.41% 6468.410op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.028µs 6.039µs ± 0.017µs 6.035µs ± 0.003µs 6.039µs 6.049µs 6.129µs 6.175µs 2.31% 5.359 32.451 0.28% 0.001µs 1 200
credit_card/is_card_number/x371413321323331 throughput 161954573.746op/s 165604715.763op/s ± 457265.127op/s 165700381.113op/s ± 77111.576op/s 165766240.191op/s 165852235.768op/s 165884337.147op/s 165896487.800op/s 0.12% -5.312 31.874 0.28% 32333.527op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.895µs 3.912µs ± 0.003µs 3.912µs ± 0.001µs 3.913µs 3.915µs 3.917µs 3.928µs 0.42% 0.172 13.201 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 254576097.445op/s 255646598.156op/s ± 175053.028op/s 255653816.141op/s ± 91162.550op/s 255753740.262op/s 255853989.589op/s 255881632.742op/s 256751113.383op/s 0.43% -0.141 13.222 0.07% 12378.118op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 65.255µs 65.577µs ± 0.102µs 65.580µs ± 0.076µs 65.652µs 65.730µs 65.790µs 65.837µs 0.39% -0.119 -0.406 0.16% 0.007µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15189123.952op/s 15249285.243op/s ± 23787.610op/s 15248469.323op/s ± 17588.249op/s 15266563.554op/s 15286191.689op/s 15297040.984op/s 15324477.788op/s 0.50% 0.126 -0.401 0.16% 1682.038op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 52.942µs 53.017µs ± 0.035µs 53.012µs ± 0.023µs 53.039µs 53.075µs 53.108µs 53.123µs 0.21% 0.395 -0.024 0.07% 0.002µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 18824382.456op/s 18861979.902op/s ± 12338.040op/s 18863565.024op/s ± 8224.673op/s 18870528.952op/s 18881416.061op/s 18884742.547op/s 18888457.264op/s 0.13% -0.392 -0.028 0.07% 872.431op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.891µs 3.912µs ± 0.003µs 3.912µs ± 0.002µs 3.913µs 3.916µs 3.917µs 3.918µs 0.16% -2.093 16.199 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 255221663.558op/s 255643165.704op/s ± 175459.600op/s 255639285.670op/s ± 100798.771op/s 255740969.703op/s 255881997.359op/s 255937325.370op/s 257000112.167op/s 0.53% 2.122 16.458 0.07% 12406.867op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 49.740µs 49.812µs ± 0.034µs 49.807µs ± 0.024µs 49.838µs 49.865µs 49.897µs 49.930µs 0.25% 0.423 -0.054 0.07% 0.002µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 20028025.286op/s 20075573.820op/s ± 13655.878op/s 20077362.773op/s ± 9639.697op/s 20085075.283op/s 20094426.811op/s 20102682.624op/s 20104575.801op/s 0.14% -0.420 -0.060 0.07% 965.616op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 44.817µs 45.190µs ± 0.161µs 45.197µs ± 0.122µs 45.306µs 45.460µs 45.508µs 45.513µs 0.70% 0.025 -0.779 0.36% 0.011µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 21971542.102op/s 22129030.319op/s ± 78776.100op/s 22125600.456op/s ± 59683.989op/s 22191723.089op/s 22249378.901op/s 22287867.132op/s 22312842.740op/s 0.85% -0.012 -0.778 0.36% 5570.311op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.028µs 6.040µs ± 0.016µs 6.036µs ± 0.003µs 6.040µs 6.070µs 6.110µs 6.154µs 1.96% 3.989 19.254 0.26% 0.001µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 162495347.638op/s 165555762.392op/s ± 428453.250op/s 165672448.607op/s ± 88739.612op/s 165737450.218op/s 165837314.859op/s 165881993.750op/s 165894230.006op/s 0.13% -3.948 18.820 0.26% 30296.220op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
credit_card/is_card_number/ execution_time [3.912µs; 3.913µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/ throughput [255559193.153op/s; 255613689.136op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [77.626µs; 77.738µs] or [-0.073%; +0.073%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12864091.104op/s; 12882630.744op/s] or [-0.072%; +0.072%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [71.075µs; 71.152µs] or [-0.054%; +0.054%] None None None
credit_card/is_card_number/ 378282246310005 throughput [14054682.799op/s; 14069818.971op/s] or [-0.054%; +0.054%] None None None
credit_card/is_card_number/37828224631 execution_time [3.913µs; 3.913µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/37828224631 throughput [255535688.079op/s; 255589967.968op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/378282246310005 execution_time [67.818µs; 67.899µs] or [-0.060%; +0.060%] None None None
credit_card/is_card_number/378282246310005 throughput [14727968.436op/s; 14745549.783op/s] or [-0.060%; +0.060%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [45.183µs; 45.234µs] or [-0.057%; +0.057%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [22107418.467op/s; 22132774.167op/s] or [-0.057%; +0.057%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.036µs; 6.041µs] or [-0.039%; +0.039%] None None None
credit_card/is_card_number/x371413321323331 throughput [165541343.214op/s; 165668088.312op/s] or [-0.038%; +0.038%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.911µs; 3.912µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ throughput [255622337.490op/s; 255670858.822op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [65.563µs; 65.591µs] or [-0.022%; +0.022%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15245988.509op/s; 15252581.977op/s] or [-0.022%; +0.022%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [53.012µs; 53.022µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [18860269.968op/s; 18863689.835op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.911µs; 3.912µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255618848.690op/s; 255667482.717op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [49.807µs; 49.816µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [20073681.247op/s; 20077466.394op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [45.168µs; 45.212µs] or [-0.049%; +0.049%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [22118112.709op/s; 22139947.929op/s] or [-0.049%; +0.049%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.038µs; 6.042µs] or [-0.036%; +0.036%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [165496382.892op/s; 165615141.891op/s] or [-0.036%; +0.036%] None None None

Baseline

Omitted due to size.

Test the Ruby gem scaffolding on macOS in addition to Linux.
- Ruby 2.7+ runs on macos-latest (ARM/Apple Silicon)
- Ruby 2.5-2.6 runs on macos-13 (Intel x86_64)
@leoromanovsky
leoromanovsky force-pushed the add-macos-darwin-support branch from 4ac076a to 43d9d53 Compare January 21, 2026 17:03
@leoromanovsky leoromanovsky changed the title [ruby] Add macOS (darwin) platform support feat(ruby): Add macOS (darwin) platform support Jan 21, 2026
Comment thread ruby/Rakefile Outdated
@codecov-commenter

codecov-commenter commented Jan 21, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 71.12%. Comparing base (d430cbd) to head (e5e3db6).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1463      +/-   ##
==========================================
+ Coverage   71.11%   71.12%   +0.01%     
==========================================
  Files         419      419              
  Lines       67067    67067              
==========================================
+ Hits        47694    47703       +9     
+ Misses      19373    19364       -9     
Components Coverage Δ
libdd-crashtracker 61.39% <ø> (ø)
libdd-crashtracker-ffi 16.50% <ø> (ø)
libdd-alloc 98.73% <ø> (ø)
libdd-data-pipeline 86.03% <ø> (ø)
libdd-data-pipeline-ffi 78.57% <ø> (ø)
libdd-common 80.84% <ø> (ø)
libdd-common-ffi 74.19% <ø> (ø)
libdd-telemetry 59.82% <ø> (ø)
libdd-telemetry-ffi 21.17% <ø> (ø)
libdd-dogstatsd-client 83.75% <ø> (ø)
datadog-ipc 82.60% <ø> (ø)
libdd-profiling 80.67% <ø> (+0.01%) ⬆️
libdd-profiling-ffi 62.46% <ø> (ø)
datadog-sidecar 35.02% <ø> (ø)
datdog-sidecar-ffi 10.25% <ø> (ø)
spawn-worker 55.18% <ø> (ø)
libdd-tinybytes 93.43% <ø> (ø)
libdd-trace-normalization 82.33% <ø> (ø)
libdd-trace-obfuscation 94.17% <ø> (ø)
libdd-trace-protobuf 61.18% <ø> (ø)
libdd-trace-utils 89.45% <ø> (ø)
datadog-tracer-flare 63.49% <ø> (ø)
libdd-log 75.57% <ø> (ø)
🚀 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.

Keep only arm64-darwin (Apple Silicon) support for now.
x86_64-darwin can be added later if there's customer demand.
@leoromanovsky leoromanovsky changed the title feat(ruby): Add macOS (darwin) platform support feat(ruby): add macOS (darwin) platform support Jan 21, 2026
Tests now use Libdatadog.current_platform instead of Gem::Platform.local
to match the normalization that happens in the actual code. This fixes
test failures on macOS where Gem::Platform.local returns versioned
platform names (e.g., "arm64-darwin-22") but the code normalizes them
to unversioned names (e.g., "arm64-darwin").
@dd-octo-sts

dd-octo-sts Bot commented Jan 21, 2026 •

Copy link
Copy Markdown
Contributor

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 91.21 MB 91.21 MB 0% (0 B) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.38 MB 8.38 MB 0% (0 B) 👌
aarch64-apple-darwin
Artifact Baseline Commit Change
/aarch64-apple-darwin/lib/libdatadog_profiling.a 62.36 MB 62.36 MB 0% (0 B) 👌
/aarch64-apple-darwin/lib/libdatadog_profiling.dylib 9.41 MB 9.41 MB 0% (0 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 105.53 MB 105.53 MB 0% (0 B) 👌
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 10.67 MB 10.67 MB 0% (0 B) 👌
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 25.08 MB 25.08 MB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 73.49 KB 73.49 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 165.95 MB 165.91 MB --.02% (-40.00 KB) 💪
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 827.93 MB 827.93 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 9.54 MB 9.54 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 73.49 KB 73.49 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 22.94 MB 22.94 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 47.90 MB 47.90 MB 0% (0 B) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 21.15 MB 21.15 MB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 74.62 KB 74.62 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 169.90 MB 169.87 MB --.01% (-24.00 KB) 💪
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 814.89 MB 814.89 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 7.22 MB 7.22 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 74.62 KB 74.62 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 24.51 MB 24.51 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 43.62 MB 43.62 MB 0% (0 B) 👌
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 79.72 MB 79.72 MB 0% (0 B) 👌
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 9.85 MB 9.85 MB 0% (0 B) 👌
x86_64-apple-darwin
Artifact Baseline Commit Change
/x86_64-apple-darwin/lib/libdatadog_profiling.a 64.24 MB 64.24 MB 0% (0 B) 👌
/x86_64-apple-darwin/lib/libdatadog_profiling.dylib 10.44 MB 10.44 MB 0% (0 B) 👌
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 99.56 MB 99.56 MB 0% (0 B) 👌
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.41 MB 11.41 MB 0% (0 B) 👌

@leoromanovsky
leoromanovsky marked this pull request as ready for review January 21, 2026 18:29
@leoromanovsky
leoromanovsky requested review from a team as code owners January 21, 2026 18:29
Comment thread ruby/Rakefile

@ivoanjo ivoanjo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think this is almost good BUT ;)

It's hard/annoying/awkward to test this without releasing on rubygems.org. Yet, if we release this as-is right now, it will start getting picked up by customers on macOS and if something is broken, we've just broken installing the latest stable dd-trace-rb on macOS, which would kinda suck.

Here's my suggestion: libdatadog v26 just dropped. Let's update the hashes and versions and release v26 for macOS first.

The difference is such a major release is not picked up by the latest stable dd-trace-rb (needs changing on master), so we are able to let the macOS stuff stew for a few days and we can poke at it easily without impacting customers.

(If everything proves out to be fine, then I think we could even go back and maybe still release v25 for macOS, but in that situation we'd already be a lot more confident that we're in good shape overall)

Comment thread ruby/spec/libdatadog_spec.rb
Comment thread ruby/Rakefile
Comment thread ruby/Rakefile Outdated
@ivoanjo

ivoanjo commented Jan 22, 2026

Copy link
Copy Markdown
Member

Here's my suggestion: libdatadog v26 just dropped. Let's update the hashes and versions and release v26 for macOS first.

Alternatively, if we don't want to wait for a next dd-trace-rb release, we could re-release all of v25, including macOS, and bump the GEM_MINOR_VERSION in version.rb.

This would accomplish two things:

  1. It's easier for customers to downgrade/avoid the version if needed (they could update their Gemfile with != 25.0.0.1.whatever_patch_version_we_pick and thus go back to a previous working state)
  2. It doesn't change behavior for customers that have a Gemfile.lock -- like any update, they need to opt-in to the new version, so there's less of a change of "this worked today, it's broken tomorrow"

...and I think in this case the risk would be way lower to upload v25 macOS on rubygems.org

- Update libdatadog version from v25 to v26
- Update SHA256 hashes for v26 release assets
- Add arm64-darwin to fallback package for BUNDLE_FORCE_RUBY_PLATFORM users
- Decouple test from implementation by inlining platform normalization logic
@leoromanovsky

Copy link
Copy Markdown
Contributor Author

Targeting v26 is fine for this for the reasons you mentioned.

Locally validated:

  • gem builds
  • contains darwin files

@leoromanovsky
leoromanovsky requested a review from ivoanjo January 22, 2026 18:23

@ivoanjo ivoanjo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

👍 LGTM

After getting this merged it's just a matter of triggering the publish action -- https://github.com/DataDog/libdatadog/tree/main/ruby#releasing-a-new-version-to-rubygemsorg . Anyone from the Ruby guild or libdatadog can approve the release.

Comment thread ruby/spec/libdatadog_spec.rb
@datadog-official

datadog-official Bot commented Jan 22, 2026 •

Copy link
Copy Markdown

⚠️ Tests

✨ Fix all issues with Cursor

⚠️ Warnings

❄️ 1 New flaky test detected

test_crash_tracking_errors_intake_crash_ping from bin_tests::crashtracker_bin_test (Datadog) (Fix with Cursor)
Test has failed

ℹ️ Info

🧪 All tests passed

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: e5e3db6 | Docs | Datadog PR Page | Was this helpful? Give us feedback!

@leoromanovsky

Copy link
Copy Markdown
Contributor Author

/merge

@gh-worker-devflow-routing-ef8351

gh-worker-devflow-routing-ef8351 Bot commented Jan 22, 2026 •

Copy link
Copy Markdown

View all feedbacks in Devflow UI.

2026-01-22 21:35:47 UTC ℹ️ Start processing command /merge


2026-01-22 21:36:23 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-01-22 21:57:26 UTC ℹ️ MergeQueue: merge request added to the queue

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


2026-01-22 22:26:15 UTC ℹ️ MergeQueue: This merge request was merged

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.

3 participants