libdatadog 37.0.0.1.0 → 39.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 (99) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libdatadog/version.rb +1 -1
  3. data/vendor/{libdatadog-37.0.0/aarch64-linux-musl → libdatadog-39.0.0/aarch64-linux}/LICENSE-3rdparty.csv +3 -1
  4. data/vendor/libdatadog-39.0.0/aarch64-linux/NOTICE +12 -0
  5. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux/bin/libdatadog-crashtracking-receiver +0 -0
  6. data/vendor/{libdatadog-37.0.0/x86_64-linux-musl → libdatadog-39.0.0/aarch64-linux}/include/datadog/common.h +167 -72
  7. data/vendor/{libdatadog-37.0.0/arm64-darwin → libdatadog-39.0.0/aarch64-linux}/include/datadog/data-pipeline.h +171 -30
  8. data/vendor/{libdatadog-37.0.0/aarch64-linux-musl → libdatadog-39.0.0/aarch64-linux}/include/datadog/profiling.h +19 -0
  9. data/vendor/{libdatadog-37.0.0/x86_64-linux-musl → libdatadog-39.0.0/aarch64-linux}/include/datadog/telemetry.h +37 -19
  10. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux/lib/libdatadog_profiling.so +0 -0
  11. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  12. data/vendor/{libdatadog-37.0.0/aarch64-linux → libdatadog-39.0.0/aarch64-linux-musl}/LICENSE-3rdparty.csv +3 -1
  13. data/vendor/libdatadog-39.0.0/aarch64-linux-musl/NOTICE +12 -0
  14. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  15. data/vendor/{libdatadog-37.0.0/arm64-darwin → libdatadog-39.0.0/aarch64-linux-musl}/include/datadog/common.h +167 -72
  16. data/vendor/{libdatadog-37.0.0/aarch64-linux → libdatadog-39.0.0/aarch64-linux-musl}/include/datadog/data-pipeline.h +171 -30
  17. data/vendor/{libdatadog-37.0.0/arm64-darwin → libdatadog-39.0.0/aarch64-linux-musl}/include/datadog/profiling.h +19 -0
  18. data/vendor/{libdatadog-37.0.0/arm64-darwin → libdatadog-39.0.0/aarch64-linux-musl}/include/datadog/telemetry.h +37 -19
  19. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/lib/libdatadog_profiling.so +0 -0
  20. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  21. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/arm64-darwin/LICENSE-3rdparty.csv +3 -1
  22. data/vendor/libdatadog-39.0.0/arm64-darwin/NOTICE +12 -0
  23. data/vendor/{libdatadog-37.0.0/aarch64-linux-musl → libdatadog-39.0.0/arm64-darwin}/include/datadog/common.h +167 -72
  24. data/vendor/{libdatadog-37.0.0/aarch64-linux-musl → libdatadog-39.0.0/arm64-darwin}/include/datadog/data-pipeline.h +171 -30
  25. data/vendor/{libdatadog-37.0.0/aarch64-linux → libdatadog-39.0.0/arm64-darwin}/include/datadog/profiling.h +19 -0
  26. data/vendor/{libdatadog-37.0.0/aarch64-linux-musl → libdatadog-39.0.0/arm64-darwin}/include/datadog/telemetry.h +37 -19
  27. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/arm64-darwin/lib/libdatadog_profiling.dylib +0 -0
  28. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/arm64-darwin/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  29. data/vendor/libdatadog-39.0.0/x86_64-linux/LICENSE-3rdparty.csv +554 -0
  30. data/vendor/libdatadog-39.0.0/x86_64-linux/NOTICE +12 -0
  31. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux/bin/libdatadog-crashtracking-receiver +0 -0
  32. data/vendor/libdatadog-39.0.0/x86_64-linux/include/datadog/common.h +3035 -0
  33. data/vendor/libdatadog-39.0.0/x86_64-linux/include/datadog/data-pipeline.h +566 -0
  34. data/vendor/libdatadog-39.0.0/x86_64-linux/include/datadog/profiling.h +1167 -0
  35. data/vendor/libdatadog-39.0.0/x86_64-linux/include/datadog/telemetry.h +325 -0
  36. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux/lib/libdatadog_profiling.so +0 -0
  37. data/vendor/libdatadog-39.0.0/x86_64-linux/lib/pkgconfig/datadog_profiling_with_rpath.pc +15 -0
  38. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/LICENSE-3rdparty.csv +3 -1
  39. data/vendor/libdatadog-39.0.0/x86_64-linux-musl/NOTICE +12 -0
  40. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  41. data/vendor/{libdatadog-37.0.0/aarch64-linux → libdatadog-39.0.0/x86_64-linux-musl}/include/datadog/common.h +167 -72
  42. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/data-pipeline.h +171 -30
  43. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/profiling.h +19 -0
  44. data/vendor/{libdatadog-37.0.0/aarch64-linux → libdatadog-39.0.0/x86_64-linux-musl}/include/datadog/telemetry.h +37 -19
  45. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/lib/libdatadog_profiling.so +0 -0
  46. data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  47. metadata +86 -86
  48. data/vendor/libdatadog-37.0.0/aarch64-linux/NOTICE +0 -4
  49. data/vendor/libdatadog-37.0.0/aarch64-linux-musl/NOTICE +0 -4
  50. data/vendor/libdatadog-37.0.0/arm64-darwin/NOTICE +0 -4
  51. data/vendor/libdatadog-37.0.0/x86_64-linux/LICENSE-3rdparty.csv +0 -552
  52. data/vendor/libdatadog-37.0.0/x86_64-linux/NOTICE +0 -4
  53. data/vendor/libdatadog-37.0.0/x86_64-linux/include/datadog/common.h +0 -2940
  54. data/vendor/libdatadog-37.0.0/x86_64-linux/include/datadog/data-pipeline.h +0 -425
  55. data/vendor/libdatadog-37.0.0/x86_64-linux/include/datadog/profiling.h +0 -1148
  56. data/vendor/libdatadog-37.0.0/x86_64-linux/include/datadog/telemetry.h +0 -307
  57. data/vendor/libdatadog-37.0.0/x86_64-linux/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -15
  58. data/vendor/libdatadog-37.0.0/x86_64-linux-musl/NOTICE +0 -4
  59. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux/LICENSE +0 -0
  60. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux/include/datadog/blazesym.h +0 -0
  61. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux/include/datadog/crashtracker.h +0 -0
  62. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux/include/datadog/ddsketch.h +0 -0
  63. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux/include/datadog/ffe.h +0 -0
  64. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux/include/datadog/library-config.h +0 -0
  65. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux/include/datadog/log.h +0 -0
  66. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux/include/datadog/shared-runtime.h +0 -0
  67. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/LICENSE +0 -0
  68. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/include/datadog/blazesym.h +0 -0
  69. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/include/datadog/crashtracker.h +0 -0
  70. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/include/datadog/ddsketch.h +0 -0
  71. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/include/datadog/ffe.h +0 -0
  72. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/include/datadog/library-config.h +0 -0
  73. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/include/datadog/log.h +0 -0
  74. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/include/datadog/shared-runtime.h +0 -0
  75. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/arm64-darwin/LICENSE +0 -0
  76. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/arm64-darwin/bin/libdatadog-crashtracking-receiver +0 -0
  77. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/arm64-darwin/include/datadog/blazesym.h +0 -0
  78. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/arm64-darwin/include/datadog/crashtracker.h +0 -0
  79. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/arm64-darwin/include/datadog/ddsketch.h +0 -0
  80. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/arm64-darwin/include/datadog/ffe.h +0 -0
  81. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/arm64-darwin/include/datadog/library-config.h +0 -0
  82. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/arm64-darwin/include/datadog/log.h +0 -0
  83. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/arm64-darwin/include/datadog/shared-runtime.h +0 -0
  84. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux/LICENSE +0 -0
  85. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux/include/datadog/blazesym.h +0 -0
  86. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux/include/datadog/crashtracker.h +0 -0
  87. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux/include/datadog/ddsketch.h +0 -0
  88. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux/include/datadog/ffe.h +0 -0
  89. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux/include/datadog/library-config.h +0 -0
  90. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux/include/datadog/log.h +0 -0
  91. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux/include/datadog/shared-runtime.h +0 -0
  92. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/LICENSE +0 -0
  93. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/blazesym.h +0 -0
  94. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/crashtracker.h +0 -0
  95. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/ddsketch.h +0 -0
  96. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/ffe.h +0 -0
  97. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/library-config.h +0 -0
  98. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/log.h +0 -0
  99. /data/vendor/{libdatadog-37.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/shared-runtime.h +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d2caf139a67b432139f30d9d681b3424eb67869848eec2ea844775a67b0b5cf
4
- data.tar.gz: b7d172117d328f5dab3be10fdcae6c42dbe8029899a8229318360fa158bff45a
3
+ metadata.gz: 114157501f296f5eb2152369ebe115b1a012dc530da5317b026ea859d3c649bc
4
+ data.tar.gz: f0faabc0acd20de92b2e86c95eaab93765ec9af0d56fb30a7ebfa513aa70a56e
5
5
  SHA512:
6
- metadata.gz: 16371759dc1728b47790494fb7c9ae5ac9270f916e58eb31560c9adef9bd30f6524db35776603e97405d691361a387f0eca0af3e82cbbeabc0f4f0920d5680c1
7
- data.tar.gz: a28575cef31af7fbe63b6ef832f770ef3ff8fe8afb4fc97dae1da95842ceafcb74c6e72c3740c09e12065910236576289667dfd8ffa35627019cade41bacba94
6
+ metadata.gz: 1a71140391443f4325242a4198b4e2b14037f919709ded517642c22b39d6126d3e5da3bed9ab63d3299b1a715418a60e575a9cdb860521fbe7b970cabbe1fc61
7
+ data.tar.gz: bf748dd1cae615c0d284cf465cb9529c857add3c2ed8aa61d5ce9bca6d6995efe48b95280c23517684a9839a03d86f0c05c34bc77967d051f243e588bc4bfc77
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Libdatadog
4
4
  # Current libdatadog version
5
- LIB_VERSION = "37.0.0"
5
+ LIB_VERSION = "39.0.0"
6
6
 
7
7
  GEM_MAJOR_VERSION = "1"
8
8
  GEM_MINOR_VERSION = "0"
@@ -220,7 +220,7 @@ js-sys,https://github.com/rustwasm/wasm-bindgen/tree/master/crates/js-sys,MIT OR
220
220
  kernel32-sys,https://github.com/retep998/winapi-rs,MIT,Peter Atashian <retep998@gmail.com>
221
221
  kv-log-macro,https://github.com/yoshuawuyts/kv-log-macro,MIT OR Apache-2.0,Yoshua Wuyts <yoshuawuyts@gmail.com>
222
222
  lazy_static,https://github.com/rust-lang-nursery/lazy-static.rs,MIT OR Apache-2.0,Marvin Löbel <loebel.marvin@gmail.com>
223
- libc,https://github.com/rust-lang/libc,MIT OR Apache-2.0,The Rust Project Developers
223
+ libc,https://github.com/rust-lang/libc,MIT OR Apache-2.0,The libc Authors
224
224
  libdd-libunwind-sys,https://github.com/DataDog/libdatadog/tree/main/libdd-libunwind-sys,Apache-2.0,The libdd-libunwind-sys Authors
225
225
  libloading,https://github.com/nagisa/rust_libloading,ISC,Simonas Kazlauskas <libloading@kazlauskas.me>
226
226
  libredox,https://gitlab.redox-os.org/redox-os/libredox,MIT,4lDO2 <4lDO2@protonmail.com>
@@ -375,6 +375,7 @@ semver,https://github.com/dtolnay/semver,MIT OR Apache-2.0,David Tolnay <dtolnay
375
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>"
376
376
  serde,https://github.com/serde-rs/serde,MIT OR Apache-2.0,"Erick Tryzelaar <erick.tryzelaar@gmail.com>, David Tolnay <dtolnay@gmail.com>"
377
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>
378
379
  serde_bytes,https://github.com/serde-rs/bytes,MIT OR Apache-2.0,David Tolnay <dtolnay@gmail.com>
379
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>"
380
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>"
@@ -497,6 +498,7 @@ wasm-bindgen-macro,https://github.com/rustwasm/wasm-bindgen/tree/master/crates/m
497
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
498
499
  wasm-bindgen-shared,https://github.com/rustwasm/wasm-bindgen/tree/master/crates/shared,MIT OR Apache-2.0,The wasm-bindgen Developers
499
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
500
502
  webpki-root-certs,https://github.com/rustls/webpki-roots,CDLA-Permissive-2.0,The webpki-root-certs Authors
501
503
  webpki-roots,https://github.com/rustls/webpki-roots,CDLA-Permissive-2.0,The webpki-roots Authors
502
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,
@@ -1625,10 +1609,19 @@ typedef struct ddog_ContextKey {
1625
1609
 
1626
1610
  typedef struct ddog_TraceExporter ddog_TraceExporter;
1627
1611
  typedef struct ddog_TracerSpan ddog_TracerSpan;
1612
+ typedef struct ddog_TracerSpanEvent ddog_TracerSpanEvent;
1628
1613
  typedef struct ddog_TracerTraceChunks ddog_TracerTraceChunks;
1629
1614
  typedef struct ddog_TraceExporterCancelToken ddog_TraceExporterCancelToken;
1630
1615
 
1631
1616
 
1617
+ #define ddog_CollapsedFieldSet_RESOURCE_NAME (1 << 0)
1618
+
1619
+ #define ddog_CollapsedFieldSet_HTTP_ENDPOINT (1 << 1)
1620
+
1621
+ #define ddog_CollapsedFieldSet_PEER_TAGS (1 << 2)
1622
+
1623
+ #define ddog_CollapsedFieldSet_ADDITIONAL_TAGS (1 << 3)
1624
+
1632
1625
  /**
1633
1626
  * Represent error codes that `Error` struct can hold
1634
1627
  */
@@ -1729,6 +1722,32 @@ typedef struct ddog_TelemetryClientConfig {
1729
1722
  ddog_CharSlice parent_session_id;
1730
1723
  } ddog_TelemetryClientConfig;
1731
1724
 
1725
+ /**
1726
+ * Config to override the default stats cardinality limit values
1727
+ */
1728
+ typedef struct ddog_CardinalityLimitConfig {
1729
+ /**
1730
+ * The whole-key cardinality limit (defaults to 7000)
1731
+ */
1732
+ uintptr_t whole_key_limit;
1733
+ /**
1734
+ * The per-field cardinality limit for the Resource field (defaults to 1024)
1735
+ */
1736
+ uintptr_t resource_limit;
1737
+ /**
1738
+ * The per-field cardinality limit for the HttpEndpoint field (defaults to 512)
1739
+ */
1740
+ uintptr_t http_endpoint_limit;
1741
+ /**
1742
+ * The per-field cardinality limit for the PeerTags field (defaults to 512)
1743
+ */
1744
+ uintptr_t peer_tags_limit;
1745
+ /**
1746
+ * The per-field cardinality limit for the AdditionalTags field (defaults to 100)
1747
+ */
1748
+ uintptr_t additional_tags_limit;
1749
+ } ddog_CardinalityLimitConfig;
1750
+
1732
1751
  /**
1733
1752
  * FFI-safe bundle of scalar fields for creating a [`TracerSpan`].
1734
1753
  *
@@ -1749,6 +1768,96 @@ typedef struct ddog_TracerSpanFields {
1749
1768
  int32_t error;
1750
1769
  } ddog_TracerSpanFields;
1751
1770
 
1771
+ /**
1772
+ * A string attribute belonging to a [`TracerSpanLink`].
1773
+ */
1774
+ typedef struct ddog_TracerSpanLinkAttribute {
1775
+ ddog_CharSlice key;
1776
+ ddog_CharSlice value;
1777
+ } ddog_TracerSpanLinkAttribute;
1778
+
1779
+ typedef struct ddog_Slice_TracerSpanLinkAttribute {
1780
+ /**
1781
+ * Should be non-null and suitably aligned for the underlying type. It is
1782
+ * allowed but not recommended for the pointer to be null when the len is
1783
+ * zero.
1784
+ */
1785
+ const struct ddog_TracerSpanLinkAttribute *ptr;
1786
+ /**
1787
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1788
+ * than or equal to [isize::MAX].
1789
+ */
1790
+ uintptr_t len;
1791
+ } ddog_Slice_TracerSpanLinkAttribute;
1792
+
1793
+ /**
1794
+ * FFI-safe representation of one complete span link.
1795
+ */
1796
+ typedef struct ddog_TracerSpanLink {
1797
+ uint64_t trace_id_low;
1798
+ uint64_t trace_id_high;
1799
+ uint64_t span_id;
1800
+ struct ddog_Slice_TracerSpanLinkAttribute attributes;
1801
+ ddog_CharSlice tracestate;
1802
+ uint32_t flags;
1803
+ } ddog_TracerSpanLink;
1804
+
1805
+ typedef struct ddog_Slice_TracerSpanLink {
1806
+ /**
1807
+ * Should be non-null and suitably aligned for the underlying type. It is
1808
+ * allowed but not recommended for the pointer to be null when the len is
1809
+ * zero.
1810
+ */
1811
+ const struct ddog_TracerSpanLink *ptr;
1812
+ /**
1813
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1814
+ * than or equal to [isize::MAX].
1815
+ */
1816
+ uintptr_t len;
1817
+ } ddog_Slice_TracerSpanLink;
1818
+
1819
+ typedef struct ddog_Slice_CharSlice {
1820
+ /**
1821
+ * Should be non-null and suitably aligned for the underlying type. It is
1822
+ * allowed but not recommended for the pointer to be null when the len is
1823
+ * zero.
1824
+ */
1825
+ const ddog_CharSlice *ptr;
1826
+ /**
1827
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1828
+ * than or equal to [isize::MAX].
1829
+ */
1830
+ uintptr_t len;
1831
+ } ddog_Slice_CharSlice;
1832
+
1833
+ typedef struct ddog_Slice_Bool {
1834
+ /**
1835
+ * Should be non-null and suitably aligned for the underlying type. It is
1836
+ * allowed but not recommended for the pointer to be null when the len is
1837
+ * zero.
1838
+ */
1839
+ const bool *ptr;
1840
+ /**
1841
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1842
+ * than or equal to [isize::MAX].
1843
+ */
1844
+ uintptr_t len;
1845
+ } ddog_Slice_Bool;
1846
+
1847
+ typedef struct ddog_Slice_F64 {
1848
+ /**
1849
+ * Should be non-null and suitably aligned for the underlying type. It is
1850
+ * allowed but not recommended for the pointer to be null when the len is
1851
+ * zero.
1852
+ */
1853
+ const double *ptr;
1854
+ /**
1855
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1856
+ * than or equal to [isize::MAX].
1857
+ */
1858
+ uintptr_t len;
1859
+ } ddog_Slice_F64;
1860
+
1752
1861
  typedef enum ddog_LibraryConfigSource {
1753
1862
  DDOG_LIBRARY_CONFIG_SOURCE_LOCAL_STABLE_CONFIG = 0,
1754
1863
  DDOG_LIBRARY_CONFIG_SOURCE_FLEET_STABLE_CONFIG = 1,
@@ -1791,20 +1900,6 @@ typedef struct ddog_CStr {
1791
1900
  uintptr_t length;
1792
1901
  } ddog_CStr;
1793
1902
 
1794
- typedef struct ddog_Slice_CharSlice {
1795
- /**
1796
- * Should be non-null and suitably aligned for the underlying type. It is
1797
- * allowed but not recommended for the pointer to be null when the len is
1798
- * zero.
1799
- */
1800
- const ddog_CharSlice *ptr;
1801
- /**
1802
- * The number of elements (not bytes) that `.ptr` points to. Must be less
1803
- * than or equal to [isize::MAX].
1804
- */
1805
- uintptr_t len;
1806
- } ddog_Slice_CharSlice;
1807
-
1808
1903
  typedef struct ddog_ProcessInfo {
1809
1904
  struct ddog_Slice_CharSlice args;
1810
1905
  struct ddog_Slice_CharSlice envp;
@@ -183,6 +183,35 @@ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_otlp_endpoint(str
183
183
  struct ddog_TraceExporterError *ddog_trace_exporter_config_set_otlp_protocol(struct ddog_TraceExporterConfig *config,
184
184
  ddog_CharSlice protocol);
185
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
+ struct ddog_CardinalityLimitConfig limits);
209
+
210
+ /**
211
+ * Returns a `CardinalityLimitConfig` with default values
212
+ */
213
+ struct ddog_CardinalityLimitConfig ddog_trace_exporter_config_default_stats_cardinality_limit(void);
214
+
186
215
  /**
187
216
  * Configure the exporter to write traces as newline-delimited JSON to stdout (the Datadog
188
217
  * Forwarder "log exporter" path) instead of sending them to a Datadog agent. Used in serverless
@@ -246,9 +275,12 @@ struct ddog_TraceExporterError *ddog_trace_exporter_send(const ddog_TraceExporte
246
275
  /**
247
276
  * Create a new span with all scalar fields set.
248
277
  *
249
- * String fields are copied from the provided slices. The `meta` and
250
- * `metrics` maps start empty; use [`ddog_tracer_span_set_meta`] and
251
- * [`ddog_tracer_span_set_metric`] to populate them.
278
+ * String fields are copied from the provided slices. The `meta`, `metrics` and `meta_struct`
279
+ * maps start empty; use [`ddog_tracer_span_set_meta`], [`ddog_tracer_span_set_metric`] and
280
+ * [`ddog_tracer_span_set_meta_struct_blob`] to populate them.
281
+ *
282
+ * Returns an error if `fields` is null, if any string field is not valid UTF-8, or if any of
283
+ * its slices is malformed.
252
284
  *
253
285
  * # Safety
254
286
  *
@@ -276,10 +308,13 @@ void ddog_tracer_span_free(ddog_TracerSpan *handle);
276
308
  *
277
309
  * Both `key` and `value` are copied into the span.
278
310
  *
311
+ * Returns an error if `handle` is null, if `key` or `value` is not valid UTF-8, or if either
312
+ * slice is malformed.
313
+ *
279
314
  * # Safety
280
315
  *
281
- * `handle` must be a valid pointer to a `TracerSpan`.
282
- * `key` and `value` must point to valid UTF-8 memory.
316
+ * `handle` must be a valid pointer to a `TracerSpan`. `key` and `value` must point to valid
317
+ * memory for their stated lengths.
283
318
  */
284
319
  struct ddog_TraceExporterError *ddog_tracer_span_set_meta(ddog_TracerSpan *handle,
285
320
  ddog_CharSlice key,
@@ -290,15 +325,132 @@ struct ddog_TraceExporterError *ddog_tracer_span_set_meta(ddog_TracerSpan *handl
290
325
  *
291
326
  * The `key` is copied into the span.
292
327
  *
328
+ * Returns an error if `handle` is null, if `key` is not valid UTF-8, or if the slice is
329
+ * malformed.
330
+ *
293
331
  * # Safety
294
332
  *
295
- * `handle` must be a valid pointer to a `TracerSpan`.
296
- * `key` must point to valid UTF-8 memory.
333
+ * `handle` must be a valid pointer to a `TracerSpan`. `key` must point to valid memory for its
334
+ * stated length.
297
335
  */
298
336
  struct ddog_TraceExporterError *ddog_tracer_span_set_metric(ddog_TracerSpan *handle,
299
337
  ddog_CharSlice key,
300
338
  double value);
301
339
 
340
+ /**
341
+ * Add or overwrite a structured metadata entry (`meta_struct`) on the span.
342
+ *
343
+ * The `key` and opaque binary `value` are copied into the span. The value is
344
+ * not interpreted or validated as MessagePack.
345
+ *
346
+ * Returns an error if `handle` is null, if `key` is not valid UTF-8, or if either slice is
347
+ * malformed.
348
+ *
349
+ * # Safety
350
+ *
351
+ * `handle` must be a valid pointer to a `TracerSpan`. `key` and `value` must point to valid
352
+ * memory for their stated lengths.
353
+ */
354
+ struct ddog_TraceExporterError *ddog_tracer_span_set_meta_struct_blob(ddog_TracerSpan *handle,
355
+ ddog_CharSlice key,
356
+ ddog_ByteSlice value);
357
+
358
+ /**
359
+ * Replace all span links in one atomic operation.
360
+ *
361
+ * The links, attributes, and strings are copied before this function returns.
362
+ * If any slice or string is invalid, the span's existing links are unchanged.
363
+ * Link order is preserved.
364
+ *
365
+ * # Safety
366
+ *
367
+ * `handle` must be a valid pointer to a `TracerSpan`. All slices must point to
368
+ * valid memory for their stated lengths.
369
+ */
370
+ struct ddog_TraceExporterError *ddog_tracer_span_set_links(ddog_TracerSpan *handle,
371
+ struct ddog_Slice_TracerSpanLink links);
372
+
373
+ /**
374
+ * Create an owned span event.
375
+ *
376
+ * The name is copied before this function returns. The event remains detached
377
+ * until consumed by [`ddog_tracer_span_add_event`].
378
+ */
379
+ struct ddog_TraceExporterError *ddog_tracer_span_event_new(ddog_TracerSpanEvent **out_handle,
380
+ ddog_CharSlice name,
381
+ uint64_t time_unix_nano);
382
+
383
+ /**
384
+ * Free a detached span event.
385
+ */
386
+ void ddog_tracer_span_event_free(ddog_TracerSpanEvent *handle);
387
+
388
+ /**
389
+ * Add or overwrite a string event attribute. The key and value are copied.
390
+ */
391
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_string(ddog_TracerSpanEvent *event,
392
+ ddog_CharSlice key,
393
+ ddog_CharSlice value);
394
+
395
+ /**
396
+ * Add or overwrite a boolean event attribute.
397
+ */
398
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_bool(ddog_TracerSpanEvent *event,
399
+ ddog_CharSlice key,
400
+ bool value);
401
+
402
+ /**
403
+ * Add or overwrite a signed integer event attribute.
404
+ */
405
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_int(ddog_TracerSpanEvent *event,
406
+ ddog_CharSlice key,
407
+ int64_t value);
408
+
409
+ /**
410
+ * Add or overwrite a double event attribute.
411
+ */
412
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_double(ddog_TracerSpanEvent *event,
413
+ ddog_CharSlice key,
414
+ double value);
415
+
416
+ /**
417
+ * Add or overwrite a homogeneous string array event attribute.
418
+ */
419
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_string_array(ddog_TracerSpanEvent *event,
420
+ ddog_CharSlice key,
421
+ struct ddog_Slice_CharSlice values);
422
+
423
+ /**
424
+ * Add or overwrite a homogeneous boolean array event attribute.
425
+ */
426
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_bool_array(ddog_TracerSpanEvent *event,
427
+ ddog_CharSlice key,
428
+ struct ddog_Slice_Bool values);
429
+
430
+ /**
431
+ * Add or overwrite a homogeneous signed integer array event attribute.
432
+ */
433
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_int_array(ddog_TracerSpanEvent *event,
434
+ ddog_CharSlice key,
435
+ struct ddog_Slice_I64 values);
436
+
437
+ /**
438
+ * Add or overwrite a homogeneous double array event attribute.
439
+ */
440
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_double_array(ddog_TracerSpanEvent *event,
441
+ ddog_CharSlice key,
442
+ struct ddog_Slice_F64 values);
443
+
444
+ /**
445
+ * Atomically attach a completed event to a span, consuming the event.
446
+ *
447
+ * A non-null `event` is always consumed — moved into the span on success, or
448
+ * dropped on any error (a null `span`, or an internal panic). Callers must not
449
+ * use or free the event after this call. On error the span is unchanged.
450
+ */
451
+ struct ddog_TraceExporterError *ddog_tracer_span_add_event(ddog_TracerSpan *span,
452
+ ddog_TracerSpanEvent *event);
453
+
302
454
  /**
303
455
  * Create a new empty trace chunks container.
304
456
  *
@@ -365,17 +517,14 @@ ddog_TraceExporterCancelToken *ddog_trace_exporter_cancel_token_new(void);
365
517
  /**
366
518
  * Cancel a cancellation token.
367
519
  *
368
- * All clones of the same token observe the cancellation. If a
369
- * [`ddog_trace_exporter_send_trace_chunks`] call is using this token at the
370
- * time of cancellation, that send stops waiting for the agent at its next
371
- * await point and returns an error; the trace chunks it was sending may be
372
- * lost.
520
+ * All clones of the same token observe the cancellation. Cancellation is cooperative and only
521
+ * affects a [`ddog_trace_exporter_send_trace_chunks`] call that is in flight: that send stops
522
+ * waiting for the agent at its next await point and fails with
523
+ * [`ExporterErrorCode::IoError`], and the chunks it was sending may be lost.
373
524
  *
374
- * Cancellation only affects a send that is in progress. If no send is using
375
- * the token, cancelling it has no immediate effect: a send started afterwards
376
- * with an already-cancelled token returns an error without contacting the
377
- * agent, and a token cancelled after its send has already finished does
378
- * nothing.
525
+ * Cancelling while no send is using the token has no immediate effect. A send started later with
526
+ * an already-cancelled token fails the same way without contacting the agent, and cancelling
527
+ * after a send has finished does nothing.
379
528
  */
380
529
  void ddog_trace_exporter_cancel_token_cancel(const ddog_TraceExporterCancelToken *token);
381
530
 
@@ -389,19 +538,11 @@ void ddog_trace_exporter_cancel_token_drop(ddog_TraceExporterCancelToken *token)
389
538
  /**
390
539
  * Send trace chunks through a [`TraceExporter`], consuming the chunks.
391
540
  *
392
- * This calls `TraceExporter::send_trace_chunks` which processes stats,
393
- * serializes in the configured output format, and sends to the agent
394
- * with retry logic.
395
- *
396
- * When `cancel` is non-null, cancelling that token (via
397
- * [`ddog_trace_exporter_cancel_token_cancel`]) while the send is in progress
398
- * aborts the in-flight request and returns an error with code
399
- * [`ExporterErrorCode::IoError`]. Cancellation is cooperative: it only takes
400
- * effect while a request is actually in flight. A token that is already
401
- * cancelled when the send starts makes this function return that error
402
- * immediately, and cancelling after the send has finished has no effect.
403
- * Cancelling an in-flight send may cause the trace chunks being sent to be
404
- * lost.
541
+ * Computes stats, serializes in the configured output format, and sends to the agent with
542
+ * retries.
543
+ *
544
+ * When `cancel` is non-null, cancelling that token aborts the in-flight request; see
545
+ * [`ddog_trace_exporter_cancel_token_cancel`].
405
546
  *
406
547
  * On success, if `response_out` is non-null, a heap-allocated
407
548
  * [`ExporterResponse`] is written there. The caller owns it and must