libdatadog 33.0.0.1.0 → 35.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 (91) 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-35.0.0/aarch64-linux}/LICENSE-3rdparty.csv +2 -0
  8. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-35.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-35.0.0/aarch64-linux}/include/datadog/common.h +28 -3
  10. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-35.0.0/aarch64-linux}/include/datadog/data-pipeline.h +137 -4
  11. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-35.0.0/aarch64-linux}/lib/libdatadog_profiling.so +0 -0
  12. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-35.0.0/aarch64-linux}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  13. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-35.0.0/aarch64-linux-musl}/LICENSE-3rdparty.csv +2 -0
  14. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-35.0.0/aarch64-linux-musl}/bin/libdatadog-crashtracking-receiver +0 -0
  15. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-35.0.0/aarch64-linux-musl}/include/datadog/common.h +28 -3
  16. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-35.0.0/aarch64-linux-musl}/include/datadog/data-pipeline.h +137 -4
  17. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-35.0.0/aarch64-linux-musl}/lib/libdatadog_profiling.so +0 -0
  18. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-35.0.0/aarch64-linux-musl}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  19. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-35.0.0/arm64-darwin}/LICENSE-3rdparty.csv +2 -0
  20. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-35.0.0/arm64-darwin}/bin/libdatadog-crashtracking-receiver +0 -0
  21. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-35.0.0/arm64-darwin}/include/datadog/common.h +28 -3
  22. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-35.0.0/arm64-darwin}/include/datadog/data-pipeline.h +137 -4
  23. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-35.0.0/arm64-darwin}/lib/libdatadog_profiling.dylib +0 -0
  24. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-35.0.0/arm64-darwin}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  25. data/vendor/libdatadog-35.0.0/x86_64-linux/LICENSE-3rdparty.csv +550 -0
  26. data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-35.0.0/x86_64-linux}/bin/libdatadog-crashtracking-receiver +0 -0
  27. data/vendor/libdatadog-35.0.0/x86_64-linux/include/datadog/common.h +2900 -0
  28. data/vendor/libdatadog-35.0.0/x86_64-linux/include/datadog/data-pipeline.h +349 -0
  29. data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-35.0.0/x86_64-linux}/lib/libdatadog_profiling.so +0 -0
  30. data/vendor/libdatadog-35.0.0/x86_64-linux/lib/pkgconfig/datadog_profiling_with_rpath.pc +15 -0
  31. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-35.0.0/x86_64-linux-musl}/LICENSE-3rdparty.csv +2 -0
  32. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-35.0.0/x86_64-linux-musl}/bin/libdatadog-crashtracking-receiver +0 -0
  33. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-35.0.0/x86_64-linux-musl}/include/datadog/common.h +28 -3
  34. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-35.0.0/x86_64-linux-musl}/include/datadog/data-pipeline.h +137 -4
  35. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-35.0.0/x86_64-linux-musl}/lib/libdatadog_profiling.so +0 -0
  36. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-35.0.0/x86_64-linux-musl}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  37. metadata +85 -82
  38. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE-3rdparty.csv +0 -548
  39. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/common.h +0 -2875
  40. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/data-pipeline.h +0 -216
  41. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -15
  42. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-35.0.0/aarch64-linux}/LICENSE +0 -0
  43. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-35.0.0/aarch64-linux}/NOTICE +0 -0
  44. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-35.0.0/aarch64-linux}/include/datadog/blazesym.h +0 -0
  45. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-35.0.0/aarch64-linux}/include/datadog/crashtracker.h +0 -0
  46. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-35.0.0/aarch64-linux}/include/datadog/ddsketch.h +0 -0
  47. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-35.0.0/aarch64-linux}/include/datadog/ffe.h +0 -0
  48. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-35.0.0/aarch64-linux}/include/datadog/library-config.h +0 -0
  49. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-35.0.0/aarch64-linux}/include/datadog/log.h +0 -0
  50. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-35.0.0/aarch64-linux}/include/datadog/profiling.h +0 -0
  51. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-35.0.0/aarch64-linux}/include/datadog/telemetry.h +0 -0
  52. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-35.0.0/aarch64-linux-musl}/LICENSE +0 -0
  53. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-35.0.0/aarch64-linux-musl}/NOTICE +0 -0
  54. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-35.0.0/aarch64-linux-musl}/include/datadog/blazesym.h +0 -0
  55. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-35.0.0/aarch64-linux-musl}/include/datadog/crashtracker.h +0 -0
  56. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-35.0.0/aarch64-linux-musl}/include/datadog/ddsketch.h +0 -0
  57. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-35.0.0/aarch64-linux-musl}/include/datadog/ffe.h +0 -0
  58. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-35.0.0/aarch64-linux-musl}/include/datadog/library-config.h +0 -0
  59. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-35.0.0/aarch64-linux-musl}/include/datadog/log.h +0 -0
  60. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-35.0.0/aarch64-linux-musl}/include/datadog/profiling.h +0 -0
  61. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-35.0.0/aarch64-linux-musl}/include/datadog/telemetry.h +0 -0
  62. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-35.0.0/arm64-darwin}/LICENSE +0 -0
  63. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-35.0.0/arm64-darwin}/NOTICE +0 -0
  64. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-35.0.0/arm64-darwin}/include/datadog/blazesym.h +0 -0
  65. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-35.0.0/arm64-darwin}/include/datadog/crashtracker.h +0 -0
  66. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-35.0.0/arm64-darwin}/include/datadog/ddsketch.h +0 -0
  67. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-35.0.0/arm64-darwin}/include/datadog/ffe.h +0 -0
  68. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-35.0.0/arm64-darwin}/include/datadog/library-config.h +0 -0
  69. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-35.0.0/arm64-darwin}/include/datadog/log.h +0 -0
  70. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-35.0.0/arm64-darwin}/include/datadog/profiling.h +0 -0
  71. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-35.0.0/arm64-darwin}/include/datadog/telemetry.h +0 -0
  72. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-35.0.0/x86_64-linux}/LICENSE +0 -0
  73. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-35.0.0/x86_64-linux}/NOTICE +0 -0
  74. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-35.0.0/x86_64-linux}/include/datadog/blazesym.h +0 -0
  75. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-35.0.0/x86_64-linux}/include/datadog/crashtracker.h +0 -0
  76. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-35.0.0/x86_64-linux}/include/datadog/ddsketch.h +0 -0
  77. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-35.0.0/x86_64-linux}/include/datadog/ffe.h +0 -0
  78. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-35.0.0/x86_64-linux}/include/datadog/library-config.h +0 -0
  79. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-35.0.0/x86_64-linux}/include/datadog/log.h +0 -0
  80. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-35.0.0/x86_64-linux}/include/datadog/profiling.h +0 -0
  81. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-35.0.0/x86_64-linux}/include/datadog/telemetry.h +0 -0
  82. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-35.0.0/x86_64-linux-musl}/LICENSE +0 -0
  83. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-35.0.0/x86_64-linux-musl}/NOTICE +0 -0
  84. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-35.0.0/x86_64-linux-musl}/include/datadog/blazesym.h +0 -0
  85. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-35.0.0/x86_64-linux-musl}/include/datadog/crashtracker.h +0 -0
  86. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-35.0.0/x86_64-linux-musl}/include/datadog/ddsketch.h +0 -0
  87. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-35.0.0/x86_64-linux-musl}/include/datadog/ffe.h +0 -0
  88. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-35.0.0/x86_64-linux-musl}/include/datadog/library-config.h +0 -0
  89. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-35.0.0/x86_64-linux-musl}/include/datadog/log.h +0 -0
  90. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-35.0.0/x86_64-linux-musl}/include/datadog/profiling.h +0 -0
  91. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-35.0.0/x86_64-linux-musl}/include/datadog/telemetry.h +0 -0
@@ -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,139 @@ 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
+ * Send trace chunks through a [`TraceExporter`], consuming the chunks.
325
+ *
326
+ * This calls `TraceExporter::send_trace_chunks` which processes stats,
327
+ * serializes in the configured output format, and sends to the agent
328
+ * with retry logic.
329
+ *
330
+ * On success, if `response_out` is non-null, a heap-allocated
331
+ * [`ExporterResponse`] is written there. The caller owns it and must
332
+ * free it with `ddog_trace_exporter_response_free`.
333
+ *
334
+ * # Safety
335
+ *
336
+ * * `exporter` must be a valid `TraceExporter` pointer.
337
+ * * `chunks` is consumed and must not be used after this call.
338
+ * * If `response_out` is non-null it must point to valid writable memory for a
339
+ * `Box<ExporterResponse>`.
340
+ */
341
+ struct ddog_TraceExporterError *ddog_trace_exporter_send_trace_chunks(const ddog_TraceExporter *exporter,
342
+ ddog_TracerTraceChunks *chunks,
343
+ struct ddog_TraceExporterResponse **response_out);
344
+
212
345
  #ifdef __cplusplus
213
346
  } // extern "C"
214
347
  #endif // __cplusplus
@@ -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: 35.0.0
12
12
  Requires:
13
13
  Libs: -L${libdir} -ldatadog_profiling -Wl,-rpath,${libdir}
14
14
  Libs.private:
@@ -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>"
@@ -1624,6 +1624,8 @@ 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;
1627
1629
 
1628
1630
 
1629
1631
  /**
@@ -1669,9 +1671,12 @@ typedef struct ddog_TraceExporterResponse ddog_TraceExporterResponse;
1669
1671
  /**
1670
1672
  * A shared runtime that manages PausableWorkers and provides fork safety hooks.
1671
1673
  *
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.
1674
+ * The SharedRuntime owns a tokio runtime (on native) and tracks PausableWorkers
1675
+ * spawned on it. It provides methods to safely pause workers before forking and
1676
+ * restart them after fork in both parent and child processes.
1677
+ *
1678
+ * On wasm32, no tokio runtime is created. Workers are spawned via `spawn_local`
1679
+ * on the JS event loop.
1675
1680
  *
1676
1681
  * # Mutex lock order
1677
1682
  * When locking both [Self::runtime] and [Self::workers], the mutex must be locked in the order of
@@ -1730,6 +1735,26 @@ typedef struct ddog_TelemetryClientConfig {
1730
1735
  ddog_CharSlice parent_session_id;
1731
1736
  } ddog_TelemetryClientConfig;
1732
1737
 
1738
+ /**
1739
+ * FFI-safe bundle of scalar fields for creating a [`TracerSpan`].
1740
+ *
1741
+ * Passed by reference to [`ddog_tracer_span_new`] so that adding or
1742
+ * changing fields does not break the function signature.
1743
+ */
1744
+ typedef struct ddog_TracerSpanFields {
1745
+ ddog_CharSlice service;
1746
+ ddog_CharSlice name;
1747
+ ddog_CharSlice resource;
1748
+ ddog_CharSlice span_type;
1749
+ uint64_t trace_id_low;
1750
+ uint64_t trace_id_high;
1751
+ uint64_t span_id;
1752
+ uint64_t parent_id;
1753
+ int64_t start;
1754
+ int64_t duration;
1755
+ int32_t error;
1756
+ } ddog_TracerSpanFields;
1757
+
1733
1758
  typedef enum ddog_LibraryConfigSource {
1734
1759
  DDOG_LIBRARY_CONFIG_SOURCE_LOCAL_STABLE_CONFIG = 0,
1735
1760
  DDOG_LIBRARY_CONFIG_SOURCE_FLEET_STABLE_CONFIG = 1,
@@ -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,139 @@ 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
+ * Send trace chunks through a [`TraceExporter`], consuming the chunks.
325
+ *
326
+ * This calls `TraceExporter::send_trace_chunks` which processes stats,
327
+ * serializes in the configured output format, and sends to the agent
328
+ * with retry logic.
329
+ *
330
+ * On success, if `response_out` is non-null, a heap-allocated
331
+ * [`ExporterResponse`] is written there. The caller owns it and must
332
+ * free it with `ddog_trace_exporter_response_free`.
333
+ *
334
+ * # Safety
335
+ *
336
+ * * `exporter` must be a valid `TraceExporter` pointer.
337
+ * * `chunks` is consumed and must not be used after this call.
338
+ * * If `response_out` is non-null it must point to valid writable memory for a
339
+ * `Box<ExporterResponse>`.
340
+ */
341
+ struct ddog_TraceExporterError *ddog_trace_exporter_send_trace_chunks(const ddog_TraceExporter *exporter,
342
+ ddog_TracerTraceChunks *chunks,
343
+ struct ddog_TraceExporterResponse **response_out);
344
+
212
345
  #ifdef __cplusplus
213
346
  } // extern "C"
214
347
  #endif // __cplusplus
@@ -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: 35.0.0
12
12
  Requires:
13
13
  Libs: -L${libdir} -ldatadog_profiling -Wl,-rpath,${libdir}
14
14
  Libs.private: