libdatadog 18.1.0.1.0-x86_64-linux → 21.0.0.1.0-x86_64-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 (38) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libdatadog/version.rb +1 -1
  3. data/vendor/{libdatadog-18.1.0 → libdatadog-21.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/bin/libdatadog-crashtracking-receiver +0 -0
  4. data/vendor/{libdatadog-18.1.0 → libdatadog-21.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/blazesym.h +435 -229
  5. data/vendor/{libdatadog-18.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-21.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu}/include/datadog/common.h +366 -223
  6. data/vendor/{libdatadog-18.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-21.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu}/include/datadog/crashtracker.h +10 -34
  7. data/vendor/{libdatadog-18.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-21.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu}/include/datadog/data-pipeline.h +16 -3
  8. data/vendor/libdatadog-21.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/ddsketch.h +89 -0
  9. data/vendor/{libdatadog-18.1.0 → libdatadog-21.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/library-config.h +2 -2
  10. data/vendor/libdatadog-21.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/log.h +63 -0
  11. data/vendor/{libdatadog-18.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-21.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu}/include/datadog/profiling.h +3 -2
  12. data/vendor/libdatadog-21.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/libdatadog_profiling.debug +0 -0
  13. data/vendor/{libdatadog-18.1.0 → libdatadog-21.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  14. data/vendor/{libdatadog-18.1.0 → libdatadog-21.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  15. data/vendor/libdatadog-21.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/libdatadog_v21.0.0.tar +0 -0
  16. data/vendor/libdatadog-21.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  17. data/vendor/{libdatadog-18.1.0 → libdatadog-21.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/blazesym.h +435 -229
  18. data/vendor/{libdatadog-18.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-21.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/common.h +366 -223
  19. data/vendor/{libdatadog-18.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-21.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/crashtracker.h +10 -34
  20. data/vendor/{libdatadog-18.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-21.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/data-pipeline.h +16 -3
  21. data/vendor/libdatadog-21.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/ddsketch.h +89 -0
  22. data/vendor/{libdatadog-18.1.0 → libdatadog-21.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/library-config.h +2 -2
  23. data/vendor/libdatadog-21.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/log.h +63 -0
  24. data/vendor/{libdatadog-18.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-21.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/profiling.h +3 -2
  25. data/vendor/libdatadog-21.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/libdatadog_profiling.debug +0 -0
  26. data/vendor/{libdatadog-18.1.0 → libdatadog-21.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  27. data/vendor/{libdatadog-18.1.0 → libdatadog-21.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  28. data/vendor/libdatadog-21.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/libdatadog_v21.0.0.tar +0 -0
  29. metadata +29 -27
  30. data/vendor/libdatadog-18.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE +0 -202
  31. data/vendor/libdatadog-18.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE-3rdparty.yml +0 -47687
  32. data/vendor/libdatadog-18.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/NOTICE +0 -4
  33. data/vendor/libdatadog-18.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE +0 -202
  34. data/vendor/libdatadog-18.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE-3rdparty.yml +0 -47687
  35. data/vendor/libdatadog-18.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/NOTICE +0 -4
  36. data/vendor/libdatadog-18.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  37. /data/vendor/{libdatadog-18.1.0 → libdatadog-21.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/telemetry.h +0 -0
  38. /data/vendor/{libdatadog-18.1.0 → libdatadog-21.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/telemetry.h +0 -0
@@ -372,13 +372,6 @@ typedef enum ddog_VoidResult_Tag {
372
372
  typedef struct ddog_VoidResult {
373
373
  ddog_VoidResult_Tag tag;
374
374
  union {
375
- struct {
376
- /**
377
- * Do not use the value of Ok. This value only exists to overcome
378
- * Rust -> C code generation.
379
- */
380
- bool ok;
381
- };
382
375
  struct {
383
376
  struct ddog_Error err;
384
377
  };
@@ -799,9 +792,9 @@ typedef struct ddog_prof_FunctionId_Result {
799
792
  * A value of 0 means "no string" or "empty string" (they are synonymous).
800
793
  */
801
794
  typedef struct OpaqueStringId {
802
- uint32_t _0;
795
+ uint32_t offset;
803
796
  } OpaqueStringId;
804
- #define OpaqueStringId_ZERO (OpaqueStringId){ ._0 = 0 }
797
+ #define OpaqueStringId_ZERO (OpaqueStringId){ }
805
798
 
806
799
  typedef struct OpaqueStringId OpaqueStringId;
807
800
 
@@ -1231,6 +1224,320 @@ typedef struct ddog_ContextKey {
1231
1224
  enum ddog_MetricType _1;
1232
1225
  } ddog_ContextKey;
1233
1226
 
1227
+ /**
1228
+ * Represent error codes that `Error` struct can hold
1229
+ */
1230
+ typedef enum ddog_TraceExporterErrorCode {
1231
+ DDOG_TRACE_EXPORTER_ERROR_CODE_ADDRESS_IN_USE,
1232
+ DDOG_TRACE_EXPORTER_ERROR_CODE_CONNECTION_ABORTED,
1233
+ DDOG_TRACE_EXPORTER_ERROR_CODE_CONNECTION_REFUSED,
1234
+ DDOG_TRACE_EXPORTER_ERROR_CODE_CONNECTION_RESET,
1235
+ DDOG_TRACE_EXPORTER_ERROR_CODE_HTTP_BODY_FORMAT,
1236
+ DDOG_TRACE_EXPORTER_ERROR_CODE_HTTP_BODY_TOO_LONG,
1237
+ DDOG_TRACE_EXPORTER_ERROR_CODE_HTTP_CLIENT,
1238
+ DDOG_TRACE_EXPORTER_ERROR_CODE_HTTP_EMPTY_BODY,
1239
+ DDOG_TRACE_EXPORTER_ERROR_CODE_HTTP_PARSE,
1240
+ DDOG_TRACE_EXPORTER_ERROR_CODE_HTTP_SERVER,
1241
+ DDOG_TRACE_EXPORTER_ERROR_CODE_HTTP_UNKNOWN,
1242
+ DDOG_TRACE_EXPORTER_ERROR_CODE_HTTP_WRONG_STATUS,
1243
+ DDOG_TRACE_EXPORTER_ERROR_CODE_INVALID_ARGUMENT,
1244
+ DDOG_TRACE_EXPORTER_ERROR_CODE_INVALID_DATA,
1245
+ DDOG_TRACE_EXPORTER_ERROR_CODE_INVALID_INPUT,
1246
+ DDOG_TRACE_EXPORTER_ERROR_CODE_INVALID_URL,
1247
+ DDOG_TRACE_EXPORTER_ERROR_CODE_IO_ERROR,
1248
+ DDOG_TRACE_EXPORTER_ERROR_CODE_NETWORK_UNKNOWN,
1249
+ DDOG_TRACE_EXPORTER_ERROR_CODE_SERDE,
1250
+ DDOG_TRACE_EXPORTER_ERROR_CODE_SHUTDOWN,
1251
+ DDOG_TRACE_EXPORTER_ERROR_CODE_TIMED_OUT,
1252
+ DDOG_TRACE_EXPORTER_ERROR_CODE_TELEMETRY,
1253
+ DDOG_TRACE_EXPORTER_ERROR_CODE_INTERNAL,
1254
+ DDOG_TRACE_EXPORTER_ERROR_CODE_PANIC,
1255
+ } ddog_TraceExporterErrorCode;
1256
+
1257
+ /**
1258
+ * Structure containing the agent response to a trace payload
1259
+ * MUST be freed with `ddog_trace_exporter_response_free`
1260
+ *
1261
+ * If the agent payload version is enabled on the trace exporter, and
1262
+ * the agent response indicates that the payload version hasn't changed,
1263
+ * the body will be empty.
1264
+ */
1265
+ typedef struct ddog_TraceExporterResponse ddog_TraceExporterResponse;
1266
+
1267
+ typedef struct ddog_TraceExporter ddog_TraceExporter;
1268
+
1269
+ /**
1270
+ * The TraceExporterConfig object will hold the configuration properties for the TraceExporter.
1271
+ * Once the configuration is passed to the TraceExporter constructor the config is no longer
1272
+ * needed by the handle and it can be freed.
1273
+ */
1274
+ typedef struct ddog_TraceExporterConfig ddog_TraceExporterConfig;
1275
+
1276
+ /**
1277
+ * Structure that contains error information that `TraceExporter` API can return.
1278
+ */
1279
+ typedef struct ddog_TraceExporterError {
1280
+ enum ddog_TraceExporterErrorCode code;
1281
+ char *msg;
1282
+ } ddog_TraceExporterError;
1283
+
1284
+ /**
1285
+ * FFI compatible configuration for the TelemetryClient.
1286
+ */
1287
+ typedef struct ddog_TelemetryClientConfig {
1288
+ /**
1289
+ * How often telemetry should be sent, in milliseconds.
1290
+ */
1291
+ uint64_t interval;
1292
+ /**
1293
+ * A V4 UUID that represents a tracer session. This ID should:
1294
+ * - Be generated when the tracer starts
1295
+ * - Be identical within the context of a host (i.e. multiple threads/processes that belong to
1296
+ * a single instrumented app should share the same runtime_id)
1297
+ * - Be associated with traces to allow correlation between traces and telemetry data
1298
+ */
1299
+ ddog_CharSlice runtime_id;
1300
+ /**
1301
+ * Whether to enable debug mode for telemetry.
1302
+ * When enabled, sets the DD-Telemetry-Debug-Enabled header to true.
1303
+ * Defaults to false.
1304
+ */
1305
+ bool debug_enabled;
1306
+ } ddog_TelemetryClientConfig;
1307
+
1308
+ typedef enum ddog_LibraryConfigSource {
1309
+ DDOG_LIBRARY_CONFIG_SOURCE_LOCAL_STABLE_CONFIG = 0,
1310
+ DDOG_LIBRARY_CONFIG_SOURCE_FLEET_STABLE_CONFIG = 1,
1311
+ } ddog_LibraryConfigSource;
1312
+
1313
+ typedef struct ddog_Configurator ddog_Configurator;
1314
+
1315
+ /**
1316
+ * Ffi safe type representing a borrowed null-terminated C array
1317
+ * Equivalent to a std::ffi::CStr
1318
+ */
1319
+ typedef struct ddog_CStr {
1320
+ /**
1321
+ * Null terminated char array
1322
+ */
1323
+ char *ptr;
1324
+ /**
1325
+ * Length of the array, not counting the null-terminator
1326
+ */
1327
+ uintptr_t length;
1328
+ } ddog_CStr;
1329
+
1330
+ typedef struct ddog_Slice_CharSlice {
1331
+ /**
1332
+ * Should be non-null and suitably aligned for the underlying type. It is
1333
+ * allowed but not recommended for the pointer to be null when the len is
1334
+ * zero.
1335
+ */
1336
+ const ddog_CharSlice *ptr;
1337
+ /**
1338
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1339
+ * than or equal to [isize::MAX].
1340
+ */
1341
+ uintptr_t len;
1342
+ } ddog_Slice_CharSlice;
1343
+
1344
+ typedef struct ddog_ProcessInfo {
1345
+ struct ddog_Slice_CharSlice args;
1346
+ struct ddog_Slice_CharSlice envp;
1347
+ ddog_CharSlice language;
1348
+ } ddog_ProcessInfo;
1349
+
1350
+ /**
1351
+ * Ffi safe type representing an owned null-terminated C array
1352
+ * Equivalent to a std::ffi::CString
1353
+ */
1354
+ typedef struct ddog_CString {
1355
+ /**
1356
+ * Null terminated char array
1357
+ */
1358
+ char *ptr;
1359
+ /**
1360
+ * Length of the array, not counting the null-terminator
1361
+ */
1362
+ uintptr_t length;
1363
+ } ddog_CString;
1364
+
1365
+ typedef struct ddog_LibraryConfig {
1366
+ struct ddog_CString name;
1367
+ struct ddog_CString value;
1368
+ enum ddog_LibraryConfigSource source;
1369
+ struct ddog_CString config_id;
1370
+ } ddog_LibraryConfig;
1371
+
1372
+ /**
1373
+ * Holds the raw parts of a Rust Vec; it should only be created from Rust,
1374
+ * never from C.
1375
+ */
1376
+ typedef struct ddog_Vec_LibraryConfig {
1377
+ const struct ddog_LibraryConfig *ptr;
1378
+ uintptr_t len;
1379
+ uintptr_t capacity;
1380
+ } ddog_Vec_LibraryConfig;
1381
+
1382
+ /**
1383
+ * A result type that includes debug/log messages along with the data
1384
+ */
1385
+ typedef struct ddog_OkResult {
1386
+ struct ddog_Vec_LibraryConfig value;
1387
+ struct ddog_CString logs;
1388
+ } ddog_OkResult;
1389
+
1390
+ typedef enum ddog_LibraryConfigLoggedResult_Tag {
1391
+ DDOG_LIBRARY_CONFIG_LOGGED_RESULT_OK,
1392
+ DDOG_LIBRARY_CONFIG_LOGGED_RESULT_ERR,
1393
+ } ddog_LibraryConfigLoggedResult_Tag;
1394
+
1395
+ typedef struct ddog_LibraryConfigLoggedResult {
1396
+ ddog_LibraryConfigLoggedResult_Tag tag;
1397
+ union {
1398
+ struct {
1399
+ struct ddog_OkResult ok;
1400
+ };
1401
+ struct {
1402
+ struct ddog_Error err;
1403
+ };
1404
+ };
1405
+ } ddog_LibraryConfigLoggedResult;
1406
+
1407
+ /**
1408
+ * C-compatible representation of an anonymous file handle
1409
+ */
1410
+ typedef struct ddog_TracerMemfdHandle {
1411
+ /**
1412
+ * File descriptor (relevant only on Linux)
1413
+ */
1414
+ int fd;
1415
+ } ddog_TracerMemfdHandle;
1416
+
1417
+ /**
1418
+ * A generic result type for when an operation may fail,
1419
+ * or may return <T> in case of success.
1420
+ */
1421
+ typedef enum ddog_Result_TracerMemfdHandle_Tag {
1422
+ DDOG_RESULT_TRACER_MEMFD_HANDLE_OK_TRACER_MEMFD_HANDLE,
1423
+ DDOG_RESULT_TRACER_MEMFD_HANDLE_ERR_TRACER_MEMFD_HANDLE,
1424
+ } ddog_Result_TracerMemfdHandle_Tag;
1425
+
1426
+ typedef struct ddog_Result_TracerMemfdHandle {
1427
+ ddog_Result_TracerMemfdHandle_Tag tag;
1428
+ union {
1429
+ struct {
1430
+ struct ddog_TracerMemfdHandle ok;
1431
+ };
1432
+ struct {
1433
+ struct ddog_Error err;
1434
+ };
1435
+ };
1436
+ } ddog_Result_TracerMemfdHandle;
1437
+
1438
+ /**
1439
+ * Log level for filtering log events.
1440
+ */
1441
+ typedef enum ddog_LogEventLevel {
1442
+ /**
1443
+ * The "trace" level.
1444
+ *
1445
+ * Designates very low priority, often extremely verbose, information.
1446
+ */
1447
+ DDOG_LOG_EVENT_LEVEL_TRACE = 0,
1448
+ /**
1449
+ * The "debug" level.
1450
+ *
1451
+ * Designates lower priority information.
1452
+ */
1453
+ DDOG_LOG_EVENT_LEVEL_DEBUG = 1,
1454
+ /**
1455
+ * The "info" level.
1456
+ *
1457
+ * Designates useful information.
1458
+ */
1459
+ DDOG_LOG_EVENT_LEVEL_INFO = 2,
1460
+ /**
1461
+ * The "warn" level.
1462
+ *
1463
+ * Designates hazardous situations.
1464
+ */
1465
+ DDOG_LOG_EVENT_LEVEL_WARN = 3,
1466
+ /**
1467
+ * The "error" level.
1468
+ *
1469
+ * Designates very serious errors.
1470
+ */
1471
+ DDOG_LOG_EVENT_LEVEL_ERROR = 4,
1472
+ } ddog_LogEventLevel;
1473
+
1474
+ /**
1475
+ * Target for standard stream output.
1476
+ */
1477
+ typedef enum ddog_StdTarget {
1478
+ /**
1479
+ * Write to standard output (stdout).
1480
+ */
1481
+ DDOG_STD_TARGET_OUT,
1482
+ /**
1483
+ * Write to standard error (stderr).
1484
+ */
1485
+ DDOG_STD_TARGET_ERR,
1486
+ } ddog_StdTarget;
1487
+
1488
+ /**
1489
+ * Configuration for standard stream output.
1490
+ */
1491
+ typedef struct ddog_StdConfig {
1492
+ /**
1493
+ * Target stream (stdout or stderr)
1494
+ */
1495
+ enum ddog_StdTarget target;
1496
+ } ddog_StdConfig;
1497
+
1498
+ /**
1499
+ * Configuration for file output.
1500
+ */
1501
+ typedef struct ddog_FileConfig {
1502
+ /**
1503
+ * Path to the log file
1504
+ */
1505
+ ddog_CharSlice path;
1506
+ /**
1507
+ * Maximum total number of files (current + rotated) to keep on disk.
1508
+ * When this limit is exceeded, the oldest rotated files are deleted.
1509
+ * Set to 0 to disable file cleanup.
1510
+ */
1511
+ uint64_t max_files;
1512
+ /**
1513
+ * Maximum size in bytes for each log file.
1514
+ * Set to 0 to disable size-based rotation.
1515
+ */
1516
+ uint64_t max_size_bytes;
1517
+ } ddog_FileConfig;
1518
+
1519
+ /**
1520
+ * This is a minimal DDSketch implementation
1521
+ *
1522
+ * This implementation only supports a part of the standard (which is also only the parts dd
1523
+ * backend supports :shrug:)
1524
+ * - max length contiguous bin store, with lower bin collapse behavior.
1525
+ * - Positive or zero values
1526
+ *
1527
+ * The default sketch has a 1% relative accuracy, and only accepts positive points
1528
+ *
1529
+ * See <https://github.com/DataDog/sketches-go> for the reference implementation
1530
+ */
1531
+ typedef struct ddsketch_DDSketch ddsketch_DDSketch;
1532
+
1533
+ /**
1534
+ * Represents an object that should only be referred to by its handle.
1535
+ * Do not access its member for any reason, only use the C API functions on this struct.
1536
+ */
1537
+ typedef struct ddsketch_Handle_DDSketch {
1538
+ struct ddsketch_DDSketch *inner;
1539
+ } ddsketch_Handle_DDSketch;
1540
+
1234
1541
  typedef enum ddog_crasht_BuildIdType {
1235
1542
  DDOG_CRASHT_BUILD_ID_TYPE_GNU,
1236
1543
  DDOG_CRASHT_BUILD_ID_TYPE_GO,
@@ -1363,6 +1670,12 @@ typedef enum ddog_crasht_StacktraceCollection {
1363
1670
  */
1364
1671
  DDOG_CRASHT_STACKTRACE_COLLECTION_DISABLED,
1365
1672
  DDOG_CRASHT_STACKTRACE_COLLECTION_WITHOUT_SYMBOLS,
1673
+ /**
1674
+ * This option uses `backtrace::resolve_frame_unsynchronized()` to gather symbol information
1675
+ * and also unwind inlined functions. Enabling this feature will not only provide symbolic
1676
+ * details, but may also yield additional or less stack frames compared to other
1677
+ * configurations.
1678
+ */
1366
1679
  DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_INPROCESS_SYMBOLS,
1367
1680
  DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_SYMBOLS_IN_RECEIVER,
1368
1681
  } ddog_crasht_StacktraceCollection;
@@ -1424,6 +1737,9 @@ typedef struct ddog_crasht_Config {
1424
1737
  struct ddog_crasht_Slice_I32 signals;
1425
1738
  /**
1426
1739
  * Timeout in milliseconds before the signal handler starts tearing things down to return.
1740
+ * If 0, uses the default timeout as specified in
1741
+ * `datadog_crashtracker::shared::constants::DD_CRASHTRACK_DEFAULT_TIMEOUT`. Otherwise, uses
1742
+ * the specified timeout value.
1427
1743
  * This is given as a uint32_t, but the actual timeout needs to fit inside of an i32 (max
1428
1744
  * 2^31-1). This is a limitation of the various interfaces used to guarantee the timeout.
1429
1745
  */
@@ -1525,6 +1841,23 @@ typedef struct ddog_crasht_Handle_CrashInfoBuilder {
1525
1841
  struct ddog_crasht_CrashInfoBuilder *inner;
1526
1842
  } ddog_crasht_Handle_CrashInfoBuilder;
1527
1843
 
1844
+ typedef enum ddog_crasht_CrashInfoBuilder_NewResult_Tag {
1845
+ DDOG_CRASHT_CRASH_INFO_BUILDER_NEW_RESULT_OK,
1846
+ DDOG_CRASHT_CRASH_INFO_BUILDER_NEW_RESULT_ERR,
1847
+ } ddog_crasht_CrashInfoBuilder_NewResult_Tag;
1848
+
1849
+ typedef struct ddog_crasht_CrashInfoBuilder_NewResult {
1850
+ ddog_crasht_CrashInfoBuilder_NewResult_Tag tag;
1851
+ union {
1852
+ struct {
1853
+ struct ddog_crasht_Handle_CrashInfoBuilder ok;
1854
+ };
1855
+ struct {
1856
+ struct ddog_Error err;
1857
+ };
1858
+ };
1859
+ } ddog_crasht_CrashInfoBuilder_NewResult;
1860
+
1528
1861
  typedef enum ddog_crasht_CrashInfo_NewResult_Tag {
1529
1862
  DDOG_CRASHT_CRASH_INFO_NEW_RESULT_OK,
1530
1863
  DDOG_CRASHT_CRASH_INFO_NEW_RESULT_ERR,
@@ -1606,232 +1939,35 @@ typedef struct ddog_crasht_StackFrame_NewResult {
1606
1939
  };
1607
1940
  } ddog_crasht_StackFrame_NewResult;
1608
1941
 
1609
- /**
1610
- * Represent error codes that `Error` struct can hold
1611
- */
1612
- typedef enum ddog_TraceExporterErrorCode {
1613
- DDOG_TRACE_EXPORTER_ERROR_CODE_ADDRESS_IN_USE,
1614
- DDOG_TRACE_EXPORTER_ERROR_CODE_CONNECTION_ABORTED,
1615
- DDOG_TRACE_EXPORTER_ERROR_CODE_CONNECTION_REFUSED,
1616
- DDOG_TRACE_EXPORTER_ERROR_CODE_CONNECTION_RESET,
1617
- DDOG_TRACE_EXPORTER_ERROR_CODE_HTTP_BODY_FORMAT,
1618
- DDOG_TRACE_EXPORTER_ERROR_CODE_HTTP_BODY_TOO_LONG,
1619
- DDOG_TRACE_EXPORTER_ERROR_CODE_HTTP_CLIENT,
1620
- DDOG_TRACE_EXPORTER_ERROR_CODE_HTTP_EMPTY_BODY,
1621
- DDOG_TRACE_EXPORTER_ERROR_CODE_HTTP_PARSE,
1622
- DDOG_TRACE_EXPORTER_ERROR_CODE_HTTP_SERVER,
1623
- DDOG_TRACE_EXPORTER_ERROR_CODE_HTTP_UNKNOWN,
1624
- DDOG_TRACE_EXPORTER_ERROR_CODE_HTTP_WRONG_STATUS,
1625
- DDOG_TRACE_EXPORTER_ERROR_CODE_INVALID_ARGUMENT,
1626
- DDOG_TRACE_EXPORTER_ERROR_CODE_INVALID_DATA,
1627
- DDOG_TRACE_EXPORTER_ERROR_CODE_INVALID_INPUT,
1628
- DDOG_TRACE_EXPORTER_ERROR_CODE_INVALID_URL,
1629
- DDOG_TRACE_EXPORTER_ERROR_CODE_IO_ERROR,
1630
- DDOG_TRACE_EXPORTER_ERROR_CODE_NETWORK_UNKNOWN,
1631
- DDOG_TRACE_EXPORTER_ERROR_CODE_SERDE,
1632
- DDOG_TRACE_EXPORTER_ERROR_CODE_TIMED_OUT,
1633
- } ddog_TraceExporterErrorCode;
1634
-
1635
- /**
1636
- * Structure containing the agent response to a trace payload
1637
- * MUST be freed with `ddog_trace_exporter_response_free`
1638
- */
1639
- typedef struct ddog_TraceExporterResponse ddog_TraceExporterResponse;
1640
-
1641
- /**
1642
- * The TraceExporter ingest traces from the tracers serialized as messagepack and forward them to
1643
- * the agent while applying some transformation.
1644
- *
1645
- * # Proxy
1646
- * If the input format is set as `Proxy`, the exporter will forward traces to the agent without
1647
- * deserializing them.
1648
- *
1649
- * # Features
1650
- * When the input format is set to `V04` the TraceExporter will deserialize the traces and perform
1651
- * some operation before sending them to the agent. The available operations are described below.
1652
- *
1653
- * ## V07 Serialization
1654
- * The Trace exporter can serialize the traces to V07 before sending them to the agent.
1655
- *
1656
- * ## Stats computation
1657
- * The Trace Exporter can compute stats on traces. In this case the trace exporter will start
1658
- * another task to send stats when a time bucket expire. When this feature is enabled the
1659
- * TraceExporter drops all spans that may not be sampled by the agent.
1660
- */
1661
- typedef struct ddog_TraceExporter ddog_TraceExporter;
1662
-
1663
- /**
1664
- * The TraceExporterConfig object will hold the configuration properties for the TraceExporter.
1665
- * Once the configuration is passed to the TraceExporter constructor the config is no longer
1666
- * needed by the handle and it can be freed.
1667
- */
1668
- typedef struct ddog_TraceExporterConfig ddog_TraceExporterConfig;
1669
-
1670
- /**
1671
- * Stucture that contains error information that `TraceExporter` API can return.
1672
- */
1673
- typedef struct ddog_TraceExporterError {
1674
- enum ddog_TraceExporterErrorCode code;
1675
- char *msg;
1676
- } ddog_TraceExporterError;
1677
-
1678
- /**
1679
- * FFI compatible configuration for the TelemetryClient.
1680
- */
1681
- typedef struct ddog_TelemetryClientConfig {
1682
- /**
1683
- * How often telemetry should be sent, in milliseconds.
1684
- */
1685
- uint64_t interval;
1686
- /**
1687
- * A V4 UUID that represents a tracer session. This ID should:
1688
- * - Be generated when the tracer starts
1689
- * - Be identical within the context of a host (i.e. multiple threads/processes that belong to
1690
- * a single instrumented app should share the same runtime_id)
1691
- * - Be associated with traces to allow correlation between traces and telemetry data
1692
- */
1693
- ddog_CharSlice runtime_id;
1694
- /**
1695
- * Whether to enable debug mode for telemetry.
1696
- * When enabled, sets the DD-Telemetry-Debug-Enabled header to true.
1697
- * Defaults to false.
1698
- */
1699
- bool debug_enabled;
1700
- } ddog_TelemetryClientConfig;
1701
-
1702
- typedef enum ddog_LibraryConfigSource {
1703
- DDOG_LIBRARY_CONFIG_SOURCE_LOCAL_STABLE_CONFIG = 0,
1704
- DDOG_LIBRARY_CONFIG_SOURCE_FLEET_STABLE_CONFIG = 1,
1705
- } ddog_LibraryConfigSource;
1706
-
1707
- typedef struct ddog_Configurator ddog_Configurator;
1942
+ typedef enum ddog_crasht_StackTrace_NewResult_Tag {
1943
+ DDOG_CRASHT_STACK_TRACE_NEW_RESULT_OK,
1944
+ DDOG_CRASHT_STACK_TRACE_NEW_RESULT_ERR,
1945
+ } ddog_crasht_StackTrace_NewResult_Tag;
1708
1946
 
1709
- /**
1710
- * Ffi safe type representing a borrowed null-terminated C array
1711
- * Equivalent to a std::ffi::CStr
1712
- */
1713
- typedef struct ddog_CStr {
1714
- /**
1715
- * Null terminated char array
1716
- */
1717
- char *ptr;
1718
- /**
1719
- * Length of the array, not counting the null-terminator
1720
- */
1721
- uintptr_t length;
1722
- } ddog_CStr;
1723
-
1724
- typedef struct ddog_Slice_CharSlice {
1725
- /**
1726
- * Should be non-null and suitably aligned for the underlying type. It is
1727
- * allowed but not recommended for the pointer to be null when the len is
1728
- * zero.
1729
- */
1730
- const ddog_CharSlice *ptr;
1731
- /**
1732
- * The number of elements (not bytes) that `.ptr` points to. Must be less
1733
- * than or equal to [isize::MAX].
1734
- */
1735
- uintptr_t len;
1736
- } ddog_Slice_CharSlice;
1737
-
1738
- typedef struct ddog_ProcessInfo {
1739
- struct ddog_Slice_CharSlice args;
1740
- struct ddog_Slice_CharSlice envp;
1741
- ddog_CharSlice language;
1742
- } ddog_ProcessInfo;
1743
-
1744
- /**
1745
- * Ffi safe type representing an owned null-terminated C array
1746
- * Equivalent to a std::ffi::CString
1747
- */
1748
- typedef struct ddog_CString {
1749
- /**
1750
- * Null terminated char array
1751
- */
1752
- char *ptr;
1753
- /**
1754
- * Length of the array, not counting the null-terminator
1755
- */
1756
- uintptr_t length;
1757
- } ddog_CString;
1758
-
1759
- typedef struct ddog_LibraryConfig {
1760
- struct ddog_CString name;
1761
- struct ddog_CString value;
1762
- enum ddog_LibraryConfigSource source;
1763
- struct ddog_CString config_id;
1764
- } ddog_LibraryConfig;
1765
-
1766
- /**
1767
- * Holds the raw parts of a Rust Vec; it should only be created from Rust,
1768
- * never from C.
1769
- */
1770
- typedef struct ddog_Vec_LibraryConfig {
1771
- const struct ddog_LibraryConfig *ptr;
1772
- uintptr_t len;
1773
- uintptr_t capacity;
1774
- } ddog_Vec_LibraryConfig;
1775
-
1776
- /**
1777
- * A generic result type for when an operation may fail,
1778
- * or may return <T> in case of success.
1779
- */
1780
- typedef enum ddog_Result_VecLibraryConfig_Tag {
1781
- DDOG_RESULT_VEC_LIBRARY_CONFIG_OK_VEC_LIBRARY_CONFIG,
1782
- DDOG_RESULT_VEC_LIBRARY_CONFIG_ERR_VEC_LIBRARY_CONFIG,
1783
- } ddog_Result_VecLibraryConfig_Tag;
1784
-
1785
- typedef struct ddog_Result_VecLibraryConfig {
1786
- ddog_Result_VecLibraryConfig_Tag tag;
1787
- union {
1788
- struct {
1789
- struct ddog_Vec_LibraryConfig ok;
1790
- };
1791
- struct {
1792
- struct ddog_Error err;
1793
- };
1794
- };
1795
- } ddog_Result_VecLibraryConfig;
1796
-
1797
- /**
1798
- * C-compatible representation of an anonymous file handle
1799
- */
1800
- typedef struct ddog_TracerMemfdHandle {
1801
- /**
1802
- * File descriptor (relevant only on Linux)
1803
- */
1804
- int fd;
1805
- } ddog_TracerMemfdHandle;
1806
-
1807
- /**
1808
- * A generic result type for when an operation may fail,
1809
- * or may return <T> in case of success.
1810
- */
1811
- typedef enum ddog_Result_TracerMemfdHandle_Tag {
1812
- DDOG_RESULT_TRACER_MEMFD_HANDLE_OK_TRACER_MEMFD_HANDLE,
1813
- DDOG_RESULT_TRACER_MEMFD_HANDLE_ERR_TRACER_MEMFD_HANDLE,
1814
- } ddog_Result_TracerMemfdHandle_Tag;
1815
-
1816
- typedef struct ddog_Result_TracerMemfdHandle {
1817
- ddog_Result_TracerMemfdHandle_Tag tag;
1947
+ typedef struct ddog_crasht_StackTrace_NewResult {
1948
+ ddog_crasht_StackTrace_NewResult_Tag tag;
1818
1949
  union {
1819
1950
  struct {
1820
- struct ddog_TracerMemfdHandle ok;
1951
+ struct ddog_crasht_Handle_StackTrace ok;
1821
1952
  };
1822
1953
  struct {
1823
1954
  struct ddog_Error err;
1824
1955
  };
1825
1956
  };
1826
- } ddog_Result_TracerMemfdHandle;
1957
+ } ddog_crasht_StackTrace_NewResult;
1827
1958
 
1828
1959
  #ifdef __cplusplus
1829
1960
  extern "C" {
1830
1961
  #endif // __cplusplus
1831
1962
 
1832
1963
  /**
1964
+ * Drops the error. It should not be used after this, though the
1965
+ * implementation tries to limit the damage in the case of use-after-free and
1966
+ * double-free scenarios.
1967
+ *
1833
1968
  * # Safety
1834
- * Only pass null or a valid reference to a `ddog_Error`.
1969
+ *
1970
+ * Only pass null or a pointer to a valid, mutable `ddog_Error`.
1835
1971
  */
1836
1972
  void ddog_Error_drop(struct ddog_Error *error);
1837
1973
 
@@ -1937,16 +2073,23 @@ struct ddog_Option_U32 ddog_Option_U32_some(uint32_t v);
1937
2073
  struct ddog_Option_U32 ddog_Option_U32_none(void);
1938
2074
 
1939
2075
  /**
2076
+ * Drops a `ddog_StringWrapper`. It should not be used after this, though the
2077
+ * implementation tries to limit the damage in the case of use-after-free and
2078
+ * double-free scenarios.
2079
+ *
1940
2080
  * # Safety
1941
- * Only pass null or a valid reference to a `ddog_StringWrapper`.
2081
+ *
2082
+ * Only pass null or a pointer to a valid, mutable `ddog_StringWrapper`.
1942
2083
  */
1943
2084
  void ddog_StringWrapper_drop(struct ddog_StringWrapper *s);
1944
2085
 
1945
2086
  /**
1946
- * Returns a CharSlice of the message that is valid until the StringWrapper
1947
- * is dropped.
2087
+ * Returns a CharSlice of the message.
2088
+ *
1948
2089
  * # Safety
2090
+ *
1949
2091
  * Only pass null or a valid reference to a `ddog_StringWrapper`.
2092
+ * The string should not be mutated nor dropped while the CharSlice is alive.
1950
2093
  */
1951
2094
  ddog_CharSlice ddog_StringWrapper_message(const struct ddog_StringWrapper *s);
1952
2095