libdatadog 36.0.0.1.0 → 38.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 (104) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libdatadog/version.rb +1 -1
  3. data/tasks/build.rake +27 -1
  4. data/tasks/gem.rake +0 -4
  5. data/tasks/release.rake +28 -0
  6. data/tasks/spec.rake +11 -0
  7. data/vendor/{libdatadog-36.0.0/aarch64-linux-musl → libdatadog-38.0.0/aarch64-linux}/LICENSE-3rdparty.csv +3 -0
  8. data/vendor/libdatadog-38.0.0/aarch64-linux/NOTICE +12 -0
  9. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux/bin/libdatadog-crashtracking-receiver +0 -0
  10. data/vendor/{libdatadog-36.0.0/x86_64-linux-musl → libdatadog-38.0.0/aarch64-linux}/include/datadog/common.h +49 -72
  11. data/vendor/{libdatadog-36.0.0/aarch64-linux-musl → libdatadog-38.0.0/aarch64-linux}/include/datadog/data-pipeline.h +63 -5
  12. data/vendor/{libdatadog-36.0.0/aarch64-linux-musl → libdatadog-38.0.0/aarch64-linux}/include/datadog/profiling.h +19 -0
  13. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux/include/datadog/shared-runtime.h +8 -8
  14. data/vendor/{libdatadog-36.0.0/x86_64-linux-musl → libdatadog-38.0.0/aarch64-linux}/include/datadog/telemetry.h +37 -19
  15. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux/lib/libdatadog_profiling.so +0 -0
  16. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  17. data/vendor/{libdatadog-36.0.0/aarch64-linux → libdatadog-38.0.0/aarch64-linux-musl}/LICENSE-3rdparty.csv +3 -0
  18. data/vendor/libdatadog-38.0.0/aarch64-linux-musl/NOTICE +12 -0
  19. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  20. data/vendor/{libdatadog-36.0.0/arm64-darwin → libdatadog-38.0.0/aarch64-linux-musl}/include/datadog/common.h +49 -72
  21. data/vendor/{libdatadog-36.0.0/aarch64-linux → libdatadog-38.0.0/aarch64-linux-musl}/include/datadog/data-pipeline.h +63 -5
  22. data/vendor/{libdatadog-36.0.0/arm64-darwin → libdatadog-38.0.0/aarch64-linux-musl}/include/datadog/profiling.h +19 -0
  23. data/vendor/{libdatadog-36.0.0/arm64-darwin → libdatadog-38.0.0/aarch64-linux-musl}/include/datadog/shared-runtime.h +8 -8
  24. data/vendor/{libdatadog-36.0.0/arm64-darwin → libdatadog-38.0.0/aarch64-linux-musl}/include/datadog/telemetry.h +37 -19
  25. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/lib/libdatadog_profiling.so +0 -0
  26. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  27. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/arm64-darwin/LICENSE-3rdparty.csv +3 -0
  28. data/vendor/libdatadog-38.0.0/arm64-darwin/NOTICE +12 -0
  29. data/vendor/{libdatadog-36.0.0/aarch64-linux-musl → libdatadog-38.0.0/arm64-darwin}/include/datadog/common.h +49 -72
  30. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/arm64-darwin/include/datadog/data-pipeline.h +63 -5
  31. data/vendor/{libdatadog-36.0.0/aarch64-linux → libdatadog-38.0.0/arm64-darwin}/include/datadog/profiling.h +19 -0
  32. data/vendor/{libdatadog-36.0.0/x86_64-linux-musl → libdatadog-38.0.0/arm64-darwin}/include/datadog/shared-runtime.h +8 -8
  33. data/vendor/{libdatadog-36.0.0/aarch64-linux-musl → libdatadog-38.0.0/arm64-darwin}/include/datadog/telemetry.h +37 -19
  34. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/arm64-darwin/lib/libdatadog_profiling.dylib +0 -0
  35. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/arm64-darwin/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  36. data/vendor/libdatadog-38.0.0/x86_64-linux/LICENSE-3rdparty.csv +554 -0
  37. data/vendor/libdatadog-38.0.0/x86_64-linux/NOTICE +12 -0
  38. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux/bin/libdatadog-crashtracking-receiver +0 -0
  39. data/vendor/libdatadog-38.0.0/x86_64-linux/include/datadog/common.h +2924 -0
  40. data/vendor/libdatadog-38.0.0/x86_64-linux/include/datadog/data-pipeline.h +449 -0
  41. data/vendor/libdatadog-38.0.0/x86_64-linux/include/datadog/profiling.h +1167 -0
  42. data/vendor/libdatadog-38.0.0/x86_64-linux/include/datadog/shared-runtime.h +91 -0
  43. data/vendor/libdatadog-38.0.0/x86_64-linux/include/datadog/telemetry.h +325 -0
  44. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux/lib/libdatadog_profiling.so +0 -0
  45. data/vendor/libdatadog-38.0.0/x86_64-linux/lib/pkgconfig/datadog_profiling_with_rpath.pc +15 -0
  46. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/LICENSE-3rdparty.csv +3 -0
  47. data/vendor/libdatadog-38.0.0/x86_64-linux-musl/NOTICE +12 -0
  48. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  49. data/vendor/{libdatadog-36.0.0/aarch64-linux → libdatadog-38.0.0/x86_64-linux-musl}/include/datadog/common.h +49 -72
  50. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/include/datadog/data-pipeline.h +63 -5
  51. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/include/datadog/profiling.h +19 -0
  52. data/vendor/{libdatadog-36.0.0/aarch64-linux-musl → libdatadog-38.0.0/x86_64-linux-musl}/include/datadog/shared-runtime.h +8 -8
  53. data/vendor/{libdatadog-36.0.0/aarch64-linux → libdatadog-38.0.0/x86_64-linux-musl}/include/datadog/telemetry.h +37 -19
  54. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/lib/libdatadog_profiling.so +0 -0
  55. data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  56. metadata +88 -86
  57. data/vendor/libdatadog-36.0.0/aarch64-linux/NOTICE +0 -4
  58. data/vendor/libdatadog-36.0.0/aarch64-linux-musl/NOTICE +0 -4
  59. data/vendor/libdatadog-36.0.0/arm64-darwin/NOTICE +0 -4
  60. data/vendor/libdatadog-36.0.0/x86_64-linux/LICENSE-3rdparty.csv +0 -551
  61. data/vendor/libdatadog-36.0.0/x86_64-linux/NOTICE +0 -4
  62. data/vendor/libdatadog-36.0.0/x86_64-linux/include/datadog/common.h +0 -2947
  63. data/vendor/libdatadog-36.0.0/x86_64-linux/include/datadog/data-pipeline.h +0 -391
  64. data/vendor/libdatadog-36.0.0/x86_64-linux/include/datadog/profiling.h +0 -1148
  65. data/vendor/libdatadog-36.0.0/x86_64-linux/include/datadog/shared-runtime.h +0 -91
  66. data/vendor/libdatadog-36.0.0/x86_64-linux/include/datadog/telemetry.h +0 -307
  67. data/vendor/libdatadog-36.0.0/x86_64-linux/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -15
  68. data/vendor/libdatadog-36.0.0/x86_64-linux-musl/NOTICE +0 -4
  69. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux/LICENSE +0 -0
  70. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux/include/datadog/blazesym.h +0 -0
  71. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux/include/datadog/crashtracker.h +0 -0
  72. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux/include/datadog/ddsketch.h +0 -0
  73. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux/include/datadog/ffe.h +0 -0
  74. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux/include/datadog/library-config.h +0 -0
  75. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux/include/datadog/log.h +0 -0
  76. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/LICENSE +0 -0
  77. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/include/datadog/blazesym.h +0 -0
  78. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/include/datadog/crashtracker.h +0 -0
  79. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/include/datadog/ddsketch.h +0 -0
  80. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/include/datadog/ffe.h +0 -0
  81. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/include/datadog/library-config.h +0 -0
  82. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/include/datadog/log.h +0 -0
  83. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/arm64-darwin/LICENSE +0 -0
  84. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/arm64-darwin/bin/libdatadog-crashtracking-receiver +0 -0
  85. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/arm64-darwin/include/datadog/blazesym.h +0 -0
  86. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/arm64-darwin/include/datadog/crashtracker.h +0 -0
  87. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/arm64-darwin/include/datadog/ddsketch.h +0 -0
  88. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/arm64-darwin/include/datadog/ffe.h +0 -0
  89. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/arm64-darwin/include/datadog/library-config.h +0 -0
  90. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/arm64-darwin/include/datadog/log.h +0 -0
  91. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux/LICENSE +0 -0
  92. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux/include/datadog/blazesym.h +0 -0
  93. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux/include/datadog/crashtracker.h +0 -0
  94. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux/include/datadog/ddsketch.h +0 -0
  95. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux/include/datadog/ffe.h +0 -0
  96. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux/include/datadog/library-config.h +0 -0
  97. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux/include/datadog/log.h +0 -0
  98. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/LICENSE +0 -0
  99. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/include/datadog/blazesym.h +0 -0
  100. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/include/datadog/crashtracker.h +0 -0
  101. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/include/datadog/ddsketch.h +0 -0
  102. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/include/datadog/ffe.h +0 -0
  103. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/include/datadog/library-config.h +0 -0
  104. /data/vendor/{libdatadog-36.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/include/datadog/log.h +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fa0ed591bbf19a98b3f683a3304de402e60bd8bf7995b37f2c3a56fd87d93bef
4
- data.tar.gz: d9aac47a9bf963eb0b2974707700006a752d51050782b4bf8d61a1fa8020a9ba
3
+ metadata.gz: acf5bfce73d30f51bff48c4c624ef033bc1907a8ed14cd10ccf74da199a1b34e
4
+ data.tar.gz: 1ce9406014b9cea0d221ac36008dcb6b02d1884a2d55249a1fb843be240c6087
5
5
  SHA512:
6
- metadata.gz: f7f79df16036d8ab19c733f54bbb5bb511dc3d11fe0a3a7662353ec15e6d8715df0152eb1d4c19a7c18bcc02917a9fa9bbff1924e2152bbd16bbb4944c7524bd
7
- data.tar.gz: 63134dccc679ac2856a06a3df82faaf597bed2b777eefa2051e4bcb0aff36ca5cedc5fb033b5f125939deb74e7a6b3e124bf90811893a5ffefcbfc97dd3b66a9
6
+ metadata.gz: 3df08279edf1e21b9db5856c3ca90a6cf4488a9963f242c3bdb03a3320f16b965acc534e9b4dd2f7c74223b2e13afc940c40f87b090bc44afd90c669c5040f24
7
+ data.tar.gz: a02d9031f0490f31c2de9c4b07f0dabd8c1d4e274364487f719b073acbdc6aa9daddde42dd1df537f395f4983c89d0c58ca18f270249ebdbbc8c98a88ab8c2f5
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Libdatadog
4
4
  # Current libdatadog version
5
- LIB_VERSION = "36.0.0"
5
+ LIB_VERSION = "38.0.0"
6
6
 
7
7
  GEM_MAJOR_VERSION = "1"
8
8
  GEM_MINOR_VERSION = "0"
data/tasks/build.rake CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "etc"
4
+ require "fileutils"
4
5
  require "pathname"
5
6
 
6
7
  module BuildFromSource
@@ -80,6 +81,31 @@ module BuildFromSource
80
81
  end
81
82
  end
82
83
 
84
+ module Permissions
85
+ # Files that must be executable (0755) in the gem; everything else 0644.
86
+ # Note: .so for Linux, .dylib for macOS.
87
+ EXECUTABLE_FILES = %w[
88
+ libdatadog-crashtracking-receiver
89
+ libdatadog_profiling.so
90
+ libdatadog_profiling.dylib
91
+ ].freeze
92
+
93
+ # Normalise file permissions of the built artifacts before packaging.
94
+ def self.fix(directory)
95
+ Dir.glob("#{directory}/**/*").each do |path|
96
+ next unless File.file?(path)
97
+
98
+ filename = File.basename(path)
99
+ current = File.stat(path).mode & 0o777
100
+ expected = EXECUTABLE_FILES.include?(filename) ? 0o755 : 0o644
101
+ next if current == expected
102
+
103
+ puts "Fixing permissions for #{filename}: #{current.to_s(8)} -> #{expected.to_s(8)}"
104
+ FileUtils.chmod(expected, path)
105
+ end
106
+ end
107
+ end
108
+
83
109
  module Builder
84
110
  class << self
85
111
  # Build the cargo install command for the builder crate's `release` binary.
@@ -160,7 +186,7 @@ namespace :libdatadog do
160
186
  system(env, paths.builder_bin.to_s, "--out", target_dir.to_s) || raise("Builder failed")
161
187
 
162
188
  # Fix file permissions to match expected values for packaging
163
- Helpers.fix_file_permissions(target_dir.to_s)
189
+ BuildFromSource::Permissions.fix(target_dir)
164
190
 
165
191
  puts "Done! Artifacts in #{target_dir}"
166
192
  end
data/tasks/gem.rake CHANGED
@@ -7,10 +7,6 @@ require "zlib"
7
7
  require "stringio"
8
8
 
9
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
10
  module GemPackaging
15
11
  module Platform
16
12
  # Mapping from gem platform names to the vendor platform directories
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ # `rake build` (from bundler/gem_tasks) would build a binary-less gem straight
4
+ # from the gemspec. Real gems bundle the platform-specific libdatadog artifacts
5
+ # and are built via `rake gem:package`, so disable the default to avoid mistakes.
6
+ Rake::Task["build"].clear
7
+ task(:build) { raise "Build task is disabled, use gem:package instead" }
8
+
9
+ # `rake release` (from bundler/gem_tasks) tags and pushes; here releasing just
10
+ # pushes the already-built platform gems from pkg/ (the version tag lives in the
11
+ # libdatadog-rb repo, the binaries are built and packaged by CI).
12
+ Rake::Task["release"].clear
13
+ task(:release) { Rake::Task["push_to_rubygems"].invoke }
14
+
15
+ desc "Push all built gems in pkg/ to RubyGems.org"
16
+ task push_to_rubygems: [
17
+ :"release:guard_clean"
18
+ ] do
19
+ [
20
+ "gem push pkg/libdatadog-#{Libdatadog::VERSION}.gem",
21
+ "gem push pkg/libdatadog-#{Libdatadog::VERSION}-x86_64-linux.gem",
22
+ "gem push pkg/libdatadog-#{Libdatadog::VERSION}-aarch64-linux.gem",
23
+ "gem push pkg/libdatadog-#{Libdatadog::VERSION}-arm64-darwin.gem"
24
+ ].each do |command|
25
+ puts "Running: #{command}"
26
+ abort unless system(command)
27
+ end
28
+ end
data/tasks/spec.rake ADDED
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rspec/core/rake_task"
4
+ require "standard/rake" unless RUBY_VERSION < "2.6"
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task default: [
9
+ :spec,
10
+ (:standard unless RUBY_VERSION < "2.6")
11
+ ].compact
@@ -125,6 +125,7 @@ dispatch2,https://github.com/madsmtm/objc2,Zlib OR Apache-2.0 OR MIT,"Mads Marqu
125
125
  displaydoc,https://github.com/yaahc/displaydoc,MIT OR Apache-2.0,Jane Lusby <jlusby@yaah.dev>
126
126
  dyn-clone,https://github.com/dtolnay/dyn-clone,MIT OR Apache-2.0,David Tolnay <dtolnay@gmail.com>
127
127
  either,https://github.com/rayon-rs/either,MIT OR Apache-2.0,bluss
128
+ elf,https://github.com/cole14/rust-elf,MIT OR Apache-2.0,Christopher Cole <chris.cole.09@gmail.com>
128
129
  encoding_rs,https://github.com/hsivonen/encoding_rs,(Apache-2.0 OR MIT) AND BSD-3-Clause,Henri Sivonen <hsivonen@hsivonen.fi>
129
130
  enum-as-inner,https://github.com/bluejekyll/enum-as-inner,MIT OR Apache-2.0,Benjamin Fry <benjaminfry@me.com>
130
131
  equivalent,https://github.com/cuviper/equivalent,Apache-2.0 OR MIT,The equivalent Authors
@@ -374,6 +375,7 @@ semver,https://github.com/dtolnay/semver,MIT OR Apache-2.0,David Tolnay <dtolnay
374
375
  sendfd,https://github.com/standard-ai/sendfd,Apache-2.0 OR BSD-3-Clause,"Simonas Kazlauskas <simonas@standard.ai>, Bernardo Meurer <bernardo@standard.ai>, Léo Gaspard <leo@standard.ai>"
375
376
  serde,https://github.com/serde-rs/serde,MIT OR Apache-2.0,"Erick Tryzelaar <erick.tryzelaar@gmail.com>, David Tolnay <dtolnay@gmail.com>"
376
377
  serde-bool,https://github.com/x52dev/serde-utils,MIT OR Apache-2.0,Rob Ede <robjtede@icloud.com>
378
+ serde-transcode,https://github.com/sfackler/serde-transcode,MIT OR Apache-2.0,Steven Fackler <sfackler@palantir.com>
377
379
  serde_bytes,https://github.com/serde-rs/bytes,MIT OR Apache-2.0,David Tolnay <dtolnay@gmail.com>
378
380
  serde_core,https://github.com/serde-rs/serde,MIT OR Apache-2.0,"Erick Tryzelaar <erick.tryzelaar@gmail.com>, David Tolnay <dtolnay@gmail.com>"
379
381
  serde_derive,https://github.com/serde-rs/serde,MIT OR Apache-2.0,"Erick Tryzelaar <erick.tryzelaar@gmail.com>, David Tolnay <dtolnay@gmail.com>"
@@ -496,6 +498,7 @@ wasm-bindgen-macro,https://github.com/rustwasm/wasm-bindgen/tree/master/crates/m
496
498
  wasm-bindgen-macro-support,https://github.com/rustwasm/wasm-bindgen/tree/master/crates/macro-support,MIT OR Apache-2.0,The wasm-bindgen Developers
497
499
  wasm-bindgen-shared,https://github.com/rustwasm/wasm-bindgen/tree/master/crates/shared,MIT OR Apache-2.0,The wasm-bindgen Developers
498
500
  web-sys,https://github.com/rustwasm/wasm-bindgen/tree/master/crates/web-sys,MIT OR Apache-2.0,The wasm-bindgen Developers
501
+ web-time,https://github.com/daxpedda/web-time,MIT OR Apache-2.0,The web-time Authors
499
502
  webpki-root-certs,https://github.com/rustls/webpki-roots,CDLA-Permissive-2.0,The webpki-root-certs Authors
500
503
  webpki-roots,https://github.com/rustls/webpki-roots,CDLA-Permissive-2.0,The webpki-roots Authors
501
504
  widestring,https://github.com/VoidStarKat/widestring-rs,MIT OR Apache-2.0,The widestring Authors
@@ -0,0 +1,12 @@
1
+ Datadog libdatadog
2
+ Copyright 2021-2022 Datadog, Inc.
3
+
4
+ This product includes software developed at Datadog (<https://www.datadoghq.com/>).
5
+
6
+ --
7
+
8
+ This product bundles a copy of the libbpf/usdt single-header USDT
9
+ library in `libdd-profiling-heap-sampler/vendor/usdt.h`. That file is licensed
10
+ under the BSD 2-Clause License, Copyright (c) 2024 Meta Platforms, Inc.
11
+ and affiliates. The SPDX identifier and copyright notice are retained
12
+ verbatim in the file header. Upstream: <https://github.com/libbpf/usdt>.
@@ -279,6 +279,14 @@ typedef struct ddog_prof_Function2 *ddog_prof_FunctionId2;
279
279
  * - **dd-trace-dotnet**: Sample type definitions for allocations, locks, CPU, walltime,
280
280
  * exceptions, live objects, HTTP requests
281
281
  * - **pprof-nodejs**: `profile-serializer.ts` (value type functions)
282
+ *
283
+ * # Adding new types
284
+ *
285
+ * To prototype a new profile type without a libdatadog release, use one of
286
+ * the `Custom1` through `Custom5` slots and configure its concrete `(type,
287
+ * unit)` string pair on the profile before serialization. Once the type is
288
+ * stable and agreed upon across profiler teams, add a dedicated variant here
289
+ * so callers can use the type-safe path.
282
290
  */
283
291
  typedef enum ddog_prof_SampleType {
284
292
  DDOG_PROF_SAMPLE_TYPE_ALLOC_SAMPLES,
@@ -351,9 +359,31 @@ typedef enum ddog_prof_SampleType {
351
359
  * Legacy: Use `WallTime` instead for consistency with naming scheme
352
360
  */
353
361
  DDOG_PROF_SAMPLE_TYPE_WALL_LEGACY,
354
- DDOG_PROF_SAMPLE_TYPE_EXPERIMENTAL_COUNT,
355
- DDOG_PROF_SAMPLE_TYPE_EXPERIMENTAL_NANOSECONDS,
356
- DDOG_PROF_SAMPLE_TYPE_EXPERIMENTAL_BYTES,
362
+ /**
363
+ * Custom profile type slot. Configure its concrete `(type, unit)` on the profile before
364
+ * serialization.
365
+ */
366
+ DDOG_PROF_SAMPLE_TYPE_CUSTOM1,
367
+ /**
368
+ * Custom profile type slot. Configure its concrete `(type, unit)` on the profile before
369
+ * serialization.
370
+ */
371
+ DDOG_PROF_SAMPLE_TYPE_CUSTOM2,
372
+ /**
373
+ * Custom profile type slot. Configure its concrete `(type, unit)` on the profile before
374
+ * serialization.
375
+ */
376
+ DDOG_PROF_SAMPLE_TYPE_CUSTOM3,
377
+ /**
378
+ * Custom profile type slot. Configure its concrete `(type, unit)` on the profile before
379
+ * serialization.
380
+ */
381
+ DDOG_PROF_SAMPLE_TYPE_CUSTOM4,
382
+ /**
383
+ * Custom profile type slot. Configure its concrete `(type, unit)` on the profile before
384
+ * serialization.
385
+ */
386
+ DDOG_PROF_SAMPLE_TYPE_CUSTOM5,
357
387
  } ddog_prof_SampleType;
358
388
 
359
389
  typedef enum ddog_prof_Utf8Option {
@@ -375,8 +405,6 @@ typedef enum ddog_prof_Utf8Option {
375
405
 
376
406
  typedef struct ddog_OpaqueCancellationToken ddog_OpaqueCancellationToken;
377
407
 
378
- typedef struct ddog_prof_EncodedProfile ddog_prof_EncodedProfile;
379
-
380
408
  typedef struct ddog_prof_ExporterManager ddog_prof_ExporterManager;
381
409
 
382
410
  typedef struct ddog_prof_Exporter ddog_prof_Exporter;
@@ -891,23 +919,6 @@ typedef struct ddog_prof_StringHeader {
891
919
  uint8_t _0;
892
920
  } ddog_prof_StringHeader;
893
921
 
894
- /**
895
- * An FFI-safe string ID where a null StringId2 maps to `StringRef::EMPTY`.
896
- * The representation is ensured to be a pointer for ABI stability, but
897
- * callers should not generally dereference this pointer. When using the id,
898
- * the caller needs to be sure that the `ProfilesDictionary` or string set it
899
- * refers to is the same one that the operations are performed on; it is not
900
- * generally guaranteed that ids from one dictionary/set can be used in
901
- * another, even if it happens to work by implementation detail. There is an
902
- * exception is for well-known strings, which are considered present in every
903
- * string set.
904
- *
905
- * Equality and hashing are defined by pointer identity, so they are only
906
- * meaningful when comparing ids that originate from the same
907
- * `ProfilesDictionary`.
908
- */
909
- typedef struct ddog_prof_StringHeader *ddog_prof_StringId2;
910
-
911
922
  /**
912
923
  * An FFI-safe version of the Mapping which allows null. Be sure to maintain
913
924
  * layout-compatibility with it, except that StringId2 may be null.
@@ -920,21 +931,6 @@ typedef struct ddog_prof_Mapping2 {
920
931
  ddog_prof_StringId2 build_id;
921
932
  } ddog_prof_Mapping2;
922
933
 
923
- /**
924
- * An FFI-safe representation of a "handle" to a mapping which has been
925
- * stored in the `ProfilesDictionary`. The representation is ensured to be a
926
- * pointer for ABI stability, but callers should not generally dereference
927
- * this pointer. When using the id, the caller needs to be sure that the
928
- * `ProfilesDictionary` it refers to is the same one that the operations are
929
- * performed on; it is not generally guaranteed that ids from one dictionary
930
- * can be used in another dictionary, even if it happens to work by
931
- * implementation detail.
932
- *
933
- * `Eq`/`Hash` and other comparisons are based on this handle value, and are
934
- * only intended for ids produced by the same `ProfilesDictionary`.
935
- */
936
- typedef struct ddog_prof_Mapping2 *ddog_prof_MappingId2;
937
-
938
934
  /**
939
935
  * An FFI-safe version of the Function which allows null. Be sure to maintain
940
936
  * layout-compatibility with it, except that StringId2 may be null.
@@ -949,21 +945,6 @@ typedef struct ddog_prof_Function2 {
949
945
  ddog_prof_StringId2 file_name;
950
946
  } ddog_prof_Function2;
951
947
 
952
- /**
953
- * An FFI-safe representation of a "handle" to a function which has been
954
- * stored in the `ProfilesDictionary`. The representation is ensured to be a
955
- * pointer for ABI stability, but callers should not generally dereference
956
- * this pointer. When using the id, the caller needs to be sure that the
957
- * `ProfilesDictionary` it refers to is the same one that the operations are
958
- * performed on; it is not generally guaranteed that ids from one dictionary
959
- * can be used in another dictionary, even if it happens to work by
960
- * implementation detail.
961
- *
962
- * `Eq`/`Hash` and other comparisons are based on this handle value, and are
963
- * only intended for ids produced by the same `ProfilesDictionary`.
964
- */
965
- typedef struct ddog_prof_Function2 *ddog_prof_FunctionId2;
966
-
967
948
  /**
968
949
  * A location keyed by `MappingId2`/`FunctionId2` handles.
969
950
  *
@@ -1163,8 +1144,6 @@ typedef struct OpaqueStringId {
1163
1144
  } OpaqueStringId;
1164
1145
  #define OpaqueStringId_ZERO (OpaqueStringId){ }
1165
1146
 
1166
- typedef struct OpaqueStringId OpaqueStringId;
1167
-
1168
1147
  typedef struct ddog_prof_StringId {
1169
1148
  struct ddog_prof_Generation generation;
1170
1149
  OpaqueStringId id;
@@ -1513,8 +1492,6 @@ typedef struct ddog_StringWrapperResult {
1513
1492
  };
1514
1493
  } ddog_StringWrapperResult;
1515
1494
 
1516
- typedef struct ddog_prof_StringId ddog_prof_StringId;
1517
-
1518
1495
  typedef enum ddog_ConfigurationOrigin {
1519
1496
  DDOG_CONFIGURATION_ORIGIN_ENV_VAR,
1520
1497
  DDOG_CONFIGURATION_ORIGIN_CODE,
@@ -1586,9 +1563,10 @@ typedef struct ddog_TelemetryWorkerBuilder ddog_TelemetryWorkerBuilder;
1586
1563
  * The worker won't send data to the agent until you call `TelemetryWorkerHandle::send_start`
1587
1564
  *
1588
1565
  * To stop the worker, call `TelemetryWorkerHandle::send_stop` which trigger flush asynchronously
1589
- * then `TelemetryWorkerHandle::wait_for_shutdown`
1566
+ * then `TelemetryWorkerHandle::wait_for_shutdown` (native only — wasm callers rely on the
1567
+ * SharedRuntime worker JoinHandle instead).
1590
1568
  */
1591
- typedef struct ddog_TelemetryWorkerHandle ddog_TelemetryWorkerHandle;
1569
+ typedef struct ddog_TelemetryWorkerHandle_NativeCapabilities ddog_TelemetryWorkerHandle_NativeCapabilities;
1592
1570
 
1593
1571
  typedef enum ddog_Option_U64_Tag {
1594
1572
  DDOG_OPTION_U64_SOME_U64,
@@ -1604,6 +1582,12 @@ typedef struct ddog_Option_U64 {
1604
1582
  };
1605
1583
  } ddog_Option_U64;
1606
1584
 
1585
+ /**
1586
+ * FFI-facing alias: the C ABI surface is native-only, so the worker handle is
1587
+ * always pinned to [`NativeCapabilities`].
1588
+ */
1589
+ typedef struct ddog_TelemetryWorkerHandle_NativeCapabilities ddog_TelemetryWorkerHandle;
1590
+
1607
1591
  typedef enum ddog_Option_Bool_Tag {
1608
1592
  DDOG_OPTION_BOOL_SOME_BOOL,
1609
1593
  DDOG_OPTION_BOOL_NONE_BOOL,
@@ -1670,20 +1654,13 @@ typedef enum ddog_TraceExporterErrorCode {
1670
1654
  typedef struct ddog_TraceExporterResponse ddog_TraceExporterResponse;
1671
1655
 
1672
1656
  /**
1673
- * A shared runtime that manages PausableWorkers and provides fork safety hooks.
1674
- *
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.
1657
+ * Owns a tokio runtime and manages [`PausableWorker`]s on it.
1681
1658
  *
1682
- * # Mutex lock order
1683
- * When locking both [Self::runtime] and [Self::workers], the mutex must be locked in the order of
1684
- * the fields in the struct. When possible avoid holding both locks simultaneously.
1659
+ * Supports the full fork protocol ([`before_fork`](Self::before_fork) /
1660
+ * [`after_fork_parent`](Self::after_fork_parent) /
1661
+ * [`after_fork_child`](Self::after_fork_child)) and synchronous [`shutdown`](Self::shutdown).
1685
1662
  */
1686
- typedef struct ddog_SharedRuntime ddog_SharedRuntime;
1663
+ typedef struct ddog_ForkSafeRuntime ddog_ForkSafeRuntime;
1687
1664
 
1688
1665
  /**
1689
1666
  * The TraceExporterConfig object will hold the configuration properties for the TraceExporter.
@@ -2234,7 +2211,7 @@ typedef struct ddog_ffe_AttributePair {
2234
2211
  } ddog_ffe_AttributePair;
2235
2212
 
2236
2213
  /**
2237
- * Error codes for SharedRuntime FFI operations.
2214
+ * Error codes for ForkSafeRuntime FFI operations.
2238
2215
  */
2239
2216
  typedef enum ddog_SharedRuntimeErrorCode {
2240
2217
  /**
@@ -2268,7 +2245,7 @@ typedef enum ddog_SharedRuntimeErrorCode {
2268
2245
  } ddog_SharedRuntimeErrorCode;
2269
2246
 
2270
2247
  /**
2271
- * Error returned by SharedRuntime FFI functions.
2248
+ * Error returned by ForkSafeRuntime FFI functions.
2272
2249
  */
2273
2250
  typedef struct ddog_SharedRuntimeFFIError {
2274
2251
  enum ddog_SharedRuntimeErrorCode code;
@@ -156,7 +156,7 @@ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_connection_timeou
156
156
  * [`ddog_shared_runtime_free`].
157
157
  */
158
158
  struct ddog_TraceExporterError *ddog_trace_exporter_config_set_shared_runtime(struct ddog_TraceExporterConfig *config,
159
- struct ddog_SharedRuntime *handle);
159
+ struct ddog_ForkSafeRuntime *handle);
160
160
 
161
161
  /**
162
162
  * Enables OTLP HTTP/JSON export and sets the endpoint URL.
@@ -168,13 +168,71 @@ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_shared_runtime(st
168
168
  struct ddog_TraceExporterError *ddog_trace_exporter_config_set_otlp_endpoint(struct ddog_TraceExporterConfig *config,
169
169
  ddog_CharSlice url);
170
170
 
171
+ /**
172
+ * Sets the OTLP export protocol. Accepts the OTel-standard values `http/json` (default) or
173
+ * `http/protobuf`; `grpc` is rejected as not yet supported. The host language resolves the value
174
+ * (e.g. from `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL`).
175
+ *
176
+ * Has no effect unless an OTLP endpoint is also configured via
177
+ * `ddog_trace_exporter_config_set_otlp_endpoint`; without one, traces are sent to the
178
+ * Datadog agent and this protocol selection is ignored.
179
+ *
180
+ * Returns `None` on success, `ErrorCode::InvalidArgument` for a null config or an unaccepted
181
+ * value, and `ErrorCode::InvalidInput` for a non-UTF-8 string.
182
+ */
183
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_otlp_protocol(struct ddog_TraceExporterConfig *config,
184
+ ddog_CharSlice protocol);
185
+
186
+ /**
187
+ * Sets OTLP trace instrumentation scope metadata.
188
+ *
189
+ * Has no effect unless an OTLP endpoint is also configured via
190
+ * `ddog_trace_exporter_config_set_otlp_endpoint`; without one, traces are sent to the
191
+ * Datadog agent and this scope metadata is ignored.
192
+ */
193
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_otlp_instrumentation_scope(struct ddog_TraceExporterConfig *config,
194
+ ddog_CharSlice name,
195
+ ddog_CharSlice version);
196
+
197
+ /**
198
+ * Sets the cardinality limit for client-side stats computation.
199
+ *
200
+ * When the number of distinct stats groups exceeds `limit`, additional groups are
201
+ * aggregated into a sentinel key instead of being tracked individually.
202
+ * This bounds memory usage when the trace population has very high cardinality.
203
+ *
204
+ * Has no effect unless stats computation is enabled via
205
+ * `ddog_trace_exporter_config_set_compute_stats`.
206
+ */
207
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_stats_cardinality_limit(struct ddog_TraceExporterConfig *config,
208
+ uintptr_t limit);
209
+
210
+ /**
211
+ * Configure the exporter to write traces as newline-delimited JSON to stdout (the Datadog
212
+ * Forwarder "log exporter" path) instead of sending them to a Datadog agent. Used in serverless
213
+ * environments (e.g. AWS Lambda) when no agent is reachable.
214
+ *
215
+ * `max_line_size` overrides the per-line byte cap; pass `0` to use the default (256 KiB, the AWS
216
+ * CloudWatch Logs limit). When enabled, agent-specific behavior (agent-info polling, client-side
217
+ * stats, V1 negotiation) is bypassed.
218
+ *
219
+ * In this mode each span's `meta` is serialized to process stdout (and thus captured by CloudWatch
220
+ * Logs in Lambda); `meta_struct` is excluded because it holds raw msgpack the log intake cannot
221
+ * interpret.
222
+ *
223
+ * Writes are synchronous/blocking on stdout, so this mode targets single-threaded / current-thread
224
+ * serverless runtimes (e.g. AWS Lambda) where a blocking write won't stall a shared async reactor.
225
+ */
226
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_output_to_log(struct ddog_TraceExporterConfig *config,
227
+ uintptr_t max_line_size);
228
+
171
229
  /**
172
230
  * Create a new TraceExporter instance.
173
231
  *
174
- * When an OTLP endpoint is configured via `TraceExporterConfig`, the exporter sends traces in
175
- * OTLP HTTP/JSON to that endpoint instead of the Datadog agent. The same payload (e.g.
176
- * MessagePack) is passed to `ddog_trace_exporter_send`; the library decodes and converts to
177
- * OTLP when OTLP is enabled.
232
+ * When an OTLP endpoint is configured via `TraceExporterConfig`, the exporter sends traces to
233
+ * that endpoint in OTLP over HTTP JSON or protobuf per the configured protocol instead of
234
+ * to the Datadog agent. The same payload (e.g. MessagePack) is passed to
235
+ * `ddog_trace_exporter_send`; the library decodes and converts it to OTLP when OTLP is enabled.
178
236
  *
179
237
  * # Arguments
180
238
  *
@@ -406,6 +406,25 @@ struct ddog_prof_Profile_NewResult ddog_prof_Profile_with_string_storage(struct
406
406
  const struct ddog_prof_Period *period,
407
407
  struct ddog_prof_ManagedStringStorage string_storage);
408
408
 
409
+ /**
410
+ * Configure one of the custom sample type slots (`Custom1` through `Custom5`)
411
+ * with its concrete `(type, unit)` string pair.
412
+ *
413
+ * Use this after creating a profile with a custom slot in its `sample_types`
414
+ * or `period`. The strings are copied during this call. A profile that uses a
415
+ * custom slot must configure it before serialization.
416
+ *
417
+ * # Safety
418
+ * The `profile` ptr must point to a valid Profile object created by this
419
+ * module. The `type_str` and `unit` slices must point to valid UTF-8 memory for
420
+ * the duration of this call.
421
+ */
422
+ DDOG_CHECK_RETURN
423
+ struct ddog_prof_Profile_Result ddog_prof_Profile_set_custom_sample_type(struct ddog_prof_Profile *profile,
424
+ enum ddog_prof_SampleType slot,
425
+ ddog_CharSlice type_str,
426
+ ddog_CharSlice unit);
427
+
409
428
  /**
410
429
  * # Safety
411
430
  * The `profile` can be null, but if non-null it must point to a Profile
@@ -20,7 +20,7 @@ extern "C" {
20
20
  void ddog_shared_runtime_error_free(struct ddog_SharedRuntimeFFIError *error);
21
21
 
22
22
  /**
23
- * Create a new `SharedRuntime`.
23
+ * Create a new `ForkSafeRuntime`.
24
24
  *
25
25
  * On success writes a raw handle into `*out_handle` and returns `None`.
26
26
  * On failure leaves `*out_handle` unchanged and returns an error.
@@ -28,7 +28,7 @@ void ddog_shared_runtime_error_free(struct ddog_SharedRuntimeFFIError *error);
28
28
  * The caller owns the handle and must eventually pass it to
29
29
  * [`ddog_shared_runtime_free`] (or another consumer that takes ownership).
30
30
  */
31
- struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_new(const struct ddog_SharedRuntime **out_handle);
31
+ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_new(const struct ddog_ForkSafeRuntime **out_handle);
32
32
 
33
33
  /**
34
34
  * Free a handle, decrementing the `Arc` strong count.
@@ -36,7 +36,7 @@ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_new(const struct ddog_Sha
36
36
  * The underlying runtime may not be dropped if other components are still using it.
37
37
  * Use [`ddog_shared_runtime_shutdown`] to cleanly stop workers.
38
38
  */
39
- void ddog_shared_runtime_free(const struct ddog_SharedRuntime *handle);
39
+ void ddog_shared_runtime_free(const struct ddog_ForkSafeRuntime *handle);
40
40
 
41
41
  /**
42
42
  * Must be called in the parent process before `fork()`.
@@ -47,7 +47,7 @@ void ddog_shared_runtime_free(const struct ddog_SharedRuntime *handle);
47
47
  * Returns an error if `handle` is null.
48
48
  * The handle must have been initialized with `ddog_shared_runtime_new`.
49
49
  */
50
- struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_before_fork(const struct ddog_SharedRuntime *handle);
50
+ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_before_fork(const struct ddog_ForkSafeRuntime *handle);
51
51
 
52
52
  /**
53
53
  * Must be called in the parent process after `fork()`.
@@ -57,7 +57,7 @@ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_before_fork(const struct
57
57
  * Returns `None` on success, or an error if workers could not be restarted.
58
58
  * The handle must have been initialized with `ddog_shared_runtime_new`.
59
59
  */
60
- struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_after_fork_parent(const struct ddog_SharedRuntime *handle);
60
+ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_after_fork_parent(const struct ddog_ForkSafeRuntime *handle);
61
61
 
62
62
  /**
63
63
  * Must be called in the child process after `fork()`.
@@ -69,10 +69,10 @@ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_after_fork_parent(const s
69
69
  * reinitialized.
70
70
  * The handle must have been initialized with `ddog_shared_runtime_new`.
71
71
  */
72
- struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_after_fork_child(const struct ddog_SharedRuntime *handle);
72
+ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_after_fork_child(const struct ddog_ForkSafeRuntime *handle);
73
73
 
74
74
  /**
75
- * Shut down the `SharedRuntime`, stopping all workers.
75
+ * Shut down the `ForkSafeRuntime`, stopping all workers.
76
76
  *
77
77
  * `timeout_ms` is the maximum time to wait for workers to stop, in
78
78
  * milliseconds. Pass `0` for no timeout.
@@ -81,7 +81,7 @@ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_after_fork_child(const st
81
81
  * if the timeout was reached.
82
82
  * The handle must have been initialized with `ddog_shared_runtime_new`.
83
83
  */
84
- struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_shutdown(const struct ddog_SharedRuntime *handle,
84
+ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_shutdown(const struct ddog_ForkSafeRuntime *handle,
85
85
  uint64_t timeout_ms);
86
86
 
87
87
  #ifdef __cplusplus