libdatadog 26.0.0.1.0-aarch64-linux → 28.0.0.1.0-aarch64-linux

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 (35) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libdatadog/version.rb +1 -1
  3. data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE-3rdparty.yml +3373 -2915
  4. data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/common.h +172 -35
  5. data/vendor/{libdatadog-26.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-28.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/crashtracker.h +55 -1
  6. data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/data-pipeline.h +0 -1
  7. data/vendor/{libdatadog-26.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-28.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/profiling.h +127 -11
  8. data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  9. data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  10. data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE-3rdparty.yml +3373 -2915
  11. data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/common.h +172 -35
  12. data/vendor/{libdatadog-26.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-28.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/crashtracker.h +55 -1
  13. data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/data-pipeline.h +0 -1
  14. data/vendor/{libdatadog-26.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-28.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/profiling.h +127 -11
  15. data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  16. data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  17. metadata +33 -33
  18. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE +0 -0
  19. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/NOTICE +0 -0
  20. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/bin/libdatadog-crashtracking-receiver +0 -0
  21. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/blazesym.h +0 -0
  22. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/ddsketch.h +0 -0
  23. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/ffe.h +0 -0
  24. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/library-config.h +0 -0
  25. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/log.h +0 -0
  26. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/telemetry.h +0 -0
  27. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE +0 -0
  28. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/NOTICE +0 -0
  29. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  30. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/blazesym.h +0 -0
  31. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/ddsketch.h +0 -0
  32. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/ffe.h +0 -0
  33. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/library-config.h +0 -0
  34. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/log.h +0 -0
  35. /data/vendor/{libdatadog-26.0.0 → libdatadog-28.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/telemetry.h +0 -0
@@ -263,6 +263,92 @@ typedef struct ddog_prof_Function2 *ddog_prof_FunctionId2;
263
263
 
264
264
  #define ddog_prof_Set_SIZE_HINT (1024 * 1024)
265
265
 
266
+ /**
267
+ * Sample types supported by Datadog's profilers.
268
+ *
269
+ * Variants are sourced from:
270
+ * - **dd-trace-rb**: `stack_recorder.c` (`all_value_types`)
271
+ * - **dd-trace-py**: `dd_wrapper/include/types.hpp`
272
+ * - **dd-trace-php**: `profiling/src/profiling/samples.rs` (I/O profiling)
273
+ * - **dd-trace-dotnet**: Sample type definitions for allocations, locks, CPU, walltime,
274
+ * exceptions, live objects, HTTP requests
275
+ * - **pprof-nodejs**: `profile-serializer.ts` (value type functions)
276
+ */
277
+ typedef enum ddog_prof_SampleType {
278
+ DDOG_PROF_SAMPLE_TYPE_ALLOC_SAMPLES,
279
+ DDOG_PROF_SAMPLE_TYPE_ALLOC_SAMPLES_UNSCALED,
280
+ DDOG_PROF_SAMPLE_TYPE_ALLOC_SIZE,
281
+ DDOG_PROF_SAMPLE_TYPE_ALLOC_SPACE,
282
+ DDOG_PROF_SAMPLE_TYPE_CPU_TIME,
283
+ DDOG_PROF_SAMPLE_TYPE_CPU_SAMPLES,
284
+ /**
285
+ * Legacy: Use `CpuTime` instead for consistency with naming scheme
286
+ */
287
+ DDOG_PROF_SAMPLE_TYPE_CPU_LEGACY,
288
+ /**
289
+ * Legacy: Use `CpuSamples` instead for consistency with naming scheme
290
+ */
291
+ DDOG_PROF_SAMPLE_TYPE_CPU_SAMPLE_LEGACY,
292
+ DDOG_PROF_SAMPLE_TYPE_EXCEPTION_SAMPLES,
293
+ /**
294
+ * Legacy: Use `ExceptionSamples` instead for consistency with naming scheme
295
+ */
296
+ DDOG_PROF_SAMPLE_TYPE_EXCEPTION_LEGACY,
297
+ DDOG_PROF_SAMPLE_TYPE_FILE_IO_READ_SIZE,
298
+ DDOG_PROF_SAMPLE_TYPE_FILE_IO_READ_SIZE_SAMPLES,
299
+ DDOG_PROF_SAMPLE_TYPE_FILE_IO_READ_TIME,
300
+ DDOG_PROF_SAMPLE_TYPE_FILE_IO_READ_TIME_SAMPLES,
301
+ DDOG_PROF_SAMPLE_TYPE_FILE_IO_WRITE_SIZE,
302
+ DDOG_PROF_SAMPLE_TYPE_FILE_IO_WRITE_SIZE_SAMPLES,
303
+ DDOG_PROF_SAMPLE_TYPE_FILE_IO_WRITE_TIME,
304
+ DDOG_PROF_SAMPLE_TYPE_FILE_IO_WRITE_TIME_SAMPLES,
305
+ DDOG_PROF_SAMPLE_TYPE_GPU_ALLOC_SAMPLES,
306
+ DDOG_PROF_SAMPLE_TYPE_GPU_FLOPS,
307
+ DDOG_PROF_SAMPLE_TYPE_GPU_FLOPS_SAMPLES,
308
+ DDOG_PROF_SAMPLE_TYPE_GPU_SAMPLES,
309
+ DDOG_PROF_SAMPLE_TYPE_GPU_SPACE,
310
+ DDOG_PROF_SAMPLE_TYPE_GPU_TIME,
311
+ DDOG_PROF_SAMPLE_TYPE_HEAP_LIVE_SAMPLES,
312
+ DDOG_PROF_SAMPLE_TYPE_HEAP_LIVE_SIZE,
313
+ DDOG_PROF_SAMPLE_TYPE_HEAP_SPACE,
314
+ DDOG_PROF_SAMPLE_TYPE_INUSE_OBJECTS,
315
+ DDOG_PROF_SAMPLE_TYPE_INUSE_SPACE,
316
+ DDOG_PROF_SAMPLE_TYPE_LOCK_ACQUIRE,
317
+ DDOG_PROF_SAMPLE_TYPE_LOCK_ACQUIRE_WAIT,
318
+ DDOG_PROF_SAMPLE_TYPE_LOCK_COUNT,
319
+ DDOG_PROF_SAMPLE_TYPE_LOCK_RELEASE,
320
+ DDOG_PROF_SAMPLE_TYPE_LOCK_RELEASE_HOLD,
321
+ DDOG_PROF_SAMPLE_TYPE_LOCK_TIME,
322
+ /**
323
+ * Legacy: Use `InuseObjects` instead for consistency with naming scheme
324
+ */
325
+ DDOG_PROF_SAMPLE_TYPE_OBJECTS_LEGACY,
326
+ DDOG_PROF_SAMPLE_TYPE_REQUEST_TIME,
327
+ DDOG_PROF_SAMPLE_TYPE_SAMPLE,
328
+ DDOG_PROF_SAMPLE_TYPE_SOCKET_READ_SIZE,
329
+ DDOG_PROF_SAMPLE_TYPE_SOCKET_READ_SIZE_SAMPLES,
330
+ DDOG_PROF_SAMPLE_TYPE_SOCKET_READ_TIME,
331
+ DDOG_PROF_SAMPLE_TYPE_SOCKET_READ_TIME_SAMPLES,
332
+ DDOG_PROF_SAMPLE_TYPE_SOCKET_WRITE_SIZE,
333
+ DDOG_PROF_SAMPLE_TYPE_SOCKET_WRITE_SIZE_SAMPLES,
334
+ DDOG_PROF_SAMPLE_TYPE_SOCKET_WRITE_TIME,
335
+ DDOG_PROF_SAMPLE_TYPE_SOCKET_WRITE_TIME_SAMPLES,
336
+ /**
337
+ * Legacy: Use specific space variants (`InuseSpace`, `HeapSpace`, `AllocSpace`) instead
338
+ */
339
+ DDOG_PROF_SAMPLE_TYPE_SPACE_LEGACY,
340
+ DDOG_PROF_SAMPLE_TYPE_TIMELINE,
341
+ DDOG_PROF_SAMPLE_TYPE_WALL_SAMPLES,
342
+ DDOG_PROF_SAMPLE_TYPE_WALL_TIME,
343
+ /**
344
+ * Legacy: Use `WallTime` instead for consistency with naming scheme
345
+ */
346
+ DDOG_PROF_SAMPLE_TYPE_WALL_LEGACY,
347
+ DDOG_PROF_SAMPLE_TYPE_EXPERIMENTAL_COUNT,
348
+ DDOG_PROF_SAMPLE_TYPE_EXPERIMENTAL_NANOSECONDS,
349
+ DDOG_PROF_SAMPLE_TYPE_EXPERIMENTAL_BYTES,
350
+ } ddog_prof_SampleType;
351
+
266
352
  typedef enum ddog_prof_Utf8Option {
267
353
  /**
268
354
  * The string is assumed to be valid UTF-8. If it's not, the behavior
@@ -284,6 +370,8 @@ typedef struct ddog_OpaqueCancellationToken ddog_OpaqueCancellationToken;
284
370
 
285
371
  typedef struct ddog_prof_EncodedProfile ddog_prof_EncodedProfile;
286
372
 
373
+ typedef struct ddog_prof_ExporterManager ddog_prof_ExporterManager;
374
+
287
375
  typedef struct ddog_prof_Exporter ddog_prof_Exporter;
288
376
 
289
377
  /**
@@ -344,12 +432,14 @@ typedef enum ddog_prof_Endpoint_Tag {
344
432
  typedef struct ddog_prof_Endpoint_ddog_prof_Agent_Body {
345
433
  ddog_CharSlice _0;
346
434
  uint64_t _1;
435
+ bool _2;
347
436
  } ddog_prof_Endpoint_ddog_prof_Agent_Body;
348
437
 
349
438
  typedef struct ddog_prof_Endpoint_ddog_prof_Agentless_Body {
350
439
  ddog_CharSlice _0;
351
440
  ddog_CharSlice _1;
352
441
  uint64_t _2;
442
+ bool _3;
353
443
  } ddog_prof_Endpoint_ddog_prof_Agentless_Body;
354
444
 
355
445
  typedef struct ddog_prof_Endpoint {
@@ -435,6 +525,53 @@ typedef struct ddog_CancellationToken {
435
525
  ddog_prof_TokioCancellationToken *inner;
436
526
  } ddog_CancellationToken;
437
527
 
528
+ /**
529
+ * Represents an object that should only be referred to by its handle.
530
+ * Do not access its member for any reason, only use the C API functions on this struct.
531
+ */
532
+ typedef struct ddog_prof_Handle_ExporterManager {
533
+ struct ddog_prof_ExporterManager *inner;
534
+ } ddog_prof_Handle_ExporterManager;
535
+
536
+ /**
537
+ * A generic result type for when an operation may fail,
538
+ * or may return <T> in case of success.
539
+ */
540
+ typedef enum ddog_prof_Result_HandleExporterManager_Tag {
541
+ DDOG_PROF_RESULT_HANDLE_EXPORTER_MANAGER_OK_HANDLE_EXPORTER_MANAGER,
542
+ DDOG_PROF_RESULT_HANDLE_EXPORTER_MANAGER_ERR_HANDLE_EXPORTER_MANAGER,
543
+ } ddog_prof_Result_HandleExporterManager_Tag;
544
+
545
+ typedef struct ddog_prof_Result_HandleExporterManager {
546
+ ddog_prof_Result_HandleExporterManager_Tag tag;
547
+ union {
548
+ struct {
549
+ struct ddog_prof_Handle_ExporterManager ok;
550
+ };
551
+ struct {
552
+ struct ddog_Error err;
553
+ };
554
+ };
555
+ } ddog_prof_Result_HandleExporterManager;
556
+
557
+ /**
558
+ * A generic result type for when an operation may fail,
559
+ * but there's nothing to return in the case of success.
560
+ */
561
+ typedef enum ddog_VoidResult_Tag {
562
+ DDOG_VOID_RESULT_OK,
563
+ DDOG_VOID_RESULT_ERR,
564
+ } ddog_VoidResult_Tag;
565
+
566
+ typedef struct ddog_VoidResult {
567
+ ddog_VoidResult_Tag tag;
568
+ union {
569
+ struct {
570
+ struct ddog_Error err;
571
+ };
572
+ };
573
+ } ddog_VoidResult;
574
+
438
575
  /**
439
576
  * Represents the result of an operation that either succeeds with no value, or fails with an
440
577
  * error message. This is like `Result<(), Cow<'static, CStr>` except its representation is
@@ -516,27 +653,22 @@ typedef struct ddog_prof_Profile_NewResult {
516
653
  };
517
654
  } ddog_prof_Profile_NewResult;
518
655
 
519
- typedef struct ddog_prof_ValueType {
520
- ddog_CharSlice type_;
521
- ddog_CharSlice unit;
522
- } ddog_prof_ValueType;
523
-
524
- typedef struct ddog_prof_Slice_ValueType {
656
+ typedef struct ddog_prof_Slice_SampleType {
525
657
  /**
526
658
  * Should be non-null and suitably aligned for the underlying type. It is
527
659
  * allowed but not recommended for the pointer to be null when the len is
528
660
  * zero.
529
661
  */
530
- const struct ddog_prof_ValueType *ptr;
662
+ const enum ddog_prof_SampleType *ptr;
531
663
  /**
532
664
  * The number of elements (not bytes) that `.ptr` points to. Must be less
533
665
  * than or equal to [isize::MAX].
534
666
  */
535
667
  uintptr_t len;
536
- } ddog_prof_Slice_ValueType;
668
+ } ddog_prof_Slice_SampleType;
537
669
 
538
670
  typedef struct ddog_prof_Period {
539
- struct ddog_prof_ValueType type_;
671
+ enum ddog_prof_SampleType sample_type;
540
672
  int64_t value;
541
673
  } ddog_prof_Period;
542
674
 
@@ -786,6 +918,9 @@ typedef struct ddog_prof_Mapping2 {
786
918
  * performed on; it is not generally guaranteed that ids from one dictionary
787
919
  * can be used in another dictionary, even if it happens to work by
788
920
  * implementation detail.
921
+ *
922
+ * `Eq`/`Hash` and other comparisons are based on this handle value, and are
923
+ * only intended for ids produced by the same `ProfilesDictionary`.
789
924
  */
790
925
  typedef struct ddog_prof_Mapping2 *ddog_prof_MappingId2;
791
926
 
@@ -808,9 +943,18 @@ typedef struct ddog_prof_Function2 {
808
943
  * performed on; it is not generally guaranteed that ids from one dictionary
809
944
  * can be used in another dictionary, even if it happens to work by
810
945
  * implementation detail.
946
+ *
947
+ * `Eq`/`Hash` and other comparisons are based on this handle value, and are
948
+ * only intended for ids produced by the same `ProfilesDictionary`.
811
949
  */
812
950
  typedef struct ddog_prof_Function2 *ddog_prof_FunctionId2;
813
951
 
952
+ /**
953
+ * A location keyed by `MappingId2`/`FunctionId2` handles.
954
+ *
955
+ * `Eq`/`Hash` comparisons use those handle values, so they are intended for
956
+ * data that comes from the same `ProfilesDictionary`.
957
+ */
814
958
  typedef struct ddog_prof_Location2 {
815
959
  ddog_prof_MappingId2 mapping;
816
960
  ddog_prof_FunctionId2 function;
@@ -1145,24 +1289,6 @@ typedef struct ddog_prof_StringId_Result {
1145
1289
  };
1146
1290
  } ddog_prof_StringId_Result;
1147
1291
 
1148
- /**
1149
- * A generic result type for when an operation may fail,
1150
- * but there's nothing to return in the case of success.
1151
- */
1152
- typedef enum ddog_VoidResult_Tag {
1153
- DDOG_VOID_RESULT_OK,
1154
- DDOG_VOID_RESULT_ERR,
1155
- } ddog_VoidResult_Tag;
1156
-
1157
- typedef struct ddog_VoidResult {
1158
- ddog_VoidResult_Tag tag;
1159
- union {
1160
- struct {
1161
- struct ddog_Error err;
1162
- };
1163
- };
1164
- } ddog_VoidResult;
1165
-
1166
1292
  typedef struct ddog_prof_Slice_ManagedStringId {
1167
1293
  /**
1168
1294
  * Should be non-null and suitably aligned for the underlying type. It is
@@ -2283,6 +2409,14 @@ typedef struct ddog_crasht_Slice_CInt {
2283
2409
  uintptr_t len;
2284
2410
  } ddog_crasht_Slice_CInt;
2285
2411
 
2412
+ /**
2413
+ * Represents an object that should only be referred to by its handle.
2414
+ * Do not access its member for any reason, only use the C API functions on this struct.
2415
+ */
2416
+ typedef struct ddog_crasht_Handle_StackTrace {
2417
+ struct ddog_crasht_StackTrace *inner;
2418
+ } ddog_crasht_Handle_StackTrace;
2419
+
2286
2420
  /**
2287
2421
  * A generic result type for when an operation may fail,
2288
2422
  * or may return <T> in case of success.
@@ -2369,6 +2503,10 @@ typedef struct ddog_crasht_OsInfo {
2369
2503
 
2370
2504
  typedef struct ddog_crasht_ProcInfo {
2371
2505
  uint32_t pid;
2506
+ /**
2507
+ * Optional crashing thread id; 0 means unset.
2508
+ */
2509
+ uint32_t tid;
2372
2510
  } ddog_crasht_ProcInfo;
2373
2511
 
2374
2512
  typedef struct ddog_crasht_SigInfo {
@@ -2384,14 +2522,6 @@ typedef struct ddog_crasht_Span {
2384
2522
  ddog_CharSlice thread_name;
2385
2523
  } ddog_crasht_Span;
2386
2524
 
2387
- /**
2388
- * Represents an object that should only be referred to by its handle.
2389
- * Do not access its member for any reason, only use the C API functions on this struct.
2390
- */
2391
- typedef struct ddog_crasht_Handle_StackTrace {
2392
- struct ddog_crasht_StackTrace *inner;
2393
- } ddog_crasht_Handle_StackTrace;
2394
-
2395
2525
  typedef struct ddog_crasht_ThreadData {
2396
2526
  bool crashed;
2397
2527
  ddog_CharSlice name;
@@ -2591,6 +2721,13 @@ void ddog_endpoint_set_timeout(struct ddog_Endpoint *endpoint, uint64_t millis);
2591
2721
 
2592
2722
  void ddog_endpoint_set_test_token(struct ddog_Endpoint *endpoint, ddog_CharSlice token);
2593
2723
 
2724
+ /**
2725
+ * Set whether to use the system DNS resolver when building the reqwest client.
2726
+ * If false, the default in-process resolver is used.
2727
+ */
2728
+ void ddog_endpoint_set_use_system_resolver(struct ddog_Endpoint *endpoint,
2729
+ bool use_system_resolver);
2730
+
2594
2731
  void ddog_endpoint_drop(struct ddog_Endpoint*);
2595
2732
 
2596
2733
  struct ddog_Option_U32 ddog_Option_U32_some(uint32_t v);
@@ -131,6 +131,45 @@ struct ddog_VoidResult ddog_crasht_init_without_receiver(struct ddog_crasht_Conf
131
131
  */
132
132
  struct ddog_crasht_Slice_CInt ddog_crasht_default_signals(void);
133
133
 
134
+ /**
135
+ * Report an unhandled exception as a crash event.
136
+ *
137
+ * This function sends a crash report for an unhandled exception detected
138
+ * by the runtime. It is intended to be called when the process is in a
139
+ * terminal state due to an unhandled exception.
140
+ *
141
+ * # Parameters
142
+ * - `error_type`: Optional type/class of the exception (e.g. "NullPointerException"). Pass empty
143
+ * CharSlice for unknown.
144
+ * - `error_message`: Optional error message. Pass empty CharSlice for no message.
145
+ * - `runtime_stack`: Stack trace from the runtime. Consumed by this call.
146
+ *
147
+ * If the crash-tracker has not been initialized, this function is a no-op.
148
+ *
149
+ * # Side effects
150
+ * This function disables the signal-based crash handler before performing
151
+ * any work. This means that if the process receives a fatal signal (SIGSEGV)
152
+ * during or after this call, the crashtracker will not produce a
153
+ * second crash report. The previous signal handler (if any) will still be
154
+ * chained.
155
+ *
156
+ * # Failure mode
157
+ * If a fatal signal occurs while this function is in progress, the calling
158
+ * process is in an unrecoverable state; the crashtracker cannot report the
159
+ * secondary fault and the caller's own signal handler (if any) will execute
160
+ * in a potentially corrupted context. Callers should treat this function as a
161
+ * terminal operation and exit shortly after it returns.
162
+ *
163
+ * # Safety
164
+ * Crash-tracking functions are not reentrant.
165
+ * No other crash-handler functions should be called concurrently.
166
+ * The `runtime_stack` handle must be valid and will be consumed.
167
+ */
168
+ DDOG_CHECK_RETURN
169
+ struct ddog_VoidResult ddog_crasht_report_unhandled_exception(ddog_CharSlice error_type,
170
+ ddog_CharSlice error_message,
171
+ struct ddog_crasht_Handle_StackTrace *runtime_stack);
172
+
134
173
  /**
135
174
  * Removes all existing additional tags
136
175
  * Expected to be used after a fork, to reset the additional tags on the child
@@ -646,12 +685,27 @@ DDOG_CHECK_RETURN
646
685
  struct ddog_VoidResult ddog_crasht_CrashInfoBuilder_with_message(struct ddog_crasht_Handle_CrashInfoBuilder *builder,
647
686
  ddog_CharSlice message);
648
687
 
688
+ /**
689
+ * # Safety
690
+ * The `builder` can be null, but if non-null it must point to a Builder made by this module,
691
+ * which has not previously been dropped.
692
+ * The CharSlice must be valid.
693
+ */
694
+ DDOG_CHECK_RETURN
695
+ struct ddog_VoidResult ddog_crasht_CrashInfoBuilder_with_thread_name(struct ddog_crasht_Handle_CrashInfoBuilder *builder,
696
+ ddog_CharSlice thread_name);
697
+
649
698
  /**
650
699
  * # Safety
651
700
  * The `builder` can be null, but if non-null it must point to a Builder made by this module,
652
701
  * which has not previously been dropped.
653
702
  * All arguments must be valid.
654
- * This method requires that the builder has a UUID, siginfo, and metadata set
703
+ * This method requires that the builder has `metadata` and `kind` set
704
+ * Applications can add `message` or `sig_info` to the builder to provide additional context.
705
+ * If set, the data will be used to derive the crash ping message in the order of
706
+ * - an explicit message set with `with_message`
707
+ * - sig_info set with `with_sig_info`
708
+ * - kind set with `with_kind`
655
709
  */
656
710
  DDOG_CHECK_RETURN
657
711
  struct ddog_VoidResult ddog_crasht_CrashInfoBuilder_upload_ping_to_endpoint(struct ddog_crasht_Handle_CrashInfoBuilder *builder,
@@ -173,7 +173,6 @@ void ddog_trace_exporter_free(struct ddog_TraceExporter *handle);
173
173
  */
174
174
  struct ddog_TraceExporterError *ddog_trace_exporter_send(const struct ddog_TraceExporter *handle,
175
175
  ddog_ByteSlice trace,
176
- uintptr_t trace_count,
177
176
  struct ddog_TraceExporterResponse **response_out);
178
177
 
179
178
  #ifdef __cplusplus
@@ -63,8 +63,12 @@ DDOG_CHECK_RETURN struct ddog_prof_Exporter_Slice_File ddog_prof_Exporter_Slice_
63
63
  * # Arguments
64
64
  * * `base_url` - Contains a URL with scheme, host, and port e.g. "https://agent:8126/".
65
65
  * * `timeout_ms` - Timeout in milliseconds. Use 0 for default timeout (3000ms).
66
+ * * `use_system_resolver` - If true, use the system DNS resolver (less fork-safe). If false, the
67
+ * default in-process resolver is used (fork-safe).
66
68
  */
67
- struct ddog_prof_Endpoint ddog_prof_Endpoint_agent(ddog_CharSlice base_url, uint64_t timeout_ms);
69
+ struct ddog_prof_Endpoint ddog_prof_Endpoint_agent(ddog_CharSlice base_url,
70
+ uint64_t timeout_ms,
71
+ bool use_system_resolver);
68
72
 
69
73
  /**
70
74
  * Creates an endpoint that uses the Datadog intake directly aka agentless.
@@ -72,10 +76,13 @@ struct ddog_prof_Endpoint ddog_prof_Endpoint_agent(ddog_CharSlice base_url, uint
72
76
  * * `site` - Contains a host and port e.g. "datadoghq.com".
73
77
  * * `api_key` - Contains the Datadog API key.
74
78
  * * `timeout_ms` - Timeout in milliseconds. Use 0 for default timeout (3000ms).
79
+ * * `use_system_resolver` - If true, use the system DNS resolver (less fork-safe). If false, the
80
+ * default in-process resolver is used (fork-safe).
75
81
  */
76
82
  struct ddog_prof_Endpoint ddog_prof_Endpoint_agentless(ddog_CharSlice site,
77
83
  ddog_CharSlice api_key,
78
- uint64_t timeout_ms);
84
+ uint64_t timeout_ms,
85
+ bool use_system_resolver);
79
86
 
80
87
  /**
81
88
  * Creates an endpoint that writes to a file.
@@ -99,7 +106,8 @@ struct ddog_prof_Endpoint ddog_Endpoint_file(ddog_CharSlice filename);
99
106
  * * `family` - Profile family, e.g. "ruby"
100
107
  * * `tags` - Tags to include with every profile reported by this exporter. It's also possible to
101
108
  * include profile-specific tags, see `additional_tags` on `profile_exporter_build`.
102
- * * `endpoint` - Configuration for reporting data
109
+ * * `endpoint` - Configuration for reporting data (includes use_system_resolver for
110
+ * Agent/Agentless).
103
111
  * # Safety
104
112
  * All pointers must refer to valid objects of the correct types.
105
113
  */
@@ -120,9 +128,6 @@ void ddog_prof_Exporter_drop(struct ddog_prof_ProfileExporter *exporter);
120
128
 
121
129
  /**
122
130
  * Builds a request and sends it, returning the HttpStatus.
123
- * This is a more efficient version of calling `ddog_prof_Exporter_Request_build`
124
- * followed by `ddog_prof_Exporter_send`, as it avoids exposing the intermediate
125
- * `Request` object.
126
131
  *
127
132
  * # Arguments
128
133
  * * `exporter` - Borrows the exporter.
@@ -196,6 +201,112 @@ bool ddog_CancellationToken_cancel(struct ddog_CancellationToken *cancel);
196
201
  */
197
202
  void ddog_CancellationToken_drop(struct ddog_CancellationToken *token);
198
203
 
204
+ /**
205
+ * Creates a new ExporterManager with a background worker thread.
206
+ *
207
+ * The ExporterManager provides asynchronous profle export capabilities through a
208
+ * background worker thread and bounded channel.
209
+ *
210
+ * # Arguments
211
+ * * `exporter` - Takes ownership of the ProfileExporter to use for sending profiles.
212
+ *
213
+ * # Safety
214
+ * The `exporter` must point to a valid ProfileExporter that has not been dropped.
215
+ */
216
+ DDOG_CHECK_RETURN
217
+ struct ddog_prof_Result_HandleExporterManager ddog_prof_ExporterManager_new(struct ddog_prof_ProfileExporter *exporter);
218
+
219
+ /**
220
+ * Queues a profile to be sent asynchronously by the background worker thread.
221
+ *
222
+ * **Important**: This function resets the profile and queues the *previous* profile data.
223
+ * After calling this, the profile will be empty and ready for new samples.
224
+ *
225
+ * # Arguments
226
+ * * `manager` - Borrows the ExporterManager.
227
+ * * `profile` - Takes ownership of the profile to send.
228
+ * * `files_to_compress_and_export` - Files to compress and attach to the profile.
229
+ * * `optional_additional_tags` - Additional tags to include with this profile.
230
+ * * `optional_process_tags` - Process-level tags as a comma-separated string.
231
+ * * `optional_internal_metadata_json` - Internal metadata as a JSON string.
232
+ * * `optional_info_json` - System info as a JSON string.
233
+ *
234
+ * # Safety
235
+ * All non-null arguments MUST have been created by APIs in this module.
236
+ */
237
+ DDOG_CHECK_RETURN
238
+ struct ddog_VoidResult ddog_prof_ExporterManager_queue(struct ddog_prof_Handle_ExporterManager *manager,
239
+ struct ddog_prof_EncodedProfile *profile,
240
+ struct ddog_prof_Exporter_Slice_File files_to_compress_and_export,
241
+ const struct ddog_Vec_Tag *optional_additional_tags,
242
+ const ddog_CharSlice *optional_process_tags,
243
+ const ddog_CharSlice *optional_internal_metadata_json,
244
+ const ddog_CharSlice *optional_info_json);
245
+
246
+ /**
247
+ * Aborts the manager, stopping the worker thread and returning inflight requests.
248
+ *
249
+ * **Note**: This consumes the manager - it cannot be used after calling abort.
250
+ *
251
+ * # Arguments
252
+ * * `manager` - Takes ownership of the ExporterManager.
253
+ *
254
+ * # Safety
255
+ * The `manager` must point to a valid ExporterManager that has not been dropped.
256
+ */
257
+ DDOG_CHECK_RETURN
258
+ struct ddog_VoidResult ddog_prof_ExporterManager_abort(struct ddog_prof_Handle_ExporterManager *manager);
259
+
260
+ /**
261
+ * Suspends the manager before forking (prefork).
262
+ *
263
+ * **Note**: This consumes the manager - it cannot be used after calling prefork.
264
+ *
265
+ * # Arguments
266
+ * * `manager` - Takes ownership of the ExporterManager.
267
+ *
268
+ * # Safety
269
+ * The `manager` must point to a valid ExporterManager that has not been dropped.
270
+ */
271
+ DDOG_CHECK_RETURN
272
+ struct ddog_VoidResult ddog_prof_ExporterManager_prefork(struct ddog_prof_Handle_ExporterManager *manager);
273
+
274
+ /**
275
+ * Creates a new manager in the child process after forking (postfork_child).
276
+ *
277
+ * Inflight requests from the parent are discarded in the child.
278
+ *
279
+ * # Arguments
280
+ * * `suspended` - Takes ownership of the suspended ExporterManager.
281
+ *
282
+ * # Safety
283
+ * The `suspended` must point to a valid suspended ExporterManager that has not been dropped.
284
+ */
285
+ DDOG_CHECK_RETURN
286
+ struct ddog_VoidResult ddog_prof_ExporterManager_postfork_child(struct ddog_prof_Handle_ExporterManager *suspended);
287
+
288
+ /**
289
+ * Creates a new manager in the parent process after forking (postfork_parent).
290
+ *
291
+ * Inflight requests from before the fork are re-queued in the new manager.
292
+ *
293
+ * # Arguments
294
+ * * `suspended` - Takes ownership of the suspended ExporterManager.
295
+ *
296
+ * # Safety
297
+ * The `suspended` must point to a valid suspended ExporterManager that has not been dropped.
298
+ */
299
+ DDOG_CHECK_RETURN
300
+ struct ddog_VoidResult ddog_prof_ExporterManager_postfork_parent(struct ddog_prof_Handle_ExporterManager *suspended);
301
+
302
+ /**
303
+ * # Safety
304
+ * The `manager` may be null, but if non-null the pointer must point to a
305
+ * valid `ExporterManager` object made by the Rust Global allocator that
306
+ * has not already been dropped.
307
+ */
308
+ void ddog_prof_ExporterManager_drop(struct ddog_prof_Handle_ExporterManager *manager);
309
+
199
310
  /**
200
311
  * Frees any error associated with the status, and replaces it with an OK.
201
312
  *
@@ -210,7 +321,7 @@ void ddog_prof_Status_drop(struct ddog_prof_Status *status);
210
321
  * `ddog_prof_Profile_drop` when you are done with the profile.
211
322
  *
212
323
  * # Arguments
213
- * * `sample_types`
324
+ * * `sample_types` - A slice of SampleType enums
214
325
  * * `period` - Optional period of the profile. Passing None/null translates to zero values.
215
326
  * * `start_time` - Optional time the profile started at. Passing None/null will use the current
216
327
  * time.
@@ -220,7 +331,7 @@ void ddog_prof_Status_drop(struct ddog_prof_Status *status);
220
331
  * and must have the correct number of elements for the slice.
221
332
  */
222
333
  DDOG_CHECK_RETURN
223
- struct ddog_prof_Profile_NewResult ddog_prof_Profile_new(struct ddog_prof_Slice_ValueType sample_types,
334
+ struct ddog_prof_Profile_NewResult ddog_prof_Profile_new(struct ddog_prof_Slice_SampleType sample_types,
224
335
  const struct ddog_prof_Period *period);
225
336
 
226
337
  /**
@@ -230,7 +341,7 @@ struct ddog_prof_Profile_NewResult ddog_prof_Profile_new(struct ddog_prof_Slice_
230
341
  * # Arguments
231
342
  * * `out` - a non-null pointer to an uninitialized Profile.
232
343
  * * `dict`: a valid reference to a ProfilesDictionary handle.
233
- * * `sample_types`
344
+ * * `sample_types` - A slice of SampleType enums
234
345
  * * `period` - Optional period of the profile. Passing None/null translates to zero values.
235
346
  *
236
347
  * # Safety
@@ -246,7 +357,7 @@ struct ddog_prof_Profile_NewResult ddog_prof_Profile_new(struct ddog_prof_Slice_
246
357
  DDOG_CHECK_RETURN
247
358
  struct ddog_prof_Status ddog_prof_Profile_with_dictionary(struct ddog_prof_Profile *out,
248
359
  const ddog_prof_ProfilesDictionaryHandle *dict,
249
- struct ddog_prof_Slice_ValueType sample_types,
360
+ struct ddog_prof_Slice_SampleType sample_types,
250
361
  const struct ddog_prof_Period *period);
251
362
 
252
363
  /**
@@ -254,7 +365,7 @@ struct ddog_prof_Status ddog_prof_Profile_with_dictionary(struct ddog_prof_Profi
254
365
  * TODO: @ivoanjo Should this take a `*mut ManagedStringStorage` like Profile APIs do?
255
366
  */
256
367
  DDOG_CHECK_RETURN
257
- struct ddog_prof_Profile_NewResult ddog_prof_Profile_with_string_storage(struct ddog_prof_Slice_ValueType sample_types,
368
+ struct ddog_prof_Profile_NewResult ddog_prof_Profile_with_string_storage(struct ddog_prof_Slice_SampleType sample_types,
258
369
  const struct ddog_prof_Period *period,
259
370
  struct ddog_prof_ManagedStringStorage string_storage);
260
371
 
@@ -826,6 +937,11 @@ struct ddog_prof_Status ddog_prof_ProfilesDictionary_insert_mapping(ddog_prof_Ma
826
937
  /**
827
938
  * Inserts a UTF-8 string into the dictionary string table.
828
939
  *
940
+ * Copies the string into the internal buffer--strings are arena allocated
941
+ * and not individually allocated. On success, the [`StringId2`] written to
942
+ * the `string_id` out parameter is valid as long as this dictionary is alive.
943
+ * It should only be passed back to the dictionary that created it.
944
+ *
829
945
  * # Safety
830
946
  *
831
947
  * - `string_id` must be non-null and valid for writes of `StringId`.
@@ -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: 26.0.0
11
+ Version: 28.0.0
12
12
  Requires:
13
13
  Libs: -L${libdir} -ldatadog_profiling -Wl,-rpath,${libdir}
14
14
  Libs.private: