libdatadog 38.0.0.1.0 → 40.0.0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libdatadog/version.rb +1 -1
  3. data/vendor/{libdatadog-38.0.0/aarch64-linux-musl → libdatadog-40.0.0/aarch64-linux}/LICENSE-3rdparty.csv +1 -1
  4. data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux/bin/libdatadog-crashtracking-receiver +0 -0
  5. data/vendor/{libdatadog-38.0.0/x86_64-linux-musl → libdatadog-40.0.0/aarch64-linux}/include/datadog/common.h +190 -14
  6. data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux/include/datadog/data-pipeline.h +194 -31
  7. data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux/lib/libdatadog_profiling.so +0 -0
  8. data/vendor/{libdatadog-38.0.0/arm64-darwin → libdatadog-40.0.0/aarch64-linux}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  9. data/vendor/{libdatadog-38.0.0/aarch64-linux → libdatadog-40.0.0/aarch64-linux-musl}/LICENSE-3rdparty.csv +1 -1
  10. data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  11. data/vendor/{libdatadog-38.0.0/arm64-darwin → libdatadog-40.0.0/aarch64-linux-musl}/include/datadog/common.h +190 -14
  12. data/vendor/{libdatadog-38.0.0/arm64-darwin → libdatadog-40.0.0/aarch64-linux-musl}/include/datadog/data-pipeline.h +194 -31
  13. data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux-musl/lib/libdatadog_profiling.so +0 -0
  14. data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  15. data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/arm64-darwin/LICENSE-3rdparty.csv +1 -1
  16. data/vendor/{libdatadog-38.0.0/aarch64-linux-musl → libdatadog-40.0.0/arm64-darwin}/include/datadog/common.h +190 -14
  17. data/vendor/{libdatadog-38.0.0/aarch64-linux-musl → libdatadog-40.0.0/arm64-darwin}/include/datadog/data-pipeline.h +194 -31
  18. data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/arm64-darwin/lib/libdatadog_profiling.dylib +0 -0
  19. data/vendor/{libdatadog-38.0.0/x86_64-linux-musl → libdatadog-40.0.0/arm64-darwin}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  20. data/vendor/libdatadog-40.0.0/x86_64-linux/LICENSE-3rdparty.csv +554 -0
  21. data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux/bin/libdatadog-crashtracking-receiver +0 -0
  22. data/vendor/libdatadog-40.0.0/x86_64-linux/include/datadog/common.h +3100 -0
  23. data/vendor/libdatadog-40.0.0/x86_64-linux/include/datadog/data-pipeline.h +612 -0
  24. data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux/lib/libdatadog_profiling.so +0 -0
  25. data/vendor/libdatadog-40.0.0/x86_64-linux/lib/pkgconfig/datadog_profiling_with_rpath.pc +15 -0
  26. data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux-musl/LICENSE-3rdparty.csv +1 -1
  27. data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  28. data/vendor/{libdatadog-38.0.0/aarch64-linux → libdatadog-40.0.0/x86_64-linux-musl}/include/datadog/common.h +190 -14
  29. data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux-musl/include/datadog/data-pipeline.h +194 -31
  30. data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux-musl/lib/libdatadog_profiling.so +0 -0
  31. data/vendor/{libdatadog-38.0.0/aarch64-linux → libdatadog-40.0.0/x86_64-linux-musl}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  32. metadata +86 -86
  33. data/vendor/libdatadog-38.0.0/x86_64-linux/LICENSE-3rdparty.csv +0 -554
  34. data/vendor/libdatadog-38.0.0/x86_64-linux/include/datadog/common.h +0 -2924
  35. data/vendor/libdatadog-38.0.0/x86_64-linux/include/datadog/data-pipeline.h +0 -449
  36. data/vendor/libdatadog-38.0.0/x86_64-linux/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -15
  37. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux/LICENSE +0 -0
  38. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux/NOTICE +0 -0
  39. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux/include/datadog/blazesym.h +0 -0
  40. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux/include/datadog/crashtracker.h +0 -0
  41. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux/include/datadog/ddsketch.h +0 -0
  42. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux/include/datadog/ffe.h +0 -0
  43. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux/include/datadog/library-config.h +0 -0
  44. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux/include/datadog/log.h +0 -0
  45. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux/include/datadog/profiling.h +0 -0
  46. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux/include/datadog/shared-runtime.h +0 -0
  47. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux/include/datadog/telemetry.h +0 -0
  48. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux-musl/LICENSE +0 -0
  49. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux-musl/NOTICE +0 -0
  50. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux-musl/include/datadog/blazesym.h +0 -0
  51. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux-musl/include/datadog/crashtracker.h +0 -0
  52. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux-musl/include/datadog/ddsketch.h +0 -0
  53. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux-musl/include/datadog/ffe.h +0 -0
  54. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux-musl/include/datadog/library-config.h +0 -0
  55. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux-musl/include/datadog/log.h +0 -0
  56. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux-musl/include/datadog/profiling.h +0 -0
  57. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux-musl/include/datadog/shared-runtime.h +0 -0
  58. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/aarch64-linux-musl/include/datadog/telemetry.h +0 -0
  59. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/arm64-darwin/LICENSE +0 -0
  60. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/arm64-darwin/NOTICE +0 -0
  61. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/arm64-darwin/bin/libdatadog-crashtracking-receiver +0 -0
  62. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/arm64-darwin/include/datadog/blazesym.h +0 -0
  63. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/arm64-darwin/include/datadog/crashtracker.h +0 -0
  64. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/arm64-darwin/include/datadog/ddsketch.h +0 -0
  65. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/arm64-darwin/include/datadog/ffe.h +0 -0
  66. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/arm64-darwin/include/datadog/library-config.h +0 -0
  67. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/arm64-darwin/include/datadog/log.h +0 -0
  68. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/arm64-darwin/include/datadog/profiling.h +0 -0
  69. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/arm64-darwin/include/datadog/shared-runtime.h +0 -0
  70. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/arm64-darwin/include/datadog/telemetry.h +0 -0
  71. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux/LICENSE +0 -0
  72. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux/NOTICE +0 -0
  73. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux/include/datadog/blazesym.h +0 -0
  74. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux/include/datadog/crashtracker.h +0 -0
  75. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux/include/datadog/ddsketch.h +0 -0
  76. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux/include/datadog/ffe.h +0 -0
  77. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux/include/datadog/library-config.h +0 -0
  78. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux/include/datadog/log.h +0 -0
  79. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux/include/datadog/profiling.h +0 -0
  80. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux/include/datadog/shared-runtime.h +0 -0
  81. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux/include/datadog/telemetry.h +0 -0
  82. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux-musl/LICENSE +0 -0
  83. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux-musl/NOTICE +0 -0
  84. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux-musl/include/datadog/blazesym.h +0 -0
  85. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux-musl/include/datadog/crashtracker.h +0 -0
  86. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux-musl/include/datadog/ddsketch.h +0 -0
  87. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux-musl/include/datadog/ffe.h +0 -0
  88. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux-musl/include/datadog/library-config.h +0 -0
  89. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux-musl/include/datadog/log.h +0 -0
  90. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux-musl/include/datadog/profiling.h +0 -0
  91. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux-musl/include/datadog/shared-runtime.h +0 -0
  92. /data/vendor/{libdatadog-38.0.0 → libdatadog-40.0.0}/x86_64-linux-musl/include/datadog/telemetry.h +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: acf5bfce73d30f51bff48c4c624ef033bc1907a8ed14cd10ccf74da199a1b34e
4
- data.tar.gz: 1ce9406014b9cea0d221ac36008dcb6b02d1884a2d55249a1fb843be240c6087
3
+ metadata.gz: d504f44b27d92cdae236776497e54dc9410352658f00ca566402ed501fb1e37c
4
+ data.tar.gz: b14c06df3f9039faafea968db80f88daf6c496eb6a98ad7c3f33ac00ed44ddd5
5
5
  SHA512:
6
- metadata.gz: 3df08279edf1e21b9db5856c3ca90a6cf4488a9963f242c3bdb03a3320f16b965acc534e9b4dd2f7c74223b2e13afc940c40f87b090bc44afd90c669c5040f24
7
- data.tar.gz: a02d9031f0490f31c2de9c4b07f0dabd8c1d4e274364487f719b073acbdc6aa9daddde42dd1df537f395f4983c89d0c58ca18f270249ebdbbc8c98a88ab8c2f5
6
+ metadata.gz: c8021d4c49389571171674b3ecde28baed658bd930b4a09891ada8cdf655af4d059d008b9ef42466275842f48bdb7b4a732623409bdeee2a7f1fbcd76a696cf5
7
+ data.tar.gz: 33fe4d6fda2ada6275064b17e4facffb0377c9120fd11cf3fc52fe4136fc4153a816321760e59bea25f3d8f1a44e2a2ffaabcbf76fd4baf2fe19a65dfe1c1724
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Libdatadog
4
4
  # Current libdatadog version
5
- LIB_VERSION = "38.0.0"
5
+ LIB_VERSION = "40.0.0"
6
6
 
7
7
  GEM_MAJOR_VERSION = "1"
8
8
  GEM_MINOR_VERSION = "0"
@@ -220,7 +220,7 @@ js-sys,https://github.com/rustwasm/wasm-bindgen/tree/master/crates/js-sys,MIT OR
220
220
  kernel32-sys,https://github.com/retep998/winapi-rs,MIT,Peter Atashian <retep998@gmail.com>
221
221
  kv-log-macro,https://github.com/yoshuawuyts/kv-log-macro,MIT OR Apache-2.0,Yoshua Wuyts <yoshuawuyts@gmail.com>
222
222
  lazy_static,https://github.com/rust-lang-nursery/lazy-static.rs,MIT OR Apache-2.0,Marvin Löbel <loebel.marvin@gmail.com>
223
- libc,https://github.com/rust-lang/libc,MIT OR Apache-2.0,The Rust Project Developers
223
+ libc,https://github.com/rust-lang/libc,MIT OR Apache-2.0,The libc Authors
224
224
  libdd-libunwind-sys,https://github.com/DataDog/libdatadog/tree/main/libdd-libunwind-sys,Apache-2.0,The libdd-libunwind-sys Authors
225
225
  libloading,https://github.com/nagisa/rust_libloading,ISC,Simonas Kazlauskas <libloading@kazlauskas.me>
226
226
  libredox,https://gitlab.redox-os.org/redox-os/libredox,MIT,4lDO2 <4lDO2@protonmail.com>
@@ -1501,6 +1501,9 @@ typedef enum ddog_ConfigurationOrigin {
1501
1501
  DDOG_CONFIGURATION_ORIGIN_LOCAL_STABLE_CONFIG,
1502
1502
  DDOG_CONFIGURATION_ORIGIN_FLEET_STABLE_CONFIG,
1503
1503
  DDOG_CONFIGURATION_ORIGIN_CALCULATED,
1504
+ DDOG_CONFIGURATION_ORIGIN_OTEL_ENV_VAR,
1505
+ DDOG_CONFIGURATION_ORIGIN_INI,
1506
+ DDOG_CONFIGURATION_ORIGIN_UNKNOWN,
1504
1507
  } ddog_ConfigurationOrigin;
1505
1508
 
1506
1509
  typedef enum ddog_LogLevel {
@@ -1521,12 +1524,17 @@ typedef enum ddog_MetricNamespace {
1521
1524
  DDOG_METRIC_NAMESPACE_TELEMETRY,
1522
1525
  DDOG_METRIC_NAMESPACE_APM,
1523
1526
  DDOG_METRIC_NAMESPACE_SIDECAR,
1527
+ DDOG_METRIC_NAMESPACE_CIVISIBILITY,
1528
+ DDOG_METRIC_NAMESPACE_MLOBS,
1529
+ DDOG_METRIC_NAMESPACE_DDTRACEAPI,
1530
+ DDOG_METRIC_NAMESPACE_AI_GUARD,
1524
1531
  } ddog_MetricNamespace;
1525
1532
 
1526
1533
  typedef enum ddog_MetricType {
1527
1534
  DDOG_METRIC_TYPE_GAUGE,
1528
1535
  DDOG_METRIC_TYPE_COUNT,
1529
1536
  DDOG_METRIC_TYPE_DISTRIBUTION,
1537
+ DDOG_METRIC_TYPE_RATE,
1530
1538
  } ddog_MetricType;
1531
1539
 
1532
1540
  typedef enum ddog_TelemetryWorkerBuilderBoolProperty {
@@ -1609,10 +1617,38 @@ typedef struct ddog_ContextKey {
1609
1617
 
1610
1618
  typedef struct ddog_TraceExporter ddog_TraceExporter;
1611
1619
  typedef struct ddog_TracerSpan ddog_TracerSpan;
1620
+ typedef struct ddog_TracerSpanEvent ddog_TracerSpanEvent;
1612
1621
  typedef struct ddog_TracerTraceChunks ddog_TracerTraceChunks;
1613
1622
  typedef struct ddog_TraceExporterCancelToken ddog_TraceExporterCancelToken;
1623
+ typedef uint8_t ddog_TracerValueKind;
1614
1624
 
1615
1625
 
1626
+ #define DDOG_TRACER_VALUE_NIL 0
1627
+
1628
+ #define DDOG_TRACER_VALUE_BOOL 1
1629
+
1630
+ #define DDOG_TRACER_VALUE_I64 2
1631
+
1632
+ #define DDOG_TRACER_VALUE_U64 3
1633
+
1634
+ #define DDOG_TRACER_VALUE_F64 4
1635
+
1636
+ #define DDOG_TRACER_VALUE_STRING 5
1637
+
1638
+ #define DDOG_TRACER_VALUE_BINARY 6
1639
+
1640
+ #define DDOG_TRACER_VALUE_ARRAY 7
1641
+
1642
+ #define DDOG_TRACER_VALUE_MAP 8
1643
+
1644
+ #define ddog_CollapsedFieldSet_RESOURCE_NAME (1 << 0)
1645
+
1646
+ #define ddog_CollapsedFieldSet_HTTP_ENDPOINT (1 << 1)
1647
+
1648
+ #define ddog_CollapsedFieldSet_PEER_TAGS (1 << 2)
1649
+
1650
+ #define ddog_CollapsedFieldSet_ADDITIONAL_TAGS (1 << 3)
1651
+
1616
1652
  /**
1617
1653
  * Represent error codes that `Error` struct can hold
1618
1654
  */
@@ -1669,6 +1705,11 @@ typedef struct ddog_ForkSafeRuntime ddog_ForkSafeRuntime;
1669
1705
  */
1670
1706
  typedef struct ddog_TraceExporterConfig ddog_TraceExporterConfig;
1671
1707
 
1708
+ /**
1709
+ * Opaque owned MessagePack blob produced from structured-value tokens.
1710
+ */
1711
+ typedef struct ddog_TracerEncodedValue ddog_TracerEncodedValue;
1712
+
1672
1713
  /**
1673
1714
  * Structure that contains error information that `TraceExporter` API can return.
1674
1715
  */
@@ -1677,6 +1718,39 @@ typedef struct ddog_TraceExporterError {
1677
1718
  char *msg;
1678
1719
  } ddog_TraceExporterError;
1679
1720
 
1721
+ /**
1722
+ * One value in a flat preorder representation of a structured value.
1723
+ *
1724
+ * Scalar tokens use the corresponding scalar field. String and binary tokens
1725
+ * use `bytes`. Array and map tokens use `child_count`; a map is followed by
1726
+ * two values per entry (key, then value). All other fields must be ignored.
1727
+ * `kind` remains a raw integer so malformed C input can be rejected without
1728
+ * constructing an invalid Rust enum discriminant.
1729
+ */
1730
+ typedef struct ddog_TracerValueToken {
1731
+ uint8_t kind;
1732
+ uint8_t bool_value;
1733
+ uint32_t child_count;
1734
+ int64_t i64_value;
1735
+ uint64_t u64_value;
1736
+ double f64_value;
1737
+ ddog_ByteSlice bytes;
1738
+ } ddog_TracerValueToken;
1739
+
1740
+ typedef struct ddog_Slice_TracerValueToken {
1741
+ /**
1742
+ * Should be non-null and suitably aligned for the underlying type. It is
1743
+ * allowed but not recommended for the pointer to be null when the len is
1744
+ * zero.
1745
+ */
1746
+ const struct ddog_TracerValueToken *ptr;
1747
+ /**
1748
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1749
+ * than or equal to [isize::MAX].
1750
+ */
1751
+ uintptr_t len;
1752
+ } ddog_Slice_TracerValueToken;
1753
+
1680
1754
  /**
1681
1755
  * FFI compatible configuration for the TelemetryClient.
1682
1756
  */
@@ -1713,6 +1787,32 @@ typedef struct ddog_TelemetryClientConfig {
1713
1787
  ddog_CharSlice parent_session_id;
1714
1788
  } ddog_TelemetryClientConfig;
1715
1789
 
1790
+ /**
1791
+ * Config to override the default stats cardinality limit values
1792
+ */
1793
+ typedef struct ddog_CardinalityLimitConfig {
1794
+ /**
1795
+ * The whole-key cardinality limit (defaults to 7000)
1796
+ */
1797
+ uintptr_t whole_key_limit;
1798
+ /**
1799
+ * The per-field cardinality limit for the Resource field (defaults to 1024)
1800
+ */
1801
+ uintptr_t resource_limit;
1802
+ /**
1803
+ * The per-field cardinality limit for the HttpEndpoint field (defaults to 512)
1804
+ */
1805
+ uintptr_t http_endpoint_limit;
1806
+ /**
1807
+ * The per-field cardinality limit for the PeerTags field (defaults to 512)
1808
+ */
1809
+ uintptr_t peer_tags_limit;
1810
+ /**
1811
+ * The per-field cardinality limit for the AdditionalTags field (defaults to 100)
1812
+ */
1813
+ uintptr_t additional_tags_limit;
1814
+ } ddog_CardinalityLimitConfig;
1815
+
1716
1816
  /**
1717
1817
  * FFI-safe bundle of scalar fields for creating a [`TracerSpan`].
1718
1818
  *
@@ -1733,6 +1833,96 @@ typedef struct ddog_TracerSpanFields {
1733
1833
  int32_t error;
1734
1834
  } ddog_TracerSpanFields;
1735
1835
 
1836
+ /**
1837
+ * A string attribute belonging to a [`TracerSpanLink`].
1838
+ */
1839
+ typedef struct ddog_TracerSpanLinkAttribute {
1840
+ ddog_CharSlice key;
1841
+ ddog_CharSlice value;
1842
+ } ddog_TracerSpanLinkAttribute;
1843
+
1844
+ typedef struct ddog_Slice_TracerSpanLinkAttribute {
1845
+ /**
1846
+ * Should be non-null and suitably aligned for the underlying type. It is
1847
+ * allowed but not recommended for the pointer to be null when the len is
1848
+ * zero.
1849
+ */
1850
+ const struct ddog_TracerSpanLinkAttribute *ptr;
1851
+ /**
1852
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1853
+ * than or equal to [isize::MAX].
1854
+ */
1855
+ uintptr_t len;
1856
+ } ddog_Slice_TracerSpanLinkAttribute;
1857
+
1858
+ /**
1859
+ * FFI-safe representation of one complete span link.
1860
+ */
1861
+ typedef struct ddog_TracerSpanLink {
1862
+ uint64_t trace_id_low;
1863
+ uint64_t trace_id_high;
1864
+ uint64_t span_id;
1865
+ struct ddog_Slice_TracerSpanLinkAttribute attributes;
1866
+ ddog_CharSlice tracestate;
1867
+ uint32_t flags;
1868
+ } ddog_TracerSpanLink;
1869
+
1870
+ typedef struct ddog_Slice_TracerSpanLink {
1871
+ /**
1872
+ * Should be non-null and suitably aligned for the underlying type. It is
1873
+ * allowed but not recommended for the pointer to be null when the len is
1874
+ * zero.
1875
+ */
1876
+ const struct ddog_TracerSpanLink *ptr;
1877
+ /**
1878
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1879
+ * than or equal to [isize::MAX].
1880
+ */
1881
+ uintptr_t len;
1882
+ } ddog_Slice_TracerSpanLink;
1883
+
1884
+ typedef struct ddog_Slice_CharSlice {
1885
+ /**
1886
+ * Should be non-null and suitably aligned for the underlying type. It is
1887
+ * allowed but not recommended for the pointer to be null when the len is
1888
+ * zero.
1889
+ */
1890
+ const ddog_CharSlice *ptr;
1891
+ /**
1892
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1893
+ * than or equal to [isize::MAX].
1894
+ */
1895
+ uintptr_t len;
1896
+ } ddog_Slice_CharSlice;
1897
+
1898
+ typedef struct ddog_Slice_Bool {
1899
+ /**
1900
+ * Should be non-null and suitably aligned for the underlying type. It is
1901
+ * allowed but not recommended for the pointer to be null when the len is
1902
+ * zero.
1903
+ */
1904
+ const bool *ptr;
1905
+ /**
1906
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1907
+ * than or equal to [isize::MAX].
1908
+ */
1909
+ uintptr_t len;
1910
+ } ddog_Slice_Bool;
1911
+
1912
+ typedef struct ddog_Slice_F64 {
1913
+ /**
1914
+ * Should be non-null and suitably aligned for the underlying type. It is
1915
+ * allowed but not recommended for the pointer to be null when the len is
1916
+ * zero.
1917
+ */
1918
+ const double *ptr;
1919
+ /**
1920
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1921
+ * than or equal to [isize::MAX].
1922
+ */
1923
+ uintptr_t len;
1924
+ } ddog_Slice_F64;
1925
+
1736
1926
  typedef enum ddog_LibraryConfigSource {
1737
1927
  DDOG_LIBRARY_CONFIG_SOURCE_LOCAL_STABLE_CONFIG = 0,
1738
1928
  DDOG_LIBRARY_CONFIG_SOURCE_FLEET_STABLE_CONFIG = 1,
@@ -1775,20 +1965,6 @@ typedef struct ddog_CStr {
1775
1965
  uintptr_t length;
1776
1966
  } ddog_CStr;
1777
1967
 
1778
- typedef struct ddog_Slice_CharSlice {
1779
- /**
1780
- * Should be non-null and suitably aligned for the underlying type. It is
1781
- * allowed but not recommended for the pointer to be null when the len is
1782
- * zero.
1783
- */
1784
- const ddog_CharSlice *ptr;
1785
- /**
1786
- * The number of elements (not bytes) that `.ptr` points to. Must be less
1787
- * than or equal to [isize::MAX].
1788
- */
1789
- uintptr_t len;
1790
- } ddog_Slice_CharSlice;
1791
-
1792
1968
  typedef struct ddog_ProcessInfo {
1793
1969
  struct ddog_Slice_CharSlice args;
1794
1970
  struct ddog_Slice_CharSlice envp;
@@ -33,6 +33,34 @@ ddog_ByteSlice ddog_trace_exporter_response_get_body(const struct ddog_TraceExpo
33
33
  */
34
34
  void ddog_trace_exporter_response_free(struct ddog_TraceExporterResponse *response);
35
35
 
36
+ /**
37
+ * Encode one flat preorder structured value as an owned MessagePack blob.
38
+ *
39
+ * On success, `out_handle` receives an owned blob that must be freed with
40
+ * [`ddog_tracer_encoded_value_free`]. The input is fully validated and must
41
+ * contain exactly one value. Token byte slices are borrowed only for this
42
+ * synchronous call; the returned blob does not retain them.
43
+ *
44
+ * # Safety
45
+ *
46
+ * `tokens` and every byte slice referenced by its tokens must remain valid for
47
+ * this call. `out_handle` must point to writable memory for a
48
+ * `Box<TracerEncodedValue>`.
49
+ */
50
+ struct ddog_TraceExporterError *ddog_tracer_encode_value(struct ddog_Slice_TracerValueToken tokens,
51
+ struct ddog_TracerEncodedValue **out_handle);
52
+
53
+ /**
54
+ * Borrow the bytes in an encoded value. The slice is valid until the blob is
55
+ * freed.
56
+ */
57
+ ddog_ByteSlice ddog_tracer_encoded_value_as_slice(const struct ddog_TracerEncodedValue *value);
58
+
59
+ /**
60
+ * Free an encoded structured value and its bytes.
61
+ */
62
+ void ddog_tracer_encoded_value_free(struct ddog_TracerEncodedValue *value);
63
+
36
64
  void ddog_trace_exporter_config_new(struct ddog_TraceExporterConfig **out_handle);
37
65
 
38
66
  /**
@@ -205,7 +233,12 @@ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_otlp_instrumentat
205
233
  * `ddog_trace_exporter_config_set_compute_stats`.
206
234
  */
207
235
  struct ddog_TraceExporterError *ddog_trace_exporter_config_set_stats_cardinality_limit(struct ddog_TraceExporterConfig *config,
208
- uintptr_t limit);
236
+ struct ddog_CardinalityLimitConfig limits);
237
+
238
+ /**
239
+ * Returns a `CardinalityLimitConfig` with default values
240
+ */
241
+ struct ddog_CardinalityLimitConfig ddog_trace_exporter_config_default_stats_cardinality_limit(void);
209
242
 
210
243
  /**
211
244
  * Configure the exporter to write traces as newline-delimited JSON to stdout (the Datadog
@@ -270,9 +303,12 @@ struct ddog_TraceExporterError *ddog_trace_exporter_send(const ddog_TraceExporte
270
303
  /**
271
304
  * Create a new span with all scalar fields set.
272
305
  *
273
- * String fields are copied from the provided slices. The `meta` and
274
- * `metrics` maps start empty; use [`ddog_tracer_span_set_meta`] and
275
- * [`ddog_tracer_span_set_metric`] to populate them.
306
+ * String fields are copied from the provided slices. The `meta`, `metrics` and `meta_struct`
307
+ * maps start empty; use [`ddog_tracer_span_set_meta`], [`ddog_tracer_span_set_metric`] and
308
+ * [`ddog_tracer_span_set_meta_struct_blob`] to populate them.
309
+ *
310
+ * Returns an error if `fields` is null, if any string field is not valid UTF-8, or if any of
311
+ * its slices is malformed.
276
312
  *
277
313
  * # Safety
278
314
  *
@@ -300,10 +336,13 @@ void ddog_tracer_span_free(ddog_TracerSpan *handle);
300
336
  *
301
337
  * Both `key` and `value` are copied into the span.
302
338
  *
339
+ * Returns an error if `handle` is null, if `key` or `value` is not valid UTF-8, or if either
340
+ * slice is malformed.
341
+ *
303
342
  * # Safety
304
343
  *
305
- * `handle` must be a valid pointer to a `TracerSpan`.
306
- * `key` and `value` must point to valid UTF-8 memory.
344
+ * `handle` must be a valid pointer to a `TracerSpan`. `key` and `value` must point to valid
345
+ * memory for their stated lengths.
307
346
  */
308
347
  struct ddog_TraceExporterError *ddog_tracer_span_set_meta(ddog_TracerSpan *handle,
309
348
  ddog_CharSlice key,
@@ -314,15 +353,150 @@ struct ddog_TraceExporterError *ddog_tracer_span_set_meta(ddog_TracerSpan *handl
314
353
  *
315
354
  * The `key` is copied into the span.
316
355
  *
356
+ * Returns an error if `handle` is null, if `key` is not valid UTF-8, or if the slice is
357
+ * malformed.
358
+ *
317
359
  * # Safety
318
360
  *
319
- * `handle` must be a valid pointer to a `TracerSpan`.
320
- * `key` must point to valid UTF-8 memory.
361
+ * `handle` must be a valid pointer to a `TracerSpan`. `key` must point to valid memory for its
362
+ * stated length.
321
363
  */
322
364
  struct ddog_TraceExporterError *ddog_tracer_span_set_metric(ddog_TracerSpan *handle,
323
365
  ddog_CharSlice key,
324
366
  double value);
325
367
 
368
+ /**
369
+ * Add or overwrite a structured metadata entry (`meta_struct`) on the span.
370
+ *
371
+ * The `key` and opaque binary `value` are copied into the span. The value is
372
+ * not interpreted or validated as MessagePack.
373
+ *
374
+ * Returns an error if `handle` is null, if `key` is not valid UTF-8, or if either slice is
375
+ * malformed.
376
+ *
377
+ * # Safety
378
+ *
379
+ * `handle` must be a valid pointer to a `TracerSpan`. `key` and `value` must point to valid
380
+ * memory for their stated lengths.
381
+ */
382
+ struct ddog_TraceExporterError *ddog_tracer_span_set_meta_struct_blob(ddog_TracerSpan *handle,
383
+ ddog_CharSlice key,
384
+ ddog_ByteSlice value);
385
+
386
+ /**
387
+ * Encode and add or overwrite a structured metadata entry (`meta_struct`) on
388
+ * the span.
389
+ *
390
+ * The `key` is copied into the span. The structured-value tokens are fully
391
+ * validated and encoded directly into the span without exposing an
392
+ * intermediate blob to the caller. The span is unchanged on failure.
393
+ *
394
+ * # Safety
395
+ *
396
+ * `handle` must be a valid pointer to a `TracerSpan`. `key` must point to
397
+ * valid UTF-8 memory. `tokens` and every byte slice referenced by its tokens
398
+ * must remain valid for this call.
399
+ */
400
+ struct ddog_TraceExporterError *ddog_tracer_span_set_meta_struct(ddog_TracerSpan *handle,
401
+ ddog_CharSlice key,
402
+ struct ddog_Slice_TracerValueToken tokens);
403
+
404
+ /**
405
+ * Replace all span links in one atomic operation.
406
+ *
407
+ * The links, attributes, and strings are copied before this function returns.
408
+ * If any slice or string is invalid, the span's existing links are unchanged.
409
+ * Link order is preserved.
410
+ *
411
+ * # Safety
412
+ *
413
+ * `handle` must be a valid pointer to a `TracerSpan`. All slices must point to
414
+ * valid memory for their stated lengths.
415
+ */
416
+ struct ddog_TraceExporterError *ddog_tracer_span_set_links(ddog_TracerSpan *handle,
417
+ struct ddog_Slice_TracerSpanLink links);
418
+
419
+ /**
420
+ * Create an owned span event.
421
+ *
422
+ * The name is copied before this function returns. The event remains detached
423
+ * until consumed by [`ddog_tracer_span_add_event`].
424
+ */
425
+ struct ddog_TraceExporterError *ddog_tracer_span_event_new(ddog_TracerSpanEvent **out_handle,
426
+ ddog_CharSlice name,
427
+ uint64_t time_unix_nano);
428
+
429
+ /**
430
+ * Free a detached span event.
431
+ */
432
+ void ddog_tracer_span_event_free(ddog_TracerSpanEvent *handle);
433
+
434
+ /**
435
+ * Add or overwrite a string event attribute. The key and value are copied.
436
+ */
437
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_string(ddog_TracerSpanEvent *event,
438
+ ddog_CharSlice key,
439
+ ddog_CharSlice value);
440
+
441
+ /**
442
+ * Add or overwrite a boolean event attribute.
443
+ */
444
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_bool(ddog_TracerSpanEvent *event,
445
+ ddog_CharSlice key,
446
+ bool value);
447
+
448
+ /**
449
+ * Add or overwrite a signed integer event attribute.
450
+ */
451
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_int(ddog_TracerSpanEvent *event,
452
+ ddog_CharSlice key,
453
+ int64_t value);
454
+
455
+ /**
456
+ * Add or overwrite a double event attribute.
457
+ */
458
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_double(ddog_TracerSpanEvent *event,
459
+ ddog_CharSlice key,
460
+ double value);
461
+
462
+ /**
463
+ * Add or overwrite a homogeneous string array event attribute.
464
+ */
465
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_string_array(ddog_TracerSpanEvent *event,
466
+ ddog_CharSlice key,
467
+ struct ddog_Slice_CharSlice values);
468
+
469
+ /**
470
+ * Add or overwrite a homogeneous boolean array event attribute.
471
+ */
472
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_bool_array(ddog_TracerSpanEvent *event,
473
+ ddog_CharSlice key,
474
+ struct ddog_Slice_Bool values);
475
+
476
+ /**
477
+ * Add or overwrite a homogeneous signed integer array event attribute.
478
+ */
479
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_int_array(ddog_TracerSpanEvent *event,
480
+ ddog_CharSlice key,
481
+ struct ddog_Slice_I64 values);
482
+
483
+ /**
484
+ * Add or overwrite a homogeneous double array event attribute.
485
+ */
486
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_double_array(ddog_TracerSpanEvent *event,
487
+ ddog_CharSlice key,
488
+ struct ddog_Slice_F64 values);
489
+
490
+ /**
491
+ * Atomically attach a completed event to a span, consuming the event.
492
+ *
493
+ * A non-null `event` is always consumed — moved into the span on success, or
494
+ * dropped on any error (a null `span`, or an internal panic). Callers must not
495
+ * use or free the event after this call. On error the span is unchanged.
496
+ */
497
+ struct ddog_TraceExporterError *ddog_tracer_span_add_event(ddog_TracerSpan *span,
498
+ ddog_TracerSpanEvent *event);
499
+
326
500
  /**
327
501
  * Create a new empty trace chunks container.
328
502
  *
@@ -389,17 +563,14 @@ ddog_TraceExporterCancelToken *ddog_trace_exporter_cancel_token_new(void);
389
563
  /**
390
564
  * Cancel a cancellation token.
391
565
  *
392
- * All clones of the same token observe the cancellation. If a
393
- * [`ddog_trace_exporter_send_trace_chunks`] call is using this token at the
394
- * time of cancellation, that send stops waiting for the agent at its next
395
- * await point and returns an error; the trace chunks it was sending may be
396
- * lost.
566
+ * All clones of the same token observe the cancellation. Cancellation is cooperative and only
567
+ * affects a [`ddog_trace_exporter_send_trace_chunks`] call that is in flight: that send stops
568
+ * waiting for the agent at its next await point and fails with
569
+ * [`ExporterErrorCode::IoError`], and the chunks it was sending may be lost.
397
570
  *
398
- * Cancellation only affects a send that is in progress. If no send is using
399
- * the token, cancelling it has no immediate effect: a send started afterwards
400
- * with an already-cancelled token returns an error without contacting the
401
- * agent, and a token cancelled after its send has already finished does
402
- * nothing.
571
+ * Cancelling while no send is using the token has no immediate effect. A send started later with
572
+ * an already-cancelled token fails the same way without contacting the agent, and cancelling
573
+ * after a send has finished does nothing.
403
574
  */
404
575
  void ddog_trace_exporter_cancel_token_cancel(const ddog_TraceExporterCancelToken *token);
405
576
 
@@ -413,19 +584,11 @@ void ddog_trace_exporter_cancel_token_drop(ddog_TraceExporterCancelToken *token)
413
584
  /**
414
585
  * Send trace chunks through a [`TraceExporter`], consuming the chunks.
415
586
  *
416
- * This calls `TraceExporter::send_trace_chunks` which processes stats,
417
- * serializes in the configured output format, and sends to the agent
418
- * with retry logic.
419
- *
420
- * When `cancel` is non-null, cancelling that token (via
421
- * [`ddog_trace_exporter_cancel_token_cancel`]) while the send is in progress
422
- * aborts the in-flight request and returns an error with code
423
- * [`ExporterErrorCode::IoError`]. Cancellation is cooperative: it only takes
424
- * effect while a request is actually in flight. A token that is already
425
- * cancelled when the send starts makes this function return that error
426
- * immediately, and cancelling after the send has finished has no effect.
427
- * Cancelling an in-flight send may cause the trace chunks being sent to be
428
- * lost.
587
+ * Computes stats, serializes in the configured output format, and sends to the agent with
588
+ * retries.
589
+ *
590
+ * When `cancel` is non-null, cancelling that token aborts the in-flight request; see
591
+ * [`ddog_trace_exporter_cancel_token_cancel`].
429
592
  *
430
593
  * On success, if `response_out` is non-null, a heap-allocated
431
594
  * [`ExporterResponse`] is written there. The caller owns it and must
@@ -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: 38.0.0
11
+ Version: 40.0.0
12
12
  Requires:
13
13
  Libs: -L${libdir} -ldatadog_profiling -Wl,-rpath,${libdir}
14
14
  Libs.private:
@@ -220,7 +220,7 @@ js-sys,https://github.com/rustwasm/wasm-bindgen/tree/master/crates/js-sys,MIT OR
220
220
  kernel32-sys,https://github.com/retep998/winapi-rs,MIT,Peter Atashian <retep998@gmail.com>
221
221
  kv-log-macro,https://github.com/yoshuawuyts/kv-log-macro,MIT OR Apache-2.0,Yoshua Wuyts <yoshuawuyts@gmail.com>
222
222
  lazy_static,https://github.com/rust-lang-nursery/lazy-static.rs,MIT OR Apache-2.0,Marvin Löbel <loebel.marvin@gmail.com>
223
- libc,https://github.com/rust-lang/libc,MIT OR Apache-2.0,The Rust Project Developers
223
+ libc,https://github.com/rust-lang/libc,MIT OR Apache-2.0,The libc Authors
224
224
  libdd-libunwind-sys,https://github.com/DataDog/libdatadog/tree/main/libdd-libunwind-sys,Apache-2.0,The libdd-libunwind-sys Authors
225
225
  libloading,https://github.com/nagisa/rust_libloading,ISC,Simonas Kazlauskas <libloading@kazlauskas.me>
226
226
  libredox,https://gitlab.redox-os.org/redox-os/libredox,MIT,4lDO2 <4lDO2@protonmail.com>