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
@@ -0,0 +1,91 @@
1
+ // Copyright 2025-Present Datadog, Inc. https://www.datadoghq.com/
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+
5
+ #ifndef DDOG_SHARED_RUNTIME_H
6
+ #define DDOG_SHARED_RUNTIME_H
7
+
8
+ #include <stdarg.h>
9
+ #include <stdbool.h>
10
+ #include <stdint.h>
11
+ #include <stdlib.h>
12
+
13
+ #ifdef __cplusplus
14
+ extern "C" {
15
+ #endif // __cplusplus
16
+
17
+ /**
18
+ * Frees a `SharedRuntimeFFIError`. After this call the pointer is invalid.
19
+ */
20
+ void ddog_shared_runtime_error_free(struct ddog_SharedRuntimeFFIError *error);
21
+
22
+ /**
23
+ * Create a new `SharedRuntime`.
24
+ *
25
+ * On success writes a raw handle into `*out_handle` and returns `None`.
26
+ * On failure leaves `*out_handle` unchanged and returns an error.
27
+ *
28
+ * The caller owns the handle and must eventually pass it to
29
+ * [`ddog_shared_runtime_free`] (or another consumer that takes ownership).
30
+ */
31
+ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_new(const struct ddog_SharedRuntime **out_handle);
32
+
33
+ /**
34
+ * Free a handle, decrementing the `Arc` strong count.
35
+ *
36
+ * The underlying runtime may not be dropped if other components are still using it.
37
+ * Use [`ddog_shared_runtime_shutdown`] to cleanly stop workers.
38
+ */
39
+ void ddog_shared_runtime_free(const struct ddog_SharedRuntime *handle);
40
+
41
+ /**
42
+ * Must be called in the parent process before `fork()`.
43
+ *
44
+ * Pauses all workers so that no background threads are running during the
45
+ * fork, preventing deadlocks in the child process.
46
+ *
47
+ * Returns an error if `handle` is null.
48
+ * The handle must have been initialized with `ddog_shared_runtime_new`.
49
+ */
50
+ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_before_fork(const struct ddog_SharedRuntime *handle);
51
+
52
+ /**
53
+ * Must be called in the parent process after `fork()`.
54
+ *
55
+ * Restarts all workers that were paused by [`ddog_shared_runtime_before_fork`].
56
+ *
57
+ * Returns `None` on success, or an error if workers could not be restarted.
58
+ * The handle must have been initialized with `ddog_shared_runtime_new`.
59
+ */
60
+ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_after_fork_parent(const struct ddog_SharedRuntime *handle);
61
+
62
+ /**
63
+ * Must be called in the child process after `fork()`.
64
+ *
65
+ * Creates a fresh tokio runtime and restarts all workers. The original
66
+ * runtime cannot be safely reused after a fork.
67
+ *
68
+ * Returns `None` on success, or an error if the runtime could not be
69
+ * reinitialized.
70
+ * The handle must have been initialized with `ddog_shared_runtime_new`.
71
+ */
72
+ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_after_fork_child(const struct ddog_SharedRuntime *handle);
73
+
74
+ /**
75
+ * Shut down the `SharedRuntime`, stopping all workers.
76
+ *
77
+ * `timeout_ms` is the maximum time to wait for workers to stop, in
78
+ * milliseconds. Pass `0` for no timeout.
79
+ *
80
+ * Returns `None` on success, or `SharedRuntimeErrorCode::ShutdownTimedOut`
81
+ * if the timeout was reached.
82
+ * The handle must have been initialized with `ddog_shared_runtime_new`.
83
+ */
84
+ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_shutdown(const struct ddog_SharedRuntime *handle,
85
+ uint64_t timeout_ms);
86
+
87
+ #ifdef __cplusplus
88
+ } // extern "C"
89
+ #endif // __cplusplus
90
+
91
+ #endif /* DDOG_SHARED_RUNTIME_H */
@@ -0,0 +1,15 @@
1
+ # Copyright 2021-Present Datadog, Inc. https://www.datadoghq.com/
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ prefix=${pcfiledir}/../..
5
+ exec_prefix=${prefix}
6
+ libdir=${exec_prefix}/lib
7
+ includedir=${prefix}/include
8
+
9
+ Name: datadog_profiling
10
+ Description: Contains common code used to implement Datadog's Continuous Profilers. (Dynamic linking variant, sets rpath)
11
+ Version: 36.0.0
12
+ Requires:
13
+ Libs: -L${libdir} -ldatadog_profiling -Wl,-rpath,${libdir}
14
+ Libs.private:
15
+ Cflags: -I${includedir}
@@ -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
@@ -21,11 +21,11 @@ extern "C" {
21
21
  void ddog_trace_exporter_error_free(struct ddog_TraceExporterError *error);
22
22
 
23
23
  /**
24
- * Return a read-only pointer to the response body. This pointer is only valid as long as
25
- * `response` is valid.
24
+ * Return a borrowed view of the response body. The returned slice is
25
+ * only valid as long as `response` is alive. Returns an empty slice
26
+ * when `response` is null or the body is absent.
26
27
  */
27
- const uint8_t *ddog_trace_exporter_response_get_body(const struct ddog_TraceExporterResponse *response,
28
- uintptr_t *out_len);
28
+ ddog_ByteSlice ddog_trace_exporter_response_get_body(const struct ddog_TraceExporterResponse *response);
29
29
 
30
30
  /**
31
31
  * Free `response` and all its contents. After being called response will not point to a valid
@@ -209,6 +209,181 @@ struct ddog_TraceExporterError *ddog_trace_exporter_send(const ddog_TraceExporte
209
209
  ddog_ByteSlice trace,
210
210
  struct ddog_TraceExporterResponse **response_out);
211
211
 
212
+ /**
213
+ * Create a new span with all scalar fields set.
214
+ *
215
+ * String fields are copied from the provided slices. The `meta` and
216
+ * `metrics` maps start empty; use [`ddog_tracer_span_set_meta`] and
217
+ * [`ddog_tracer_span_set_metric`] to populate them.
218
+ *
219
+ * # Safety
220
+ *
221
+ * `out_handle` must point to valid, writable memory for a `Box<TracerSpan>`.
222
+ * All `CharSlice` fields in `fields` must point to valid memory for their
223
+ * stated length.
224
+ */
225
+ struct ddog_TraceExporterError *ddog_tracer_span_new(ddog_TracerSpan **out_handle,
226
+ const struct ddog_TracerSpanFields *fields);
227
+
228
+ /**
229
+ * Free a `TracerSpan` and all its contents.
230
+ *
231
+ * After this call the handle is invalid and must not be reused.
232
+ *
233
+ * # Safety
234
+ *
235
+ * `handle` must have been created by [`ddog_tracer_span_new`] and must not
236
+ * be used after this call.
237
+ */
238
+ void ddog_tracer_span_free(ddog_TracerSpan *handle);
239
+
240
+ /**
241
+ * Add or overwrite a string tag (`meta`) on the span.
242
+ *
243
+ * Both `key` and `value` are copied into the span.
244
+ *
245
+ * # Safety
246
+ *
247
+ * `handle` must be a valid pointer to a `TracerSpan`.
248
+ * `key` and `value` must point to valid UTF-8 memory.
249
+ */
250
+ struct ddog_TraceExporterError *ddog_tracer_span_set_meta(ddog_TracerSpan *handle,
251
+ ddog_CharSlice key,
252
+ ddog_CharSlice value);
253
+
254
+ /**
255
+ * Add or overwrite a numeric tag (`metric`) on the span.
256
+ *
257
+ * The `key` is copied into the span.
258
+ *
259
+ * # Safety
260
+ *
261
+ * `handle` must be a valid pointer to a `TracerSpan`.
262
+ * `key` must point to valid UTF-8 memory.
263
+ */
264
+ struct ddog_TraceExporterError *ddog_tracer_span_set_metric(ddog_TracerSpan *handle,
265
+ ddog_CharSlice key,
266
+ double value);
267
+
268
+ /**
269
+ * Create a new empty trace chunks container.
270
+ *
271
+ * `capacity` is a hint for the expected number of chunks; pass 0 if
272
+ * unknown.
273
+ *
274
+ * # Safety
275
+ *
276
+ * `out_handle` must point to valid, writable memory for a
277
+ * `Box<TracerTraceChunks>`.
278
+ */
279
+ struct ddog_TraceExporterError *ddog_tracer_trace_chunks_new(uintptr_t capacity,
280
+ ddog_TracerTraceChunks **out_handle);
281
+
282
+ /**
283
+ * Free a trace chunks container and all its contents.
284
+ *
285
+ * After this call the handle is invalid and must not be reused.
286
+ *
287
+ * # Safety
288
+ *
289
+ * `handle` must have been created by [`ddog_tracer_trace_chunks_new`].
290
+ */
291
+ void ddog_tracer_trace_chunks_free(ddog_TracerTraceChunks *handle);
292
+
293
+ /**
294
+ * Start a new chunk (trace) inside the container.
295
+ *
296
+ * Subsequent [`ddog_tracer_trace_chunks_push_span`] calls will append
297
+ * spans to this chunk until the next `begin_chunk` call.
298
+ *
299
+ * `capacity` is a hint for the expected number of spans in this chunk;
300
+ * pass 0 if unknown.
301
+ *
302
+ * # Safety
303
+ *
304
+ * `handle` must be a valid pointer to a `TracerTraceChunks`.
305
+ */
306
+ struct ddog_TraceExporterError *ddog_tracer_trace_chunks_begin_chunk(ddog_TracerTraceChunks *handle,
307
+ uintptr_t capacity);
308
+
309
+ /**
310
+ * Move a span into the current (last) chunk, consuming the span handle.
311
+ *
312
+ * A chunk must have been started with
313
+ * [`ddog_tracer_trace_chunks_begin_chunk`] before calling this function.
314
+ *
315
+ * # Safety
316
+ *
317
+ * * `handle` must be a valid pointer to a `TracerTraceChunks`.
318
+ * * `span` is consumed and must not be used after this call.
319
+ */
320
+ struct ddog_TraceExporterError *ddog_tracer_trace_chunks_push_span(ddog_TracerTraceChunks *handle,
321
+ ddog_TracerSpan *span);
322
+
323
+ /**
324
+ * Create a new cancellation token.
325
+ *
326
+ * The returned token must be freed with
327
+ * [`ddog_trace_exporter_cancel_token_drop`].
328
+ */
329
+ ddog_TraceExporterCancelToken *ddog_trace_exporter_cancel_token_new(void);
330
+
331
+ /**
332
+ * Cancel a cancellation token.
333
+ *
334
+ * All clones of the same token observe the cancellation. If a
335
+ * [`ddog_trace_exporter_send_trace_chunks`] call is using this token at the
336
+ * time of cancellation, that send stops waiting for the agent at its next
337
+ * await point and returns an error; the trace chunks it was sending may be
338
+ * lost.
339
+ *
340
+ * Cancellation only affects a send that is in progress. If no send is using
341
+ * the token, cancelling it has no immediate effect: a send started afterwards
342
+ * with an already-cancelled token returns an error without contacting the
343
+ * agent, and a token cancelled after its send has already finished does
344
+ * nothing.
345
+ */
346
+ void ddog_trace_exporter_cancel_token_cancel(const ddog_TraceExporterCancelToken *token);
347
+
348
+ /**
349
+ * Free a cancellation token.
350
+ *
351
+ * After this call the token is invalid and must not be reused.
352
+ */
353
+ void ddog_trace_exporter_cancel_token_drop(ddog_TraceExporterCancelToken *token);
354
+
355
+ /**
356
+ * Send trace chunks through a [`TraceExporter`], consuming the chunks.
357
+ *
358
+ * This calls `TraceExporter::send_trace_chunks` which processes stats,
359
+ * serializes in the configured output format, and sends to the agent
360
+ * with retry logic.
361
+ *
362
+ * When `cancel` is non-null, cancelling that token (via
363
+ * [`ddog_trace_exporter_cancel_token_cancel`]) while the send is in progress
364
+ * aborts the in-flight request and returns an error with code
365
+ * [`ExporterErrorCode::IoError`]. Cancellation is cooperative: it only takes
366
+ * effect while a request is actually in flight. A token that is already
367
+ * cancelled when the send starts makes this function return that error
368
+ * immediately, and cancelling after the send has finished has no effect.
369
+ * Cancelling an in-flight send may cause the trace chunks being sent to be
370
+ * lost.
371
+ *
372
+ * On success, if `response_out` is non-null, a heap-allocated
373
+ * [`ExporterResponse`] is written there. The caller owns it and must
374
+ * free it with `ddog_trace_exporter_response_free`.
375
+ *
376
+ * # Safety
377
+ *
378
+ * * `chunks` is consumed and must not be used after this call.
379
+ * * If `response_out` is non-null it must point to valid writable memory for a
380
+ * `Box<ExporterResponse>`.
381
+ */
382
+ struct ddog_TraceExporterError *ddog_trace_exporter_send_trace_chunks(const ddog_TraceExporter *exporter,
383
+ ddog_TracerTraceChunks *chunks,
384
+ struct ddog_TraceExporterResponse **response_out,
385
+ const ddog_TraceExporterCancelToken *cancel);
386
+
212
387
  #ifdef __cplusplus
213
388
  } // extern "C"
214
389
  #endif // __cplusplus
@@ -488,6 +488,24 @@ struct ddog_prof_Profile_Result ddog_prof_Profile_add_endpoint_count(struct ddog
488
488
  ddog_CharSlice endpoint,
489
489
  int64_t value);
490
490
 
491
+ /**
492
+ * Set whether "local root span id" labels should be omitted when serializing.
493
+ *
494
+ * This is an experimental setting and defaults to false.
495
+ *
496
+ * # Arguments
497
+ * * `profile` - a reference to the profile being configured.
498
+ * * `omit` - true to omit the label from serialized pprof samples.
499
+ *
500
+ * # Safety
501
+ * The `profile` ptr must point to a valid Profile object created by this
502
+ * module.
503
+ * This call is _NOT_ thread-safe.
504
+ */
505
+ DDOG_CHECK_RETURN
506
+ struct ddog_prof_Profile_Result ddog_prof_Profile_set_omit_local_root_span_id_when_serializing(struct ddog_prof_Profile *profile,
507
+ bool omit);
508
+
491
509
  /**
492
510
  * Add a poisson-based upscaling rule which will be use to adjust values and make them
493
511
  * closer to reality.
@@ -0,0 +1,91 @@
1
+ // Copyright 2025-Present Datadog, Inc. https://www.datadoghq.com/
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+
5
+ #ifndef DDOG_SHARED_RUNTIME_H
6
+ #define DDOG_SHARED_RUNTIME_H
7
+
8
+ #include <stdarg.h>
9
+ #include <stdbool.h>
10
+ #include <stdint.h>
11
+ #include <stdlib.h>
12
+
13
+ #ifdef __cplusplus
14
+ extern "C" {
15
+ #endif // __cplusplus
16
+
17
+ /**
18
+ * Frees a `SharedRuntimeFFIError`. After this call the pointer is invalid.
19
+ */
20
+ void ddog_shared_runtime_error_free(struct ddog_SharedRuntimeFFIError *error);
21
+
22
+ /**
23
+ * Create a new `SharedRuntime`.
24
+ *
25
+ * On success writes a raw handle into `*out_handle` and returns `None`.
26
+ * On failure leaves `*out_handle` unchanged and returns an error.
27
+ *
28
+ * The caller owns the handle and must eventually pass it to
29
+ * [`ddog_shared_runtime_free`] (or another consumer that takes ownership).
30
+ */
31
+ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_new(const struct ddog_SharedRuntime **out_handle);
32
+
33
+ /**
34
+ * Free a handle, decrementing the `Arc` strong count.
35
+ *
36
+ * The underlying runtime may not be dropped if other components are still using it.
37
+ * Use [`ddog_shared_runtime_shutdown`] to cleanly stop workers.
38
+ */
39
+ void ddog_shared_runtime_free(const struct ddog_SharedRuntime *handle);
40
+
41
+ /**
42
+ * Must be called in the parent process before `fork()`.
43
+ *
44
+ * Pauses all workers so that no background threads are running during the
45
+ * fork, preventing deadlocks in the child process.
46
+ *
47
+ * Returns an error if `handle` is null.
48
+ * The handle must have been initialized with `ddog_shared_runtime_new`.
49
+ */
50
+ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_before_fork(const struct ddog_SharedRuntime *handle);
51
+
52
+ /**
53
+ * Must be called in the parent process after `fork()`.
54
+ *
55
+ * Restarts all workers that were paused by [`ddog_shared_runtime_before_fork`].
56
+ *
57
+ * Returns `None` on success, or an error if workers could not be restarted.
58
+ * The handle must have been initialized with `ddog_shared_runtime_new`.
59
+ */
60
+ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_after_fork_parent(const struct ddog_SharedRuntime *handle);
61
+
62
+ /**
63
+ * Must be called in the child process after `fork()`.
64
+ *
65
+ * Creates a fresh tokio runtime and restarts all workers. The original
66
+ * runtime cannot be safely reused after a fork.
67
+ *
68
+ * Returns `None` on success, or an error if the runtime could not be
69
+ * reinitialized.
70
+ * The handle must have been initialized with `ddog_shared_runtime_new`.
71
+ */
72
+ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_after_fork_child(const struct ddog_SharedRuntime *handle);
73
+
74
+ /**
75
+ * Shut down the `SharedRuntime`, stopping all workers.
76
+ *
77
+ * `timeout_ms` is the maximum time to wait for workers to stop, in
78
+ * milliseconds. Pass `0` for no timeout.
79
+ *
80
+ * Returns `None` on success, or `SharedRuntimeErrorCode::ShutdownTimedOut`
81
+ * if the timeout was reached.
82
+ * The handle must have been initialized with `ddog_shared_runtime_new`.
83
+ */
84
+ struct ddog_SharedRuntimeFFIError *ddog_shared_runtime_shutdown(const struct ddog_SharedRuntime *handle,
85
+ uint64_t timeout_ms);
86
+
87
+ #ifdef __cplusplus
88
+ } // extern "C"
89
+ #endif // __cplusplus
90
+
91
+ #endif /* DDOG_SHARED_RUNTIME_H */
@@ -8,7 +8,7 @@ includedir=${prefix}/include
8
8
 
9
9
  Name: datadog_profiling
10
10
  Description: Contains common code used to implement Datadog's Continuous Profilers. (Dynamic linking variant, sets rpath)
11
- Version: 33.0.0
11
+ Version: 36.0.0
12
12
  Requires:
13
13
  Libs: -L${libdir} -ldatadog_profiling -Wl,-rpath,${libdir}
14
14
  Libs.private: