datadog 2.39.0 → 2.47.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 (296) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +269 -44
  3. data/README.md +3 -0
  4. data/ext/datadog_profiling_native_extension/NativeExtensionDesign.md +12 -24
  5. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +256 -193
  6. data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +1 -5
  7. data/ext/datadog_profiling_native_extension/collectors_gc_profiling_helper.c +0 -2
  8. data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c +19 -20
  9. data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.h +5 -1
  10. data/ext/datadog_profiling_native_extension/collectors_stack.c +267 -171
  11. data/ext/datadog_profiling_native_extension/collectors_stack.h +17 -3
  12. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +307 -217
  13. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +10 -5
  14. data/ext/datadog_profiling_native_extension/crashtracking_runtime_stacks.c +5 -4
  15. data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +19 -11
  16. data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +7 -10
  17. data/ext/datadog_profiling_native_extension/extconf.rb +67 -99
  18. data/ext/datadog_profiling_native_extension/heap_recorder.c +353 -257
  19. data/ext/datadog_profiling_native_extension/heap_recorder.h +50 -31
  20. data/ext/datadog_profiling_native_extension/native_extension_helpers.rb +3 -27
  21. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +853 -496
  22. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +42 -15
  23. data/ext/datadog_profiling_native_extension/profiling.c +30 -23
  24. data/ext/datadog_profiling_native_extension/ruby_helpers.c +4 -80
  25. data/ext/datadog_profiling_native_extension/ruby_helpers.h +4 -7
  26. data/ext/datadog_profiling_native_extension/setup_signal_handler.c +0 -2
  27. data/ext/datadog_profiling_native_extension/stack_recorder.c +116 -89
  28. data/ext/datadog_profiling_native_extension/stack_recorder.h +12 -5
  29. data/ext/datadog_profiling_native_extension/time_helpers.c +2 -4
  30. data/ext/datadog_profiling_native_extension/time_helpers.h +15 -15
  31. data/ext/libdatadog_api/datadog_ruby_common.c +19 -11
  32. data/ext/libdatadog_api/datadog_ruby_common.h +7 -10
  33. data/ext/libdatadog_api/di.c +43 -3
  34. data/ext/libdatadog_api/extconf.rb +6 -1
  35. data/ext/libdatadog_api/feature_flags.c +8 -0
  36. data/ext/libdatadog_api/init.c +9 -1
  37. data/ext/libdatadog_api/otel_thread_context.c +274 -0
  38. data/ext/libdatadog_api/otel_thread_context.h +5 -0
  39. data/ext/libdatadog_api/process_discovery.c +15 -1
  40. data/ext/libdatadog_api/trace_exporter.c +2078 -0
  41. data/ext/libdatadog_api/trace_exporter.h +5 -0
  42. data/ext/libdatadog_extconf_helpers.rb +14 -9
  43. data/lib/datadog/ai_guard/component.rb +17 -8
  44. data/lib/datadog/ai_guard/configuration/ext.rb +2 -0
  45. data/lib/datadog/ai_guard/configuration.rb +13 -0
  46. data/lib/datadog/ai_guard/contrib/ruby_llm/chat_instrumentation.rb +48 -55
  47. data/lib/datadog/ai_guard/contrib/ruby_llm/integration.rb +1 -1
  48. data/lib/datadog/ai_guard/contrib/ruby_llm/message_adapter.rb +76 -0
  49. data/lib/datadog/ai_guard/contrib/ruby_llm/patcher.rb +1 -0
  50. data/lib/datadog/ai_guard/contrib/ruby_llm/redaction_change_set.rb +135 -0
  51. data/lib/datadog/ai_guard/evaluation/client.rb +50 -0
  52. data/lib/datadog/ai_guard/evaluation/content_part.rb +12 -0
  53. data/lib/datadog/ai_guard/evaluation/message.rb +25 -7
  54. data/lib/datadog/ai_guard/evaluation/message_builder.rb +31 -0
  55. data/lib/datadog/ai_guard/evaluation/no_op_result.rb +6 -6
  56. data/lib/datadog/ai_guard/evaluation/outcome.rb +24 -0
  57. data/lib/datadog/ai_guard/evaluation/request.rb +8 -64
  58. data/lib/datadog/ai_guard/evaluation/response.rb +33 -0
  59. data/lib/datadog/ai_guard/evaluation/result.rb +11 -18
  60. data/lib/datadog/ai_guard/evaluation/tool_call.rb +15 -2
  61. data/lib/datadog/ai_guard/evaluation.rb +36 -14
  62. data/lib/datadog/ai_guard/ext.rb +4 -1
  63. data/lib/datadog/ai_guard/{api_client.rb → http_client.rb} +7 -5
  64. data/lib/datadog/ai_guard/metrics/telemetry.rb +43 -0
  65. data/lib/datadog/ai_guard/redaction/replacements.rb +97 -0
  66. data/lib/datadog/ai_guard/redaction/result.rb +29 -0
  67. data/lib/datadog/ai_guard/redaction.rb +80 -0
  68. data/lib/datadog/ai_guard.rb +58 -57
  69. data/lib/datadog/appsec/actions_handler/serializable_backtrace.rb +21 -42
  70. data/lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb +1 -1
  71. data/lib/datadog/appsec/api_security/endpoint_collection/rails_route_serializer.rb +1 -1
  72. data/lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb +1 -1
  73. data/lib/datadog/appsec/assets/blocked.html +1 -108
  74. data/lib/datadog/appsec/configuration.rb +11 -2
  75. data/lib/datadog/appsec/context.rb +1 -1
  76. data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +1 -1
  77. data/lib/datadog/appsec/contrib/aws_lambda/waf_addresses.rb +2 -2
  78. data/lib/datadog/appsec/contrib/devise/configuration.rb +1 -1
  79. data/lib/datadog/appsec/contrib/devise/patcher.rb +1 -1
  80. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +2 -2
  81. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +2 -2
  82. data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +1 -1
  83. data/lib/datadog/appsec/contrib/rack/ext.rb +2 -2
  84. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +2 -2
  85. data/lib/datadog/appsec/contrib/rack/patcher.rb +1 -1
  86. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +6 -3
  87. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +30 -3
  88. data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +8 -7
  89. data/lib/datadog/appsec/contrib/rails/request_middleware.rb +2 -1
  90. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +2 -2
  91. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +15 -3
  92. data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +8 -7
  93. data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +2 -1
  94. data/lib/datadog/appsec/processor/rule_loader.rb +12 -12
  95. data/lib/datadog/appsec/response.rb +1 -1
  96. data/lib/datadog/appsec/route_normalizer/route_pattern.rb +3 -3
  97. data/lib/datadog/appsec/security_engine/engine.rb +5 -4
  98. data/lib/datadog/core/configuration/components.rb +50 -19
  99. data/lib/datadog/core/configuration/components_state.rb +8 -1
  100. data/lib/datadog/core/configuration/option_definition.rb +1 -1
  101. data/lib/datadog/core/configuration/options.rb +1 -1
  102. data/lib/datadog/core/configuration/settings.rb +38 -43
  103. data/lib/datadog/core/configuration/supported_configurations.rb +18 -2
  104. data/lib/datadog/core/crashtracking/component.rb +5 -1
  105. data/lib/datadog/core/diagnostics/environment_logger.rb +36 -1
  106. data/lib/datadog/core/environment/gc.rb +1 -1
  107. data/lib/datadog/core/environment/vm_cache.rb +1 -1
  108. data/lib/datadog/core/environment/yjit.rb +2 -2
  109. data/lib/datadog/core/metrics/helpers.rb +1 -1
  110. data/lib/datadog/core/metrics/options.rb +2 -2
  111. data/lib/datadog/core/process_discovery.rb +6 -2
  112. data/lib/datadog/core/remote/client/capabilities.rb +32 -21
  113. data/lib/datadog/core/remote/client.rb +45 -4
  114. data/lib/datadog/core/remote/component.rb +30 -7
  115. data/lib/datadog/core/remote/configuration/repository.rb +2 -2
  116. data/lib/datadog/core/remote/dispatcher.rb +47 -6
  117. data/lib/datadog/core/remote/worker.rb +8 -0
  118. data/lib/datadog/core/telemetry/configuration_value.rb +38 -0
  119. data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +3 -1
  120. data/lib/datadog/core/telemetry/event/app_endpoints_loaded.rb +1 -1
  121. data/lib/datadog/core/telemetry/event/app_started.rb +5 -24
  122. data/lib/datadog/core/telemetry/event/generate_metrics.rb +1 -1
  123. data/lib/datadog/core/telemetry/event/log.rb +2 -2
  124. data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +1 -1
  125. data/lib/datadog/core/telemetry/metric.rb +2 -2
  126. data/lib/datadog/core/telemetry/request.rb +2 -2
  127. data/lib/datadog/core/transport/http.rb +1 -1
  128. data/lib/datadog/core/transport/transport.rb +1 -1
  129. data/lib/datadog/core/utils/at_fork_monkey_patch.rb +170 -18
  130. data/lib/datadog/core/utils/sequence.rb +3 -6
  131. data/lib/datadog/core/utils/time.rb +16 -54
  132. data/lib/datadog/core/workers/runtime_metrics.rb +1 -1
  133. data/lib/datadog/data_streams/pathway_context.rb +20 -22
  134. data/lib/datadog/data_streams/processor.rb +45 -14
  135. data/lib/datadog/di/boot.rb +1 -0
  136. data/lib/datadog/di/capture_expression_evaluator/result.rb +30 -0
  137. data/lib/datadog/di/capture_expression_evaluator.rb +39 -9
  138. data/lib/datadog/di/component.rb +108 -3
  139. data/lib/datadog/di/configuration.rb +53 -2
  140. data/lib/datadog/di/context.rb +7 -2
  141. data/lib/datadog/di/contrib/active_record.rb +8 -2
  142. data/lib/datadog/di/el/compiler.rb +88 -12
  143. data/lib/datadog/di/el/evaluator.rb +82 -2
  144. data/lib/datadog/di/el/expression.rb +13 -2
  145. data/lib/datadog/di/evaluation_failure.rb +28 -0
  146. data/lib/datadog/di/guardrails_telemetry/reason.rb +87 -0
  147. data/lib/datadog/di/guardrails_telemetry.rb +203 -0
  148. data/lib/datadog/di/instrumenter.rb +106 -15
  149. data/lib/datadog/di/logger.rb +32 -10
  150. data/lib/datadog/di/probe.rb +9 -1
  151. data/lib/datadog/di/probe_builder.rb +7 -6
  152. data/lib/datadog/di/probe_manager.rb +56 -8
  153. data/lib/datadog/di/probe_notification_builder.rb +31 -28
  154. data/lib/datadog/di/probe_notifier_worker.rb +56 -6
  155. data/lib/datadog/di/proc_responder.rb +1 -1
  156. data/lib/datadog/di/remote.rb +49 -5
  157. data/lib/datadog/di/serializer.rb +172 -55
  158. data/lib/datadog/di/snapshot_event.rb +38 -0
  159. data/lib/datadog/di/transport/http.rb +13 -3
  160. data/lib/datadog/di/transport/input.rb +32 -7
  161. data/lib/datadog/error_tracking/component.rb +1 -1
  162. data/lib/datadog/kit/appsec/events/v2.rb +2 -2
  163. data/lib/datadog/open_feature/activation.rb +268 -0
  164. data/lib/datadog/open_feature/agentless/configuration_source.rb +246 -0
  165. data/lib/datadog/open_feature/agentless/parser.rb +43 -0
  166. data/lib/datadog/open_feature/agentless/response.rb +19 -0
  167. data/lib/datadog/open_feature/agentless/transport.rb +103 -0
  168. data/lib/datadog/open_feature/component.rb +85 -13
  169. data/lib/datadog/open_feature/configuration/agentless_endpoint.rb +90 -0
  170. data/lib/datadog/open_feature/configuration/source/resolution.rb +22 -0
  171. data/lib/datadog/open_feature/configuration/source.rb +43 -0
  172. data/lib/datadog/open_feature/configuration.rb +124 -0
  173. data/lib/datadog/open_feature/evaluation_engine.rb +29 -3
  174. data/lib/datadog/open_feature/exposures/batch_builder.rb +1 -1
  175. data/lib/datadog/open_feature/exposures/event.rb +15 -8
  176. data/lib/datadog/open_feature/ext.rb +19 -0
  177. data/lib/datadog/open_feature/flag_evaluation/aggregator.rb +236 -80
  178. data/lib/datadog/open_feature/flag_evaluation/writer.rb +179 -68
  179. data/lib/datadog/open_feature/hooks/evaluation_telemetry_opt_out_hook.rb +25 -0
  180. data/lib/datadog/open_feature/hooks/flag_eval_evp_hook.rb +24 -21
  181. data/lib/datadog/open_feature/native_evaluator.rb +20 -6
  182. data/lib/datadog/open_feature/noop_evaluator.rb +5 -0
  183. data/lib/datadog/open_feature/provider.rb +315 -10
  184. data/lib/datadog/open_feature/remote.rb +5 -5
  185. data/lib/datadog/open_feature/transport.rb +5 -0
  186. data/lib/datadog/open_feature.rb +31 -1
  187. data/lib/datadog/opentelemetry/sdk/propagator.rb +1 -1
  188. data/lib/datadog/opentelemetry/signal_configuration.rb +13 -9
  189. data/lib/datadog/opentelemetry/trace.rb +3 -0
  190. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +10 -2
  191. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +5 -7
  192. data/lib/datadog/profiling/collectors/info.rb +40 -13
  193. data/lib/datadog/profiling/collectors/thread_context.rb +6 -17
  194. data/lib/datadog/profiling/component.rb +33 -39
  195. data/lib/datadog/profiling/exporter.rb +10 -10
  196. data/lib/datadog/profiling/tasks/exec.rb +1 -1
  197. data/lib/datadog/profiling.rb +4 -0
  198. data/lib/datadog/symbol_database/extractor.rb +89 -107
  199. data/lib/datadog/tracing/component.rb +44 -2
  200. data/lib/datadog/tracing/configuration/dynamic/option.rb +4 -0
  201. data/lib/datadog/tracing/configuration/dynamic.rb +5 -3
  202. data/lib/datadog/tracing/configuration/ext.rb +4 -0
  203. data/lib/datadog/tracing/configuration/settings.rb +36 -0
  204. data/lib/datadog/tracing/context.rb +24 -2
  205. data/lib/datadog/tracing/context_provider.rb +17 -5
  206. data/lib/datadog/tracing/contrib/action_cable/events.rb +1 -1
  207. data/lib/datadog/tracing/contrib/action_mailer/events.rb +1 -1
  208. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +2 -2
  209. data/lib/datadog/tracing/contrib/action_view/events.rb +1 -1
  210. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +1 -1
  211. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +1 -1
  212. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +1 -0
  213. data/lib/datadog/tracing/contrib/active_record/events.rb +1 -1
  214. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +2 -2
  215. data/lib/datadog/tracing/contrib/aws/ext.rb +1 -1
  216. data/lib/datadog/tracing/contrib/aws/services.rb +1 -1
  217. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +1 -1
  218. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +10 -5
  219. data/lib/datadog/tracing/contrib/excon/middleware.rb +10 -3
  220. data/lib/datadog/tracing/contrib/ext.rb +3 -3
  221. data/lib/datadog/tracing/contrib/faraday/middleware.rb +10 -4
  222. data/lib/datadog/tracing/contrib/grape/endpoint.rb +32 -5
  223. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +1 -1
  224. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +1 -1
  225. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +1 -1
  226. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +2 -1
  227. data/lib/datadog/tracing/contrib/http/instrumentation.rb +16 -1
  228. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +8 -2
  229. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +10 -4
  230. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +4 -0
  231. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +7 -2
  232. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +7 -2
  233. data/lib/datadog/tracing/contrib/kafka/events.rb +1 -1
  234. data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +1 -1
  235. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -1
  236. data/lib/datadog/tracing/contrib/opensearch/ext.rb +1 -1
  237. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +1 -1
  238. data/lib/datadog/tracing/contrib/patchable.rb +1 -1
  239. data/lib/datadog/tracing/contrib/patcher.rb +1 -1
  240. data/lib/datadog/tracing/contrib/que/tracer.rb +1 -1
  241. data/lib/datadog/tracing/contrib/racecar/events.rb +1 -1
  242. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +1 -1
  243. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +1 -1
  244. data/lib/datadog/tracing/contrib/rack/patcher.rb +1 -1
  245. data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +1 -1
  246. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +1 -1
  247. data/lib/datadog/tracing/contrib/redis/quantize.rb +36 -2
  248. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +9 -3
  249. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +10 -3
  250. data/lib/datadog/tracing/contrib/sequel/database.rb +1 -5
  251. data/lib/datadog/tracing/contrib/sequel/jdbc_connection_string.rb +140 -0
  252. data/lib/datadog/tracing/contrib/sequel/utils.rb +50 -63
  253. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +1 -1
  254. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +1 -1
  255. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +1 -1
  256. data/lib/datadog/tracing/contrib/utils/quantization/hash_formatter.rb +1 -1
  257. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +108 -3
  258. data/lib/datadog/tracing/contrib/waterdrop/distributed/propagation.rb +1 -1
  259. data/lib/datadog/tracing/correlation.rb +2 -2
  260. data/lib/datadog/tracing/diagnostics/environment_logger.rb +3 -2
  261. data/lib/datadog/tracing/distributed/baggage.rb +1 -3
  262. data/lib/datadog/tracing/distributed/datadog.rb +3 -3
  263. data/lib/datadog/tracing/distributed/propagation.rb +3 -0
  264. data/lib/datadog/tracing/distributed/propagation_policy.rb +5 -0
  265. data/lib/datadog/tracing/distributed/trace_context.rb +14 -271
  266. data/lib/datadog/tracing/distributed/trace_state/datadog.rb +233 -0
  267. data/lib/datadog/tracing/distributed/trace_state/ext.rb +44 -0
  268. data/lib/datadog/tracing/distributed/trace_state/open_telemetry.rb +156 -0
  269. data/lib/datadog/tracing/distributed/trace_state.rb +121 -0
  270. data/lib/datadog/tracing/metadata/ext.rb +3 -0
  271. data/lib/datadog/tracing/metadata/tagging.rb +1 -1
  272. data/lib/datadog/tracing/otel_thread_context.rb +97 -0
  273. data/lib/datadog/tracing/remote.rb +236 -37
  274. data/lib/datadog/tracing/sampling/rule_sampler.rb +2 -0
  275. data/lib/datadog/tracing/span.rb +1 -1
  276. data/lib/datadog/tracing/span_operation.rb +1 -1
  277. data/lib/datadog/tracing/sync_writer.rb +8 -3
  278. data/lib/datadog/tracing/trace_digest.rb +22 -4
  279. data/lib/datadog/tracing/trace_operation.rb +22 -10
  280. data/lib/datadog/tracing/tracer.rb +28 -7
  281. data/lib/datadog/tracing/transport/http/telemetry.rb +94 -0
  282. data/lib/datadog/tracing/transport/http/traces.rb +2 -0
  283. data/lib/datadog/tracing/transport/io/traces.rb +1 -1
  284. data/lib/datadog/tracing/transport/native/response.rb +71 -0
  285. data/lib/datadog/tracing/transport/native/telemetry.rb +17 -0
  286. data/lib/datadog/tracing/transport/native.rb +395 -0
  287. data/lib/datadog/tracing/transport/span_events_negotiation.rb +41 -0
  288. data/lib/datadog/tracing/transport/telemetry.rb +62 -0
  289. data/lib/datadog/tracing/transport/trace_formatter.rb +14 -4
  290. data/lib/datadog/tracing/transport/traces.rb +85 -38
  291. data/lib/datadog/tracing/writer.rb +17 -4
  292. data/lib/datadog/version.rb +1 -1
  293. metadata +51 -13
  294. data/lib/datadog/ai_guard/evaluation/content_builder.rb +0 -31
  295. data/lib/datadog/appsec/utils/hash_coercion.rb +0 -23
  296. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +0 -69
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 738a49f1b7d7068adaa2e6237046870eb9868fe5fcbebdc8f136d2c99f880b00
4
- data.tar.gz: 19c8e8c4c05ad009beceb84afc161c7012c75f6dc26987ae6a599d33d7212a98
3
+ metadata.gz: f4a11a75d5b532014ee82ed0628621a2586ca9b05ab6b00c7136357b7b0a5445
4
+ data.tar.gz: d51c04201a7f931546374be3adc2c6445e523e98713b60c3e7167398da2dede2
5
5
  SHA512:
6
- metadata.gz: c48d6c1506eeb45ed203a7aaab7877370b35a0d0902935dcb9f5eaeb69ac40bc03e1bd55e78c414b89a71d6ea50c4e30191d1dff29160ba79f27c91b116cecc4
7
- data.tar.gz: 93037c1ea2179bac9db492a8410520fc96ff3184ca005df577960d452f783fb7a6ed2397ccfbb76dff3dc0d8d37bdd954ec8c1e2e44fbdaa197e4c54eb975971
6
+ metadata.gz: 344ce6f6622f0c6879f598917bab789aef9345a0498d3164b7481df27fdd916b8a4b65b69893fda1527db16ad01da921340441e35a880df4207ae6806966c31a
7
+ data.tar.gz: 2a77c07e5af10203211755104d3b4e117a70ef64d673d04330769b01a350d2bc8de024b5f7fad2954d95c50a99fa3526c1a473f169653437ad73cb51cea7e542
data/CHANGELOG.md CHANGED
@@ -2,35 +2,188 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [2.47.0] - 2026-10-26
6
+
7
+ ### Added
8
+
9
+ * Tracing: Add quantized request paths to outbound HTTP client resource names, such as `GET /users/*`; enable with `DD_TRACE_HTTP_CLIENT_RESOURCE_NAME_QUANTIZE=true`. ([#6298][])
10
+ * Open Feature: Let evaluations opt out of flag evaluation events, metrics, and span tags with `dd_evaluation_telemetry_opt_out: true` in the evaluation context; enable it with `DD_FEATURE_FLAGS_EVALUATION_TELEMETRY_PER_SUBJECT_OPT_OUT_ENABLED=true`. ([#6486][])
11
+
12
+ ### Changed
13
+
14
+ * AppSec: Update `libddwaf` to 1.30.0.1.0. ([#6548][])
15
+
16
+ ### Fixed
17
+
18
+ * Core: Fix forked processes, such as Puma and Unicorn workers, reporting no runtime metrics when the parent process traced before forking. ([#6500][]) ([@dduugg][])
19
+ * Profiling: Fix the "no signals" workaround being enabled when `mysql2` uses MariaDB Connector/C 3.x. ([#6543][])
20
+ * AppSec: Fix ruleset updates with Remote Configuration. ([#6547][])
21
+ * AppSec: Fix duplicate JSON serialization of Rails and Sinatra response objects when application security is enabled. ([#6548][])
22
+
23
+ ## [2.46.0] - 2026-10-19
24
+
25
+ ### Added
26
+
27
+ * Tracing: Add OpenTelemetry Thread Context support on Linux so that compatible agents can correlate Workload Protection events with application traces. ([#6454][])
28
+ * Open Feature: Start Feature Flags delivery during provider initialization, including for applications that never receive traced requests. ([#6418][])
29
+
30
+ ### Changed
31
+
32
+ * SSI: Reduce the single-step injection init image by about 35 MB, lowering download size and disk use when installing the library. ([#6469][], [#6474][], [#6481][], [#6485][], [#6488][])
33
+ * Profiling: Upgrade `datadog-ruby_core_source` to support Ruby 4.1.0-preview1. ([#6470][])
34
+ * Dynamic Instrumentation: Bound snapshot captures by the `DD_DYNAMIC_INSTRUMENTATION_CAPTURE_TIMEOUT_MS` budget (default `150`). `DD_DYNAMIC_INSTRUMENTATION_MAX_TIME_TO_SERIALIZE` is deprecated. ([#6205][])
35
+
36
+ ## [2.45.0] - 2026-10-13
37
+
38
+ ### Changed
39
+
40
+ * Core: Begin the progressive rollout of the native trace exporter, enabling it by default on CRuby 4.0.0 and later. ([#6419][])
41
+
42
+ ### Fixed
43
+
44
+ * Tracing: Fix missing Agent URLs in startup diagnostics when using the native trace exporter. ([#6433][])
45
+ * Tracing: Fix child processes hanging during garbage collection after closing a native trace transport and then forking. ([#6433][])
46
+ * Tracing: Security: Fixes a security vulnerability, as described in [GHSA-p7cx-x3jr-jj6w](https://github.com/DataDog/dd-trace-rb/security/advisories/GHSA-p7cx-x3jr-jj6w). ([#6441][])
47
+ * Tracing: Fix ignored `c.agent.timeout_seconds` and `DD_TRACE_AGENT_TIMEOUT_SECONDS` settings when using the native trace exporter. ([#6433][])
48
+ * Tracing: Fix custom trace transports being replaced when native transport is enabled, restoring compatibility with `datadog-ci`. ([#6433][])
49
+ * Profiling: Fix a sampling race condition during profile serialization. ([#6377][])
50
+ * Profiling: Fix potential crash due to underflow when sampling. ([#6401][])
51
+ * Profiling: Fix additional crashes during garbage collection compaction when profiling is enabled. ([#6412][])
52
+ * AppSec: Fix APM statistics to be properly excluded when using the native trace exporter with APM tracing disabled. ([#6433][])
53
+
54
+ ## [2.44.0] - 2026-10-07
55
+
56
+ ### Added
57
+
58
+ * AI Guard: Add sensitive-data redaction to evaluated messages, enabled by default; configure it with `ai_guard.redaction_enabled` or `DD_AI_GUARD_REDACTION_ENABLED`. ([#6394][])
59
+ * Open Feature: Add agentless Feature Flags configuration delivery and settings for selecting agentless, Remote Configuration, or offline delivery. ([#6291][])
60
+
61
+ ### Changed
62
+
63
+ * AI Guard: Require `ruby_llm` 2.0 or later for the `RubyLLM` integration. ([#6394][])
64
+ * Dynamic Instrumentation: Condition evaluation error snapshots are now subject to the process-wide Dynamic Instrumentation snapshot rate limit in addition to the per-probe limit. ([#6250][])
65
+ * OpenTelemetry: Emit `deployment.environment.name` instead of `deployment.environment` for Logs and Metrics resources, and accept it as the Datadog environment while retaining `deployment.environment` as a fallback. ([#6261][])
66
+
67
+ ### Fixed
68
+
69
+ * Core: Fix native extension build failures when installing gems in a directory whose path contains spaces. ([#6371][])
70
+ * Core: Fix Remote Configuration polling remaining stopped in forked web workers when application warmup started it before the fork. ([#6427][])
71
+ * Tracing: Fix the `grape` integration creating no `grape.endpoint_run` span on Grape 4, which moved the API class, HTTP verb and route path off `Grape::Endpoint#options`. ([#6354][]) ([@dduugg][])
72
+ * Tracing: Fix an empty `http.route` tag on spans for 405 responses when running `grape` versions 2.3 through 3.0. ([#6358][])
73
+ * Profiling: Fix the profiler stopping with `BUG: Unexpected CPU time going backwards between samples`. ([#6364][])
74
+ * Profiling: Fix a sampling race condition during profiler shutdown. ([#6375][])
75
+ * Profiling: Fix a potential crash during garbage collection compaction when profiling is enabled. ([#6395][])
76
+ * Profiling: Stop profiling if `thread_name_for`/`rb_thread_t` changes. ([#6398][])
77
+ * Profiling: Fix native extension build breaking when trying to log %. ([#6407][])
78
+ * Dynamic Instrumentation: Fix methods disappearing from code search and source lookup when method logpoints are already installed. ([#6339][])
79
+ * Dynamic Instrumentation: Fix missing condition evaluation error snapshots for method probes with a `when` condition; errors raised while evaluating the condition are now reported to the backend. ([#6250][])
80
+
81
+ ## [2.43.0] - 2026-09-22
82
+
83
+ ### Added
84
+
85
+ * Core: Add an experimental `libdatadog`-backed native trace transport with full feature parity. Opt in with `DD_EXPERIMENTAL_NATIVE_TRANSPORT_ENABLED=true`. ([#5971][])
86
+ * SSI: Support `force_ruby_platform` during Ruby dependency resolution. ([#6316][])
87
+
88
+ ### Fixed
89
+
90
+ * SSI: Respect transitive application dependencies during Ruby injection. ([#6316][])
91
+ * SSI: Preserve checksums in injected Ruby lockfiles. ([#6320][])
92
+ * SSI: Preserve Bundler selection and `RUBYOPT` options during injection. ([#6316][])
93
+ * SSI: Support versioned and symlinked Bundler launchers. ([#6316][])
94
+ * SSI: Restore Ruby injection for deployment and vendored bundles. ([#6316][])
95
+ * Profiling: Fix a potential sampling race when Ruby is idle. ([#6286][])
96
+ * Profiling: Fix profiler not starting on Ruby 4 due to `undefined symbol: rb_current_box`. ([#6350][])
97
+
98
+ ## [2.42.0] - 2026-08-31
99
+
100
+ ### Added
101
+
102
+ * Tracing: Add sampling probability compatibility with OTel-instrumented services ([#6111][])
103
+ * Dynamic Instrumentation: Honor organization- and environment-level remote enablement for Ruby services. ([#6234][])
104
+ * Dynamic Instrumentation: Add per-process runtime id for snapshots to distinguish process restarts within a container ([#6232][])
105
+ * Open Feature: OpenFeature provider sends the serial ID of the assigned split on exposure events ([#6220][])
106
+
107
+ ### Changed
108
+
109
+ * Profiling: Drop usage of MJIT headers for Ruby 2.6 to 3.1 ([#6135][])
110
+ * Profiling: Re-enable heap live size profiling for Ruby 4+ ([#6176][])
111
+ * Dynamic Instrumentation: Enforce process-wide rate limit across all probes ([#6043][])
112
+
113
+ ### Fixed
114
+
115
+ * Core: Ignore `SignalException` from crashtracker as unhandled exception errors ([#6219][])
116
+ * Tracing: Fix missing peer tags for database queries traced through `ActiveRecord` ([#6213][])
117
+ * Profiling: Fix bug in `sample_after_gc` leading to profiler stopping ([#6242][])
118
+ * Profiling: Improve stability of heap profiling by using `ObjectSpace::WeakMap` instead of `_id2ref` ([#6176][])
119
+ * Profiling: VM-internal objects are no longer sampled for heap profiling ([#6176][])
120
+
121
+ ## [2.41.0] - 2026-08-13
122
+
123
+ ### Added
124
+
125
+ * Tracing: Integrations: Add support for `redis-rb` 6.0/RESP3. ([#6142][])
126
+ * Tracing: Native trace export now supports structured span metadata. ([#6130][])
127
+
128
+ ### Changed
129
+
130
+ * AppSec: Native trace export now encodes supported structured span metadata values without Ruby MessagePack encoding. ([#6132][])
131
+ * Tracing: Native trace export now writes structured span metadata directly through libdatadog. ([#6133][])
132
+
133
+ ### Fixed
134
+
135
+ * Profiling: Fix a rare crash (`SIGSEGV`) in the profiler that could occur when sampling a thread during `Thread.new`. ([#6173][])
136
+ * Profiling: Fix possible crash in `sample_thread()` when `rb_id2str()` returns `Qfalse`. ([#6138][])
137
+ * Tracing: Prevent runtime configuration telemetry from being rejected when header tags or sampling rules are updated remotely. ([#6126][])
138
+
139
+ ## [2.40.0] - 2026-08-04
140
+
141
+ ### Added
142
+
143
+ * Profiling: Add experimental profiling setting to show class/module names in stack frames ([#6024][])
144
+ * Tracing: Add an experimental native (`libdatadog`-backed) trace transport, selectable via `tracing.native_transport` ([#5971][])
145
+
146
+ ### Changed
147
+
148
+ * Core: Deprecate `time_now_provider` setting for removal; it no longer does anything. Please remove it from your `Datadog.configure block`. The datadog gem always uses the real non-mocked time, even when the timecop gem monkey-patches `Time` ([#6010][])
149
+
150
+ ### Fixed
151
+
152
+ * AppSec: Fix standalone billing issues for partially flushed traces ([#6116][])
153
+ * Dynamic Instrumentation: Limit dynamic instrumentation regular expression evaluation time to 500ms ([#5908][])
154
+ * Profiling: Fix missing native filename for static Ruby binaries ([#6097][])
155
+ * Profiling: Fix crash in `rb_iseq_path()` caused by incorrect GC marking ([#6024][])
156
+ * Tracing: Fix missing or zero Kafka producer and connection span tags like `kafka.message_count` and `kafka.request_size` in the `ruby-kafka` integration. ([#6104][])
157
+
5
158
  ## [2.39.0] - 2026-07-22
6
159
 
7
- ### Added
8
-
9
- * Tracing: Integrations: Add database name and host to Sequel spans and infer `peer.service` so datastore dependencies appear in the service map. ([#6072][])
10
-
11
- ### Fixed
12
-
13
- * AppSec: Fix error in `devise` contrib for non-standard Warden session serialization. ([#6064][])
14
- * Dynamic Instrumentation: Fix dynamic instrumentation line probes failing to install when dynamic instrumentation is enabled remotely after application startup. ([#6050][])
15
- * Profiling: Fix crash when trying to sample during GC compaction ([#6056][])
160
+ ### Added
161
+
162
+ * Tracing: Integrations: Add database name and host to Sequel spans and infer `peer.service` so datastore dependencies appear in the service map. ([#6072][])
163
+
164
+ ### Fixed
165
+
166
+ * AppSec: Fix error in `devise` contrib for non-standard Warden session serialization. ([#6064][])
167
+ * Dynamic Instrumentation: Fix dynamic instrumentation line probes failing to install when dynamic instrumentation is enabled remotely after application startup. ([#6050][])
168
+ * Profiling: Fix crash when trying to sample during GC compaction ([#6056][])
16
169
  * Tracing: Integrations: Fix an `ArgumentError` (and the resulting `Kafka::BufferOverflow`) raised by the Kafka producer integration on Ruby 2.5 and 2.6. ([#6060][])
17
170
 
18
171
  ## [2.38.0] - 2026-07-16
19
172
 
20
- ### Added
21
-
22
- * Dynamic Instrumentation: Log probes now support capture expressions as an alternative to capturing the full local/argument scope ([#5845][])
23
- * SSI: Add support for Ruby 4.0 runtime ([#5981][])
24
- * SSI: Add support for Bundler 4.0 and RubyGems 4.0 ([#5981][])
25
-
26
- ### Fixed
27
-
28
- * AppSec: Fix Rack-based and Rails request body analysis when body parsing fails ([#5993][])
29
- * Profiling: Add workaround for crash when collecting frame information ([#6014][])
30
- * Profiling: Fix left-over state impacting samples when profiler gets stopped and started again ([#5960][])
31
- * Profiling: Fix Ruby 4.0.6 support by bumping minimum version of `datadog-ruby_core_source` to 3.5.3 ([#6047][])
32
- * Profiling: Disable live heap size profiling on Ruby 4.0 due to incompatibility ([#6022][])
33
- * Profiling: Disallow heap profiling on Ruby 4.1+ ([#6023][])
173
+ ### Added
174
+
175
+ * Dynamic Instrumentation: Log probes now support capture expressions as an alternative to capturing the full local/argument scope ([#5845][])
176
+ * SSI: Add support for Ruby 4.0 runtime ([#5981][])
177
+ * SSI: Add support for Bundler 4.0 and RubyGems 4.0 ([#5981][])
178
+
179
+ ### Fixed
180
+
181
+ * AppSec: Fix Rack-based and Rails request body analysis when body parsing fails ([#5993][])
182
+ * Profiling: Add workaround for crash when collecting frame information ([#6014][])
183
+ * Profiling: Fix left-over state impacting samples when profiler gets stopped and started again ([#5960][])
184
+ * Profiling: Fix Ruby 4.0.6 support by bumping minimum version of `datadog-ruby_core_source` to 3.5.3 ([#6047][])
185
+ * Profiling: Disable live heap size profiling on Ruby 4.0 due to incompatibility ([#6022][])
186
+ * Profiling: Disallow heap profiling on Ruby 4.1+ ([#6023][])
34
187
  * Tracing: Fix `pg` instrumentation which raised `ArgumentError` when calling `exec_params`, `exec_prepared` without a `params` argument, or their `async_`/`sync_` variants ([#6020][])
35
188
 
36
189
  ## [2.37.0] - 2026-07-06
@@ -62,26 +215,26 @@
62
215
 
63
216
  ## [2.36.0] - 2026-06-24
64
217
 
65
- ### Added
66
-
67
- * Tracing: Add `DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT` to control trace extraction behavior with `continue`, `restart`, and `ignore` modes ([#5844][])
68
- * AppSec: Add `DD_APPSEC_BODY_PARSING_SIZE_LIMIT` to control processing of request and response body size; set to 0 to disable ([#5877][])
69
- * AppSec: Detect attacks from inline fragments in GraphQL queries ([#5916][])
70
- * Dynamic Instrumentation: Show lazily loaded classes in UI ([#5697][])
71
-
72
- ### Changed
73
-
74
- * Dynamic Instrumentation: Reduce peak memory usage during Symbol Database extraction ([#5883][])
75
- * Profiling: Reduce profiler overhead by up to 50% by skipping redundant samples for threads without the GVL ([#5777][])
76
- * Profiling: Remove overhead when cleaning up dead threads ([#5816][])
77
-
78
- ### Fixed
79
-
80
- * Tracing: Workaround Ruby VM bug causing segmentation faults inside CachingResolver ([#5719][], [#5890][])
81
- * Dynamic Instrumentation: Prevent uploading stale class definitions for apps using `remove_const`-then-redefine patterns ([#5872][])
82
- * Profiling: Fix GC profiling being incorrectly disabled on Ruby 3.2.10 and 3.2.11 ([#5894][])
83
- * Profiling: Fix over-counting of the first allocation sample at profiler startup ([#5881][])
84
- * Profiling: Fix rare profiler crash during shutdown in heap profiling cleanup ([#5920][])
218
+ ### Added
219
+
220
+ * Tracing: Add `DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT` to control trace extraction behavior with `continue`, `restart`, and `ignore` modes ([#5844][])
221
+ * AppSec: Add `DD_APPSEC_BODY_PARSING_SIZE_LIMIT` to control processing of request and response body size; set to 0 to disable ([#5877][])
222
+ * AppSec: Detect attacks from inline fragments in GraphQL queries ([#5916][])
223
+ * Dynamic Instrumentation: Show lazily loaded classes in UI ([#5697][])
224
+
225
+ ### Changed
226
+
227
+ * Dynamic Instrumentation: Reduce peak memory usage during Symbol Database extraction ([#5883][])
228
+ * Profiling: Reduce profiler overhead by up to 50% by skipping redundant samples for threads without the GVL ([#5777][])
229
+ * Profiling: Remove overhead when cleaning up dead threads ([#5816][])
230
+
231
+ ### Fixed
232
+
233
+ * Tracing: Workaround Ruby VM bug causing segmentation faults inside CachingResolver ([#5719][], [#5890][])
234
+ * Dynamic Instrumentation: Prevent uploading stale class definitions for apps using `remove_const`-then-redefine patterns ([#5872][])
235
+ * Profiling: Fix GC profiling being incorrectly disabled on Ruby 3.2.10 and 3.2.11 ([#5894][])
236
+ * Profiling: Fix over-counting of the first allocation sample at profiler startup ([#5881][])
237
+ * Profiling: Fix rare profiler crash during shutdown in heap profiling cleanup ([#5920][])
85
238
  * Core: Fix exception message formatting from native extensions ([#5857][])
86
239
 
87
240
  ## [2.35.0] - 2026-06-03
@@ -3716,7 +3869,15 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1
3716
3869
  Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
3717
3870
 
3718
3871
 
3719
- [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v2.39.0...master
3872
+ [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v2.47.0...master
3873
+ [2.47.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.46.0...v2.47.0
3874
+ [2.46.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.45.0...v2.46.0
3875
+ [2.45.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.44.0...v2.45.0
3876
+ [2.44.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.43.0...v2.44.0
3877
+ [2.43.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.42.0...v2.43.0
3878
+ [2.42.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.41.0...v2.42.0
3879
+ [2.41.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.40.0...v2.41.0
3880
+ [2.40.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.39.0...v2.40.0
3720
3881
  [2.39.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.38.0...v2.39.0
3721
3882
  [2.38.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.37.0...v2.38.0
3722
3883
  [2.37.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.36.0...v2.37.0
@@ -5496,6 +5657,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
5496
5657
  [#5890]: https://github.com/DataDog/dd-trace-rb/issues/5890
5497
5658
  [#5894]: https://github.com/DataDog/dd-trace-rb/issues/5894
5498
5659
  [#5907]: https://github.com/DataDog/dd-trace-rb/issues/5907
5660
+ [#5908]: https://github.com/DataDog/dd-trace-rb/issues/5908
5499
5661
  [#5911]: https://github.com/DataDog/dd-trace-rb/issues/5911
5500
5662
  [#5916]: https://github.com/DataDog/dd-trace-rb/issues/5916
5501
5663
  [#5920]: https://github.com/DataDog/dd-trace-rb/issues/5920
@@ -5506,6 +5668,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
5506
5668
  [#5955]: https://github.com/DataDog/dd-trace-rb/issues/5955
5507
5669
  [#5960]: https://github.com/DataDog/dd-trace-rb/issues/5960
5508
5670
  [#5970]: https://github.com/DataDog/dd-trace-rb/issues/5970
5671
+ [#5971]: https://github.com/DataDog/dd-trace-rb/issues/5971
5509
5672
  [#5973]: https://github.com/DataDog/dd-trace-rb/issues/5973
5510
5673
  [#5975]: https://github.com/DataDog/dd-trace-rb/issues/5975
5511
5674
  [#5981]: https://github.com/DataDog/dd-trace-rb/issues/5981
@@ -5513,16 +5676,77 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
5513
5676
  [#5990]: https://github.com/DataDog/dd-trace-rb/issues/5990
5514
5677
  [#5991]: https://github.com/DataDog/dd-trace-rb/issues/5991
5515
5678
  [#5993]: https://github.com/DataDog/dd-trace-rb/issues/5993
5679
+ [#6010]: https://github.com/DataDog/dd-trace-rb/issues/6010
5516
5680
  [#6014]: https://github.com/DataDog/dd-trace-rb/issues/6014
5517
5681
  [#6020]: https://github.com/DataDog/dd-trace-rb/issues/6020
5518
5682
  [#6022]: https://github.com/DataDog/dd-trace-rb/issues/6022
5519
5683
  [#6023]: https://github.com/DataDog/dd-trace-rb/issues/6023
5684
+ [#6024]: https://github.com/DataDog/dd-trace-rb/issues/6024
5685
+ [#6043]: https://github.com/DataDog/dd-trace-rb/issues/6043
5520
5686
  [#6047]: https://github.com/DataDog/dd-trace-rb/issues/6047
5521
5687
  [#6050]: https://github.com/DataDog/dd-trace-rb/issues/6050
5522
5688
  [#6056]: https://github.com/DataDog/dd-trace-rb/issues/6056
5523
5689
  [#6060]: https://github.com/DataDog/dd-trace-rb/issues/6060
5524
5690
  [#6064]: https://github.com/DataDog/dd-trace-rb/issues/6064
5525
5691
  [#6072]: https://github.com/DataDog/dd-trace-rb/issues/6072
5692
+ [#6097]: https://github.com/DataDog/dd-trace-rb/issues/6097
5693
+ [#6104]: https://github.com/DataDog/dd-trace-rb/issues/6104
5694
+ [#6111]: https://github.com/DataDog/dd-trace-rb/issues/6111
5695
+ [#6116]: https://github.com/DataDog/dd-trace-rb/issues/6116
5696
+ [#6126]: https://github.com/DataDog/dd-trace-rb/issues/6126
5697
+ [#6130]: https://github.com/DataDog/dd-trace-rb/issues/6130
5698
+ [#6132]: https://github.com/DataDog/dd-trace-rb/issues/6132
5699
+ [#6133]: https://github.com/DataDog/dd-trace-rb/issues/6133
5700
+ [#6135]: https://github.com/DataDog/dd-trace-rb/issues/6135
5701
+ [#6138]: https://github.com/DataDog/dd-trace-rb/issues/6138
5702
+ [#6142]: https://github.com/DataDog/dd-trace-rb/issues/6142
5703
+ [#6173]: https://github.com/DataDog/dd-trace-rb/issues/6173
5704
+ [#6176]: https://github.com/DataDog/dd-trace-rb/issues/6176
5705
+ [#6205]: https://github.com/DataDog/dd-trace-rb/issues/6205
5706
+ [#6213]: https://github.com/DataDog/dd-trace-rb/issues/6213
5707
+ [#6219]: https://github.com/DataDog/dd-trace-rb/issues/6219
5708
+ [#6220]: https://github.com/DataDog/dd-trace-rb/issues/6220
5709
+ [#6232]: https://github.com/DataDog/dd-trace-rb/issues/6232
5710
+ [#6234]: https://github.com/DataDog/dd-trace-rb/issues/6234
5711
+ [#6242]: https://github.com/DataDog/dd-trace-rb/issues/6242
5712
+ [#6250]: https://github.com/DataDog/dd-trace-rb/issues/6250
5713
+ [#6261]: https://github.com/DataDog/dd-trace-rb/issues/6261
5714
+ [#6286]: https://github.com/DataDog/dd-trace-rb/issues/6286
5715
+ [#6291]: https://github.com/DataDog/dd-trace-rb/issues/6291
5716
+ [#6298]: https://github.com/DataDog/dd-trace-rb/issues/6298
5717
+ [#6316]: https://github.com/DataDog/dd-trace-rb/issues/6316
5718
+ [#6320]: https://github.com/DataDog/dd-trace-rb/issues/6320
5719
+ [#6339]: https://github.com/DataDog/dd-trace-rb/issues/6339
5720
+ [#6350]: https://github.com/DataDog/dd-trace-rb/issues/6350
5721
+ [#6354]: https://github.com/DataDog/dd-trace-rb/issues/6354
5722
+ [#6358]: https://github.com/DataDog/dd-trace-rb/issues/6358
5723
+ [#6364]: https://github.com/DataDog/dd-trace-rb/issues/6364
5724
+ [#6371]: https://github.com/DataDog/dd-trace-rb/issues/6371
5725
+ [#6375]: https://github.com/DataDog/dd-trace-rb/issues/6375
5726
+ [#6377]: https://github.com/DataDog/dd-trace-rb/issues/6377
5727
+ [#6394]: https://github.com/DataDog/dd-trace-rb/issues/6394
5728
+ [#6395]: https://github.com/DataDog/dd-trace-rb/issues/6395
5729
+ [#6398]: https://github.com/DataDog/dd-trace-rb/issues/6398
5730
+ [#6401]: https://github.com/DataDog/dd-trace-rb/issues/6401
5731
+ [#6407]: https://github.com/DataDog/dd-trace-rb/issues/6407
5732
+ [#6412]: https://github.com/DataDog/dd-trace-rb/issues/6412
5733
+ [#6418]: https://github.com/DataDog/dd-trace-rb/issues/6418
5734
+ [#6419]: https://github.com/DataDog/dd-trace-rb/issues/6419
5735
+ [#6427]: https://github.com/DataDog/dd-trace-rb/issues/6427
5736
+ [#6433]: https://github.com/DataDog/dd-trace-rb/issues/6433
5737
+ [#6441]: https://github.com/DataDog/dd-trace-rb/issues/6441
5738
+ [#6454]: https://github.com/DataDog/dd-trace-rb/issues/6454
5739
+ [#6469]: https://github.com/DataDog/dd-trace-rb/issues/6469
5740
+ [#6470]: https://github.com/DataDog/dd-trace-rb/issues/6470
5741
+ [#6474]: https://github.com/DataDog/dd-trace-rb/issues/6474
5742
+ [#6481]: https://github.com/DataDog/dd-trace-rb/issues/6481
5743
+ [#6485]: https://github.com/DataDog/dd-trace-rb/issues/6485
5744
+ [#6486]: https://github.com/DataDog/dd-trace-rb/issues/6486
5745
+ [#6488]: https://github.com/DataDog/dd-trace-rb/issues/6488
5746
+ [#6500]: https://github.com/DataDog/dd-trace-rb/issues/6500
5747
+ [#6543]: https://github.com/DataDog/dd-trace-rb/issues/6543
5748
+ [#6547]: https://github.com/DataDog/dd-trace-rb/issues/6547
5749
+ [#6548]: https://github.com/DataDog/dd-trace-rb/issues/6548
5526
5750
  [@AdrianLC]: https://github.com/AdrianLC
5527
5751
  [@Azure7111]: https://github.com/Azure7111
5528
5752
  [@BabyGroot]: https://github.com/BabyGroot
@@ -5575,6 +5799,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
5575
5799
  [@cwoodcox]: https://github.com/cwoodcox
5576
5800
  [@danhodge]: https://github.com/danhodge
5577
5801
  [@dasch]: https://github.com/dasch
5802
+ [@dduugg]: https://github.com/dduugg
5578
5803
  [@dim]: https://github.com/dim
5579
5804
  [@dirk]: https://github.com/dirk
5580
5805
  [@djmb]: https://github.com/djmb
data/README.md CHANGED
@@ -17,8 +17,11 @@ For descriptions of terminology used in APM, take a look at the [APM Terms and C
17
17
 
18
18
  For contributing, checkout the [contribution guidelines][contribution docs] and [development guide][development docs].
19
19
 
20
+ To check that a downloaded gem file was published by this repository, see [how to verify gem provenance][provenance docs].
21
+
20
22
  [public docs]: https://docs.datadoghq.com/tracing/setup/ruby/
21
23
  [api docs]: https://datadog.github.io/dd-trace-rb/
22
24
  [APM glossary]: https://docs.datadoghq.com/tracing/glossary/
23
25
  [contribution docs]: https://github.com/DataDog/dd-trace-rb/blob/master/CONTRIBUTING.md
24
26
  [development docs]: https://github.com/DataDog/dd-trace-rb/blob/master/docs/DevelopmentGuide.md
27
+ [provenance docs]: https://github.com/DataDog/dd-trace-rb/blob/master/docs/Provenance.md
@@ -65,38 +65,26 @@ Non-exhaustive list of APIs that cause exceptions to be raised:
65
65
  To implement some of the features below, we sometimes require access to private Ruby header files (that describe VM
66
66
  internal types, structures and functions).
67
67
 
68
- Because these private header files are not included in regular Ruby installations, we have two different workarounds:
69
-
70
- 1. for Ruby versions 2.6 to 3.2 we make use use the Ruby private MJIT header
71
- 2. for Ruby versions < 2.6 and > 3.2 we make use of the `datadog-ruby_core_source` gem
68
+ Because these private header files are not included in regular Ruby installations, we make use of the
69
+ [`datadog-ruby_core_source`](https://github.com/DataDog/datadog-ruby_core_source) gem, which contains almost no code
70
+ of its own; instead, it just contains per-Ruby-version folders with the private VM headers (`.h`) files for that
71
+ version. Thus, even though a regular Ruby installation does not include these files, we can access the copy inside
72
+ this gem.
72
73
 
73
74
  Functions which make use of these headers are defined in the <private_vm_api_acccess.c> file.
74
75
 
75
- There is currently no way for disabling usage of the private MJIT header for Ruby 2.6 to 3.2.
76
-
77
76
  **Important Note**: Our medium/long-term plan is to stop relying on all private Ruby headers, and instead request and
78
77
  contribute upstream changes so that they become official public VM APIs.
79
78
 
80
- ### Approach 1: Using the Ruby private MJIT header
81
-
82
- Ruby versions 2.6 to 3.2 shipped a JIT compiler called MJIT. This compiler does not directly generate machine code;
83
- instead it generates C code and uses the system C compiler to turn it into machine code.
84
-
85
- The generated C code `#include`s a private header -- which we call "the MJIT header".
86
- The MJIT header gets shipped with all MJIT-enabled Rubies and includes the layout of many internal VM structures;
87
- and of course the intention is that it is only used by the Ruby MJIT compiler.
88
-
89
- This header is placed inside the `include/` directory in a Ruby installation, and is named for that specific Ruby
90
- version. e.g. `rb_mjit_min_header-2.7.4.h`.
91
-
92
- This header was removed in Ruby 3.3.
93
-
94
- ### Approach 2: Using the `datadog-ruby_core_source` gem
79
+ ### Historical note: the Ruby private MJIT header
95
80
 
96
- The [`datadog-ruby_core_source`](https://github.com/DataDog/datadog-ruby_core_source) contains almost no code;
97
- instead, it just contains per-Ruby-version folders with the private VM headers (`.h`) files for that version.
81
+ Ruby versions 2.6 to 3.2 shipped a JIT compiler called MJIT. This compiler did not directly generate machine code;
82
+ instead it generated C code and used the system C compiler to turn it into machine code.
98
83
 
99
- Thus, even though a regular Ruby installation does not include these files, we can access the copy inside this gem.
84
+ The generated C code `#include`d a private header -- which we called "the MJIT header". In the past we used to
85
+ rely on it for Ruby versions 2.6 to 3.2.
86
+ This header was removed in Ruby 3.3, and we have since moved all supported Ruby versions over to using the
87
+ `datadog-ruby_core_source` gem instead.
100
88
 
101
89
  ## Feature: Getting thread CPU-time clock_ids
102
90