libdatadog 38.0.0.1.0 → 39.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-39.0.0/aarch64-linux}/LICENSE-3rdparty.csv +1 -1
  4. data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux/bin/libdatadog-crashtracking-receiver +0 -0
  5. data/vendor/{libdatadog-38.0.0/x86_64-linux-musl → libdatadog-39.0.0/aarch64-linux}/include/datadog/common.h +125 -14
  6. data/vendor/{libdatadog-38.0.0/arm64-darwin → libdatadog-39.0.0/aarch64-linux}/include/datadog/data-pipeline.h +148 -31
  7. data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux/lib/libdatadog_profiling.so +0 -0
  8. data/vendor/{libdatadog-38.0.0/arm64-darwin → libdatadog-39.0.0/aarch64-linux}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  9. data/vendor/{libdatadog-38.0.0/aarch64-linux → libdatadog-39.0.0/aarch64-linux-musl}/LICENSE-3rdparty.csv +1 -1
  10. data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  11. data/vendor/{libdatadog-38.0.0/arm64-darwin → libdatadog-39.0.0/aarch64-linux-musl}/include/datadog/common.h +125 -14
  12. data/vendor/{libdatadog-38.0.0/aarch64-linux → libdatadog-39.0.0/aarch64-linux-musl}/include/datadog/data-pipeline.h +148 -31
  13. data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/lib/libdatadog_profiling.so +0 -0
  14. data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  15. data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/arm64-darwin/LICENSE-3rdparty.csv +1 -1
  16. data/vendor/{libdatadog-38.0.0/aarch64-linux-musl → libdatadog-39.0.0/arm64-darwin}/include/datadog/common.h +125 -14
  17. data/vendor/{libdatadog-38.0.0/aarch64-linux-musl → libdatadog-39.0.0/arm64-darwin}/include/datadog/data-pipeline.h +148 -31
  18. data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/arm64-darwin/lib/libdatadog_profiling.dylib +0 -0
  19. data/vendor/{libdatadog-38.0.0/x86_64-linux-musl → libdatadog-39.0.0/arm64-darwin}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  20. data/vendor/libdatadog-39.0.0/x86_64-linux/LICENSE-3rdparty.csv +554 -0
  21. data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux/bin/libdatadog-crashtracking-receiver +0 -0
  22. data/vendor/libdatadog-39.0.0/x86_64-linux/include/datadog/common.h +3035 -0
  23. data/vendor/libdatadog-39.0.0/x86_64-linux/include/datadog/data-pipeline.h +566 -0
  24. data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux/lib/libdatadog_profiling.so +0 -0
  25. data/vendor/libdatadog-39.0.0/x86_64-linux/lib/pkgconfig/datadog_profiling_with_rpath.pc +15 -0
  26. data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/LICENSE-3rdparty.csv +1 -1
  27. data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  28. data/vendor/{libdatadog-38.0.0/aarch64-linux → libdatadog-39.0.0/x86_64-linux-musl}/include/datadog/common.h +125 -14
  29. data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/data-pipeline.h +148 -31
  30. data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/lib/libdatadog_profiling.so +0 -0
  31. data/vendor/{libdatadog-38.0.0/aarch64-linux → libdatadog-39.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-39.0.0}/aarch64-linux/LICENSE +0 -0
  38. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux/NOTICE +0 -0
  39. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux/include/datadog/blazesym.h +0 -0
  40. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux/include/datadog/crashtracker.h +0 -0
  41. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux/include/datadog/ddsketch.h +0 -0
  42. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux/include/datadog/ffe.h +0 -0
  43. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux/include/datadog/library-config.h +0 -0
  44. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux/include/datadog/log.h +0 -0
  45. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux/include/datadog/profiling.h +0 -0
  46. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux/include/datadog/shared-runtime.h +0 -0
  47. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux/include/datadog/telemetry.h +0 -0
  48. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/LICENSE +0 -0
  49. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/NOTICE +0 -0
  50. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/include/datadog/blazesym.h +0 -0
  51. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/include/datadog/crashtracker.h +0 -0
  52. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/include/datadog/ddsketch.h +0 -0
  53. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/include/datadog/ffe.h +0 -0
  54. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/include/datadog/library-config.h +0 -0
  55. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/include/datadog/log.h +0 -0
  56. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/include/datadog/profiling.h +0 -0
  57. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/include/datadog/shared-runtime.h +0 -0
  58. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/aarch64-linux-musl/include/datadog/telemetry.h +0 -0
  59. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/arm64-darwin/LICENSE +0 -0
  60. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/arm64-darwin/NOTICE +0 -0
  61. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/arm64-darwin/bin/libdatadog-crashtracking-receiver +0 -0
  62. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/arm64-darwin/include/datadog/blazesym.h +0 -0
  63. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/arm64-darwin/include/datadog/crashtracker.h +0 -0
  64. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/arm64-darwin/include/datadog/ddsketch.h +0 -0
  65. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/arm64-darwin/include/datadog/ffe.h +0 -0
  66. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/arm64-darwin/include/datadog/library-config.h +0 -0
  67. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/arm64-darwin/include/datadog/log.h +0 -0
  68. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/arm64-darwin/include/datadog/profiling.h +0 -0
  69. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/arm64-darwin/include/datadog/shared-runtime.h +0 -0
  70. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/arm64-darwin/include/datadog/telemetry.h +0 -0
  71. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux/LICENSE +0 -0
  72. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux/NOTICE +0 -0
  73. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux/include/datadog/blazesym.h +0 -0
  74. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux/include/datadog/crashtracker.h +0 -0
  75. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux/include/datadog/ddsketch.h +0 -0
  76. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux/include/datadog/ffe.h +0 -0
  77. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux/include/datadog/library-config.h +0 -0
  78. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux/include/datadog/log.h +0 -0
  79. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux/include/datadog/profiling.h +0 -0
  80. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux/include/datadog/shared-runtime.h +0 -0
  81. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux/include/datadog/telemetry.h +0 -0
  82. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/LICENSE +0 -0
  83. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/NOTICE +0 -0
  84. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/blazesym.h +0 -0
  85. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/crashtracker.h +0 -0
  86. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/ddsketch.h +0 -0
  87. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/ffe.h +0 -0
  88. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/library-config.h +0 -0
  89. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/log.h +0 -0
  90. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/profiling.h +0 -0
  91. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.0.0}/x86_64-linux-musl/include/datadog/shared-runtime.h +0 -0
  92. /data/vendor/{libdatadog-38.0.0 → libdatadog-39.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: 114157501f296f5eb2152369ebe115b1a012dc530da5317b026ea859d3c649bc
4
+ data.tar.gz: f0faabc0acd20de92b2e86c95eaab93765ec9af0d56fb30a7ebfa513aa70a56e
5
5
  SHA512:
6
- metadata.gz: 3df08279edf1e21b9db5856c3ca90a6cf4488a9963f242c3bdb03a3320f16b965acc534e9b4dd2f7c74223b2e13afc940c40f87b090bc44afd90c669c5040f24
7
- data.tar.gz: a02d9031f0490f31c2de9c4b07f0dabd8c1d4e274364487f719b073acbdc6aa9daddde42dd1df537f395f4983c89d0c58ca18f270249ebdbbc8c98a88ab8c2f5
6
+ metadata.gz: 1a71140391443f4325242a4198b4e2b14037f919709ded517642c22b39d6126d3e5da3bed9ab63d3299b1a715418a60e575a9cdb860521fbe7b970cabbe1fc61
7
+ data.tar.gz: bf748dd1cae615c0d284cf465cb9529c857add3c2ed8aa61d5ce9bca6d6995efe48b95280c23517684a9839a03d86f0c05c34bc77967d051f243e588bc4bfc77
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Libdatadog
4
4
  # Current libdatadog version
5
- LIB_VERSION = "38.0.0"
5
+ LIB_VERSION = "39.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>
@@ -1609,10 +1609,19 @@ typedef struct ddog_ContextKey {
1609
1609
 
1610
1610
  typedef struct ddog_TraceExporter ddog_TraceExporter;
1611
1611
  typedef struct ddog_TracerSpan ddog_TracerSpan;
1612
+ typedef struct ddog_TracerSpanEvent ddog_TracerSpanEvent;
1612
1613
  typedef struct ddog_TracerTraceChunks ddog_TracerTraceChunks;
1613
1614
  typedef struct ddog_TraceExporterCancelToken ddog_TraceExporterCancelToken;
1614
1615
 
1615
1616
 
1617
+ #define ddog_CollapsedFieldSet_RESOURCE_NAME (1 << 0)
1618
+
1619
+ #define ddog_CollapsedFieldSet_HTTP_ENDPOINT (1 << 1)
1620
+
1621
+ #define ddog_CollapsedFieldSet_PEER_TAGS (1 << 2)
1622
+
1623
+ #define ddog_CollapsedFieldSet_ADDITIONAL_TAGS (1 << 3)
1624
+
1616
1625
  /**
1617
1626
  * Represent error codes that `Error` struct can hold
1618
1627
  */
@@ -1713,6 +1722,32 @@ typedef struct ddog_TelemetryClientConfig {
1713
1722
  ddog_CharSlice parent_session_id;
1714
1723
  } ddog_TelemetryClientConfig;
1715
1724
 
1725
+ /**
1726
+ * Config to override the default stats cardinality limit values
1727
+ */
1728
+ typedef struct ddog_CardinalityLimitConfig {
1729
+ /**
1730
+ * The whole-key cardinality limit (defaults to 7000)
1731
+ */
1732
+ uintptr_t whole_key_limit;
1733
+ /**
1734
+ * The per-field cardinality limit for the Resource field (defaults to 1024)
1735
+ */
1736
+ uintptr_t resource_limit;
1737
+ /**
1738
+ * The per-field cardinality limit for the HttpEndpoint field (defaults to 512)
1739
+ */
1740
+ uintptr_t http_endpoint_limit;
1741
+ /**
1742
+ * The per-field cardinality limit for the PeerTags field (defaults to 512)
1743
+ */
1744
+ uintptr_t peer_tags_limit;
1745
+ /**
1746
+ * The per-field cardinality limit for the AdditionalTags field (defaults to 100)
1747
+ */
1748
+ uintptr_t additional_tags_limit;
1749
+ } ddog_CardinalityLimitConfig;
1750
+
1716
1751
  /**
1717
1752
  * FFI-safe bundle of scalar fields for creating a [`TracerSpan`].
1718
1753
  *
@@ -1733,6 +1768,96 @@ typedef struct ddog_TracerSpanFields {
1733
1768
  int32_t error;
1734
1769
  } ddog_TracerSpanFields;
1735
1770
 
1771
+ /**
1772
+ * A string attribute belonging to a [`TracerSpanLink`].
1773
+ */
1774
+ typedef struct ddog_TracerSpanLinkAttribute {
1775
+ ddog_CharSlice key;
1776
+ ddog_CharSlice value;
1777
+ } ddog_TracerSpanLinkAttribute;
1778
+
1779
+ typedef struct ddog_Slice_TracerSpanLinkAttribute {
1780
+ /**
1781
+ * Should be non-null and suitably aligned for the underlying type. It is
1782
+ * allowed but not recommended for the pointer to be null when the len is
1783
+ * zero.
1784
+ */
1785
+ const struct ddog_TracerSpanLinkAttribute *ptr;
1786
+ /**
1787
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1788
+ * than or equal to [isize::MAX].
1789
+ */
1790
+ uintptr_t len;
1791
+ } ddog_Slice_TracerSpanLinkAttribute;
1792
+
1793
+ /**
1794
+ * FFI-safe representation of one complete span link.
1795
+ */
1796
+ typedef struct ddog_TracerSpanLink {
1797
+ uint64_t trace_id_low;
1798
+ uint64_t trace_id_high;
1799
+ uint64_t span_id;
1800
+ struct ddog_Slice_TracerSpanLinkAttribute attributes;
1801
+ ddog_CharSlice tracestate;
1802
+ uint32_t flags;
1803
+ } ddog_TracerSpanLink;
1804
+
1805
+ typedef struct ddog_Slice_TracerSpanLink {
1806
+ /**
1807
+ * Should be non-null and suitably aligned for the underlying type. It is
1808
+ * allowed but not recommended for the pointer to be null when the len is
1809
+ * zero.
1810
+ */
1811
+ const struct ddog_TracerSpanLink *ptr;
1812
+ /**
1813
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1814
+ * than or equal to [isize::MAX].
1815
+ */
1816
+ uintptr_t len;
1817
+ } ddog_Slice_TracerSpanLink;
1818
+
1819
+ typedef struct ddog_Slice_CharSlice {
1820
+ /**
1821
+ * Should be non-null and suitably aligned for the underlying type. It is
1822
+ * allowed but not recommended for the pointer to be null when the len is
1823
+ * zero.
1824
+ */
1825
+ const ddog_CharSlice *ptr;
1826
+ /**
1827
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1828
+ * than or equal to [isize::MAX].
1829
+ */
1830
+ uintptr_t len;
1831
+ } ddog_Slice_CharSlice;
1832
+
1833
+ typedef struct ddog_Slice_Bool {
1834
+ /**
1835
+ * Should be non-null and suitably aligned for the underlying type. It is
1836
+ * allowed but not recommended for the pointer to be null when the len is
1837
+ * zero.
1838
+ */
1839
+ const bool *ptr;
1840
+ /**
1841
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1842
+ * than or equal to [isize::MAX].
1843
+ */
1844
+ uintptr_t len;
1845
+ } ddog_Slice_Bool;
1846
+
1847
+ typedef struct ddog_Slice_F64 {
1848
+ /**
1849
+ * Should be non-null and suitably aligned for the underlying type. It is
1850
+ * allowed but not recommended for the pointer to be null when the len is
1851
+ * zero.
1852
+ */
1853
+ const double *ptr;
1854
+ /**
1855
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1856
+ * than or equal to [isize::MAX].
1857
+ */
1858
+ uintptr_t len;
1859
+ } ddog_Slice_F64;
1860
+
1736
1861
  typedef enum ddog_LibraryConfigSource {
1737
1862
  DDOG_LIBRARY_CONFIG_SOURCE_LOCAL_STABLE_CONFIG = 0,
1738
1863
  DDOG_LIBRARY_CONFIG_SOURCE_FLEET_STABLE_CONFIG = 1,
@@ -1775,20 +1900,6 @@ typedef struct ddog_CStr {
1775
1900
  uintptr_t length;
1776
1901
  } ddog_CStr;
1777
1902
 
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
1903
  typedef struct ddog_ProcessInfo {
1793
1904
  struct ddog_Slice_CharSlice args;
1794
1905
  struct ddog_Slice_CharSlice envp;
@@ -205,7 +205,12 @@ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_otlp_instrumentat
205
205
  * `ddog_trace_exporter_config_set_compute_stats`.
206
206
  */
207
207
  struct ddog_TraceExporterError *ddog_trace_exporter_config_set_stats_cardinality_limit(struct ddog_TraceExporterConfig *config,
208
- uintptr_t limit);
208
+ struct ddog_CardinalityLimitConfig limits);
209
+
210
+ /**
211
+ * Returns a `CardinalityLimitConfig` with default values
212
+ */
213
+ struct ddog_CardinalityLimitConfig ddog_trace_exporter_config_default_stats_cardinality_limit(void);
209
214
 
210
215
  /**
211
216
  * Configure the exporter to write traces as newline-delimited JSON to stdout (the Datadog
@@ -270,9 +275,12 @@ struct ddog_TraceExporterError *ddog_trace_exporter_send(const ddog_TraceExporte
270
275
  /**
271
276
  * Create a new span with all scalar fields set.
272
277
  *
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.
278
+ * String fields are copied from the provided slices. The `meta`, `metrics` and `meta_struct`
279
+ * maps start empty; use [`ddog_tracer_span_set_meta`], [`ddog_tracer_span_set_metric`] and
280
+ * [`ddog_tracer_span_set_meta_struct_blob`] to populate them.
281
+ *
282
+ * Returns an error if `fields` is null, if any string field is not valid UTF-8, or if any of
283
+ * its slices is malformed.
276
284
  *
277
285
  * # Safety
278
286
  *
@@ -300,10 +308,13 @@ void ddog_tracer_span_free(ddog_TracerSpan *handle);
300
308
  *
301
309
  * Both `key` and `value` are copied into the span.
302
310
  *
311
+ * Returns an error if `handle` is null, if `key` or `value` is not valid UTF-8, or if either
312
+ * slice is malformed.
313
+ *
303
314
  * # Safety
304
315
  *
305
- * `handle` must be a valid pointer to a `TracerSpan`.
306
- * `key` and `value` must point to valid UTF-8 memory.
316
+ * `handle` must be a valid pointer to a `TracerSpan`. `key` and `value` must point to valid
317
+ * memory for their stated lengths.
307
318
  */
308
319
  struct ddog_TraceExporterError *ddog_tracer_span_set_meta(ddog_TracerSpan *handle,
309
320
  ddog_CharSlice key,
@@ -314,15 +325,132 @@ struct ddog_TraceExporterError *ddog_tracer_span_set_meta(ddog_TracerSpan *handl
314
325
  *
315
326
  * The `key` is copied into the span.
316
327
  *
328
+ * Returns an error if `handle` is null, if `key` is not valid UTF-8, or if the slice is
329
+ * malformed.
330
+ *
317
331
  * # Safety
318
332
  *
319
- * `handle` must be a valid pointer to a `TracerSpan`.
320
- * `key` must point to valid UTF-8 memory.
333
+ * `handle` must be a valid pointer to a `TracerSpan`. `key` must point to valid memory for its
334
+ * stated length.
321
335
  */
322
336
  struct ddog_TraceExporterError *ddog_tracer_span_set_metric(ddog_TracerSpan *handle,
323
337
  ddog_CharSlice key,
324
338
  double value);
325
339
 
340
+ /**
341
+ * Add or overwrite a structured metadata entry (`meta_struct`) on the span.
342
+ *
343
+ * The `key` and opaque binary `value` are copied into the span. The value is
344
+ * not interpreted or validated as MessagePack.
345
+ *
346
+ * Returns an error if `handle` is null, if `key` is not valid UTF-8, or if either slice is
347
+ * malformed.
348
+ *
349
+ * # Safety
350
+ *
351
+ * `handle` must be a valid pointer to a `TracerSpan`. `key` and `value` must point to valid
352
+ * memory for their stated lengths.
353
+ */
354
+ struct ddog_TraceExporterError *ddog_tracer_span_set_meta_struct_blob(ddog_TracerSpan *handle,
355
+ ddog_CharSlice key,
356
+ ddog_ByteSlice value);
357
+
358
+ /**
359
+ * Replace all span links in one atomic operation.
360
+ *
361
+ * The links, attributes, and strings are copied before this function returns.
362
+ * If any slice or string is invalid, the span's existing links are unchanged.
363
+ * Link order is preserved.
364
+ *
365
+ * # Safety
366
+ *
367
+ * `handle` must be a valid pointer to a `TracerSpan`. All slices must point to
368
+ * valid memory for their stated lengths.
369
+ */
370
+ struct ddog_TraceExporterError *ddog_tracer_span_set_links(ddog_TracerSpan *handle,
371
+ struct ddog_Slice_TracerSpanLink links);
372
+
373
+ /**
374
+ * Create an owned span event.
375
+ *
376
+ * The name is copied before this function returns. The event remains detached
377
+ * until consumed by [`ddog_tracer_span_add_event`].
378
+ */
379
+ struct ddog_TraceExporterError *ddog_tracer_span_event_new(ddog_TracerSpanEvent **out_handle,
380
+ ddog_CharSlice name,
381
+ uint64_t time_unix_nano);
382
+
383
+ /**
384
+ * Free a detached span event.
385
+ */
386
+ void ddog_tracer_span_event_free(ddog_TracerSpanEvent *handle);
387
+
388
+ /**
389
+ * Add or overwrite a string event attribute. The key and value are copied.
390
+ */
391
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_string(ddog_TracerSpanEvent *event,
392
+ ddog_CharSlice key,
393
+ ddog_CharSlice value);
394
+
395
+ /**
396
+ * Add or overwrite a boolean event attribute.
397
+ */
398
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_bool(ddog_TracerSpanEvent *event,
399
+ ddog_CharSlice key,
400
+ bool value);
401
+
402
+ /**
403
+ * Add or overwrite a signed integer event attribute.
404
+ */
405
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_int(ddog_TracerSpanEvent *event,
406
+ ddog_CharSlice key,
407
+ int64_t value);
408
+
409
+ /**
410
+ * Add or overwrite a double event attribute.
411
+ */
412
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_double(ddog_TracerSpanEvent *event,
413
+ ddog_CharSlice key,
414
+ double value);
415
+
416
+ /**
417
+ * Add or overwrite a homogeneous string array event attribute.
418
+ */
419
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_string_array(ddog_TracerSpanEvent *event,
420
+ ddog_CharSlice key,
421
+ struct ddog_Slice_CharSlice values);
422
+
423
+ /**
424
+ * Add or overwrite a homogeneous boolean array event attribute.
425
+ */
426
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_bool_array(ddog_TracerSpanEvent *event,
427
+ ddog_CharSlice key,
428
+ struct ddog_Slice_Bool values);
429
+
430
+ /**
431
+ * Add or overwrite a homogeneous signed integer array event attribute.
432
+ */
433
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_int_array(ddog_TracerSpanEvent *event,
434
+ ddog_CharSlice key,
435
+ struct ddog_Slice_I64 values);
436
+
437
+ /**
438
+ * Add or overwrite a homogeneous double array event attribute.
439
+ */
440
+ struct ddog_TraceExporterError *ddog_tracer_span_event_set_double_array(ddog_TracerSpanEvent *event,
441
+ ddog_CharSlice key,
442
+ struct ddog_Slice_F64 values);
443
+
444
+ /**
445
+ * Atomically attach a completed event to a span, consuming the event.
446
+ *
447
+ * A non-null `event` is always consumed — moved into the span on success, or
448
+ * dropped on any error (a null `span`, or an internal panic). Callers must not
449
+ * use or free the event after this call. On error the span is unchanged.
450
+ */
451
+ struct ddog_TraceExporterError *ddog_tracer_span_add_event(ddog_TracerSpan *span,
452
+ ddog_TracerSpanEvent *event);
453
+
326
454
  /**
327
455
  * Create a new empty trace chunks container.
328
456
  *
@@ -389,17 +517,14 @@ ddog_TraceExporterCancelToken *ddog_trace_exporter_cancel_token_new(void);
389
517
  /**
390
518
  * Cancel a cancellation token.
391
519
  *
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.
520
+ * All clones of the same token observe the cancellation. Cancellation is cooperative and only
521
+ * affects a [`ddog_trace_exporter_send_trace_chunks`] call that is in flight: that send stops
522
+ * waiting for the agent at its next await point and fails with
523
+ * [`ExporterErrorCode::IoError`], and the chunks it was sending may be lost.
397
524
  *
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.
525
+ * Cancelling while no send is using the token has no immediate effect. A send started later with
526
+ * an already-cancelled token fails the same way without contacting the agent, and cancelling
527
+ * after a send has finished does nothing.
403
528
  */
404
529
  void ddog_trace_exporter_cancel_token_cancel(const ddog_TraceExporterCancelToken *token);
405
530
 
@@ -413,19 +538,11 @@ void ddog_trace_exporter_cancel_token_drop(ddog_TraceExporterCancelToken *token)
413
538
  /**
414
539
  * Send trace chunks through a [`TraceExporter`], consuming the chunks.
415
540
  *
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.
541
+ * Computes stats, serializes in the configured output format, and sends to the agent with
542
+ * retries.
543
+ *
544
+ * When `cancel` is non-null, cancelling that token aborts the in-flight request; see
545
+ * [`ddog_trace_exporter_cancel_token_cancel`].
429
546
  *
430
547
  * On success, if `response_out` is non-null, a heap-allocated
431
548
  * [`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: 39.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>
@@ -1609,10 +1609,19 @@ typedef struct ddog_ContextKey {
1609
1609
 
1610
1610
  typedef struct ddog_TraceExporter ddog_TraceExporter;
1611
1611
  typedef struct ddog_TracerSpan ddog_TracerSpan;
1612
+ typedef struct ddog_TracerSpanEvent ddog_TracerSpanEvent;
1612
1613
  typedef struct ddog_TracerTraceChunks ddog_TracerTraceChunks;
1613
1614
  typedef struct ddog_TraceExporterCancelToken ddog_TraceExporterCancelToken;
1614
1615
 
1615
1616
 
1617
+ #define ddog_CollapsedFieldSet_RESOURCE_NAME (1 << 0)
1618
+
1619
+ #define ddog_CollapsedFieldSet_HTTP_ENDPOINT (1 << 1)
1620
+
1621
+ #define ddog_CollapsedFieldSet_PEER_TAGS (1 << 2)
1622
+
1623
+ #define ddog_CollapsedFieldSet_ADDITIONAL_TAGS (1 << 3)
1624
+
1616
1625
  /**
1617
1626
  * Represent error codes that `Error` struct can hold
1618
1627
  */
@@ -1713,6 +1722,32 @@ typedef struct ddog_TelemetryClientConfig {
1713
1722
  ddog_CharSlice parent_session_id;
1714
1723
  } ddog_TelemetryClientConfig;
1715
1724
 
1725
+ /**
1726
+ * Config to override the default stats cardinality limit values
1727
+ */
1728
+ typedef struct ddog_CardinalityLimitConfig {
1729
+ /**
1730
+ * The whole-key cardinality limit (defaults to 7000)
1731
+ */
1732
+ uintptr_t whole_key_limit;
1733
+ /**
1734
+ * The per-field cardinality limit for the Resource field (defaults to 1024)
1735
+ */
1736
+ uintptr_t resource_limit;
1737
+ /**
1738
+ * The per-field cardinality limit for the HttpEndpoint field (defaults to 512)
1739
+ */
1740
+ uintptr_t http_endpoint_limit;
1741
+ /**
1742
+ * The per-field cardinality limit for the PeerTags field (defaults to 512)
1743
+ */
1744
+ uintptr_t peer_tags_limit;
1745
+ /**
1746
+ * The per-field cardinality limit for the AdditionalTags field (defaults to 100)
1747
+ */
1748
+ uintptr_t additional_tags_limit;
1749
+ } ddog_CardinalityLimitConfig;
1750
+
1716
1751
  /**
1717
1752
  * FFI-safe bundle of scalar fields for creating a [`TracerSpan`].
1718
1753
  *
@@ -1733,6 +1768,96 @@ typedef struct ddog_TracerSpanFields {
1733
1768
  int32_t error;
1734
1769
  } ddog_TracerSpanFields;
1735
1770
 
1771
+ /**
1772
+ * A string attribute belonging to a [`TracerSpanLink`].
1773
+ */
1774
+ typedef struct ddog_TracerSpanLinkAttribute {
1775
+ ddog_CharSlice key;
1776
+ ddog_CharSlice value;
1777
+ } ddog_TracerSpanLinkAttribute;
1778
+
1779
+ typedef struct ddog_Slice_TracerSpanLinkAttribute {
1780
+ /**
1781
+ * Should be non-null and suitably aligned for the underlying type. It is
1782
+ * allowed but not recommended for the pointer to be null when the len is
1783
+ * zero.
1784
+ */
1785
+ const struct ddog_TracerSpanLinkAttribute *ptr;
1786
+ /**
1787
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1788
+ * than or equal to [isize::MAX].
1789
+ */
1790
+ uintptr_t len;
1791
+ } ddog_Slice_TracerSpanLinkAttribute;
1792
+
1793
+ /**
1794
+ * FFI-safe representation of one complete span link.
1795
+ */
1796
+ typedef struct ddog_TracerSpanLink {
1797
+ uint64_t trace_id_low;
1798
+ uint64_t trace_id_high;
1799
+ uint64_t span_id;
1800
+ struct ddog_Slice_TracerSpanLinkAttribute attributes;
1801
+ ddog_CharSlice tracestate;
1802
+ uint32_t flags;
1803
+ } ddog_TracerSpanLink;
1804
+
1805
+ typedef struct ddog_Slice_TracerSpanLink {
1806
+ /**
1807
+ * Should be non-null and suitably aligned for the underlying type. It is
1808
+ * allowed but not recommended for the pointer to be null when the len is
1809
+ * zero.
1810
+ */
1811
+ const struct ddog_TracerSpanLink *ptr;
1812
+ /**
1813
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1814
+ * than or equal to [isize::MAX].
1815
+ */
1816
+ uintptr_t len;
1817
+ } ddog_Slice_TracerSpanLink;
1818
+
1819
+ typedef struct ddog_Slice_CharSlice {
1820
+ /**
1821
+ * Should be non-null and suitably aligned for the underlying type. It is
1822
+ * allowed but not recommended for the pointer to be null when the len is
1823
+ * zero.
1824
+ */
1825
+ const ddog_CharSlice *ptr;
1826
+ /**
1827
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1828
+ * than or equal to [isize::MAX].
1829
+ */
1830
+ uintptr_t len;
1831
+ } ddog_Slice_CharSlice;
1832
+
1833
+ typedef struct ddog_Slice_Bool {
1834
+ /**
1835
+ * Should be non-null and suitably aligned for the underlying type. It is
1836
+ * allowed but not recommended for the pointer to be null when the len is
1837
+ * zero.
1838
+ */
1839
+ const bool *ptr;
1840
+ /**
1841
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1842
+ * than or equal to [isize::MAX].
1843
+ */
1844
+ uintptr_t len;
1845
+ } ddog_Slice_Bool;
1846
+
1847
+ typedef struct ddog_Slice_F64 {
1848
+ /**
1849
+ * Should be non-null and suitably aligned for the underlying type. It is
1850
+ * allowed but not recommended for the pointer to be null when the len is
1851
+ * zero.
1852
+ */
1853
+ const double *ptr;
1854
+ /**
1855
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1856
+ * than or equal to [isize::MAX].
1857
+ */
1858
+ uintptr_t len;
1859
+ } ddog_Slice_F64;
1860
+
1736
1861
  typedef enum ddog_LibraryConfigSource {
1737
1862
  DDOG_LIBRARY_CONFIG_SOURCE_LOCAL_STABLE_CONFIG = 0,
1738
1863
  DDOG_LIBRARY_CONFIG_SOURCE_FLEET_STABLE_CONFIG = 1,
@@ -1775,20 +1900,6 @@ typedef struct ddog_CStr {
1775
1900
  uintptr_t length;
1776
1901
  } ddog_CStr;
1777
1902
 
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
1903
  typedef struct ddog_ProcessInfo {
1793
1904
  struct ddog_Slice_CharSlice args;
1794
1905
  struct ddog_Slice_CharSlice envp;