libdatadog 40.0.0.2.0 → 44.0.1.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 (99) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libdatadog/version.rb +2 -2
  3. data/vendor/{libdatadog-40.0.0/aarch64-linux-musl → libdatadog-44.0.1/aarch64-linux}/LICENSE-3rdparty.csv +9 -3
  4. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux/bin/libdatadog-crashtracking-receiver +0 -0
  5. data/vendor/{libdatadog-40.0.0/x86_64-linux-musl → libdatadog-44.0.1/aarch64-linux}/include/datadog/common.h +8 -0
  6. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux/include/datadog/data-pipeline.h +53 -9
  7. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux/include/datadog/ffe.h +12 -0
  8. data/vendor/{libdatadog-40.0.0/x86_64-linux-musl → libdatadog-44.0.1/aarch64-linux}/include/datadog/otel-thread-ctx.h +16 -0
  9. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux/lib/libdatadog_profiling.so +0 -0
  10. data/vendor/{libdatadog-40.0.0/arm64-darwin → libdatadog-44.0.1/aarch64-linux}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  11. data/vendor/{libdatadog-40.0.0/aarch64-linux → libdatadog-44.0.1/aarch64-linux-musl}/LICENSE-3rdparty.csv +9 -3
  12. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  13. data/vendor/{libdatadog-40.0.0/arm64-darwin → libdatadog-44.0.1/aarch64-linux-musl}/include/datadog/common.h +8 -0
  14. data/vendor/{libdatadog-40.0.0/arm64-darwin → libdatadog-44.0.1/aarch64-linux-musl}/include/datadog/data-pipeline.h +53 -9
  15. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux-musl/include/datadog/ffe.h +12 -0
  16. data/vendor/{libdatadog-40.0.0/arm64-darwin → libdatadog-44.0.1/aarch64-linux-musl}/include/datadog/otel-thread-ctx.h +16 -0
  17. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux-musl/lib/libdatadog_profiling.so +0 -0
  18. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  19. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/arm64-darwin/LICENSE-3rdparty.csv +9 -3
  20. data/vendor/{libdatadog-40.0.0/aarch64-linux-musl → libdatadog-44.0.1/arm64-darwin}/include/datadog/common.h +8 -0
  21. data/vendor/{libdatadog-40.0.0/aarch64-linux-musl → libdatadog-44.0.1/arm64-darwin}/include/datadog/data-pipeline.h +53 -9
  22. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/arm64-darwin/include/datadog/ffe.h +12 -0
  23. data/vendor/{libdatadog-40.0.0/aarch64-linux → libdatadog-44.0.1/arm64-darwin}/include/datadog/otel-thread-ctx.h +16 -0
  24. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/arm64-darwin/lib/libdatadog_profiling.dylib +0 -0
  25. data/vendor/{libdatadog-40.0.0/x86_64-linux-musl → libdatadog-44.0.1/arm64-darwin}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  26. data/vendor/libdatadog-44.0.1/x86_64-linux/LICENSE-3rdparty.csv +560 -0
  27. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux/bin/libdatadog-crashtracking-receiver +0 -0
  28. data/vendor/libdatadog-44.0.1/x86_64-linux/include/datadog/common.h +3123 -0
  29. data/vendor/libdatadog-44.0.1/x86_64-linux/include/datadog/data-pipeline.h +656 -0
  30. data/vendor/libdatadog-44.0.1/x86_64-linux/include/datadog/ffe.h +191 -0
  31. data/vendor/libdatadog-44.0.1/x86_64-linux/include/datadog/otel-thread-ctx.h +102 -0
  32. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux/lib/libdatadog_profiling.so +0 -0
  33. data/vendor/libdatadog-44.0.1/x86_64-linux/lib/pkgconfig/datadog_profiling_with_rpath.pc +15 -0
  34. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux-musl/LICENSE-3rdparty.csv +9 -3
  35. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  36. data/vendor/{libdatadog-40.0.0/aarch64-linux → libdatadog-44.0.1/x86_64-linux-musl}/include/datadog/common.h +8 -0
  37. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux-musl/include/datadog/data-pipeline.h +53 -9
  38. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux-musl/include/datadog/ffe.h +12 -0
  39. data/vendor/{libdatadog-40.0.0/aarch64-linux-musl → libdatadog-44.0.1/x86_64-linux-musl}/include/datadog/otel-thread-ctx.h +16 -0
  40. data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux-musl/lib/libdatadog_profiling.so +0 -0
  41. data/vendor/{libdatadog-40.0.0/aarch64-linux → libdatadog-44.0.1/x86_64-linux-musl}/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  42. metadata +91 -91
  43. data/vendor/libdatadog-40.0.0/x86_64-linux/LICENSE-3rdparty.csv +0 -554
  44. data/vendor/libdatadog-40.0.0/x86_64-linux/include/datadog/common.h +0 -3115
  45. data/vendor/libdatadog-40.0.0/x86_64-linux/include/datadog/data-pipeline.h +0 -612
  46. data/vendor/libdatadog-40.0.0/x86_64-linux/include/datadog/ffe.h +0 -179
  47. data/vendor/libdatadog-40.0.0/x86_64-linux/include/datadog/otel-thread-ctx.h +0 -86
  48. data/vendor/libdatadog-40.0.0/x86_64-linux/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -15
  49. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux/LICENSE +0 -0
  50. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux/NOTICE +0 -0
  51. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux/include/datadog/blazesym.h +0 -0
  52. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux/include/datadog/crashtracker.h +0 -0
  53. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux/include/datadog/ddsketch.h +0 -0
  54. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux/include/datadog/library-config.h +0 -0
  55. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux/include/datadog/log.h +0 -0
  56. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux/include/datadog/profiling.h +0 -0
  57. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux/include/datadog/shared-runtime.h +0 -0
  58. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux/include/datadog/telemetry.h +0 -0
  59. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux-musl/LICENSE +0 -0
  60. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux-musl/NOTICE +0 -0
  61. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux-musl/include/datadog/blazesym.h +0 -0
  62. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux-musl/include/datadog/crashtracker.h +0 -0
  63. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux-musl/include/datadog/ddsketch.h +0 -0
  64. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux-musl/include/datadog/library-config.h +0 -0
  65. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux-musl/include/datadog/log.h +0 -0
  66. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux-musl/include/datadog/profiling.h +0 -0
  67. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux-musl/include/datadog/shared-runtime.h +0 -0
  68. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/aarch64-linux-musl/include/datadog/telemetry.h +0 -0
  69. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/arm64-darwin/LICENSE +0 -0
  70. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/arm64-darwin/NOTICE +0 -0
  71. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/arm64-darwin/bin/libdatadog-crashtracking-receiver +0 -0
  72. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/arm64-darwin/include/datadog/blazesym.h +0 -0
  73. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/arm64-darwin/include/datadog/crashtracker.h +0 -0
  74. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/arm64-darwin/include/datadog/ddsketch.h +0 -0
  75. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/arm64-darwin/include/datadog/library-config.h +0 -0
  76. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/arm64-darwin/include/datadog/log.h +0 -0
  77. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/arm64-darwin/include/datadog/profiling.h +0 -0
  78. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/arm64-darwin/include/datadog/shared-runtime.h +0 -0
  79. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/arm64-darwin/include/datadog/telemetry.h +0 -0
  80. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux/LICENSE +0 -0
  81. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux/NOTICE +0 -0
  82. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux/include/datadog/blazesym.h +0 -0
  83. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux/include/datadog/crashtracker.h +0 -0
  84. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux/include/datadog/ddsketch.h +0 -0
  85. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux/include/datadog/library-config.h +0 -0
  86. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux/include/datadog/log.h +0 -0
  87. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux/include/datadog/profiling.h +0 -0
  88. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux/include/datadog/shared-runtime.h +0 -0
  89. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux/include/datadog/telemetry.h +0 -0
  90. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux-musl/LICENSE +0 -0
  91. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux-musl/NOTICE +0 -0
  92. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux-musl/include/datadog/blazesym.h +0 -0
  93. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux-musl/include/datadog/crashtracker.h +0 -0
  94. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux-musl/include/datadog/ddsketch.h +0 -0
  95. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux-musl/include/datadog/library-config.h +0 -0
  96. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux-musl/include/datadog/log.h +0 -0
  97. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux-musl/include/datadog/profiling.h +0 -0
  98. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux-musl/include/datadog/shared-runtime.h +0 -0
  99. /data/vendor/{libdatadog-40.0.0 → libdatadog-44.0.1}/x86_64-linux-musl/include/datadog/telemetry.h +0 -0
@@ -0,0 +1,191 @@
1
+ // Copyright 2025-Present Datadog, Inc. https://www.datadoghq.com/
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+
5
+ #ifndef DDOG_FFE_H
6
+ #define DDOG_FFE_H
7
+
8
+ #pragma once
9
+
10
+ #include <stdbool.h>
11
+ #include <stddef.h>
12
+ #include <stdint.h>
13
+ #include "common.h"
14
+
15
+ #ifdef __cplusplus
16
+ extern "C" {
17
+ #endif // __cplusplus
18
+
19
+ /**
20
+ * Evaluates a feature flag.
21
+ *
22
+ * # Ownership
23
+ *
24
+ * The caller must call `ddog_ffe_assignment_drop` on the returned value to free resources.
25
+ *
26
+ * # Safety
27
+ *
28
+ * - `config` must be a valid `Configuration` handle
29
+ * - `flag_key` must be a valid C string
30
+ * - `context` must be a valid `EvaluationContext` handle
31
+ */
32
+ DDOG_CHECK_RETURN
33
+ ddog_ffe_Handle_ResolutionDetails ddog_ffe_get_assignment(ddog_ffe_Handle_Configuration config,
34
+ const char *flag_key,
35
+ enum ddog_ffe_ExpectedFlagType expected_type,
36
+ ddog_ffe_Handle_EvaluationContext context);
37
+
38
+ /**
39
+ * Get value produced by evaluation.
40
+ *
41
+ * # Ownership
42
+ *
43
+ * The returned `VariantValue` borrows from `assignment`. It must not be used after `assignment` is
44
+ * freed.
45
+ *
46
+ * # Safety
47
+ * `assignment` must be a valid handle.
48
+ */
49
+ struct ddog_ffe_VariantValue ddog_ffe_assignment_get_value(ddog_ffe_Handle_ResolutionDetails assignment);
50
+
51
+ /**
52
+ * Get variant key produced by evaluation. Returns `NULL` if evaluation did not produce any value.
53
+ *
54
+ * # Ownership
55
+ *
56
+ * The returned string borrows from `assignment`. It must not be used after `assignment` is
57
+ * freed.
58
+ *
59
+ * # Safety
60
+ * `assignment` must be a valid handle.
61
+ */
62
+ struct ddog_ffe_BorrowedStr ddog_ffe_assignment_get_variant(ddog_ffe_Handle_ResolutionDetails assignment);
63
+
64
+ /**
65
+ * Get allocation key produced by evaluation. Returns `NULL` if evaluation did not produce any
66
+ * value.
67
+ *
68
+ * # Ownership
69
+ *
70
+ * The returned string borrows from `assignment`. It must not be used after `assignment` is
71
+ * freed.
72
+ *
73
+ * # Safety
74
+ * `assignment` must be a valid handle.
75
+ */
76
+ struct ddog_ffe_BorrowedStr ddog_ffe_assignment_get_allocation_key(ddog_ffe_Handle_ResolutionDetails assignment);
77
+
78
+ /**
79
+ * # Safety
80
+ * `assignment` must be a valid handle.
81
+ */
82
+ enum ddog_ffe_Reason ddog_ffe_assignment_get_reason(ddog_ffe_Handle_ResolutionDetails assignment);
83
+
84
+ /**
85
+ * # Safety
86
+ * `assignment` must be a valid handle.
87
+ */
88
+ enum ddog_ffe_ErrorCode ddog_ffe_assignment_get_error_code(ddog_ffe_Handle_ResolutionDetails assignment);
89
+
90
+ /**
91
+ * # Safety
92
+ * `assignment` must be a valid handle.
93
+ */
94
+ struct ddog_ffe_BorrowedStr ddog_ffe_assignment_get_error_message(ddog_ffe_Handle_ResolutionDetails assignment);
95
+
96
+ /**
97
+ * Get the serial_id produced by evaluation.
98
+ *
99
+ * Returns `None` if the assignment has no serial_id or evaluation did not produce any value.
100
+ *
101
+ * # Safety
102
+ * `assignment` must be a valid handle.
103
+ */
104
+ struct ddog_Option_I32 ddog_ffe_assignment_get_serial_id(ddog_ffe_Handle_ResolutionDetails assignment);
105
+
106
+ /**
107
+ * # Safety
108
+ * `assignment` must be a valid handle.
109
+ */
110
+ bool ddog_ffe_assignment_get_do_log(ddog_ffe_Handle_ResolutionDetails assignment);
111
+
112
+ /**
113
+ * # Safety
114
+ * `assignment` must be a valid handle.
115
+ */
116
+ struct ddog_ffe_ArrayMap_BorrowedStr ddog_ffe_assignnment_get_flag_metadata(ddog_ffe_Handle_ResolutionDetails assignment);
117
+
118
+ /**
119
+ * Frees an Assignment handle.
120
+ *
121
+ * # Safety
122
+ * - `assignment` must be a valid Assignment handle
123
+ */
124
+ void ddog_ffe_assignment_drop(ddog_ffe_Handle_ResolutionDetails *assignment);
125
+
126
+ /**
127
+ * Creates a new Configuration from JSON bytes.
128
+ *
129
+ * # Ownership
130
+ *
131
+ * The caller must call `ddog_ffe_configuration_drop` to release resources allocated for
132
+ * configuration.
133
+ *
134
+ * # Safety
135
+ *
136
+ * - `json_bytes` must point to valid memory.
137
+ */
138
+ DDOG_CHECK_RETURN
139
+ struct ddog_ffe_Result_HandleConfiguration ddog_ffe_configuration_new(struct ddog_ffe_BorrowedStr json_bytes);
140
+
141
+ /**
142
+ * Frees a Configuration.
143
+ *
144
+ * # Safety
145
+ *
146
+ * `config` must be a valid Configuration handle created by `ddog_ffe_configuration_new`.
147
+ */
148
+ void ddog_ffe_configuration_drop(ddog_ffe_Handle_Configuration *config);
149
+
150
+ /**
151
+ * Get the config-level `observeFullEvaluationData` flag.
152
+ *
153
+ * Opt-in boolean for emitting full flag evaluation data from SDKs to Datadog. Flag evaluation data
154
+ * may contain PII; defaults to `false` for privacy.
155
+ *
156
+ * # Safety
157
+ *
158
+ * `config` must be a valid `Configuration` handle created by `ddog_ffe_configuration_new`.
159
+ */
160
+ bool ddog_ffe_configuration_get_observe_full_evaluation_data(ddog_ffe_Handle_Configuration config);
161
+
162
+ /**
163
+ * Creates a new EvaluationContext with the given targeting key and attributes.
164
+ *
165
+ * # Ownership
166
+ *
167
+ * `ddog_ffe_evaluation_context_drop` must be called on the result value to free resources.
168
+ *
169
+ * # Safety
170
+ * - `targeting_key` must be a valid C string or NULL.
171
+ * - `attributes` must point to a valid array of valid `AttributePair` structs (can be null if
172
+ * `attributes_count` is 0)
173
+ */
174
+ DDOG_CHECK_RETURN
175
+ ddog_ffe_Handle_EvaluationContext ddog_ffe_evaluation_context_new(const char *targeting_key,
176
+ const struct ddog_ffe_AttributePair *attributes,
177
+ uintptr_t attributes_count);
178
+
179
+ /**
180
+ * Frees an EvaluationContext
181
+ *
182
+ * # Safety
183
+ * `context` must be a valid EvaluationContext handle created by `ddog_ffe_evaluation_context_new`
184
+ */
185
+ void ddog_ffe_evaluation_context_drop(ddog_ffe_Handle_EvaluationContext *context);
186
+
187
+ #ifdef __cplusplus
188
+ } // extern "C"
189
+ #endif // __cplusplus
190
+
191
+ #endif /* DDOG_FFE_H */
@@ -0,0 +1,102 @@
1
+ // Copyright 2026-Present Datadog, Inc. https://www.datadoghq.com/
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+
5
+ #ifndef DDOG_OTEL_THREAD_CTX_H
6
+ #define DDOG_OTEL_THREAD_CTX_H
7
+
8
+ #pragma once
9
+
10
+ #include <stdbool.h>
11
+ #include <stddef.h>
12
+ #include <stdint.h>
13
+
14
+ #ifdef __cplusplus
15
+ extern "C" {
16
+ #endif // __cplusplus
17
+
18
+ #if defined(DDOG_OTEL_THREAD_CTX_SANITY_CHECK)
19
+ /**
20
+ * Verify that this binary was linked with the correct options such that the thread contexts are
21
+ * visible to an external reader (typically the eBPF profiler).
22
+ *
23
+ * Returns `VoidResult::Ok` if all checks pass, or a `VoidResult::Err` with a
24
+ * diagnostic message on failure.
25
+ */
26
+ struct ddog_VoidResult ddog_otel_thread_ctx_sanity_check(void);
27
+ #endif
28
+
29
+ /**
30
+ * Allocate and initialise a new thread context, including its W3C trace-flags byte.
31
+ *
32
+ * Returns a non-null owned handle that must eventually be released with
33
+ * `ddog_otel_thread_ctx_free`.
34
+ */
35
+ struct ddog_ThreadContextHandle *ddog_otel_thread_ctx_new(const uint8_t (*trace_id)[16],
36
+ const uint8_t (*span_id)[8],
37
+ uint8_t trace_flags,
38
+ const uint8_t (*local_root_span_id)[8]);
39
+
40
+ /**
41
+ * Free an owned thread context.
42
+ *
43
+ * # Safety
44
+ *
45
+ * `ctx` must be a valid non-null pointer obtained from `ddog_otel_thread_ctx_new` or
46
+ * `ddog_otel_thread_ctx_detach`, and must not be used after this call. In particular, `ctx`
47
+ * must not be currently attached to a thread.
48
+ */
49
+ void ddog_otel_thread_ctx_free(struct ddog_ThreadContextHandle *ctx);
50
+
51
+ /**
52
+ * Attach `ctx` to the current thread. Returns the previously attached context if any, or null
53
+ * otherwise.
54
+ *
55
+ * # Safety
56
+ *
57
+ * `ctx` must be a valid non-null pointer obtained from this API. Ownership of `ctx` is
58
+ * transferred to the TLS slot: the caller must not drop `ctx` while it is still actively
59
+ * attached.
60
+ */
61
+ struct ddog_ThreadContextHandle *ddog_otel_thread_ctx_attach(struct ddog_ThreadContextHandle *ctx);
62
+
63
+ /**
64
+ * Remove the currently attached context from the TLS slot.
65
+ *
66
+ * Returns the detached context (caller now owns it and must release it with
67
+ * `ddog_otel_thread_ctx_free`), or null if the slot was empty.
68
+ */
69
+ struct ddog_ThreadContextHandle *ddog_otel_thread_ctx_detach(void);
70
+
71
+ /**
72
+ * Update the currently attached context in-place, including its W3C trace-flags byte.
73
+ *
74
+ * If no context is currently attached, one is created and attached, equivalent to calling
75
+ * `ddog_otel_thread_ctx_new` followed by `ddog_otel_thread_ctx_attach`.
76
+ */
77
+ void ddog_otel_thread_ctx_update(const uint8_t (*trace_id)[16],
78
+ const uint8_t (*span_id)[8],
79
+ uint8_t trace_flags,
80
+ const uint8_t (*local_root_span_id)[8]);
81
+
82
+ /**
83
+ * Update `ctx` and attach it to the current thread. Returns the previously attached different
84
+ * context, if any.
85
+ *
86
+ * # Safety
87
+ *
88
+ * `ctx` may be null; otherwise it must be a valid non-null pointer obtained from this API.
89
+ * If attached, it must be attached only to the calling native thread and must not be
90
+ * concurrently updated or freed. A non-null returned context is owned by the caller.
91
+ */
92
+ struct ddog_ThreadContextHandle *ddog_otel_thread_ctx_update_and_attach(struct ddog_ThreadContextHandle *ctx,
93
+ const uint8_t (*trace_id)[16],
94
+ const uint8_t (*span_id)[8],
95
+ uint8_t trace_flags,
96
+ const uint8_t (*local_root_span_id)[8]);
97
+
98
+ #ifdef __cplusplus
99
+ } // extern "C"
100
+ #endif // __cplusplus
101
+
102
+ #endif /* DDOG_OTEL_THREAD_CTX_H */
@@ -0,0 +1,15 @@
1
+ # Copyright 2021-Present Datadog, Inc. https://www.datadoghq.com/
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ prefix=${pcfiledir}/../..
5
+ exec_prefix=${prefix}
6
+ libdir=${exec_prefix}/lib
7
+ includedir=${prefix}/include
8
+
9
+ Name: datadog_profiling
10
+ Description: Contains common code used to implement Datadog's Continuous Profilers. (Dynamic linking variant, sets rpath)
11
+ Version: 44.0.1
12
+ Requires:
13
+ Libs: -L${libdir} -ldatadog_profiling -Wl,-rpath,${libdir}
14
+ Libs.private:
15
+ Cflags: -I${includedir}
@@ -119,6 +119,7 @@ deranged,https://github.com/jhpratt/deranged,MIT OR Apache-2.0,Jacob Pratt <jaco
119
119
  derive_arbitrary,https://github.com/rust-fuzz/arbitrary,MIT OR Apache-2.0,"The Rust-Fuzz Project Developers, Nick Fitzgerald <fitzgen@gmail.com>, Manish Goregaokar <manishsmail@gmail.com>, Andre Bogus <bogusandre@gmail.com>, Corey Farwell <coreyf@rwell.org>"
120
120
  derive_more,https://github.com/JelteF/derive_more,MIT,Jelte Fennema <github-tech@jeltef.nl>
121
121
  derive_more-impl,https://github.com/JelteF/derive_more,MIT,Jelte Fennema <github-tech@jeltef.nl>
122
+ derp,https://github.com/heartsucker/derp,ISC,heartsucker <heartsucker@autistici.org>
122
123
  diff,https://github.com/utkarshkukreti/diff.rs,MIT OR Apache-2.0,Utkarsh Kukreti <utkarshkukreti@gmail.com>
123
124
  digest,https://github.com/RustCrypto/traits,MIT OR Apache-2.0,RustCrypto Developers
124
125
  dispatch2,https://github.com/madsmtm/objc2,Zlib OR Apache-2.0 OR MIT,"Mads Marquart <mads@marquart.dk>, Mary <mary@mary.zone>"
@@ -168,11 +169,11 @@ h2,https://github.com/hyperium/h2,MIT,"Carl Lerche <me@carllerche.com>, Sean McA
168
169
  half,https://github.com/starkat99/half-rs,MIT OR Apache-2.0,Kathryn Long <squeeself@gmail.com>
169
170
  halfbrown,https://github.com/Licenser/halfbrown,Apache-2.0 OR MIT,Heinz N. Gies <heinz@licenser.net>
170
171
  hashbrown,https://github.com/rust-lang/hashbrown,MIT OR Apache-2.0,Amanieu d'Antras <amanieu@gmail.com>
172
+ hashbrown,https://github.com/rust-lang/hashbrown,MIT OR Apache-2.0,The hashbrown Authors
171
173
  hdrhistogram,https://github.com/HdrHistogram/HdrHistogram_rust,MIT OR Apache-2.0,"Jon Gjengset <jon@thesquareplanet.com>, Marshall Pierce <marshall@mpierce.org>"
172
174
  headers,https://github.com/hyperium/headers,MIT,Sean McArthur <sean@seanmonstar.com>
173
175
  headers-core,https://github.com/hyperium/headers,MIT,Sean McArthur <sean@seanmonstar.com>
174
176
  heck,https://github.com/withoutboats/heck,MIT OR Apache-2.0,The heck Authors
175
- heck,https://github.com/withoutboats/heck,MIT OR Apache-2.0,Without Boats <woboats@gmail.com>
176
177
  hermit-abi,https://github.com/hermit-os/hermit-rs,MIT OR Apache-2.0,Stefan Lankes
177
178
  hex,https://github.com/KokaKiwi/rust-hex,MIT OR Apache-2.0,KokaKiwi <kokakiwi@kokakiwi.net>
178
179
  hickory-proto,https://github.com/hickory-dns/hickory-dns,MIT OR Apache-2.0,The contributors to Hickory DNS
@@ -222,6 +223,7 @@ kv-log-macro,https://github.com/yoshuawuyts/kv-log-macro,MIT OR Apache-2.0,Yoshu
222
223
  lazy_static,https://github.com/rust-lang-nursery/lazy-static.rs,MIT OR Apache-2.0,Marvin Löbel <loebel.marvin@gmail.com>
223
224
  libc,https://github.com/rust-lang/libc,MIT OR Apache-2.0,The libc Authors
224
225
  libdd-libunwind-sys,https://github.com/DataDog/libdatadog/tree/main/libdd-libunwind-sys,Apache-2.0,The libdd-libunwind-sys Authors
226
+ libdd-tuf,https://github.com/theupdateframework/rust-tuf,MIT OR Apache-2.0,"heartsucker <heartsucker@autistici.org>, Erick Tryzelaar <etryzelaar@google.com>"
225
227
  libloading,https://github.com/nagisa/rust_libloading,ISC,Simonas Kazlauskas <libloading@kazlauskas.me>
226
228
  libredox,https://gitlab.redox-os.org/redox-os/libredox,MIT,4lDO2 <4lDO2@protonmail.com>
227
229
  libz-rs-sys,https://github.com/trifectatechfoundation/zlib-rs,Zlib,The libz-rs-sys Authors
@@ -243,6 +245,7 @@ memory-stats,https://github.com/Arc-blroth/memory-stats,MIT OR Apache-2.0,Arc-bl
243
245
  microseh,https://github.com/sonodima/microseh,MIT,sonodima
244
246
  mime,https://github.com/hyperium/mime,MIT OR Apache-2.0,Sean McArthur <sean@seanmonstar.com>
245
247
  mime_guess,https://github.com/abonander/mime_guess,MIT,Austin Bonander <austin.bonander@gmail.com>
248
+ minicov,https://github.com/Amanieu/minicov,Apache-2.0 OR MIT,Amanieu d'Antras <amanieu@gmail.com>
246
249
  minimal-lexical,https://github.com/Alexhuszagh/minimal-lexical,MIT OR Apache-2.0,Alex Huszagh <ahuszagh@gmail.com>
247
250
  miniz_oxide,https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide,MIT OR Zlib OR Apache-2.0,"Frommi <daniil.liferenko@gmail.com>, oyvindln <oyvindln@users.noreply.github.com>, Rich Geldreich richgel99@gmail.com"
248
251
  mio,https://github.com/tokio-rs/mio,MIT,"Carl Lerche <me@carllerche.com>, Thomas de Zeeuw <thomasdezeeuw@gmail.com>, Tokio Contributors <team@tokio.rs>"
@@ -253,7 +256,6 @@ multimap,https://github.com/havarnov/multimap,MIT OR Apache-2.0,Håvar Nøvik <h
253
256
  nix,https://github.com/nix-rust/nix,MIT,The nix-rust Project Developers
254
257
  nom,https://github.com/Geal/nom,MIT,contact@geoffroycouprie.com
255
258
  ntapi,https://github.com/MSxDOS/ntapi,Apache-2.0 OR MIT,MSxDOS <melcodos@gmail.com>
256
- nu-ansi-term,https://github.com/nushell/nu-ansi-term,MIT,"ogham@bsago.me, Ryan Scheel (Havvy) <ryan.havvy@gmail.com>, Josh Triplett <josh@joshtriplett.org>, The Nushell Project Developers"
257
259
  num-conv,https://github.com/jhpratt/num-conv,MIT OR Apache-2.0,Jacob Pratt <jacob@jhpratt.dev>
258
260
  num-derive,https://github.com/rust-num/num-derive,MIT OR Apache-2.0,The Rust Project Developers
259
261
  num-traits,https://github.com/rust-num/num-traits,MIT OR Apache-2.0,The Rust Project Developers
@@ -497,6 +499,7 @@ wasm-bindgen-futures,https://github.com/rustwasm/wasm-bindgen/tree/master/crates
497
499
  wasm-bindgen-macro,https://github.com/rustwasm/wasm-bindgen/tree/master/crates/macro,MIT OR Apache-2.0,The wasm-bindgen Developers
498
500
  wasm-bindgen-macro-support,https://github.com/rustwasm/wasm-bindgen/tree/master/crates/macro-support,MIT OR Apache-2.0,The wasm-bindgen Developers
499
501
  wasm-bindgen-shared,https://github.com/rustwasm/wasm-bindgen/tree/master/crates/shared,MIT OR Apache-2.0,The wasm-bindgen Developers
502
+ wasm-bindgen-test-macro,https://github.com/rustwasm/wasm-bindgen,MIT OR Apache-2.0,The wasm-bindgen Developers
500
503
  web-sys,https://github.com/rustwasm/wasm-bindgen/tree/master/crates/web-sys,MIT OR Apache-2.0,The wasm-bindgen Developers
501
504
  web-time,https://github.com/daxpedda/web-time,MIT OR Apache-2.0,The web-time Authors
502
505
  webpki-root-certs,https://github.com/rustls/webpki-roots,CDLA-Permissive-2.0,The webpki-root-certs Authors
@@ -532,7 +535,6 @@ winver,https://github.com/rhysd/winver,MIT,rhysd <lin90162@yahoo.co.jp>
532
535
  wit-bindgen-rt,https://github.com/bytecodealliance/wit-bindgen,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,The wit-bindgen-rt Authors
533
536
  write16,https://github.com/hsivonen/write16,Apache-2.0 OR MIT,The write16 Authors
534
537
  writeable,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers
535
- xattr,https://github.com/Stebalien/xattr,MIT OR Apache-2.0,Steven Allen <steven@stebalien.com>
536
538
  yansi,https://github.com/SergioBenitez/yansi,MIT OR Apache-2.0,Sergio Benitez <sb@sergio.bz>
537
539
  yoke,https://github.com/unicode-org/icu4x,Unicode-3.0,Manish Goregaokar <manishsmail@gmail.com>
538
540
  yoke-derive,https://github.com/unicode-org/icu4x,Unicode-3.0,Manish Goregaokar <manishsmail@gmail.com>
@@ -548,6 +550,10 @@ zerovec-derive,https://github.com/unicode-org/icu4x,Unicode-3.0,Manish Goregaoka
548
550
  zip,https://github.com/zip-rs/zip2,MIT,"Mathijs van de Nes <git@mathijs.vd-nes.nl>, Marli Frost <marli@frost.red>, Ryan Levick <ryan.levick@gmail.com>, Chris Hennick <hennickc@amazon.com>"
549
551
  zlib-rs,https://github.com/trifectatechfoundation/zlib-rs,Zlib,The zlib-rs Authors
550
552
  zopfli,https://github.com/zopfli-rs/zopfli,Apache-2.0,The zopfli Authors
553
+ zrip,https://github.com/paddor/zrip,MIT,The zrip Authors
554
+ zrip-core,https://github.com/paddor/zrip,MIT,The zrip-core Authors
555
+ zrip-decode,https://github.com/paddor/zrip,MIT,The zrip-decode Authors
556
+ zrip-encode,https://github.com/paddor/zrip,MIT,The zrip-encode Authors
551
557
  zstd,https://github.com/gyscos/zstd-rs,MIT,Alexandre Bury <alexandre.bury@gmail.com>
552
558
  zstd-safe,https://github.com/gyscos/zstd-rs,MIT OR Apache-2.0,Alexandre Bury <alexandre.bury@gmail.com>
553
559
  zstd-sys,https://github.com/gyscos/zstd-rs,MIT OR Apache-2.0,Alexandre Bury <alexandre.bury@gmail.com>
@@ -384,6 +384,14 @@ typedef enum ddog_prof_SampleType {
384
384
  * serialization.
385
385
  */
386
386
  DDOG_PROF_SAMPLE_TYPE_CUSTOM5,
387
+ /**
388
+ * Time spent in garbage collection.
389
+ */
390
+ DDOG_PROF_SAMPLE_TYPE_GC_TIME,
391
+ /**
392
+ * Number of garbage-collection samples / pause events.
393
+ */
394
+ DDOG_PROF_SAMPLE_TYPE_GC_SAMPLES,
387
395
  } ddog_prof_SampleType;
388
396
 
389
397
  typedef enum ddog_prof_Utf8Option {
@@ -187,19 +187,21 @@ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_shared_runtime(st
187
187
  struct ddog_ForkSafeRuntime *handle);
188
188
 
189
189
  /**
190
- * Enables OTLP HTTP/JSON export and sets the endpoint URL.
190
+ * Enables OTLP trace export and sets the endpoint URL.
191
191
  *
192
- * When set, traces are sent to this URL in OTLP HTTP/JSON format instead of the Datadog
193
- * agent. The host language is responsible for resolving the endpoint from its configuration
194
- * (e.g. `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`) before calling this function.
192
+ * When set, traces are sent to this URL using the protocol selected by
193
+ * `ddog_trace_exporter_config_set_otlp_protocol` instead of the Datadog agent. The host language
194
+ * is responsible for resolving the endpoint from its configuration (e.g.
195
+ * `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`) before calling this function.
195
196
  */
196
197
  struct ddog_TraceExporterError *ddog_trace_exporter_config_set_otlp_endpoint(struct ddog_TraceExporterConfig *config,
197
198
  ddog_CharSlice url);
198
199
 
199
200
  /**
200
- * Sets the OTLP export protocol. Accepts the OTel-standard values `http/json` (default) or
201
- * `http/protobuf`; `grpc` is rejected as not yet supported. The host language resolves the value
201
+ * Sets the OTLP export protocol. Accepts the OTel-standard values `http/json` (default),
202
+ * `http/protobuf`, or `grpc`; unknown values are rejected. The host language resolves the value
202
203
  * (e.g. from `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL`).
204
+ * The `grpc` protocol currently supports plaintext `http://` endpoints only.
203
205
  *
204
206
  * Has no effect unless an OTLP endpoint is also configured via
205
207
  * `ddog_trace_exporter_config_set_otlp_endpoint`; without one, traces are sent to the
@@ -240,6 +242,48 @@ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_stats_cardinality
240
242
  */
241
243
  struct ddog_CardinalityLimitConfig ddog_trace_exporter_config_default_stats_cardinality_limit(void);
242
244
 
245
+ /**
246
+ * Enables agentless APM trace export and sets the intake URL and API key.
247
+ *
248
+ * When set, APM trace spans are sent directly to the Datadog HTTP intake in JSON format
249
+ * (`POST /v1/input`) instead of through the Datadog Agent. Agentless trace export is mutually
250
+ * exclusive with both an agent URL ([`ddog_trace_exporter_config_set_url`]) and an OTLP endpoint
251
+ * ([`ddog_trace_exporter_config_set_otlp_endpoint`]); combining either with this setter causes
252
+ * [`ddog_trace_exporter_new`] to return an error.
253
+ */
254
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_agentless_endpoint(struct ddog_TraceExporterConfig *config,
255
+ ddog_CharSlice url,
256
+ ddog_CharSlice api_key);
257
+
258
+ /**
259
+ * Sets the request timeout (in milliseconds) used by the agentless intake transport.
260
+ *
261
+ * Defaults to 15 seconds when unset. Calling this without also setting an agentless endpoint
262
+ * causes [`ddog_trace_exporter_new`] to return an error.
263
+ */
264
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_agentless_timeout(struct ddog_TraceExporterConfig *config,
265
+ uint64_t timeout_ms);
266
+
267
+ /**
268
+ * Sets the span obfuscation configuration from a JSON string.
269
+ *
270
+ * `json` is deserialized into `ObfuscationConfig` (the same struct the Datadog Agent uses),
271
+ * which controls obfuscation of HTTP URLs, SQL resources, Redis/Valkey commands, memcached
272
+ * commands, credit-card numbers, elasticsearch/opensearch/mongodb bodies, and tag-replace
273
+ * rules. Obfuscation is applied to every span on the agentless export path (see
274
+ * [`ddog_trace_exporter_config_set_agentless_endpoint`]); it has no effect on the agent path.
275
+ *
276
+ * Returns an error if `json` is not valid UTF-8 or fails to deserialize. Example:
277
+ * ```c
278
+ * ddog_trace_exporter_config_set_obfuscation_config(
279
+ * cfg, DDOG_CHARSLICE_C(
280
+ * "{\"http\":{\"remove_query_string\":true},"
281
+ * "\"credit_cards\":{\"enabled\":true}}"));
282
+ * ```
283
+ */
284
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_obfuscation_config(struct ddog_TraceExporterConfig *config,
285
+ ddog_CharSlice json);
286
+
243
287
  /**
244
288
  * Configure the exporter to write traces as newline-delimited JSON to stdout (the Datadog
245
289
  * Forwarder "log exporter" path) instead of sending them to a Datadog agent. Used in serverless
@@ -262,9 +306,9 @@ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_output_to_log(str
262
306
  /**
263
307
  * Create a new TraceExporter instance.
264
308
  *
265
- * When an OTLP endpoint is configured via `TraceExporterConfig`, the exporter sends traces to
266
- * that endpoint in OTLP over HTTP — JSON or protobuf per the configured protocol — instead of
267
- * to the Datadog agent. The same payload (e.g. MessagePack) is passed to
309
+ * When an OTLP endpoint is configured via `TraceExporterConfig`, the exporter sends traces using
310
+ * the configured `http/json`, `http/protobuf`, or `grpc` protocol instead of the Datadog agent.
311
+ * The same payload (e.g. MessagePack) is passed to
268
312
  * `ddog_trace_exporter_send`; the library decodes and converts it to OTLP when OTLP is enabled.
269
313
  *
270
314
  * # Arguments
@@ -147,6 +147,18 @@ struct ddog_ffe_Result_HandleConfiguration ddog_ffe_configuration_new(struct ddo
147
147
  */
148
148
  void ddog_ffe_configuration_drop(ddog_ffe_Handle_Configuration *config);
149
149
 
150
+ /**
151
+ * Get the config-level `observeFullEvaluationData` flag.
152
+ *
153
+ * Opt-in boolean for emitting full flag evaluation data from SDKs to Datadog. Flag evaluation data
154
+ * may contain PII; defaults to `false` for privacy.
155
+ *
156
+ * # Safety
157
+ *
158
+ * `config` must be a valid `Configuration` handle created by `ddog_ffe_configuration_new`.
159
+ */
160
+ bool ddog_ffe_configuration_get_observe_full_evaluation_data(ddog_ffe_Handle_Configuration config);
161
+
150
162
  /**
151
163
  * Creates a new EvaluationContext with the given targeting key and attributes.
152
164
  *
@@ -79,6 +79,22 @@ void ddog_otel_thread_ctx_update(const uint8_t (*trace_id)[16],
79
79
  uint8_t trace_flags,
80
80
  const uint8_t (*local_root_span_id)[8]);
81
81
 
82
+ /**
83
+ * Update `ctx` and attach it to the current thread. Returns the previously attached different
84
+ * context, if any.
85
+ *
86
+ * # Safety
87
+ *
88
+ * `ctx` may be null; otherwise it must be a valid non-null pointer obtained from this API.
89
+ * If attached, it must be attached only to the calling native thread and must not be
90
+ * concurrently updated or freed. A non-null returned context is owned by the caller.
91
+ */
92
+ struct ddog_ThreadContextHandle *ddog_otel_thread_ctx_update_and_attach(struct ddog_ThreadContextHandle *ctx,
93
+ const uint8_t (*trace_id)[16],
94
+ const uint8_t (*span_id)[8],
95
+ uint8_t trace_flags,
96
+ const uint8_t (*local_root_span_id)[8]);
97
+
82
98
  #ifdef __cplusplus
83
99
  } // extern "C"
84
100
  #endif // __cplusplus
@@ -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: 40.0.0
11
+ Version: 44.0.1
12
12
  Requires:
13
13
  Libs: -L${libdir} -ldatadog_profiling -Wl,-rpath,${libdir}
14
14
  Libs.private: