libdatadog 25.0.0.1.0-aarch64-linux → 27.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 (36) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libdatadog/version.rb +1 -1
  3. data/lib/libdatadog.rb +6 -0
  4. data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE-3rdparty.yml +11379 -5795
  5. data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/common.h +277 -184
  6. data/vendor/{libdatadog-25.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-27.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/crashtracker.h +11 -1
  7. data/vendor/{libdatadog-25.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-27.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/profiling.h +141 -63
  8. data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  9. data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  10. data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE-3rdparty.yml +11379 -5795
  11. data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/common.h +277 -184
  12. data/vendor/{libdatadog-25.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-27.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/crashtracker.h +11 -1
  13. data/vendor/{libdatadog-25.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-27.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/profiling.h +141 -63
  14. data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  15. data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  16. metadata +33 -33
  17. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE +0 -0
  18. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/NOTICE +0 -0
  19. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/bin/libdatadog-crashtracking-receiver +0 -0
  20. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/blazesym.h +0 -0
  21. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/data-pipeline.h +0 -0
  22. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/ddsketch.h +0 -0
  23. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/ffe.h +0 -0
  24. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/library-config.h +0 -0
  25. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/log.h +0 -0
  26. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/telemetry.h +0 -0
  27. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE +0 -0
  28. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/NOTICE +0 -0
  29. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  30. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/blazesym.h +0 -0
  31. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/data-pipeline.h +0 -0
  32. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/ddsketch.h +0 -0
  33. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/ffe.h +0 -0
  34. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/library-config.h +0 -0
  35. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/log.h +0 -0
  36. /data/vendor/{libdatadog-25.0.0 → libdatadog-27.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/telemetry.h +0 -0
@@ -257,8 +257,98 @@ typedef struct ddog_Vec_Tag_ParseResult {
257
257
  struct ddog_Error *error_message;
258
258
  } ddog_Vec_Tag_ParseResult;
259
259
 
260
+ typedef struct ddog_prof_StringHeader *ddog_prof_StringId2;
261
+ typedef struct ddog_prof_Mapping2 *ddog_prof_MappingId2;
262
+ typedef struct ddog_prof_Function2 *ddog_prof_FunctionId2;
263
+
260
264
  #define ddog_prof_Set_SIZE_HINT (1024 * 1024)
261
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
+
262
352
  typedef enum ddog_prof_Utf8Option {
263
353
  /**
264
354
  * The string is assumed to be valid UTF-8. If it's not, the behavior
@@ -276,8 +366,12 @@ typedef enum ddog_prof_Utf8Option {
276
366
  DDOG_PROF_UTF8_OPTION_VALIDATE,
277
367
  } ddog_prof_Utf8Option;
278
368
 
369
+ typedef struct ddog_OpaqueCancellationToken ddog_OpaqueCancellationToken;
370
+
279
371
  typedef struct ddog_prof_EncodedProfile ddog_prof_EncodedProfile;
280
372
 
373
+ typedef struct ddog_prof_ExporterManager ddog_prof_ExporterManager;
374
+
281
375
  typedef struct ddog_prof_Exporter ddog_prof_Exporter;
282
376
 
283
377
  /**
@@ -291,8 +385,6 @@ typedef struct ddog_prof_Exporter ddog_prof_Exporter;
291
385
  */
292
386
  typedef struct ddog_prof_ProfilesDictionary ddog_prof_ProfilesDictionary;
293
387
 
294
- typedef struct ddog_prof_Exporter_Request ddog_prof_Exporter_Request;
295
-
296
388
  typedef struct ddog_Slice_U8 {
297
389
  /**
298
390
  * Should be non-null and suitably aligned for the underlying type. It is
@@ -337,17 +429,21 @@ typedef enum ddog_prof_Endpoint_Tag {
337
429
  DDOG_PROF_ENDPOINT_FILE,
338
430
  } ddog_prof_Endpoint_Tag;
339
431
 
432
+ typedef struct ddog_prof_Endpoint_ddog_prof_Agent_Body {
433
+ ddog_CharSlice _0;
434
+ uint64_t _1;
435
+ } ddog_prof_Endpoint_ddog_prof_Agent_Body;
436
+
340
437
  typedef struct ddog_prof_Endpoint_ddog_prof_Agentless_Body {
341
438
  ddog_CharSlice _0;
342
439
  ddog_CharSlice _1;
440
+ uint64_t _2;
343
441
  } ddog_prof_Endpoint_ddog_prof_Agentless_Body;
344
442
 
345
443
  typedef struct ddog_prof_Endpoint {
346
444
  ddog_prof_Endpoint_Tag tag;
347
445
  union {
348
- struct {
349
- ddog_CharSlice agent;
350
- };
446
+ ddog_prof_Endpoint_ddog_prof_Agent_Body AGENT;
351
447
  ddog_prof_Endpoint_ddog_prof_Agentless_Body AGENTLESS;
352
448
  struct {
353
449
  ddog_CharSlice file;
@@ -384,52 +480,30 @@ typedef struct ddog_prof_ProfileExporter_Result {
384
480
  };
385
481
  } ddog_prof_ProfileExporter_Result;
386
482
 
387
- /**
388
- * A generic result type for when an operation may fail,
389
- * but there's nothing to return in the case of success.
390
- */
391
- typedef enum ddog_VoidResult_Tag {
392
- DDOG_VOID_RESULT_OK,
393
- DDOG_VOID_RESULT_ERR,
394
- } ddog_VoidResult_Tag;
395
-
396
- typedef struct ddog_VoidResult {
397
- ddog_VoidResult_Tag tag;
398
- union {
399
- struct {
400
- struct ddog_Error err;
401
- };
402
- };
403
- } ddog_VoidResult;
404
-
405
- /**
406
- * Represents an object that should only be referred to by its handle.
407
- * Do not access its member for any reason, only use the C API functions on this struct.
408
- */
409
- typedef struct ddog_prof_Request {
410
- struct ddog_prof_Exporter_Request *inner;
411
- } ddog_prof_Request;
483
+ typedef struct ddog_HttpStatus {
484
+ uint16_t code;
485
+ } ddog_HttpStatus;
412
486
 
413
487
  /**
414
488
  * A generic result type for when an operation may fail,
415
489
  * or may return <T> in case of success.
416
490
  */
417
- typedef enum ddog_prof_Request_Result_Tag {
418
- DDOG_PROF_REQUEST_RESULT_OK_HANDLE_REQUEST,
419
- DDOG_PROF_REQUEST_RESULT_ERR_HANDLE_REQUEST,
420
- } ddog_prof_Request_Result_Tag;
491
+ typedef enum ddog_prof_Result_HttpStatus_Tag {
492
+ DDOG_PROF_RESULT_HTTP_STATUS_OK_HTTP_STATUS,
493
+ DDOG_PROF_RESULT_HTTP_STATUS_ERR_HTTP_STATUS,
494
+ } ddog_prof_Result_HttpStatus_Tag;
421
495
 
422
- typedef struct ddog_prof_Request_Result {
423
- ddog_prof_Request_Result_Tag tag;
496
+ typedef struct ddog_prof_Result_HttpStatus {
497
+ ddog_prof_Result_HttpStatus_Tag tag;
424
498
  union {
425
499
  struct {
426
- struct ddog_prof_Request ok;
500
+ struct ddog_HttpStatus ok;
427
501
  };
428
502
  struct {
429
503
  struct ddog_Error err;
430
504
  };
431
505
  };
432
- } ddog_prof_Request_Result;
506
+ } ddog_prof_Result_HttpStatus;
433
507
 
434
508
  /**
435
509
  * Represents an object that should only be referred to by its handle.
@@ -439,40 +513,62 @@ typedef struct ddog_prof_EncodedProfile {
439
513
  struct ddog_prof_EncodedProfile *inner;
440
514
  } ddog_prof_EncodedProfile;
441
515
 
442
- typedef struct ddog_HttpStatus {
443
- uint16_t code;
444
- } ddog_HttpStatus;
516
+ typedef struct ddog_OpaqueCancellationToken ddog_prof_TokioCancellationToken;
517
+
518
+ /**
519
+ * Represents an object that should only be referred to by its handle.
520
+ * Do not access its member for any reason, only use the C API functions on this struct.
521
+ */
522
+ typedef struct ddog_CancellationToken {
523
+ ddog_prof_TokioCancellationToken *inner;
524
+ } ddog_CancellationToken;
525
+
526
+ /**
527
+ * Represents an object that should only be referred to by its handle.
528
+ * Do not access its member for any reason, only use the C API functions on this struct.
529
+ */
530
+ typedef struct ddog_prof_Handle_ExporterManager {
531
+ struct ddog_prof_ExporterManager *inner;
532
+ } ddog_prof_Handle_ExporterManager;
445
533
 
446
534
  /**
447
535
  * A generic result type for when an operation may fail,
448
536
  * or may return <T> in case of success.
449
537
  */
450
- typedef enum ddog_prof_Result_HttpStatus_Tag {
451
- DDOG_PROF_RESULT_HTTP_STATUS_OK_HTTP_STATUS,
452
- DDOG_PROF_RESULT_HTTP_STATUS_ERR_HTTP_STATUS,
453
- } ddog_prof_Result_HttpStatus_Tag;
538
+ typedef enum ddog_prof_Result_HandleExporterManager_Tag {
539
+ DDOG_PROF_RESULT_HANDLE_EXPORTER_MANAGER_OK_HANDLE_EXPORTER_MANAGER,
540
+ DDOG_PROF_RESULT_HANDLE_EXPORTER_MANAGER_ERR_HANDLE_EXPORTER_MANAGER,
541
+ } ddog_prof_Result_HandleExporterManager_Tag;
454
542
 
455
- typedef struct ddog_prof_Result_HttpStatus {
456
- ddog_prof_Result_HttpStatus_Tag tag;
543
+ typedef struct ddog_prof_Result_HandleExporterManager {
544
+ ddog_prof_Result_HandleExporterManager_Tag tag;
457
545
  union {
458
546
  struct {
459
- struct ddog_HttpStatus ok;
547
+ struct ddog_prof_Handle_ExporterManager ok;
460
548
  };
461
549
  struct {
462
550
  struct ddog_Error err;
463
551
  };
464
552
  };
465
- } ddog_prof_Result_HttpStatus;
466
-
467
- typedef struct ddog_OpaqueCancellationToken ddog_prof_TokioCancellationToken;
553
+ } ddog_prof_Result_HandleExporterManager;
468
554
 
469
555
  /**
470
- * Represents an object that should only be referred to by its handle.
471
- * Do not access its member for any reason, only use the C API functions on this struct.
556
+ * A generic result type for when an operation may fail,
557
+ * but there's nothing to return in the case of success.
472
558
  */
473
- typedef struct ddog_CancellationToken {
474
- ddog_prof_TokioCancellationToken *inner;
475
- } ddog_CancellationToken;
559
+ typedef enum ddog_VoidResult_Tag {
560
+ DDOG_VOID_RESULT_OK,
561
+ DDOG_VOID_RESULT_ERR,
562
+ } ddog_VoidResult_Tag;
563
+
564
+ typedef struct ddog_VoidResult {
565
+ ddog_VoidResult_Tag tag;
566
+ union {
567
+ struct {
568
+ struct ddog_Error err;
569
+ };
570
+ };
571
+ } ddog_VoidResult;
476
572
 
477
573
  /**
478
574
  * Represents the result of an operation that either succeeds with no value, or fails with an
@@ -486,38 +582,36 @@ typedef struct ddog_CancellationToken {
486
582
  * A `ProfileStatus` owns its error message data. When a `ProfileStatus` with an error is
487
583
  * created, it takes ownership of the error string (either as a static reference or heap
488
584
  * allocation). The caller is responsible for eventually calling [`ddog_prof_Status_drop`] to
489
- * free any heap-allocated memory. This is safe to call on OK as well; it does nothing.
585
+ * free any heap-allocated memory. This is safe to call on OK as well.
490
586
  *
491
587
  * # FFI Safety
492
588
  *
493
- * This type is `#[repr(C)]` and safe to pass across FFI boundaries. The C side must treat
494
- * this as an opaque struct and use the provided FFI functions to inspect and drop it.
589
+ * This type is `#[repr(C)]` and safe to pass across FFI boundaries. The C side must treat the
590
+ * `.flags` as opaque and use API functions; the `.err` field is guaranteed to be null when the
591
+ * `ProfileStatus` is OK, and on Err it will be non-null pointer to a UTF8 encoded string which
592
+ * has a null terminator.
495
593
  */
496
594
  typedef struct ddog_prof_Status {
497
595
  /**
498
596
  * Bitflags indicating the storage type of the error message.
499
597
  * This is only meaningful when `err` is non-null. When `err` is
500
- * null (indicating OK), this field is ignored (but typically 0).
501
- * - `FLAG_STATIC` (0): Error message points to static data that must not be freed.
502
- * - `FLAG_ALLOCATED` (1): Error message is heap-allocated and owned by this `ProfileStatus`.
503
- * Must be freed via [`ddog_prof_Status_drop`].
598
+ * null (indicating OK), this field SHOULD be zero. Currently, only one
599
+ * bit is used `IS_ALLOCATED_MASK`, which determines whether the error
600
+ * message is owned or statically borrowed.
601
+ * In the future, we may store error codes in here as well.
504
602
  */
505
603
  size_t flags;
506
604
  /**
507
605
  * Pointer to a null-terminated UTF-8 error message string.
508
- * - If null: indicates OK (success). Check this from C to determine if the operation
509
- * succeeded.
510
- * - If non-null and `flags == FLAG_STATIC`: points to static data with lifetime `'static`.
511
- * Must not be freed.
512
- * - If non-null and `flags == FLAG_ALLOCATED`: points to heap-allocated data owned by this
513
- * `ProfileStatus`. Must be freed by [`ddog_prof_Status_drop`].
606
+ * - If null this indicates OK (success). This is an FFI guarantee.
607
+ * - If non-null and allocated bit is clear: points to static data with `'static` lifetime.
608
+ * - If non-null and allocated bit is set: points to owned heap-allocated data.
514
609
  *
515
610
  * # Safety Invariant
516
611
  *
517
- * When non-null, `err` must point to a valid, null-terminated C
518
- * string in UTF-8 encoding. The pointer remains valid for the
519
- * lifetime of this `ProfileStatus` or until [`ddog_prof_Status_drop`]
520
- * is called.
612
+ * When non-null, `err` must point to a valid, null-terminated C string in UTF-8 encoding.
613
+ * The pointer remains valid for the lifetime of this `ProfileStatus` or until
614
+ * [`ddog_prof_Status_drop`] is called.
521
615
  */
522
616
  const char *err;
523
617
  } ddog_prof_Status;
@@ -557,27 +651,22 @@ typedef struct ddog_prof_Profile_NewResult {
557
651
  };
558
652
  } ddog_prof_Profile_NewResult;
559
653
 
560
- typedef struct ddog_prof_ValueType {
561
- ddog_CharSlice type_;
562
- ddog_CharSlice unit;
563
- } ddog_prof_ValueType;
564
-
565
- typedef struct ddog_prof_Slice_ValueType {
654
+ typedef struct ddog_prof_Slice_SampleType {
566
655
  /**
567
656
  * Should be non-null and suitably aligned for the underlying type. It is
568
657
  * allowed but not recommended for the pointer to be null when the len is
569
658
  * zero.
570
659
  */
571
- const struct ddog_prof_ValueType *ptr;
660
+ const enum ddog_prof_SampleType *ptr;
572
661
  /**
573
662
  * The number of elements (not bytes) that `.ptr` points to. Must be less
574
663
  * than or equal to [isize::MAX].
575
664
  */
576
665
  uintptr_t len;
577
- } ddog_prof_Slice_ValueType;
666
+ } ddog_prof_Slice_SampleType;
578
667
 
579
668
  typedef struct ddog_prof_Period {
580
- struct ddog_prof_ValueType type_;
669
+ enum ddog_prof_SampleType sample_type;
581
670
  int64_t value;
582
671
  } ddog_prof_Period;
583
672
 
@@ -1394,40 +1483,12 @@ typedef enum ddog_ConfigurationOrigin {
1394
1483
  DDOG_CONFIGURATION_ORIGIN_CALCULATED,
1395
1484
  } ddog_ConfigurationOrigin;
1396
1485
 
1397
- typedef enum ddog_TelemetryWorkerBuilderEndpointProperty {
1398
- DDOG_TELEMETRY_WORKER_BUILDER_ENDPOINT_PROPERTY_CONFIG_ENDPOINT,
1399
- } ddog_TelemetryWorkerBuilderEndpointProperty;
1400
-
1401
- typedef enum ddog_TelemetryWorkerBuilderStrProperty {
1402
- DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_APPLICATION_SERVICE_VERSION,
1403
- DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_APPLICATION_ENV,
1404
- DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_APPLICATION_RUNTIME_NAME,
1405
- DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_APPLICATION_RUNTIME_VERSION,
1406
- DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_APPLICATION_RUNTIME_PATCHES,
1407
- DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_HOST_CONTAINER_ID,
1408
- DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_HOST_OS,
1409
- DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_HOST_KERNEL_NAME,
1410
- DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_HOST_KERNEL_RELEASE,
1411
- DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_HOST_KERNEL_VERSION,
1412
- DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_RUNTIME_ID,
1413
- } ddog_TelemetryWorkerBuilderStrProperty;
1414
-
1415
- typedef enum ddog_TelemetryWorkerBuilderBoolProperty {
1416
- DDOG_TELEMETRY_WORKER_BUILDER_BOOL_PROPERTY_CONFIG_TELEMETRY_DEBUG_LOGGING_ENABLED,
1417
- } ddog_TelemetryWorkerBuilderBoolProperty;
1418
-
1419
1486
  typedef enum ddog_LogLevel {
1420
1487
  DDOG_LOG_LEVEL_ERROR,
1421
1488
  DDOG_LOG_LEVEL_WARN,
1422
1489
  DDOG_LOG_LEVEL_DEBUG,
1423
1490
  } ddog_LogLevel;
1424
1491
 
1425
- typedef enum ddog_MetricType {
1426
- DDOG_METRIC_TYPE_GAUGE,
1427
- DDOG_METRIC_TYPE_COUNT,
1428
- DDOG_METRIC_TYPE_DISTRIBUTION,
1429
- } ddog_MetricType;
1430
-
1431
1492
  typedef enum ddog_MetricNamespace {
1432
1493
  DDOG_METRIC_NAMESPACE_TRACERS,
1433
1494
  DDOG_METRIC_NAMESPACE_PROFILERS,
@@ -1442,6 +1503,34 @@ typedef enum ddog_MetricNamespace {
1442
1503
  DDOG_METRIC_NAMESPACE_SIDECAR,
1443
1504
  } ddog_MetricNamespace;
1444
1505
 
1506
+ typedef enum ddog_MetricType {
1507
+ DDOG_METRIC_TYPE_GAUGE,
1508
+ DDOG_METRIC_TYPE_COUNT,
1509
+ DDOG_METRIC_TYPE_DISTRIBUTION,
1510
+ } ddog_MetricType;
1511
+
1512
+ typedef enum ddog_TelemetryWorkerBuilderBoolProperty {
1513
+ DDOG_TELEMETRY_WORKER_BUILDER_BOOL_PROPERTY_CONFIG_TELEMETRY_DEBUG_LOGGING_ENABLED,
1514
+ } ddog_TelemetryWorkerBuilderBoolProperty;
1515
+
1516
+ typedef enum ddog_TelemetryWorkerBuilderEndpointProperty {
1517
+ DDOG_TELEMETRY_WORKER_BUILDER_ENDPOINT_PROPERTY_CONFIG_ENDPOINT,
1518
+ } ddog_TelemetryWorkerBuilderEndpointProperty;
1519
+
1520
+ typedef enum ddog_TelemetryWorkerBuilderStrProperty {
1521
+ DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_APPLICATION_SERVICE_VERSION,
1522
+ DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_APPLICATION_ENV,
1523
+ DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_APPLICATION_RUNTIME_NAME,
1524
+ DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_APPLICATION_RUNTIME_VERSION,
1525
+ DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_APPLICATION_RUNTIME_PATCHES,
1526
+ DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_HOST_CONTAINER_ID,
1527
+ DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_HOST_OS,
1528
+ DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_HOST_KERNEL_NAME,
1529
+ DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_HOST_KERNEL_RELEASE,
1530
+ DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_HOST_KERNEL_VERSION,
1531
+ DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_RUNTIME_ID,
1532
+ } ddog_TelemetryWorkerBuilderStrProperty;
1533
+
1445
1534
  typedef struct ddog_TelemetryWorkerBuilder ddog_TelemetryWorkerBuilder;
1446
1535
 
1447
1536
  /**
@@ -1719,20 +1808,6 @@ typedef struct ddog_Result_TracerMemfdHandle {
1719
1808
  };
1720
1809
  } ddog_Result_TracerMemfdHandle;
1721
1810
 
1722
- /**
1723
- * Target for standard stream output.
1724
- */
1725
- typedef enum ddog_StdTarget {
1726
- /**
1727
- * Write to standard output (stdout).
1728
- */
1729
- DDOG_STD_TARGET_OUT,
1730
- /**
1731
- * Write to standard error (stderr).
1732
- */
1733
- DDOG_STD_TARGET_ERR,
1734
- } ddog_StdTarget;
1735
-
1736
1811
  /**
1737
1812
  * Log level for filtering log events.
1738
1813
  */
@@ -1769,6 +1844,20 @@ typedef enum ddog_LogEventLevel {
1769
1844
  DDOG_LOG_EVENT_LEVEL_ERROR = 4,
1770
1845
  } ddog_LogEventLevel;
1771
1846
 
1847
+ /**
1848
+ * Target for standard stream output.
1849
+ */
1850
+ typedef enum ddog_StdTarget {
1851
+ /**
1852
+ * Write to standard output (stdout).
1853
+ */
1854
+ DDOG_STD_TARGET_OUT,
1855
+ /**
1856
+ * Write to standard error (stderr).
1857
+ */
1858
+ DDOG_STD_TARGET_ERR,
1859
+ } ddog_StdTarget;
1860
+
1772
1861
  /**
1773
1862
  * Configuration for standard stream output.
1774
1863
  */
@@ -1822,6 +1911,17 @@ typedef struct ddsketch_Handle_DDSketch {
1822
1911
  struct ddsketch_DDSketch *inner;
1823
1912
  } ddsketch_Handle_DDSketch;
1824
1913
 
1914
+ typedef enum ddog_ffe_ErrorCode {
1915
+ DDOG_FFE_ERROR_CODE_OK,
1916
+ DDOG_FFE_ERROR_CODE_TYPE_MISMATCH,
1917
+ DDOG_FFE_ERROR_CODE_PARSE_ERROR,
1918
+ DDOG_FFE_ERROR_CODE_FLAG_NOT_FOUND,
1919
+ DDOG_FFE_ERROR_CODE_TARGETING_KEY_MISSING,
1920
+ DDOG_FFE_ERROR_CODE_INVALID_CONTEXT,
1921
+ DDOG_FFE_ERROR_CODE_PROVIDER_NOT_READY,
1922
+ DDOG_FFE_ERROR_CODE_GENERAL,
1923
+ } ddog_ffe_ErrorCode;
1924
+
1825
1925
  typedef enum ddog_ffe_ExpectedFlagType {
1826
1926
  DDOG_FFE_EXPECTED_FLAG_TYPE_STRING,
1827
1927
  DDOG_FFE_EXPECTED_FLAG_TYPE_INTEGER,
@@ -1841,17 +1941,6 @@ typedef enum ddog_ffe_Reason {
1841
1941
  DDOG_FFE_REASON_ERROR,
1842
1942
  } ddog_ffe_Reason;
1843
1943
 
1844
- typedef enum ddog_ffe_ErrorCode {
1845
- DDOG_FFE_ERROR_CODE_OK,
1846
- DDOG_FFE_ERROR_CODE_TYPE_MISMATCH,
1847
- DDOG_FFE_ERROR_CODE_PARSE_ERROR,
1848
- DDOG_FFE_ERROR_CODE_FLAG_NOT_FOUND,
1849
- DDOG_FFE_ERROR_CODE_TARGETING_KEY_MISSING,
1850
- DDOG_FFE_ERROR_CODE_INVALID_CONTEXT,
1851
- DDOG_FFE_ERROR_CODE_PROVIDER_NOT_READY,
1852
- DDOG_FFE_ERROR_CODE_GENERAL,
1853
- } ddog_ffe_ErrorCode;
1854
-
1855
1944
  /**
1856
1945
  * Remote configuration for the feature flagging client. It's a central piece that defines client
1857
1946
  * behavior.
@@ -2032,28 +2121,37 @@ typedef struct ddog_ffe_AttributePair {
2032
2121
  struct ddog_ffe_AttributeValue value;
2033
2122
  } ddog_ffe_AttributePair;
2034
2123
 
2124
+ typedef enum ddog_crasht_BuildIdType {
2125
+ DDOG_CRASHT_BUILD_ID_TYPE_GNU,
2126
+ DDOG_CRASHT_BUILD_ID_TYPE_GO,
2127
+ DDOG_CRASHT_BUILD_ID_TYPE_PDB,
2128
+ DDOG_CRASHT_BUILD_ID_TYPE_SHA1,
2129
+ } ddog_crasht_BuildIdType;
2130
+
2035
2131
  /**
2036
- * Stacktrace collection occurs in the context of a crashing process.
2037
- * If the stack is sufficiently corruputed, it is possible (but unlikely),
2038
- * for stack trace collection itself to crash.
2039
- * We recommend fully enabling stacktrace collection, but having an environment
2040
- * variable to allow downgrading the collector.
2132
+ * Result type for runtime callback registration
2041
2133
  */
2042
- typedef enum ddog_crasht_StacktraceCollection {
2043
- /**
2044
- * Stacktrace collection occurs in the
2045
- */
2046
- DDOG_CRASHT_STACKTRACE_COLLECTION_DISABLED,
2047
- DDOG_CRASHT_STACKTRACE_COLLECTION_WITHOUT_SYMBOLS,
2048
- /**
2049
- * This option uses `backtrace::resolve_frame_unsynchronized()` to gather symbol information
2050
- * and also unwind inlined functions. Enabling this feature will not only provide symbolic
2051
- * details, but may also yield additional or less stack frames compared to other
2052
- * configurations.
2053
- */
2054
- DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_INPROCESS_SYMBOLS,
2055
- DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_SYMBOLS_IN_RECEIVER,
2056
- } ddog_crasht_StacktraceCollection;
2134
+ typedef enum ddog_crasht_CallbackResult {
2135
+ DDOG_CRASHT_CALLBACK_RESULT_OK,
2136
+ DDOG_CRASHT_CALLBACK_RESULT_ERROR,
2137
+ } ddog_crasht_CallbackResult;
2138
+
2139
+ typedef enum ddog_crasht_DemangleOptions {
2140
+ DDOG_CRASHT_DEMANGLE_OPTIONS_COMPLETE,
2141
+ DDOG_CRASHT_DEMANGLE_OPTIONS_NAME_ONLY,
2142
+ } ddog_crasht_DemangleOptions;
2143
+
2144
+ typedef enum ddog_crasht_ErrorKind {
2145
+ DDOG_CRASHT_ERROR_KIND_PANIC,
2146
+ DDOG_CRASHT_ERROR_KIND_UNHANDLED_EXCEPTION,
2147
+ DDOG_CRASHT_ERROR_KIND_UNIX_SIGNAL,
2148
+ } ddog_crasht_ErrorKind;
2149
+
2150
+ typedef enum ddog_crasht_FileType {
2151
+ DDOG_CRASHT_FILE_TYPE_APK,
2152
+ DDOG_CRASHT_FILE_TYPE_ELF,
2153
+ DDOG_CRASHT_FILE_TYPE_PE,
2154
+ } ddog_crasht_FileType;
2057
2155
 
2058
2156
  /**
2059
2157
  * This enum represents operations a the tracked library might be engaged in.
@@ -2078,12 +2176,6 @@ typedef enum ddog_crasht_OpTypes {
2078
2176
  DDOG_CRASHT_OP_TYPES_SIZE,
2079
2177
  } ddog_crasht_OpTypes;
2080
2178
 
2081
- typedef enum ddog_crasht_ErrorKind {
2082
- DDOG_CRASHT_ERROR_KIND_PANIC,
2083
- DDOG_CRASHT_ERROR_KIND_UNHANDLED_EXCEPTION,
2084
- DDOG_CRASHT_ERROR_KIND_UNIX_SIGNAL,
2085
- } ddog_crasht_ErrorKind;
2086
-
2087
2179
  /**
2088
2180
  * See https://man7.org/linux/man-pages/man2/sigaction.2.html
2089
2181
  * MUST REMAIN IN SYNC WITH THE ENUM IN emit_sigcodes.c
@@ -2156,31 +2248,28 @@ typedef enum ddog_crasht_SignalNames {
2156
2248
  DDOG_CRASHT_SIGNAL_NAMES_UNKNOWN,
2157
2249
  } ddog_crasht_SignalNames;
2158
2250
 
2159
- typedef enum ddog_crasht_BuildIdType {
2160
- DDOG_CRASHT_BUILD_ID_TYPE_GNU,
2161
- DDOG_CRASHT_BUILD_ID_TYPE_GO,
2162
- DDOG_CRASHT_BUILD_ID_TYPE_PDB,
2163
- DDOG_CRASHT_BUILD_ID_TYPE_SHA1,
2164
- } ddog_crasht_BuildIdType;
2165
-
2166
- typedef enum ddog_crasht_FileType {
2167
- DDOG_CRASHT_FILE_TYPE_APK,
2168
- DDOG_CRASHT_FILE_TYPE_ELF,
2169
- DDOG_CRASHT_FILE_TYPE_PE,
2170
- } ddog_crasht_FileType;
2171
-
2172
- typedef enum ddog_crasht_DemangleOptions {
2173
- DDOG_CRASHT_DEMANGLE_OPTIONS_COMPLETE,
2174
- DDOG_CRASHT_DEMANGLE_OPTIONS_NAME_ONLY,
2175
- } ddog_crasht_DemangleOptions;
2176
-
2177
2251
  /**
2178
- * Result type for runtime callback registration
2252
+ * Stacktrace collection occurs in the context of a crashing process.
2253
+ * If the stack is sufficiently corruputed, it is possible (but unlikely),
2254
+ * for stack trace collection itself to crash.
2255
+ * We recommend fully enabling stacktrace collection, but having an environment
2256
+ * variable to allow downgrading the collector.
2179
2257
  */
2180
- typedef enum ddog_crasht_CallbackResult {
2181
- DDOG_CRASHT_CALLBACK_RESULT_OK,
2182
- DDOG_CRASHT_CALLBACK_RESULT_ERROR,
2183
- } ddog_crasht_CallbackResult;
2258
+ typedef enum ddog_crasht_StacktraceCollection {
2259
+ /**
2260
+ * Stacktrace collection occurs in the
2261
+ */
2262
+ DDOG_CRASHT_STACKTRACE_COLLECTION_DISABLED,
2263
+ DDOG_CRASHT_STACKTRACE_COLLECTION_WITHOUT_SYMBOLS,
2264
+ /**
2265
+ * This option uses `backtrace::resolve_frame_unsynchronized()` to gather symbol information
2266
+ * and also unwind inlined functions. Enabling this feature will not only provide symbolic
2267
+ * details, but may also yield additional or less stack frames compared to other
2268
+ * configurations.
2269
+ */
2270
+ DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_INPROCESS_SYMBOLS,
2271
+ DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_SYMBOLS_IN_RECEIVER,
2272
+ } ddog_crasht_StacktraceCollection;
2184
2273
 
2185
2274
  typedef struct ddog_crasht_CrashInfo ddog_crasht_CrashInfo;
2186
2275
 
@@ -2392,6 +2481,10 @@ typedef struct ddog_crasht_OsInfo {
2392
2481
 
2393
2482
  typedef struct ddog_crasht_ProcInfo {
2394
2483
  uint32_t pid;
2484
+ /**
2485
+ * Optional crashing thread id; 0 means unset.
2486
+ */
2487
+ uint32_t tid;
2395
2488
  } ddog_crasht_ProcInfo;
2396
2489
 
2397
2490
  typedef struct ddog_crasht_SigInfo {
@@ -646,12 +646,22 @@ DDOG_CHECK_RETURN
646
646
  struct ddog_VoidResult ddog_crasht_CrashInfoBuilder_with_message(struct ddog_crasht_Handle_CrashInfoBuilder *builder,
647
647
  ddog_CharSlice message);
648
648
 
649
+ /**
650
+ * # Safety
651
+ * The `builder` can be null, but if non-null it must point to a Builder made by this module,
652
+ * which has not previously been dropped.
653
+ * The CharSlice must be valid.
654
+ */
655
+ DDOG_CHECK_RETURN
656
+ struct ddog_VoidResult ddog_crasht_CrashInfoBuilder_with_thread_name(struct ddog_crasht_Handle_CrashInfoBuilder *builder,
657
+ ddog_CharSlice thread_name);
658
+
649
659
  /**
650
660
  * # Safety
651
661
  * The `builder` can be null, but if non-null it must point to a Builder made by this module,
652
662
  * which has not previously been dropped.
653
663
  * All arguments must be valid.
654
- * This method requires that the builder has a UUID, siginfo, and metadata set
664
+ * This method requires that the builder has a UUID and metadata set
655
665
  */
656
666
  DDOG_CHECK_RETURN
657
667
  struct ddog_VoidResult ddog_crasht_CrashInfoBuilder_upload_ping_to_endpoint(struct ddog_crasht_Handle_CrashInfoBuilder *builder,