libdatadog 37.0.0.1.0 → 38.0.0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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-38.0.0/aarch64-linux}/LICENSE-3rdparty.csv +2 -0
  4. data/vendor/libdatadog-38.0.0/aarch64-linux/NOTICE +12 -0
  5. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux/bin/libdatadog-crashtracking-receiver +0 -0
  6. data/vendor/{libdatadog-37.0.0/x86_64-linux-musl → libdatadog-38.0.0/aarch64-linux}/include/datadog/common.h +42 -58
  7. data/vendor/{libdatadog-37.0.0/aarch64-linux-musl → libdatadog-38.0.0/aarch64-linux}/include/datadog/data-pipeline.h +24 -0
  8. data/vendor/{libdatadog-37.0.0/aarch64-linux-musl → libdatadog-38.0.0/aarch64-linux}/include/datadog/profiling.h +19 -0
  9. data/vendor/{libdatadog-37.0.0/x86_64-linux-musl → libdatadog-38.0.0/aarch64-linux}/include/datadog/telemetry.h +37 -19
  10. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux/lib/libdatadog_profiling.so +0 -0
  11. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  12. data/vendor/{libdatadog-37.0.0/aarch64-linux → libdatadog-38.0.0/aarch64-linux-musl}/LICENSE-3rdparty.csv +2 -0
  13. data/vendor/libdatadog-38.0.0/aarch64-linux-musl/NOTICE +12 -0
  14. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  15. data/vendor/{libdatadog-37.0.0/arm64-darwin → libdatadog-38.0.0/aarch64-linux-musl}/include/datadog/common.h +42 -58
  16. data/vendor/{libdatadog-37.0.0/aarch64-linux → libdatadog-38.0.0/aarch64-linux-musl}/include/datadog/data-pipeline.h +24 -0
  17. data/vendor/{libdatadog-37.0.0/arm64-darwin → libdatadog-38.0.0/aarch64-linux-musl}/include/datadog/profiling.h +19 -0
  18. data/vendor/{libdatadog-37.0.0/arm64-darwin → libdatadog-38.0.0/aarch64-linux-musl}/include/datadog/telemetry.h +37 -19
  19. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/lib/libdatadog_profiling.so +0 -0
  20. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  21. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/arm64-darwin/LICENSE-3rdparty.csv +2 -0
  22. data/vendor/libdatadog-38.0.0/arm64-darwin/NOTICE +12 -0
  23. data/vendor/{libdatadog-37.0.0/aarch64-linux-musl → libdatadog-38.0.0/arm64-darwin}/include/datadog/common.h +42 -58
  24. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/arm64-darwin/include/datadog/data-pipeline.h +24 -0
  25. data/vendor/{libdatadog-37.0.0/aarch64-linux → libdatadog-38.0.0/arm64-darwin}/include/datadog/profiling.h +19 -0
  26. data/vendor/{libdatadog-37.0.0/aarch64-linux-musl → libdatadog-38.0.0/arm64-darwin}/include/datadog/telemetry.h +37 -19
  27. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/arm64-darwin/lib/libdatadog_profiling.dylib +0 -0
  28. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/arm64-darwin/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  29. data/vendor/libdatadog-38.0.0/x86_64-linux/LICENSE-3rdparty.csv +554 -0
  30. data/vendor/libdatadog-38.0.0/x86_64-linux/NOTICE +12 -0
  31. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux/bin/libdatadog-crashtracking-receiver +0 -0
  32. data/vendor/libdatadog-38.0.0/x86_64-linux/include/datadog/common.h +2924 -0
  33. data/vendor/libdatadog-38.0.0/x86_64-linux/include/datadog/data-pipeline.h +449 -0
  34. data/vendor/libdatadog-38.0.0/x86_64-linux/include/datadog/profiling.h +1167 -0
  35. data/vendor/libdatadog-38.0.0/x86_64-linux/include/datadog/telemetry.h +325 -0
  36. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux/lib/libdatadog_profiling.so +0 -0
  37. data/vendor/libdatadog-38.0.0/x86_64-linux/lib/pkgconfig/datadog_profiling_with_rpath.pc +15 -0
  38. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/LICENSE-3rdparty.csv +2 -0
  39. data/vendor/libdatadog-38.0.0/x86_64-linux-musl/NOTICE +12 -0
  40. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  41. data/vendor/{libdatadog-37.0.0/aarch64-linux → libdatadog-38.0.0/x86_64-linux-musl}/include/datadog/common.h +42 -58
  42. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/include/datadog/data-pipeline.h +24 -0
  43. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/include/datadog/profiling.h +19 -0
  44. data/vendor/{libdatadog-37.0.0/aarch64-linux → libdatadog-38.0.0/x86_64-linux-musl}/include/datadog/telemetry.h +37 -19
  45. data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/lib/libdatadog_profiling.so +0 -0
  46. data/vendor/{libdatadog-37.0.0 → libdatadog-38.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-38.0.0}/aarch64-linux/LICENSE +0 -0
  60. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux/include/datadog/blazesym.h +0 -0
  61. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux/include/datadog/crashtracker.h +0 -0
  62. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux/include/datadog/ddsketch.h +0 -0
  63. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux/include/datadog/ffe.h +0 -0
  64. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux/include/datadog/library-config.h +0 -0
  65. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux/include/datadog/log.h +0 -0
  66. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux/include/datadog/shared-runtime.h +0 -0
  67. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/LICENSE +0 -0
  68. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/include/datadog/blazesym.h +0 -0
  69. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/include/datadog/crashtracker.h +0 -0
  70. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/include/datadog/ddsketch.h +0 -0
  71. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/include/datadog/ffe.h +0 -0
  72. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/include/datadog/library-config.h +0 -0
  73. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/include/datadog/log.h +0 -0
  74. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/aarch64-linux-musl/include/datadog/shared-runtime.h +0 -0
  75. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/arm64-darwin/LICENSE +0 -0
  76. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/arm64-darwin/bin/libdatadog-crashtracking-receiver +0 -0
  77. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/arm64-darwin/include/datadog/blazesym.h +0 -0
  78. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/arm64-darwin/include/datadog/crashtracker.h +0 -0
  79. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/arm64-darwin/include/datadog/ddsketch.h +0 -0
  80. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/arm64-darwin/include/datadog/ffe.h +0 -0
  81. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/arm64-darwin/include/datadog/library-config.h +0 -0
  82. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/arm64-darwin/include/datadog/log.h +0 -0
  83. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/arm64-darwin/include/datadog/shared-runtime.h +0 -0
  84. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux/LICENSE +0 -0
  85. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux/include/datadog/blazesym.h +0 -0
  86. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux/include/datadog/crashtracker.h +0 -0
  87. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux/include/datadog/ddsketch.h +0 -0
  88. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux/include/datadog/ffe.h +0 -0
  89. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux/include/datadog/library-config.h +0 -0
  90. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux/include/datadog/log.h +0 -0
  91. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux/include/datadog/shared-runtime.h +0 -0
  92. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/LICENSE +0 -0
  93. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/include/datadog/blazesym.h +0 -0
  94. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/include/datadog/crashtracker.h +0 -0
  95. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/include/datadog/ddsketch.h +0 -0
  96. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/include/datadog/ffe.h +0 -0
  97. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/include/datadog/library-config.h +0 -0
  98. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.0.0}/x86_64-linux-musl/include/datadog/log.h +0 -0
  99. /data/vendor/{libdatadog-37.0.0 → libdatadog-38.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: acf5bfce73d30f51bff48c4c624ef033bc1907a8ed14cd10ccf74da199a1b34e
4
+ data.tar.gz: 1ce9406014b9cea0d221ac36008dcb6b02d1884a2d55249a1fb843be240c6087
5
5
  SHA512:
6
- metadata.gz: 16371759dc1728b47790494fb7c9ae5ac9270f916e58eb31560c9adef9bd30f6524db35776603e97405d691361a387f0eca0af3e82cbbeabc0f4f0920d5680c1
7
- data.tar.gz: a28575cef31af7fbe63b6ef832f770ef3ff8fe8afb4fc97dae1da95842ceafcb74c6e72c3740c09e12065910236576289667dfd8ffa35627019cade41bacba94
6
+ metadata.gz: 3df08279edf1e21b9db5856c3ca90a6cf4488a9963f242c3bdb03a3320f16b965acc534e9b4dd2f7c74223b2e13afc940c40f87b090bc44afd90c669c5040f24
7
+ data.tar.gz: a02d9031f0490f31c2de9c4b07f0dabd8c1d4e274364487f719b073acbdc6aa9daddde42dd1df537f395f4983c89d0c58ca18f270249ebdbbc8c98a88ab8c2f5
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Libdatadog
4
4
  # Current libdatadog version
5
- LIB_VERSION = "37.0.0"
5
+ LIB_VERSION = "38.0.0"
6
6
 
7
7
  GEM_MAJOR_VERSION = "1"
8
8
  GEM_MINOR_VERSION = "0"
@@ -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,
@@ -183,6 +183,30 @@ 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
+ uintptr_t limit);
209
+
186
210
  /**
187
211
  * Configure the exporter to write traces as newline-delimited JSON to stdout (the Datadog
188
212
  * Forwarder "log exporter" path) instead of sending them to a Datadog agent. Used in serverless
@@ -406,6 +406,25 @@ struct ddog_prof_Profile_NewResult ddog_prof_Profile_with_string_storage(struct
406
406
  const struct ddog_prof_Period *period,
407
407
  struct ddog_prof_ManagedStringStorage string_storage);
408
408
 
409
+ /**
410
+ * Configure one of the custom sample type slots (`Custom1` through `Custom5`)
411
+ * with its concrete `(type, unit)` string pair.
412
+ *
413
+ * Use this after creating a profile with a custom slot in its `sample_types`
414
+ * or `period`. The strings are copied during this call. A profile that uses a
415
+ * custom slot must configure it before serialization.
416
+ *
417
+ * # Safety
418
+ * The `profile` ptr must point to a valid Profile object created by this
419
+ * module. The `type_str` and `unit` slices must point to valid UTF-8 memory for
420
+ * the duration of this call.
421
+ */
422
+ DDOG_CHECK_RETURN
423
+ struct ddog_prof_Profile_Result ddog_prof_Profile_set_custom_sample_type(struct ddog_prof_Profile *profile,
424
+ enum ddog_prof_SampleType slot,
425
+ ddog_CharSlice type_str,
426
+ ddog_CharSlice unit);
427
+
409
428
  /**
410
429
  * # Safety
411
430
  * The `profile` can be null, but if non-null it must point to a Profile
@@ -52,7 +52,7 @@ ddog_MaybeError ddog_telemetry_builder_with_config(struct ddog_TelemetryWorkerBu
52
52
  * * handle should be a non null pointer to a null pointer
53
53
  */
54
54
  ddog_MaybeError ddog_telemetry_builder_run(struct ddog_TelemetryWorkerBuilder *builder,
55
- struct ddog_TelemetryWorkerHandle **out_handle);
55
+ ddog_TelemetryWorkerHandle **out_handle);
56
56
 
57
57
  /**
58
58
  * Builds the telemetry worker and return a handle to it. The worker will only process and send
@@ -63,13 +63,23 @@ ddog_MaybeError ddog_telemetry_builder_run(struct ddog_TelemetryWorkerBuilder *b
63
63
  * * handle should be a non null pointer to a null pointer
64
64
  */
65
65
  ddog_MaybeError ddog_telemetry_builder_run_metric_logs(struct ddog_TelemetryWorkerBuilder *builder,
66
- struct ddog_TelemetryWorkerHandle **out_handle);
66
+ ddog_TelemetryWorkerHandle **out_handle);
67
67
 
68
+ /**
69
+ * Sets the telemetry endpoint from its component parts.
70
+ *
71
+ * * `api_key` / `test_token`: ignored when empty.
72
+ * * `timeout_ms`: pass 0 to keep the existing/default timeout.
73
+ */
68
74
  ddog_MaybeError ddog_telemetry_builder_with_endpoint_config_endpoint(struct ddog_TelemetryWorkerBuilder *telemetry_builder,
69
- const struct ddog_Endpoint *endpoint);
75
+ ddog_CharSlice url,
76
+ ddog_CharSlice api_key,
77
+ uint64_t timeout_ms,
78
+ ddog_CharSlice test_token,
79
+ bool use_system_resolver);
70
80
 
71
81
  /**
72
- * Sets a property from it's string value.
82
+ * Sets the endpoint property from its component parts.
73
83
  *
74
84
  * Available properties:
75
85
  *
@@ -77,10 +87,14 @@ ddog_MaybeError ddog_telemetry_builder_with_endpoint_config_endpoint(struct ddog
77
87
  */
78
88
  ddog_MaybeError ddog_telemetry_builder_with_property_endpoint(struct ddog_TelemetryWorkerBuilder *telemetry_builder,
79
89
  enum ddog_TelemetryWorkerBuilderEndpointProperty _property,
80
- const struct ddog_Endpoint *endpoint);
90
+ ddog_CharSlice url,
91
+ ddog_CharSlice api_key,
92
+ uint64_t timeout_ms,
93
+ ddog_CharSlice test_token,
94
+ bool use_system_resolver);
81
95
 
82
96
  /**
83
- * Sets a property from it's string value.
97
+ * Sets a named endpoint property from its component parts.
84
98
  *
85
99
  * Available properties:
86
100
  *
@@ -88,7 +102,11 @@ ddog_MaybeError ddog_telemetry_builder_with_property_endpoint(struct ddog_Teleme
88
102
  */
89
103
  ddog_MaybeError ddog_telemetry_builder_with_endpoint_named_property(struct ddog_TelemetryWorkerBuilder *telemetry_builder,
90
104
  ddog_CharSlice property,
91
- const struct ddog_Endpoint *endpoint);
105
+ ddog_CharSlice url,
106
+ ddog_CharSlice api_key,
107
+ uint64_t timeout_ms,
108
+ ddog_CharSlice test_token,
109
+ bool use_system_resolver);
92
110
 
93
111
  ddog_MaybeError ddog_telemetry_builder_with_str_application_service_version(struct ddog_TelemetryWorkerBuilder *telemetry_builder,
94
112
  ddog_CharSlice param);
@@ -239,11 +257,11 @@ ddog_MaybeError ddog_telemetry_builder_with_bool_named_property(struct ddog_Tele
239
257
  ddog_CharSlice property,
240
258
  bool param);
241
259
 
242
- ddog_MaybeError ddog_telemetry_handle_add_dependency(const struct ddog_TelemetryWorkerHandle *handle,
260
+ ddog_MaybeError ddog_telemetry_handle_add_dependency(const ddog_TelemetryWorkerHandle *handle,
243
261
  ddog_CharSlice dependency_name,
244
262
  ddog_CharSlice dependency_version);
245
263
 
246
- ddog_MaybeError ddog_telemetry_handle_add_integration(const struct ddog_TelemetryWorkerHandle *handle,
264
+ ddog_MaybeError ddog_telemetry_handle_add_integration(const ddog_TelemetryWorkerHandle *handle,
247
265
  ddog_CharSlice dependency_name,
248
266
  ddog_CharSlice dependency_version,
249
267
  bool enabled,
@@ -256,33 +274,33 @@ ddog_MaybeError ddog_telemetry_handle_add_integration(const struct ddog_Telemetr
256
274
  * * stack_trace: stack trace associated with the log. If no stack trace is available, an empty
257
275
  * string should be passed
258
276
  */
259
- ddog_MaybeError ddog_telemetry_handle_add_log(const struct ddog_TelemetryWorkerHandle *handle,
277
+ ddog_MaybeError ddog_telemetry_handle_add_log(const ddog_TelemetryWorkerHandle *handle,
260
278
  ddog_CharSlice indentifier,
261
279
  ddog_CharSlice message,
262
280
  enum ddog_LogLevel level,
263
281
  ddog_CharSlice stack_trace);
264
282
 
265
- ddog_MaybeError ddog_telemetry_handle_start(const struct ddog_TelemetryWorkerHandle *handle);
283
+ ddog_MaybeError ddog_telemetry_handle_start(const ddog_TelemetryWorkerHandle *handle);
266
284
 
267
- struct ddog_TelemetryWorkerHandle *ddog_telemetry_handle_clone(const struct ddog_TelemetryWorkerHandle *handle);
285
+ ddog_TelemetryWorkerHandle *ddog_telemetry_handle_clone(const ddog_TelemetryWorkerHandle *handle);
268
286
 
269
- ddog_MaybeError ddog_telemetry_handle_stop(const struct ddog_TelemetryWorkerHandle *handle);
287
+ ddog_MaybeError ddog_telemetry_handle_stop(const ddog_TelemetryWorkerHandle *handle);
270
288
 
271
289
  /**
272
290
  * * compatible: should be false if the metric is language specific, true otherwise
273
291
  */
274
- struct ddog_ContextKey ddog_telemetry_handle_register_metric_context(const struct ddog_TelemetryWorkerHandle *handle,
292
+ struct ddog_ContextKey ddog_telemetry_handle_register_metric_context(const ddog_TelemetryWorkerHandle *handle,
275
293
  ddog_CharSlice name,
276
294
  enum ddog_MetricType metric_type,
277
295
  struct ddog_Vec_Tag tags,
278
296
  bool common,
279
297
  enum ddog_MetricNamespace namespace_);
280
298
 
281
- ddog_MaybeError ddog_telemetry_handle_add_point(const struct ddog_TelemetryWorkerHandle *handle,
299
+ ddog_MaybeError ddog_telemetry_handle_add_point(const ddog_TelemetryWorkerHandle *handle,
282
300
  const struct ddog_ContextKey *context_key,
283
301
  double value);
284
302
 
285
- ddog_MaybeError ddog_telemetry_handle_add_point_with_tags(const struct ddog_TelemetryWorkerHandle *handle,
303
+ ddog_MaybeError ddog_telemetry_handle_add_point_with_tags(const ddog_TelemetryWorkerHandle *handle,
286
304
  const struct ddog_ContextKey *context_key,
287
305
  double value,
288
306
  struct ddog_Vec_Tag extra_tags);
@@ -290,18 +308,18 @@ ddog_MaybeError ddog_telemetry_handle_add_point_with_tags(const struct ddog_Tele
290
308
  /**
291
309
  * This function takes ownership of the handle. It should not be used after calling it
292
310
  */
293
- void ddog_telemetry_handle_wait_for_shutdown(struct ddog_TelemetryWorkerHandle *handle);
311
+ void ddog_telemetry_handle_wait_for_shutdown(ddog_TelemetryWorkerHandle *handle);
294
312
 
295
313
  /**
296
314
  * This function takes ownership of the handle. It should not be used after calling it
297
315
  */
298
- void ddog_telemetry_handle_wait_for_shutdown_ms(struct ddog_TelemetryWorkerHandle *handle,
316
+ void ddog_telemetry_handle_wait_for_shutdown_ms(ddog_TelemetryWorkerHandle *handle,
299
317
  uint64_t wait_for_ms);
300
318
 
301
319
  /**
302
320
  * Drops the handle without waiting for shutdown. The worker will continue running in the
303
321
  * background until it exits by itself
304
322
  */
305
- void ddog_telemetry_handle_drop(struct ddog_TelemetryWorkerHandle *handle);
323
+ void ddog_telemetry_handle_drop(ddog_TelemetryWorkerHandle *handle);
306
324
 
307
325
  #endif /* DDOG_TELEMETRY_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: 37.0.0
11
+ Version: 38.0.0
12
12
  Requires:
13
13
  Libs: -L${libdir} -ldatadog_profiling -Wl,-rpath,${libdir}
14
14
  Libs.private:
@@ -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,