libdatadog 33.0.0.1.0 → 40.0.0.2.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 (115) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libdatadog/version.rb +2 -2
  3. data/libdatadog.gemspec +43 -0
  4. data/rust-toolchain.toml +6 -0
  5. data/tasks/build.rake +36 -2
  6. data/tasks/gem.rake +245 -0
  7. data/tasks/release.rake +28 -0
  8. data/tasks/spec.rake +11 -0
  9. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-40.0.0/aarch64-linux}/LICENSE-3rdparty.csv +7 -1
  10. data/vendor/libdatadog-40.0.0/aarch64-linux/NOTICE +12 -0
  11. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-40.0.0/aarch64-linux}/bin/libdatadog-crashtracking-receiver +0 -0
  12. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-40.0.0/aarch64-linux}/include/datadog/common.h +321 -81
  13. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-40.0.0/aarch64-linux}/include/datadog/crashtracker.h +19 -0
  14. data/vendor/libdatadog-40.0.0/aarch64-linux/include/datadog/data-pipeline.h +612 -0
  15. data/vendor/libdatadog-40.0.0/aarch64-linux/include/datadog/otel-thread-ctx.h +86 -0
  16. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-40.0.0/aarch64-linux}/include/datadog/profiling.h +37 -0
  17. data/vendor/libdatadog-40.0.0/aarch64-linux/include/datadog/shared-runtime.h +91 -0
  18. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-40.0.0/aarch64-linux}/include/datadog/telemetry.h +37 -19
  19. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-40.0.0/aarch64-linux}/lib/libdatadog_profiling.so +0 -0
  20. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-40.0.0/aarch64-linux}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  21. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-40.0.0/aarch64-linux-musl}/LICENSE-3rdparty.csv +7 -1
  22. data/vendor/libdatadog-40.0.0/aarch64-linux-musl/NOTICE +12 -0
  23. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-40.0.0/aarch64-linux-musl}/bin/libdatadog-crashtracking-receiver +0 -0
  24. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-40.0.0/aarch64-linux-musl}/include/datadog/common.h +321 -81
  25. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-40.0.0/aarch64-linux-musl}/include/datadog/crashtracker.h +19 -0
  26. data/vendor/libdatadog-40.0.0/aarch64-linux-musl/include/datadog/data-pipeline.h +612 -0
  27. data/vendor/libdatadog-40.0.0/aarch64-linux-musl/include/datadog/otel-thread-ctx.h +86 -0
  28. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-40.0.0/aarch64-linux-musl}/include/datadog/profiling.h +37 -0
  29. data/vendor/libdatadog-40.0.0/aarch64-linux-musl/include/datadog/shared-runtime.h +91 -0
  30. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-40.0.0/aarch64-linux-musl}/include/datadog/telemetry.h +37 -19
  31. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-40.0.0/aarch64-linux-musl}/lib/libdatadog_profiling.so +0 -0
  32. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-40.0.0/aarch64-linux-musl}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  33. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-40.0.0/arm64-darwin}/LICENSE-3rdparty.csv +7 -1
  34. data/vendor/libdatadog-40.0.0/arm64-darwin/NOTICE +12 -0
  35. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-40.0.0/arm64-darwin}/bin/libdatadog-crashtracking-receiver +0 -0
  36. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-40.0.0/arm64-darwin}/include/datadog/common.h +321 -81
  37. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-40.0.0/arm64-darwin}/include/datadog/crashtracker.h +19 -0
  38. data/vendor/libdatadog-40.0.0/arm64-darwin/include/datadog/data-pipeline.h +612 -0
  39. data/vendor/libdatadog-40.0.0/arm64-darwin/include/datadog/otel-thread-ctx.h +86 -0
  40. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-40.0.0/arm64-darwin}/include/datadog/profiling.h +37 -0
  41. data/vendor/libdatadog-40.0.0/arm64-darwin/include/datadog/shared-runtime.h +91 -0
  42. data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-40.0.0/arm64-darwin}/include/datadog/telemetry.h +37 -19
  43. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-40.0.0/arm64-darwin}/lib/libdatadog_profiling.dylib +0 -0
  44. data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-40.0.0/arm64-darwin}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  45. data/vendor/libdatadog-40.0.0/x86_64-linux/LICENSE-3rdparty.csv +554 -0
  46. data/vendor/libdatadog-40.0.0/x86_64-linux/NOTICE +12 -0
  47. data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-40.0.0/x86_64-linux}/bin/libdatadog-crashtracking-receiver +0 -0
  48. data/vendor/libdatadog-40.0.0/x86_64-linux/include/datadog/common.h +3115 -0
  49. data/vendor/libdatadog-40.0.0/x86_64-linux/include/datadog/crashtracker.h +1026 -0
  50. data/vendor/libdatadog-40.0.0/x86_64-linux/include/datadog/data-pipeline.h +612 -0
  51. data/vendor/libdatadog-40.0.0/x86_64-linux/include/datadog/otel-thread-ctx.h +86 -0
  52. data/vendor/libdatadog-40.0.0/x86_64-linux/include/datadog/profiling.h +1167 -0
  53. data/vendor/libdatadog-40.0.0/x86_64-linux/include/datadog/shared-runtime.h +91 -0
  54. data/vendor/libdatadog-40.0.0/x86_64-linux/include/datadog/telemetry.h +325 -0
  55. data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-40.0.0/x86_64-linux}/lib/libdatadog_profiling.so +0 -0
  56. data/vendor/libdatadog-40.0.0/x86_64-linux/lib/pkgconfig/datadog_profiling_with_rpath.pc +15 -0
  57. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-40.0.0/x86_64-linux-musl}/LICENSE-3rdparty.csv +7 -1
  58. data/vendor/libdatadog-40.0.0/x86_64-linux-musl/NOTICE +12 -0
  59. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-40.0.0/x86_64-linux-musl}/bin/libdatadog-crashtracking-receiver +0 -0
  60. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-40.0.0/x86_64-linux-musl}/include/datadog/common.h +321 -81
  61. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-40.0.0/x86_64-linux-musl}/include/datadog/crashtracker.h +19 -0
  62. data/vendor/libdatadog-40.0.0/x86_64-linux-musl/include/datadog/data-pipeline.h +612 -0
  63. data/vendor/libdatadog-40.0.0/x86_64-linux-musl/include/datadog/otel-thread-ctx.h +86 -0
  64. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-40.0.0/x86_64-linux-musl}/include/datadog/profiling.h +37 -0
  65. data/vendor/libdatadog-40.0.0/x86_64-linux-musl/include/datadog/shared-runtime.h +91 -0
  66. data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-40.0.0/x86_64-linux-musl}/include/datadog/telemetry.h +37 -19
  67. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-40.0.0/x86_64-linux-musl}/lib/libdatadog_profiling.so +0 -0
  68. data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-40.0.0/x86_64-linux-musl}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  69. metadata +97 -82
  70. data/vendor/libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/NOTICE +0 -4
  71. data/vendor/libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/data-pipeline.h +0 -216
  72. data/vendor/libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/NOTICE +0 -4
  73. data/vendor/libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/data-pipeline.h +0 -216
  74. data/vendor/libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin/NOTICE +0 -4
  75. data/vendor/libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin/include/datadog/data-pipeline.h +0 -216
  76. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE-3rdparty.csv +0 -548
  77. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/NOTICE +0 -4
  78. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/common.h +0 -2875
  79. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/crashtracker.h +0 -1007
  80. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/data-pipeline.h +0 -216
  81. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/profiling.h +0 -1130
  82. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/telemetry.h +0 -307
  83. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -15
  84. data/vendor/libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/NOTICE +0 -4
  85. data/vendor/libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/data-pipeline.h +0 -216
  86. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-40.0.0/aarch64-linux}/LICENSE +0 -0
  87. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-40.0.0/aarch64-linux}/include/datadog/blazesym.h +0 -0
  88. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-40.0.0/aarch64-linux}/include/datadog/ddsketch.h +0 -0
  89. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-40.0.0/aarch64-linux}/include/datadog/ffe.h +0 -0
  90. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-40.0.0/aarch64-linux}/include/datadog/library-config.h +0 -0
  91. /data/vendor/{libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-40.0.0/aarch64-linux}/include/datadog/log.h +0 -0
  92. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-40.0.0/aarch64-linux-musl}/LICENSE +0 -0
  93. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-40.0.0/aarch64-linux-musl}/include/datadog/blazesym.h +0 -0
  94. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-40.0.0/aarch64-linux-musl}/include/datadog/ddsketch.h +0 -0
  95. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-40.0.0/aarch64-linux-musl}/include/datadog/ffe.h +0 -0
  96. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-40.0.0/aarch64-linux-musl}/include/datadog/library-config.h +0 -0
  97. /data/vendor/{libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-40.0.0/aarch64-linux-musl}/include/datadog/log.h +0 -0
  98. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-40.0.0/arm64-darwin}/LICENSE +0 -0
  99. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-40.0.0/arm64-darwin}/include/datadog/blazesym.h +0 -0
  100. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-40.0.0/arm64-darwin}/include/datadog/ddsketch.h +0 -0
  101. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-40.0.0/arm64-darwin}/include/datadog/ffe.h +0 -0
  102. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-40.0.0/arm64-darwin}/include/datadog/library-config.h +0 -0
  103. /data/vendor/{libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-40.0.0/arm64-darwin}/include/datadog/log.h +0 -0
  104. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-40.0.0/x86_64-linux}/LICENSE +0 -0
  105. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-40.0.0/x86_64-linux}/include/datadog/blazesym.h +0 -0
  106. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-40.0.0/x86_64-linux}/include/datadog/ddsketch.h +0 -0
  107. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-40.0.0/x86_64-linux}/include/datadog/ffe.h +0 -0
  108. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-40.0.0/x86_64-linux}/include/datadog/library-config.h +0 -0
  109. /data/vendor/{libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-40.0.0/x86_64-linux}/include/datadog/log.h +0 -0
  110. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-40.0.0/x86_64-linux-musl}/LICENSE +0 -0
  111. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-40.0.0/x86_64-linux-musl}/include/datadog/blazesym.h +0 -0
  112. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-40.0.0/x86_64-linux-musl}/include/datadog/ddsketch.h +0 -0
  113. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-40.0.0/x86_64-linux-musl}/include/datadog/ffe.h +0 -0
  114. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-40.0.0/x86_64-linux-musl}/include/datadog/library-config.h +0 -0
  115. /data/vendor/{libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-40.0.0/x86_64-linux-musl}/include/datadog/log.h +0 -0
@@ -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,
@@ -1524,6 +1501,9 @@ typedef enum ddog_ConfigurationOrigin {
1524
1501
  DDOG_CONFIGURATION_ORIGIN_LOCAL_STABLE_CONFIG,
1525
1502
  DDOG_CONFIGURATION_ORIGIN_FLEET_STABLE_CONFIG,
1526
1503
  DDOG_CONFIGURATION_ORIGIN_CALCULATED,
1504
+ DDOG_CONFIGURATION_ORIGIN_OTEL_ENV_VAR,
1505
+ DDOG_CONFIGURATION_ORIGIN_INI,
1506
+ DDOG_CONFIGURATION_ORIGIN_UNKNOWN,
1527
1507
  } ddog_ConfigurationOrigin;
1528
1508
 
1529
1509
  typedef enum ddog_LogLevel {
@@ -1544,12 +1524,17 @@ typedef enum ddog_MetricNamespace {
1544
1524
  DDOG_METRIC_NAMESPACE_TELEMETRY,
1545
1525
  DDOG_METRIC_NAMESPACE_APM,
1546
1526
  DDOG_METRIC_NAMESPACE_SIDECAR,
1527
+ DDOG_METRIC_NAMESPACE_CIVISIBILITY,
1528
+ DDOG_METRIC_NAMESPACE_MLOBS,
1529
+ DDOG_METRIC_NAMESPACE_DDTRACEAPI,
1530
+ DDOG_METRIC_NAMESPACE_AI_GUARD,
1547
1531
  } ddog_MetricNamespace;
1548
1532
 
1549
1533
  typedef enum ddog_MetricType {
1550
1534
  DDOG_METRIC_TYPE_GAUGE,
1551
1535
  DDOG_METRIC_TYPE_COUNT,
1552
1536
  DDOG_METRIC_TYPE_DISTRIBUTION,
1537
+ DDOG_METRIC_TYPE_RATE,
1553
1538
  } ddog_MetricType;
1554
1539
 
1555
1540
  typedef enum ddog_TelemetryWorkerBuilderBoolProperty {
@@ -1586,9 +1571,10 @@ typedef struct ddog_TelemetryWorkerBuilder ddog_TelemetryWorkerBuilder;
1586
1571
  * The worker won't send data to the agent until you call `TelemetryWorkerHandle::send_start`
1587
1572
  *
1588
1573
  * To stop the worker, call `TelemetryWorkerHandle::send_stop` which trigger flush asynchronously
1589
- * then `TelemetryWorkerHandle::wait_for_shutdown`
1574
+ * then `TelemetryWorkerHandle::wait_for_shutdown` (native only — wasm callers rely on the
1575
+ * SharedRuntime worker JoinHandle instead).
1590
1576
  */
1591
- typedef struct ddog_TelemetryWorkerHandle ddog_TelemetryWorkerHandle;
1577
+ typedef struct ddog_TelemetryWorkerHandle_NativeCapabilities ddog_TelemetryWorkerHandle_NativeCapabilities;
1592
1578
 
1593
1579
  typedef enum ddog_Option_U64_Tag {
1594
1580
  DDOG_OPTION_U64_SOME_U64,
@@ -1604,6 +1590,12 @@ typedef struct ddog_Option_U64 {
1604
1590
  };
1605
1591
  } ddog_Option_U64;
1606
1592
 
1593
+ /**
1594
+ * FFI-facing alias: the C ABI surface is native-only, so the worker handle is
1595
+ * always pinned to [`NativeCapabilities`].
1596
+ */
1597
+ typedef struct ddog_TelemetryWorkerHandle_NativeCapabilities ddog_TelemetryWorkerHandle;
1598
+
1607
1599
  typedef enum ddog_Option_Bool_Tag {
1608
1600
  DDOG_OPTION_BOOL_SOME_BOOL,
1609
1601
  DDOG_OPTION_BOOL_NONE_BOOL,
@@ -1624,7 +1616,38 @@ typedef struct ddog_ContextKey {
1624
1616
  } ddog_ContextKey;
1625
1617
 
1626
1618
  typedef struct ddog_TraceExporter ddog_TraceExporter;
1619
+ typedef struct ddog_TracerSpan ddog_TracerSpan;
1620
+ typedef struct ddog_TracerSpanEvent ddog_TracerSpanEvent;
1621
+ typedef struct ddog_TracerTraceChunks ddog_TracerTraceChunks;
1622
+ typedef struct ddog_TraceExporterCancelToken ddog_TraceExporterCancelToken;
1623
+ typedef uint8_t ddog_TracerValueKind;
1624
+
1625
+
1626
+ #define DDOG_TRACER_VALUE_NIL 0
1627
+
1628
+ #define DDOG_TRACER_VALUE_BOOL 1
1629
+
1630
+ #define DDOG_TRACER_VALUE_I64 2
1631
+
1632
+ #define DDOG_TRACER_VALUE_U64 3
1633
+
1634
+ #define DDOG_TRACER_VALUE_F64 4
1635
+
1636
+ #define DDOG_TRACER_VALUE_STRING 5
1637
+
1638
+ #define DDOG_TRACER_VALUE_BINARY 6
1639
+
1640
+ #define DDOG_TRACER_VALUE_ARRAY 7
1641
+
1642
+ #define DDOG_TRACER_VALUE_MAP 8
1643
+
1644
+ #define ddog_CollapsedFieldSet_RESOURCE_NAME (1 << 0)
1645
+
1646
+ #define ddog_CollapsedFieldSet_HTTP_ENDPOINT (1 << 1)
1647
+
1648
+ #define ddog_CollapsedFieldSet_PEER_TAGS (1 << 2)
1627
1649
 
1650
+ #define ddog_CollapsedFieldSet_ADDITIONAL_TAGS (1 << 3)
1628
1651
 
1629
1652
  /**
1630
1653
  * Represent error codes that `Error` struct can hold
@@ -1667,17 +1690,13 @@ typedef enum ddog_TraceExporterErrorCode {
1667
1690
  typedef struct ddog_TraceExporterResponse ddog_TraceExporterResponse;
1668
1691
 
1669
1692
  /**
1670
- * A shared runtime that manages PausableWorkers and provides fork safety hooks.
1693
+ * Owns a tokio runtime and manages [`PausableWorker`]s on it.
1671
1694
  *
1672
- * The SharedRuntime owns a tokio runtime and tracks PausableWorkers spawned on it.
1673
- * It provides methods to safely pause workers before forking and restart them
1674
- * after fork in both parent and child processes.
1675
- *
1676
- * # Mutex lock order
1677
- * When locking both [Self::runtime] and [Self::workers], the mutex must be locked in the order of
1678
- * the fields in the struct. When possible avoid holding both locks simultaneously.
1695
+ * Supports the full fork protocol ([`before_fork`](Self::before_fork) /
1696
+ * [`after_fork_parent`](Self::after_fork_parent) /
1697
+ * [`after_fork_child`](Self::after_fork_child)) and synchronous [`shutdown`](Self::shutdown).
1679
1698
  */
1680
- typedef struct ddog_SharedRuntime ddog_SharedRuntime;
1699
+ typedef struct ddog_ForkSafeRuntime ddog_ForkSafeRuntime;
1681
1700
 
1682
1701
  /**
1683
1702
  * The TraceExporterConfig object will hold the configuration properties for the TraceExporter.
@@ -1686,6 +1705,11 @@ typedef struct ddog_SharedRuntime ddog_SharedRuntime;
1686
1705
  */
1687
1706
  typedef struct ddog_TraceExporterConfig ddog_TraceExporterConfig;
1688
1707
 
1708
+ /**
1709
+ * Opaque owned MessagePack blob produced from structured-value tokens.
1710
+ */
1711
+ typedef struct ddog_TracerEncodedValue ddog_TracerEncodedValue;
1712
+
1689
1713
  /**
1690
1714
  * Structure that contains error information that `TraceExporter` API can return.
1691
1715
  */
@@ -1694,6 +1718,39 @@ typedef struct ddog_TraceExporterError {
1694
1718
  char *msg;
1695
1719
  } ddog_TraceExporterError;
1696
1720
 
1721
+ /**
1722
+ * One value in a flat preorder representation of a structured value.
1723
+ *
1724
+ * Scalar tokens use the corresponding scalar field. String and binary tokens
1725
+ * use `bytes`. Array and map tokens use `child_count`; a map is followed by
1726
+ * two values per entry (key, then value). All other fields must be ignored.
1727
+ * `kind` remains a raw integer so malformed C input can be rejected without
1728
+ * constructing an invalid Rust enum discriminant.
1729
+ */
1730
+ typedef struct ddog_TracerValueToken {
1731
+ uint8_t kind;
1732
+ uint8_t bool_value;
1733
+ uint32_t child_count;
1734
+ int64_t i64_value;
1735
+ uint64_t u64_value;
1736
+ double f64_value;
1737
+ ddog_ByteSlice bytes;
1738
+ } ddog_TracerValueToken;
1739
+
1740
+ typedef struct ddog_Slice_TracerValueToken {
1741
+ /**
1742
+ * Should be non-null and suitably aligned for the underlying type. It is
1743
+ * allowed but not recommended for the pointer to be null when the len is
1744
+ * zero.
1745
+ */
1746
+ const struct ddog_TracerValueToken *ptr;
1747
+ /**
1748
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1749
+ * than or equal to [isize::MAX].
1750
+ */
1751
+ uintptr_t len;
1752
+ } ddog_Slice_TracerValueToken;
1753
+
1697
1754
  /**
1698
1755
  * FFI compatible configuration for the TelemetryClient.
1699
1756
  */
@@ -1730,6 +1787,142 @@ typedef struct ddog_TelemetryClientConfig {
1730
1787
  ddog_CharSlice parent_session_id;
1731
1788
  } ddog_TelemetryClientConfig;
1732
1789
 
1790
+ /**
1791
+ * Config to override the default stats cardinality limit values
1792
+ */
1793
+ typedef struct ddog_CardinalityLimitConfig {
1794
+ /**
1795
+ * The whole-key cardinality limit (defaults to 7000)
1796
+ */
1797
+ uintptr_t whole_key_limit;
1798
+ /**
1799
+ * The per-field cardinality limit for the Resource field (defaults to 1024)
1800
+ */
1801
+ uintptr_t resource_limit;
1802
+ /**
1803
+ * The per-field cardinality limit for the HttpEndpoint field (defaults to 512)
1804
+ */
1805
+ uintptr_t http_endpoint_limit;
1806
+ /**
1807
+ * The per-field cardinality limit for the PeerTags field (defaults to 512)
1808
+ */
1809
+ uintptr_t peer_tags_limit;
1810
+ /**
1811
+ * The per-field cardinality limit for the AdditionalTags field (defaults to 100)
1812
+ */
1813
+ uintptr_t additional_tags_limit;
1814
+ } ddog_CardinalityLimitConfig;
1815
+
1816
+ /**
1817
+ * FFI-safe bundle of scalar fields for creating a [`TracerSpan`].
1818
+ *
1819
+ * Passed by reference to [`ddog_tracer_span_new`] so that adding or
1820
+ * changing fields does not break the function signature.
1821
+ */
1822
+ typedef struct ddog_TracerSpanFields {
1823
+ ddog_CharSlice service;
1824
+ ddog_CharSlice name;
1825
+ ddog_CharSlice resource;
1826
+ ddog_CharSlice span_type;
1827
+ uint64_t trace_id_low;
1828
+ uint64_t trace_id_high;
1829
+ uint64_t span_id;
1830
+ uint64_t parent_id;
1831
+ int64_t start;
1832
+ int64_t duration;
1833
+ int32_t error;
1834
+ } ddog_TracerSpanFields;
1835
+
1836
+ /**
1837
+ * A string attribute belonging to a [`TracerSpanLink`].
1838
+ */
1839
+ typedef struct ddog_TracerSpanLinkAttribute {
1840
+ ddog_CharSlice key;
1841
+ ddog_CharSlice value;
1842
+ } ddog_TracerSpanLinkAttribute;
1843
+
1844
+ typedef struct ddog_Slice_TracerSpanLinkAttribute {
1845
+ /**
1846
+ * Should be non-null and suitably aligned for the underlying type. It is
1847
+ * allowed but not recommended for the pointer to be null when the len is
1848
+ * zero.
1849
+ */
1850
+ const struct ddog_TracerSpanLinkAttribute *ptr;
1851
+ /**
1852
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1853
+ * than or equal to [isize::MAX].
1854
+ */
1855
+ uintptr_t len;
1856
+ } ddog_Slice_TracerSpanLinkAttribute;
1857
+
1858
+ /**
1859
+ * FFI-safe representation of one complete span link.
1860
+ */
1861
+ typedef struct ddog_TracerSpanLink {
1862
+ uint64_t trace_id_low;
1863
+ uint64_t trace_id_high;
1864
+ uint64_t span_id;
1865
+ struct ddog_Slice_TracerSpanLinkAttribute attributes;
1866
+ ddog_CharSlice tracestate;
1867
+ uint32_t flags;
1868
+ } ddog_TracerSpanLink;
1869
+
1870
+ typedef struct ddog_Slice_TracerSpanLink {
1871
+ /**
1872
+ * Should be non-null and suitably aligned for the underlying type. It is
1873
+ * allowed but not recommended for the pointer to be null when the len is
1874
+ * zero.
1875
+ */
1876
+ const struct ddog_TracerSpanLink *ptr;
1877
+ /**
1878
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1879
+ * than or equal to [isize::MAX].
1880
+ */
1881
+ uintptr_t len;
1882
+ } ddog_Slice_TracerSpanLink;
1883
+
1884
+ typedef struct ddog_Slice_CharSlice {
1885
+ /**
1886
+ * Should be non-null and suitably aligned for the underlying type. It is
1887
+ * allowed but not recommended for the pointer to be null when the len is
1888
+ * zero.
1889
+ */
1890
+ const ddog_CharSlice *ptr;
1891
+ /**
1892
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1893
+ * than or equal to [isize::MAX].
1894
+ */
1895
+ uintptr_t len;
1896
+ } ddog_Slice_CharSlice;
1897
+
1898
+ typedef struct ddog_Slice_Bool {
1899
+ /**
1900
+ * Should be non-null and suitably aligned for the underlying type. It is
1901
+ * allowed but not recommended for the pointer to be null when the len is
1902
+ * zero.
1903
+ */
1904
+ const bool *ptr;
1905
+ /**
1906
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1907
+ * than or equal to [isize::MAX].
1908
+ */
1909
+ uintptr_t len;
1910
+ } ddog_Slice_Bool;
1911
+
1912
+ typedef struct ddog_Slice_F64 {
1913
+ /**
1914
+ * Should be non-null and suitably aligned for the underlying type. It is
1915
+ * allowed but not recommended for the pointer to be null when the len is
1916
+ * zero.
1917
+ */
1918
+ const double *ptr;
1919
+ /**
1920
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1921
+ * than or equal to [isize::MAX].
1922
+ */
1923
+ uintptr_t len;
1924
+ } ddog_Slice_F64;
1925
+
1733
1926
  typedef enum ddog_LibraryConfigSource {
1734
1927
  DDOG_LIBRARY_CONFIG_SOURCE_LOCAL_STABLE_CONFIG = 0,
1735
1928
  DDOG_LIBRARY_CONFIG_SOURCE_FLEET_STABLE_CONFIG = 1,
@@ -1772,20 +1965,6 @@ typedef struct ddog_CStr {
1772
1965
  uintptr_t length;
1773
1966
  } ddog_CStr;
1774
1967
 
1775
- typedef struct ddog_Slice_CharSlice {
1776
- /**
1777
- * Should be non-null and suitably aligned for the underlying type. It is
1778
- * allowed but not recommended for the pointer to be null when the len is
1779
- * zero.
1780
- */
1781
- const ddog_CharSlice *ptr;
1782
- /**
1783
- * The number of elements (not bytes) that `.ptr` points to. Must be less
1784
- * than or equal to [isize::MAX].
1785
- */
1786
- uintptr_t len;
1787
- } ddog_Slice_CharSlice;
1788
-
1789
1968
  typedef struct ddog_ProcessInfo {
1790
1969
  struct ddog_Slice_CharSlice args;
1791
1970
  struct ddog_Slice_CharSlice envp;
@@ -2207,6 +2386,67 @@ typedef struct ddog_ffe_AttributePair {
2207
2386
  struct ddog_ffe_AttributeValue value;
2208
2387
  } ddog_ffe_AttributePair;
2209
2388
 
2389
+ /**
2390
+ * Error codes for ForkSafeRuntime FFI operations.
2391
+ */
2392
+ typedef enum ddog_SharedRuntimeErrorCode {
2393
+ /**
2394
+ * Invalid argument provided (e.g. null handle).
2395
+ */
2396
+ DDOG_SHARED_RUNTIME_ERROR_CODE_INVALID_ARGUMENT,
2397
+ /**
2398
+ * The runtime is not available or in an invalid state.
2399
+ */
2400
+ DDOG_SHARED_RUNTIME_ERROR_CODE_RUNTIME_UNAVAILABLE,
2401
+ /**
2402
+ * Failed to acquire a lock on internal state.
2403
+ */
2404
+ DDOG_SHARED_RUNTIME_ERROR_CODE_LOCK_FAILED,
2405
+ /**
2406
+ * A worker operation failed.
2407
+ */
2408
+ DDOG_SHARED_RUNTIME_ERROR_CODE_WORKER_ERROR,
2409
+ /**
2410
+ * Failed to create the tokio runtime.
2411
+ */
2412
+ DDOG_SHARED_RUNTIME_ERROR_CODE_RUNTIME_CREATION,
2413
+ /**
2414
+ * Shutdown timed out.
2415
+ */
2416
+ DDOG_SHARED_RUNTIME_ERROR_CODE_SHUTDOWN_TIMED_OUT,
2417
+ /**
2418
+ * An unexpected panic occurred inside the FFI call.
2419
+ */
2420
+ DDOG_SHARED_RUNTIME_ERROR_CODE_PANIC,
2421
+ } ddog_SharedRuntimeErrorCode;
2422
+
2423
+ /**
2424
+ * Error returned by ForkSafeRuntime FFI functions.
2425
+ */
2426
+ typedef struct ddog_SharedRuntimeFFIError {
2427
+ enum ddog_SharedRuntimeErrorCode code;
2428
+ /**
2429
+ * The error message is always defined when the error is returned by a ddog_shared_runtime
2430
+ * ffi.
2431
+ */
2432
+ char *msg;
2433
+ } ddog_SharedRuntimeFFIError;
2434
+
2435
+ /**
2436
+ * Maximum size in bytes of the `attrs_data` field of a thread context record.
2437
+ */
2438
+ #define ddog_MAX_ATTRS_DATA_SIZE 612
2439
+
2440
+ /**
2441
+ * Opaque handle to a thread context record. Used to allow the FFI to convert [ThreadContext]
2442
+ * to and from raw pointers without exposing [ThreadContextRecord], as the latter needs extra
2443
+ * care to be manipulated (async-signal-safety, seq-lock-like modification protocol through
2444
+ * [ThreadContextRecord::valid], etc.)
2445
+ */
2446
+ typedef struct ddog_ThreadContextHandle {
2447
+
2448
+ } ddog_ThreadContextHandle;
2449
+
2210
2450
  typedef enum ddog_crasht_BuildIdType {
2211
2451
  DDOG_CRASHT_BUILD_ID_TYPE_GNU,
2212
2452
  DDOG_CRASHT_BUILD_ID_TYPE_GO,
@@ -170,6 +170,25 @@ struct ddog_VoidResult ddog_crasht_report_unhandled_exception(ddog_CharSlice err
170
170
  ddog_CharSlice error_message,
171
171
  struct ddog_crasht_Handle_StackTrace *runtime_stack);
172
172
 
173
+ /**
174
+ * Register the expected PID of the socket-based crash receiver
175
+ *
176
+ * When `collect_all_threads` is enabled and the receiver is reached via a Unix
177
+ * socket, the crash handler will only grant ptrace permission if the socket
178
+ * peer's PID matches this registered value.
179
+ *
180
+ * Call this after establishing a trusted connection to the sidecar
181
+ *
182
+ * # Safety
183
+ * This function is safe to call from any thread at any time.
184
+ */
185
+ void ddog_crasht_set_expected_receiver_pid(int32_t pid);
186
+
187
+ /**
188
+ * Returns the currently registered expected receiver PID, or 0 if unset.
189
+ */
190
+ int32_t ddog_crasht_get_expected_receiver_pid(void);
191
+
173
192
  /**
174
193
  * Removes all existing additional tags
175
194
  * Expected to be used after a fork, to reset the additional tags on the child