libdatadog 33.0.0.1.0 → 36.0.0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libdatadog/version.rb +1 -1
  3. data/libdatadog.gemspec +43 -0
  4. data/rust-toolchain.toml +6 -0
  5. data/tasks/build.rake +2 -0
  6. data/tasks/gem.rake +249 -0
  7. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-36.0.0/aarch64-linux}/LICENSE-3rdparty.csv +3 -0
  8. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-36.0.0/aarch64-linux}/bin/libdatadog-crashtracking-receiver +0 -0
  9. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-36.0.0/aarch64-linux}/include/datadog/common.h +75 -3
  10. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-36.0.0/aarch64-linux}/include/datadog/crashtracker.h +19 -0
  11. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-36.0.0/aarch64-linux}/include/datadog/data-pipeline.h +179 -4
  12. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-36.0.0/aarch64-linux}/include/datadog/profiling.h +18 -0
  13. data/vendor/libdatadog-36.0.0/aarch64-linux/include/datadog/shared-runtime.h +91 -0
  14. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-36.0.0/aarch64-linux}/lib/libdatadog_profiling.so +0 -0
  15. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-36.0.0/aarch64-linux}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  16. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-36.0.0/aarch64-linux-musl}/LICENSE-3rdparty.csv +3 -0
  17. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-36.0.0/aarch64-linux-musl}/bin/libdatadog-crashtracking-receiver +0 -0
  18. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-36.0.0/aarch64-linux-musl}/include/datadog/common.h +75 -3
  19. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-36.0.0/aarch64-linux-musl}/include/datadog/crashtracker.h +19 -0
  20. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-36.0.0/aarch64-linux-musl}/include/datadog/data-pipeline.h +179 -4
  21. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-36.0.0/aarch64-linux-musl}/include/datadog/profiling.h +18 -0
  22. data/vendor/libdatadog-36.0.0/aarch64-linux-musl/include/datadog/shared-runtime.h +91 -0
  23. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-36.0.0/aarch64-linux-musl}/lib/libdatadog_profiling.so +0 -0
  24. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-36.0.0/aarch64-linux-musl}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  25. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-36.0.0/arm64-darwin}/LICENSE-3rdparty.csv +3 -0
  26. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-36.0.0/arm64-darwin}/bin/libdatadog-crashtracking-receiver +0 -0
  27. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-36.0.0/arm64-darwin}/include/datadog/common.h +75 -3
  28. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-36.0.0/arm64-darwin}/include/datadog/crashtracker.h +19 -0
  29. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-36.0.0/arm64-darwin}/include/datadog/data-pipeline.h +179 -4
  30. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-36.0.0/arm64-darwin}/include/datadog/profiling.h +18 -0
  31. data/vendor/libdatadog-36.0.0/arm64-darwin/include/datadog/shared-runtime.h +91 -0
  32. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-36.0.0/arm64-darwin}/lib/libdatadog_profiling.dylib +0 -0
  33. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-36.0.0/arm64-darwin}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  34. data/vendor/libdatadog-36.0.0/x86_64-linux/LICENSE-3rdparty.csv +551 -0
  35. data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-36.0.0/x86_64-linux}/bin/libdatadog-crashtracking-receiver +0 -0
  36. data/vendor/libdatadog-36.0.0/x86_64-linux/include/datadog/common.h +2947 -0
  37. data/vendor/libdatadog-36.0.0/x86_64-linux/include/datadog/crashtracker.h +1026 -0
  38. data/vendor/libdatadog-36.0.0/x86_64-linux/include/datadog/data-pipeline.h +391 -0
  39. data/vendor/libdatadog-36.0.0/x86_64-linux/include/datadog/profiling.h +1148 -0
  40. data/vendor/libdatadog-36.0.0/x86_64-linux/include/datadog/shared-runtime.h +91 -0
  41. data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-36.0.0/x86_64-linux}/lib/libdatadog_profiling.so +0 -0
  42. data/vendor/libdatadog-36.0.0/x86_64-linux/lib/pkgconfig/datadog_profiling_with_rpath.pc +15 -0
  43. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-36.0.0/x86_64-linux-musl}/LICENSE-3rdparty.csv +3 -0
  44. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-36.0.0/x86_64-linux-musl}/bin/libdatadog-crashtracking-receiver +0 -0
  45. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-36.0.0/x86_64-linux-musl}/include/datadog/common.h +75 -3
  46. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-36.0.0/x86_64-linux-musl}/include/datadog/crashtracker.h +19 -0
  47. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-36.0.0/x86_64-linux-musl}/include/datadog/data-pipeline.h +179 -4
  48. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-36.0.0/x86_64-linux-musl}/include/datadog/profiling.h +18 -0
  49. data/vendor/libdatadog-36.0.0/x86_64-linux-musl/include/datadog/shared-runtime.h +91 -0
  50. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-36.0.0/x86_64-linux-musl}/lib/libdatadog_profiling.so +0 -0
  51. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-36.0.0/x86_64-linux-musl}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  52. metadata +90 -82
  53. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE-3rdparty.csv +0 -548
  54. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/common.h +0 -2875
  55. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/crashtracker.h +0 -1007
  56. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/data-pipeline.h +0 -216
  57. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/profiling.h +0 -1130
  58. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -15
  59. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-36.0.0/aarch64-linux}/LICENSE +0 -0
  60. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-36.0.0/aarch64-linux}/NOTICE +0 -0
  61. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-36.0.0/aarch64-linux}/include/datadog/blazesym.h +0 -0
  62. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-36.0.0/aarch64-linux}/include/datadog/ddsketch.h +0 -0
  63. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-36.0.0/aarch64-linux}/include/datadog/ffe.h +0 -0
  64. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-36.0.0/aarch64-linux}/include/datadog/library-config.h +0 -0
  65. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-36.0.0/aarch64-linux}/include/datadog/log.h +0 -0
  66. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-36.0.0/aarch64-linux}/include/datadog/telemetry.h +0 -0
  67. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-36.0.0/aarch64-linux-musl}/LICENSE +0 -0
  68. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-36.0.0/aarch64-linux-musl}/NOTICE +0 -0
  69. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-36.0.0/aarch64-linux-musl}/include/datadog/blazesym.h +0 -0
  70. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-36.0.0/aarch64-linux-musl}/include/datadog/ddsketch.h +0 -0
  71. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-36.0.0/aarch64-linux-musl}/include/datadog/ffe.h +0 -0
  72. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-36.0.0/aarch64-linux-musl}/include/datadog/library-config.h +0 -0
  73. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-36.0.0/aarch64-linux-musl}/include/datadog/log.h +0 -0
  74. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-36.0.0/aarch64-linux-musl}/include/datadog/telemetry.h +0 -0
  75. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-36.0.0/arm64-darwin}/LICENSE +0 -0
  76. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-36.0.0/arm64-darwin}/NOTICE +0 -0
  77. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-36.0.0/arm64-darwin}/include/datadog/blazesym.h +0 -0
  78. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-36.0.0/arm64-darwin}/include/datadog/ddsketch.h +0 -0
  79. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-36.0.0/arm64-darwin}/include/datadog/ffe.h +0 -0
  80. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-36.0.0/arm64-darwin}/include/datadog/library-config.h +0 -0
  81. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-36.0.0/arm64-darwin}/include/datadog/log.h +0 -0
  82. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-36.0.0/arm64-darwin}/include/datadog/telemetry.h +0 -0
  83. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-36.0.0/x86_64-linux}/LICENSE +0 -0
  84. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-36.0.0/x86_64-linux}/NOTICE +0 -0
  85. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-36.0.0/x86_64-linux}/include/datadog/blazesym.h +0 -0
  86. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-36.0.0/x86_64-linux}/include/datadog/ddsketch.h +0 -0
  87. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-36.0.0/x86_64-linux}/include/datadog/ffe.h +0 -0
  88. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-36.0.0/x86_64-linux}/include/datadog/library-config.h +0 -0
  89. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-36.0.0/x86_64-linux}/include/datadog/log.h +0 -0
  90. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-36.0.0/x86_64-linux}/include/datadog/telemetry.h +0 -0
  91. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-36.0.0/x86_64-linux-musl}/LICENSE +0 -0
  92. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-36.0.0/x86_64-linux-musl}/NOTICE +0 -0
  93. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-36.0.0/x86_64-linux-musl}/include/datadog/blazesym.h +0 -0
  94. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-36.0.0/x86_64-linux-musl}/include/datadog/ddsketch.h +0 -0
  95. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-36.0.0/x86_64-linux-musl}/include/datadog/ffe.h +0 -0
  96. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-36.0.0/x86_64-linux-musl}/include/datadog/library-config.h +0 -0
  97. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-36.0.0/x86_64-linux-musl}/include/datadog/log.h +0 -0
  98. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-36.0.0/x86_64-linux-musl}/include/datadog/telemetry.h +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae787649f269d3e1f8bcf40292418ea3670c7f383dc41fd639727b6775c9cfd2
4
- data.tar.gz: d17b4519ac50c44ccb13f8260dd0d837c992ebd9dcb759e0e4f3d0b84e0929a8
3
+ metadata.gz: fa0ed591bbf19a98b3f683a3304de402e60bd8bf7995b37f2c3a56fd87d93bef
4
+ data.tar.gz: d9aac47a9bf963eb0b2974707700006a752d51050782b4bf8d61a1fa8020a9ba
5
5
  SHA512:
6
- metadata.gz: 89468c6b64dd75f9ab5c44bf9177ca508d962f555e4e096388ee4a187dd9a880baa81b18e392ed23e8402e48d1a09bf256e83b00d6995538d2d56ac155336bf5
7
- data.tar.gz: 570a8af64dd4052b7abec6ccb6c62b8a7219fa44f920ca3189157991bf04160c6579e43c6b32df27ad5a399e323e30d922c454aa5da9893ab57a1561c0e80cf5
6
+ metadata.gz: f7f79df16036d8ab19c733f54bbb5bb511dc3d11fe0a3a7662353ec15e6d8715df0152eb1d4c19a7c18bcc02917a9fa9bbff1924e2152bbd16bbb4944c7524bd
7
+ data.tar.gz: 63134dccc679ac2856a06a3df82faaf597bed2b777eefa2051e4bcb0aff36ca5cedc5fb033b5f125939deb74e7a6b3e124bf90811893a5ffefcbfc97dd3b66a9
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Libdatadog
4
4
  # Current libdatadog version
5
- LIB_VERSION = "33.0.0"
5
+ LIB_VERSION = "36.0.0"
6
6
 
7
7
  GEM_MAJOR_VERSION = "1"
8
8
  GEM_MINOR_VERSION = "0"
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path("../lib", __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require "libdatadog/version"
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = "libdatadog"
9
+ spec.version = Libdatadog::VERSION
10
+ spec.authors = ["Datadog, Inc."]
11
+ spec.email = ["dev@datadoghq.com"]
12
+
13
+ spec.summary = "Library of common code used by Datadog Continuous Profiler for Ruby"
14
+ spec.description =
15
+ "libdatadog is a Rust-based utility library for Datadog's ddtrace gem."
16
+ spec.homepage = "https://docs.datadoghq.com/tracing/"
17
+ spec.license = "Apache-2.0"
18
+ spec.required_ruby_version = ">= 2.5.0"
19
+
20
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
21
+
22
+ spec.metadata["homepage_uri"] = spec.homepage
23
+ spec.metadata["source_code_uri"] = "https://github.com/datadog/libdatadog-rb"
24
+
25
+ # Require releases on rubygems.org to be coming from multi-factor-auth-authenticated accounts
26
+ spec.metadata["rubygems_mfa_required"] = "true"
27
+
28
+ # Specify which files should be added to the gem when it is released.
29
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
30
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
31
+ `git ls-files -z`
32
+ .split("\x0")
33
+ .reject do |f|
34
+ (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features|publish)/|\.(?:git|travis|circleci)|appveyor)})
35
+ end
36
+ .reject do |f|
37
+ [".rspec", ".standard.yml", "Rakefile", "docker-compose.yml", "Gemfile", "README.md", "CONTRIBUTING.md", "LICENSE-3rdparty.yml"].include?(f)
38
+ end
39
+ .reject { |f| f.end_with?(".tar.gz") }
40
+ .reject { |f| f.end_with?(".nix") || f.start_with?("flake.") }
41
+ end
42
+ spec.require_paths = ["lib"]
43
+ end
@@ -0,0 +1,6 @@
1
+ [toolchain]
2
+ # Rust toolchain used to build libdatadog from source. Keep the channel in sync
3
+ # with the libdatadog `rust-toolchain.toml` for the LIB_VERSION being packaged
4
+ # and with the CI `RUST_VERSION` in .github/workflows/build.yml.
5
+ channel = "1.87.0"
6
+ profile = "minimal"
data/tasks/build.rake CHANGED
@@ -10,8 +10,10 @@ module BuildFromSource
10
10
  RUST_TO_RUBY = {
11
11
  "x86_64-unknown-linux-gnu" => "x86_64-linux",
12
12
  "x86_64-unknown-linux-musl" => "x86_64-linux-musl",
13
+ "x86_64-alpine-linux-musl" => "x86_64-linux-musl",
13
14
  "aarch64-unknown-linux-gnu" => "aarch64-linux",
14
15
  "aarch64-unknown-linux-musl" => "aarch64-linux-musl",
16
+ "aarch64-alpine-linux-musl" => "aarch64-linux-musl",
15
17
  "aarch64-apple-darwin" => "arm64-darwin"
16
18
  }.freeze
17
19
 
data/tasks/gem.rake ADDED
@@ -0,0 +1,249 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "pathname"
4
+ require "rubygems/package"
5
+ require "rubygems/package/tar_reader"
6
+ require "zlib"
7
+ require "stringio"
8
+
9
+ # Builds .gem packages from vendored libdatadog artifacts.
10
+ #
11
+ # Intentionally duplicates some Rakefile logic so both can coexist during
12
+ # the migration; the Rakefile originals will be removed once the new tasks
13
+ # are fully adopted.
14
+ module GemPackaging
15
+ module Platform
16
+ # Mapping from gem platform names to the vendor platform directories
17
+ # included in that gem. We bundle glibc and musl variants together
18
+ # for Linux to work around https://github.com/rubygems/rubygems/issues/3174
19
+ GEM_TO_VENDOR = {
20
+ "x86_64-linux" => ["x86_64-linux", "x86_64-linux-musl"],
21
+ "aarch64-linux" => ["aarch64-linux", "aarch64-linux-musl"],
22
+ "arm64-darwin" => ["arm64-darwin"]
23
+ }.freeze
24
+
25
+ ALL_VENDOR = GEM_TO_VENDOR.values.flatten.freeze
26
+
27
+ class << self
28
+ # Resolve a RUBY_PLATFORM string (or gem platform name) to a known
29
+ # gem platform key.
30
+ #
31
+ # resolve("x86_64-linux") #=> "x86_64-linux"
32
+ # resolve("x86_64-linux-musl") #=> "x86_64-linux"
33
+ # resolve("arm64-darwin24") #=> "arm64-darwin"
34
+ def resolve(platform_string)
35
+ return platform_string if GEM_TO_VENDOR.key?(platform_string)
36
+
37
+ # musl suffix (x86_64-linux-musl -> x86_64-linux)
38
+ without_musl = platform_string.sub(/-musl\z/, "")
39
+ return without_musl if GEM_TO_VENDOR.key?(without_musl)
40
+
41
+ # macOS Darwin version suffix (arm64-darwin24 -> arm64-darwin)
42
+ GEM_TO_VENDOR.each_key do |gp|
43
+ return gp if platform_string.start_with?(gp)
44
+ end
45
+
46
+ raise "Could not resolve platform '#{platform_string}' to a supported gem platform. " \
47
+ "Supported: #{GEM_TO_VENDOR.keys.join(", ")}, ruby"
48
+ end
49
+
50
+ # Vendor platform directories needed for a given gem platform.
51
+ def vendor_platforms(gem_platform)
52
+ if gem_platform == "ruby"
53
+ ALL_VENDOR
54
+ else
55
+ GEM_TO_VENDOR.fetch(gem_platform) do
56
+ raise "Unknown gem platform: #{gem_platform}. " \
57
+ "Supported: #{GEM_TO_VENDOR.keys.join(", ")}, ruby"
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+
64
+ module Paths
65
+ class << self
66
+ # Project root
67
+ def root
68
+ @root ||= (Pathname.new(__dir__) / "..").expand_path
69
+ end
70
+
71
+ # Vendor tree for the current library version
72
+ def vendor
73
+ root / "vendor" / "libdatadog-#{Libdatadog::LIB_VERSION}"
74
+ end
75
+
76
+ # Vendor directory for a specific platform
77
+ def vendor_platform(name)
78
+ vendor / name
79
+ end
80
+
81
+ # Output directory for built gems
82
+ def pkg
83
+ root / "pkg"
84
+ end
85
+
86
+ # The gemspec file
87
+ def gemspec
88
+ root / "libdatadog.gemspec"
89
+ end
90
+
91
+ # Expected .gem filename for a given gem platform
92
+ def gem_file_name(gem_platform)
93
+ spec = Gem::Specification.new do |s|
94
+ s.name = "libdatadog"
95
+ s.version = Libdatadog::VERSION
96
+ s.platform = gem_platform unless gem_platform == "ruby"
97
+ end
98
+ spec.file_name
99
+ end
100
+
101
+ # Full path to the .gem for a given gem platform
102
+ def gem(gem_platform)
103
+ pkg / gem_file_name(gem_platform)
104
+ end
105
+ end
106
+ end
107
+
108
+ module Packager
109
+ # Files that must have executable permissions (0755); everything else gets 0644.
110
+ EXECUTABLE_FILES = %w[
111
+ libdatadog-crashtracking-receiver
112
+ libdatadog_profiling.so
113
+ libdatadog_profiling.dylib
114
+ ].freeze
115
+
116
+ # Vendored files excluded from gems (not needed at runtime).
117
+ EXCLUDED_FILES = %w[
118
+ datadog_profiling.pc
119
+ libdatadog_profiling.a
120
+ datadog_profiling-static.pc
121
+ libdatadog_profiling.debug
122
+ DatadogConfig.cmake
123
+ ].freeze
124
+
125
+ class << self
126
+ # Collect vendored files for one or more vendor platform directories,
127
+ # filtering out tarballs and files not needed at runtime.
128
+ # Returns paths relative to the project root (what gemspec.files expects).
129
+ def vendor_files(*vendor_platforms)
130
+ vendor_platforms.flat_map { |vp|
131
+ Paths.vendor_platform(vp).glob("**/*")
132
+ .select(&:file?)
133
+ .map { |p| p.relative_path_from(Paths.root).to_s }
134
+ .reject { |p| p.end_with?(".tar.gz") }
135
+ .reject { |p| EXCLUDED_FILES.include?(File.basename(p)) }
136
+ }
137
+ end
138
+
139
+ # Verify that required vendor directories exist and contain files.
140
+ def check_vendor!(*vendor_platforms)
141
+ missing = vendor_platforms.reject { |vp|
142
+ dir = Paths.vendor_platform(vp)
143
+ dir.exist? && dir.glob("**/*").any?(&:file?)
144
+ }
145
+
146
+ return if missing.empty?
147
+
148
+ raise "Missing vendor artifacts for: #{missing.join(", ")}. " \
149
+ "Expected under #{Paths.vendor}/. " \
150
+ "Run `rake libdatadog:build` or download vendor artifacts first."
151
+ end
152
+
153
+ # Build a single .gem into pkg/.
154
+ def build_gem(gem_platform:, vendor_platforms:)
155
+ check_vendor!(*vendor_platforms)
156
+
157
+ spec = eval(Paths.gemspec.read, nil, Paths.gemspec.to_s) # standard:disable Security/Eval
158
+ spec.files += vendor_files(*vendor_platforms)
159
+ spec.platform = gem_platform unless gem_platform == "ruby"
160
+
161
+ Paths.pkg.mkpath
162
+
163
+ puts "Building gem for platform=#{gem_platform} including: (this can take a while)"
164
+ pp spec.files.select { |f| f.start_with?("vendor/") }
165
+
166
+ Gem::Package.build(spec)
167
+ # build creates the .gem in cwd; move it into pkg/
168
+ gem_path = Paths.gem(gem_platform)
169
+ Pathname.new(spec.file_name).rename(gem_path)
170
+ puts("-" * 80)
171
+
172
+ gem_path
173
+ end
174
+
175
+ # Inspect the built .gem and raise on unexpected file permissions.
176
+ def validate_permissions!(gem_path)
177
+ puts "Validating permissions in #{gem_path}..."
178
+
179
+ Gem::Package::TarReader.new(gem_path.open("rb")) do |tar|
180
+ data_entry = tar.find { |entry| entry.header.name == "data.tar.gz" }
181
+ next unless data_entry
182
+
183
+ Gem::Package::TarReader.new(Zlib::GzipReader.new(StringIO.new(data_entry.read))) do |data_tar|
184
+ data_tar.each do |entry|
185
+ next if entry.directory?
186
+
187
+ filename = File.basename(entry.header.name)
188
+ actual = entry.header.mode.to_s(8)[-3..-1]
189
+ expected = EXECUTABLE_FILES.include?(filename) ? "755" : "644"
190
+
191
+ next if actual == expected
192
+
193
+ raise "Bad permissions for #{filename} in #{gem_path}: " \
194
+ "got #{actual}, expected #{expected}"
195
+ end
196
+ end
197
+ end
198
+
199
+ puts "Permissions OK."
200
+ end
201
+
202
+ # Package a single gem platform (a GEM_TO_VENDOR key, or "ruby").
203
+ def package(platform)
204
+ if Platform::GEM_TO_VENDOR.key?(platform) || platform == "ruby"
205
+ build_gem(
206
+ gem_platform: platform,
207
+ vendor_platforms: Platform.vendor_platforms(platform)
208
+ )
209
+ else
210
+ resolved = Platform.resolve(platform)
211
+ puts "Resolved '#{platform}' -> gem platform '#{resolved}'"
212
+ package(resolved)
213
+ end
214
+ end
215
+
216
+ # Package every supported binary gem platform plus the ruby fallback gem.
217
+ def package_all
218
+ Platform::GEM_TO_VENDOR.each_key { |gp| package(gp) }
219
+ package("ruby")
220
+ end
221
+ end
222
+ end
223
+ end
224
+
225
+ namespace :gem do
226
+ desc "Package gem(s). No argument: all platforms + ruby. " \
227
+ "With argument: a specific gem platform, 'ruby', or a RUBY_PLATFORM value.\n" \
228
+ " Examples: rake gem:package # all\n" \
229
+ " rake gem:package[x86_64-linux] # one binary platform\n" \
230
+ " rake gem:package[ruby] # ruby platform gem\n" \
231
+ " rake gem:package[arm64-darwin24] # resolved to arm64-darwin"
232
+ task :package, [:platform] do |_t, args|
233
+ platform = args[:platform]
234
+
235
+ if platform.nil? || platform.strip.empty?
236
+ GemPackaging::Packager.package_all
237
+ else
238
+ GemPackaging::Packager.package(platform)
239
+ end
240
+ end
241
+
242
+ desc "Validate file permissions in all gems under pkg/"
243
+ task :validate do
244
+ gems = GemPackaging::Paths.pkg.glob("*.gem")
245
+ raise "No .gem files found in #{GemPackaging::Paths.pkg}" if gems.empty?
246
+
247
+ gems.each { |gem_path| GemPackaging::Packager.validate_permissions!(gem_path) }
248
+ end
249
+ end
@@ -229,6 +229,7 @@ linux-raw-sys,https://github.com/sunfishcode/linux-raw-sys,Apache-2.0 WITH LLVM-
229
229
  litemap,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers
230
230
  lock_api,https://github.com/Amanieu/parking_lot,MIT OR Apache-2.0,Amanieu d'Antras <amanieu@gmail.com>
231
231
  log,https://github.com/rust-lang/log,MIT OR Apache-2.0,The Rust Project Developers
232
+ lru,https://github.com/jeromefroe/lru-rs,MIT,Jerome Froelich <jeromefroelic@hotmail.com>
232
233
  manual_future,https://github.com/dmarcuse/manual_future,MIT,Dominic Marcuse <dominic@marcuse.us>
233
234
  matchers,https://github.com/hawkw/matchers,MIT,Eliza Weisman <eliza@buoyant.io>
234
235
  matchit,https://github.com/ibraheemdev/matchit,MIT AND BSD-3-Clause,Ibraheem Ahmed <ibraheem@ibraheem.ca>
@@ -304,6 +305,7 @@ proc-macro-crate,https://github.com/bkchr/proc-macro-crate,MIT OR Apache-2.0,Bas
304
305
  proc-macro-error,https://gitlab.com/CreepySkeleton/proc-macro-error,MIT OR Apache-2.0,CreepySkeleton <creepy-skeleton@yandex.ru>
305
306
  proc-macro-error-attr,https://gitlab.com/CreepySkeleton/proc-macro-error,MIT OR Apache-2.0,CreepySkeleton <creepy-skeleton@yandex.ru>
306
307
  proc-macro2,https://github.com/dtolnay/proc-macro2,MIT OR Apache-2.0,"David Tolnay <dtolnay@gmail.com>, Alex Crichton <alex@alexcrichton.com>"
308
+ proc-macro2-diagnostics,https://github.com/SergioBenitez/proc-macro2-diagnostics,MIT OR Apache-2.0,Sergio Benitez <sb@sergio.bz>
307
309
  prost,https://github.com/tokio-rs/prost,Apache-2.0,"Dan Burkert <dan@danburkert.com>, Lucio Franco <luciofranco14@gmail.com>, Casper Meijn <casper@meijn.net>, Tokio Contributors <team@tokio.rs>"
308
310
  prost-derive,https://github.com/tokio-rs/prost,Apache-2.0,"Dan Burkert <dan@danburkert.com>, Lucio Franco <luciofranco14@gmail.com>, Casper Meijn <casper@meijn.net>, Tokio Contributors <team@tokio.rs>"
309
311
  prost-types,https://github.com/tokio-rs/prost,Apache-2.0,"Dan Burkert <dan@danburkert.com>, Lucio Franco <luciofranco14@gmail.com>, Casper Meijn <casper@meijn.net>, Tokio Contributors <team@tokio.rs>"
@@ -427,6 +429,7 @@ target-triple,https://github.com/dtolnay/target-triple,MIT OR Apache-2.0,David T
427
429
  tempfile,https://github.com/Stebalien/tempfile,MIT OR Apache-2.0,"Steven Allen <steven@stebalien.com>, The Rust Project Developers, Ashley Mannix <ashleymannix@live.com.au>, Jason White <me@jasonwhite.io>"
428
430
  termcolor,https://github.com/BurntSushi/termcolor,Unlicense OR MIT,Andrew Gallant <jamslam@gmail.com>
429
431
  test-case-macros,https://github.com/frondeus/test-case,MIT,"Marcin Sas-Szymanski <marcin.sas-szymanski@anixe.pl>, Wojciech Polak <frondeus@gmail.com>, Łukasz Biel <lukasz.p.biel@gmail.com>"
432
+ thin-vec,https://github.com/mozilla/thin-vec,MIT OR Apache-2.0,Aria Beingessner <a.beingessner@gmail.com>
430
433
  thiserror,https://github.com/dtolnay/thiserror,MIT OR Apache-2.0,David Tolnay <dtolnay@gmail.com>
431
434
  thiserror-impl,https://github.com/dtolnay/thiserror,MIT OR Apache-2.0,David Tolnay <dtolnay@gmail.com>
432
435
  thread_local,https://github.com/Amanieu/thread_local-rs,MIT OR Apache-2.0,Amanieu d'Antras <amanieu@gmail.com>
@@ -1624,6 +1624,9 @@ typedef struct ddog_ContextKey {
1624
1624
  } ddog_ContextKey;
1625
1625
 
1626
1626
  typedef struct ddog_TraceExporter ddog_TraceExporter;
1627
+ typedef struct ddog_TracerSpan ddog_TracerSpan;
1628
+ typedef struct ddog_TracerTraceChunks ddog_TracerTraceChunks;
1629
+ typedef struct ddog_TraceExporterCancelToken ddog_TraceExporterCancelToken;
1627
1630
 
1628
1631
 
1629
1632
  /**
@@ -1669,9 +1672,12 @@ typedef struct ddog_TraceExporterResponse ddog_TraceExporterResponse;
1669
1672
  /**
1670
1673
  * A shared runtime that manages PausableWorkers and provides fork safety hooks.
1671
1674
  *
1672
- * The SharedRuntime owns a tokio runtime and tracks PausableWorkers spawned on it.
1673
- * It provides methods to safely pause workers before forking and restart them
1674
- * after fork in both parent and child processes.
1675
+ * The SharedRuntime owns a tokio runtime (on native) and tracks PausableWorkers
1676
+ * spawned on it. It provides methods to safely pause workers before forking and
1677
+ * restart them after fork in both parent and child processes.
1678
+ *
1679
+ * On wasm32, no tokio runtime is created. Workers are spawned via `spawn_local`
1680
+ * on the JS event loop.
1675
1681
  *
1676
1682
  * # Mutex lock order
1677
1683
  * When locking both [Self::runtime] and [Self::workers], the mutex must be locked in the order of
@@ -1730,6 +1736,26 @@ typedef struct ddog_TelemetryClientConfig {
1730
1736
  ddog_CharSlice parent_session_id;
1731
1737
  } ddog_TelemetryClientConfig;
1732
1738
 
1739
+ /**
1740
+ * FFI-safe bundle of scalar fields for creating a [`TracerSpan`].
1741
+ *
1742
+ * Passed by reference to [`ddog_tracer_span_new`] so that adding or
1743
+ * changing fields does not break the function signature.
1744
+ */
1745
+ typedef struct ddog_TracerSpanFields {
1746
+ ddog_CharSlice service;
1747
+ ddog_CharSlice name;
1748
+ ddog_CharSlice resource;
1749
+ ddog_CharSlice span_type;
1750
+ uint64_t trace_id_low;
1751
+ uint64_t trace_id_high;
1752
+ uint64_t span_id;
1753
+ uint64_t parent_id;
1754
+ int64_t start;
1755
+ int64_t duration;
1756
+ int32_t error;
1757
+ } ddog_TracerSpanFields;
1758
+
1733
1759
  typedef enum ddog_LibraryConfigSource {
1734
1760
  DDOG_LIBRARY_CONFIG_SOURCE_LOCAL_STABLE_CONFIG = 0,
1735
1761
  DDOG_LIBRARY_CONFIG_SOURCE_FLEET_STABLE_CONFIG = 1,
@@ -2207,6 +2233,52 @@ typedef struct ddog_ffe_AttributePair {
2207
2233
  struct ddog_ffe_AttributeValue value;
2208
2234
  } ddog_ffe_AttributePair;
2209
2235
 
2236
+ /**
2237
+ * Error codes for SharedRuntime FFI operations.
2238
+ */
2239
+ typedef enum ddog_SharedRuntimeErrorCode {
2240
+ /**
2241
+ * Invalid argument provided (e.g. null handle).
2242
+ */
2243
+ DDOG_SHARED_RUNTIME_ERROR_CODE_INVALID_ARGUMENT,
2244
+ /**
2245
+ * The runtime is not available or in an invalid state.
2246
+ */
2247
+ DDOG_SHARED_RUNTIME_ERROR_CODE_RUNTIME_UNAVAILABLE,
2248
+ /**
2249
+ * Failed to acquire a lock on internal state.
2250
+ */
2251
+ DDOG_SHARED_RUNTIME_ERROR_CODE_LOCK_FAILED,
2252
+ /**
2253
+ * A worker operation failed.
2254
+ */
2255
+ DDOG_SHARED_RUNTIME_ERROR_CODE_WORKER_ERROR,
2256
+ /**
2257
+ * Failed to create the tokio runtime.
2258
+ */
2259
+ DDOG_SHARED_RUNTIME_ERROR_CODE_RUNTIME_CREATION,
2260
+ /**
2261
+ * Shutdown timed out.
2262
+ */
2263
+ DDOG_SHARED_RUNTIME_ERROR_CODE_SHUTDOWN_TIMED_OUT,
2264
+ /**
2265
+ * An unexpected panic occurred inside the FFI call.
2266
+ */
2267
+ DDOG_SHARED_RUNTIME_ERROR_CODE_PANIC,
2268
+ } ddog_SharedRuntimeErrorCode;
2269
+
2270
+ /**
2271
+ * Error returned by SharedRuntime FFI functions.
2272
+ */
2273
+ typedef struct ddog_SharedRuntimeFFIError {
2274
+ enum ddog_SharedRuntimeErrorCode code;
2275
+ /**
2276
+ * The error message is always defined when the error is returned by a ddog_shared_runtime
2277
+ * ffi.
2278
+ */
2279
+ char *msg;
2280
+ } ddog_SharedRuntimeFFIError;
2281
+
2210
2282
  typedef enum ddog_crasht_BuildIdType {
2211
2283
  DDOG_CRASHT_BUILD_ID_TYPE_GNU,
2212
2284
  DDOG_CRASHT_BUILD_ID_TYPE_GO,
@@ -170,6 +170,25 @@ struct ddog_VoidResult ddog_crasht_report_unhandled_exception(ddog_CharSlice err
170
170
  ddog_CharSlice error_message,
171
171
  struct ddog_crasht_Handle_StackTrace *runtime_stack);
172
172
 
173
+ /**
174
+ * Register the expected PID of the socket-based crash receiver
175
+ *
176
+ * When `collect_all_threads` is enabled and the receiver is reached via a Unix
177
+ * socket, the crash handler will only grant ptrace permission if the socket
178
+ * peer's PID matches this registered value.
179
+ *
180
+ * Call this after establishing a trusted connection to the sidecar
181
+ *
182
+ * # Safety
183
+ * This function is safe to call from any thread at any time.
184
+ */
185
+ void ddog_crasht_set_expected_receiver_pid(int32_t pid);
186
+
187
+ /**
188
+ * Returns the currently registered expected receiver PID, or 0 if unset.
189
+ */
190
+ int32_t ddog_crasht_get_expected_receiver_pid(void);
191
+
173
192
  /**
174
193
  * Removes all existing additional tags
175
194
  * Expected to be used after a fork, to reset the additional tags on the child