datadog 2.17.0 → 2.37.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 (765) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +686 -1
  3. data/README.md +0 -1
  4. data/ext/LIBDATADOG_DEVELOPMENT.md +3 -0
  5. data/ext/datadog_profiling_native_extension/clock_id.h +9 -1
  6. data/ext/datadog_profiling_native_extension/clock_id_from_mach.c +66 -0
  7. data/ext/datadog_profiling_native_extension/clock_id_from_pthread.c +3 -2
  8. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +344 -126
  9. data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +4 -4
  10. data/ext/datadog_profiling_native_extension/collectors_gc_profiling_helper.c +3 -2
  11. data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c +18 -4
  12. data/ext/datadog_profiling_native_extension/collectors_stack.c +314 -91
  13. data/ext/datadog_profiling_native_extension/collectors_stack.h +26 -3
  14. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +680 -352
  15. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +18 -5
  16. data/ext/datadog_profiling_native_extension/crashtracking_runtime_stacks.c +239 -0
  17. data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +65 -1
  18. data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +40 -1
  19. data/ext/datadog_profiling_native_extension/encoded_profile.c +2 -1
  20. data/ext/datadog_profiling_native_extension/extconf.rb +48 -34
  21. data/ext/datadog_profiling_native_extension/gvl_profiling_helper.c +4 -43
  22. data/ext/datadog_profiling_native_extension/gvl_profiling_helper.h +15 -47
  23. data/ext/datadog_profiling_native_extension/heap_recorder.c +455 -430
  24. data/ext/datadog_profiling_native_extension/heap_recorder.h +16 -7
  25. data/ext/datadog_profiling_native_extension/http_transport.c +66 -68
  26. data/ext/datadog_profiling_native_extension/libdatadog_helpers.c +18 -15
  27. data/ext/datadog_profiling_native_extension/libdatadog_helpers.h +8 -10
  28. data/ext/datadog_profiling_native_extension/macos_sampler_thread.h +55 -0
  29. data/ext/datadog_profiling_native_extension/native_extension_helpers.rb +0 -13
  30. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +73 -69
  31. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +10 -4
  32. data/ext/datadog_profiling_native_extension/profiling.c +65 -19
  33. data/ext/datadog_profiling_native_extension/ruby_helpers.c +64 -59
  34. data/ext/datadog_profiling_native_extension/ruby_helpers.h +20 -16
  35. data/ext/datadog_profiling_native_extension/setup_signal_handler.c +32 -10
  36. data/ext/datadog_profiling_native_extension/setup_signal_handler.h +2 -1
  37. data/ext/datadog_profiling_native_extension/stack_recorder.c +253 -131
  38. data/ext/datadog_profiling_native_extension/stack_recorder.h +3 -1
  39. data/ext/datadog_profiling_native_extension/time_helpers.h +1 -0
  40. data/ext/datadog_profiling_native_extension/unsafe_api_calls_check.c +2 -1
  41. data/ext/datadog_profiling_native_extension/unsafe_api_calls_check.h +9 -4
  42. data/ext/libdatadog_api/crashtracker.c +16 -15
  43. data/ext/libdatadog_api/crashtracker_report_exception.c +126 -0
  44. data/ext/libdatadog_api/datadog_ruby_common.c +65 -1
  45. data/ext/libdatadog_api/datadog_ruby_common.h +40 -1
  46. data/ext/libdatadog_api/ddsketch.c +102 -0
  47. data/ext/libdatadog_api/di.c +203 -0
  48. data/ext/libdatadog_api/extconf.rb +21 -25
  49. data/ext/libdatadog_api/feature_flags.c +554 -0
  50. data/ext/libdatadog_api/feature_flags.h +5 -0
  51. data/ext/libdatadog_api/helpers.h +27 -0
  52. data/ext/libdatadog_api/init.c +13 -1
  53. data/ext/libdatadog_api/library_config.c +88 -37
  54. data/ext/libdatadog_api/library_config.h +6 -0
  55. data/ext/libdatadog_api/process_discovery.c +25 -24
  56. data/ext/libdatadog_extconf_helpers.rb +107 -14
  57. data/lib/datadog/ai_guard/api_client.rb +84 -0
  58. data/lib/datadog/ai_guard/autoload.rb +10 -0
  59. data/lib/datadog/ai_guard/component.rb +44 -0
  60. data/lib/datadog/ai_guard/configuration/ext.rb +17 -0
  61. data/lib/datadog/ai_guard/configuration.rb +115 -0
  62. data/lib/datadog/ai_guard/contrib/auto_instrument.rb +24 -0
  63. data/lib/datadog/ai_guard/contrib/integration.rb +37 -0
  64. data/lib/datadog/ai_guard/contrib/rack/integration.rb +42 -0
  65. data/lib/datadog/ai_guard/contrib/rack/patcher.rb +26 -0
  66. data/lib/datadog/ai_guard/contrib/rack/request_middleware.rb +97 -0
  67. data/lib/datadog/ai_guard/contrib/rails/integration.rb +41 -0
  68. data/lib/datadog/ai_guard/contrib/rails/patcher.rb +97 -0
  69. data/lib/datadog/ai_guard/contrib/ruby_llm/chat_instrumentation.rb +80 -0
  70. data/lib/datadog/ai_guard/contrib/ruby_llm/integration.rb +41 -0
  71. data/lib/datadog/ai_guard/contrib/ruby_llm/patcher.rb +30 -0
  72. data/lib/datadog/ai_guard/evaluation/content_builder.rb +31 -0
  73. data/lib/datadog/ai_guard/evaluation/content_part.rb +36 -0
  74. data/lib/datadog/ai_guard/evaluation/message.rb +25 -0
  75. data/lib/datadog/ai_guard/evaluation/no_op_result.rb +36 -0
  76. data/lib/datadog/ai_guard/evaluation/request.rb +86 -0
  77. data/lib/datadog/ai_guard/evaluation/result.rb +45 -0
  78. data/lib/datadog/ai_guard/evaluation/tool_call.rb +18 -0
  79. data/lib/datadog/ai_guard/evaluation.rb +108 -0
  80. data/lib/datadog/ai_guard/ext.rb +29 -0
  81. data/lib/datadog/ai_guard.rb +181 -0
  82. data/lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb +26 -0
  83. data/lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb +66 -0
  84. data/lib/datadog/appsec/api_security/endpoint_collection/rails_route_serializer.rb +36 -0
  85. data/lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb +26 -0
  86. data/lib/datadog/appsec/api_security/endpoint_collection.rb +10 -0
  87. data/lib/datadog/appsec/api_security/route_extractor.rb +104 -0
  88. data/lib/datadog/appsec/api_security/sampler.rb +62 -0
  89. data/lib/datadog/appsec/api_security.rb +14 -0
  90. data/lib/datadog/appsec/assets/blocked.html +10 -1
  91. data/lib/datadog/appsec/assets/blocked.json +1 -1
  92. data/lib/datadog/appsec/assets/blocked.text +3 -1
  93. data/lib/datadog/appsec/assets/waf_rules/README.md +30 -36
  94. data/lib/datadog/appsec/assets/waf_rules/recommended.json +601 -74
  95. data/lib/datadog/appsec/assets/waf_rules/strict.json +48 -75
  96. data/lib/datadog/appsec/assets.rb +1 -1
  97. data/lib/datadog/appsec/autoload.rb +2 -2
  98. data/lib/datadog/appsec/component.rb +37 -64
  99. data/lib/datadog/appsec/compressed_json.rb +3 -3
  100. data/lib/datadog/appsec/configuration.rb +427 -1
  101. data/lib/datadog/appsec/context.rb +77 -16
  102. data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +3 -1
  103. data/lib/datadog/appsec/contrib/active_record/integration.rb +1 -1
  104. data/lib/datadog/appsec/contrib/active_record/patcher.rb +4 -1
  105. data/lib/datadog/appsec/contrib/aws_lambda/gateway/watcher.rb +75 -0
  106. data/lib/datadog/appsec/contrib/aws_lambda/integration.rb +39 -0
  107. data/lib/datadog/appsec/contrib/aws_lambda/patcher.rb +30 -0
  108. data/lib/datadog/appsec/contrib/aws_lambda/waf_addresses.rb +144 -0
  109. data/lib/datadog/appsec/contrib/devise/integration.rb +1 -1
  110. data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +4 -2
  111. data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +2 -1
  112. data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +1 -1
  113. data/lib/datadog/appsec/contrib/excon/integration.rb +1 -1
  114. data/lib/datadog/appsec/contrib/excon/patcher.rb +3 -1
  115. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +152 -13
  116. data/lib/datadog/appsec/contrib/faraday/integration.rb +1 -1
  117. data/lib/datadog/appsec/contrib/faraday/patcher.rb +1 -1
  118. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +138 -13
  119. data/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb +74 -24
  120. data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +4 -2
  121. data/lib/datadog/appsec/contrib/graphql/integration.rb +2 -1
  122. data/lib/datadog/appsec/contrib/rack/buffered_input.rb +83 -0
  123. data/lib/datadog/appsec/contrib/rack/ext.rb +1 -1
  124. data/lib/datadog/appsec/contrib/rack/gateway/request.rb +47 -13
  125. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +40 -19
  126. data/lib/datadog/appsec/contrib/rack/input_peeker.rb +79 -0
  127. data/lib/datadog/appsec/contrib/rack/integration.rb +1 -1
  128. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +80 -62
  129. data/lib/datadog/appsec/contrib/rack/response_body.rb +36 -0
  130. data/lib/datadog/appsec/contrib/rails/gateway/request.rb +35 -1
  131. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +47 -5
  132. data/lib/datadog/appsec/contrib/rails/integration.rb +1 -1
  133. data/lib/datadog/appsec/contrib/rails/patcher.rb +52 -26
  134. data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +29 -0
  135. data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +33 -0
  136. data/lib/datadog/appsec/contrib/rest_client/integration.rb +1 -1
  137. data/lib/datadog/appsec/contrib/rest_client/patcher.rb +3 -1
  138. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +167 -12
  139. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +63 -10
  140. data/lib/datadog/appsec/contrib/sinatra/integration.rb +1 -1
  141. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +11 -21
  142. data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +31 -0
  143. data/lib/datadog/appsec/counter_sampler.rb +25 -0
  144. data/lib/datadog/appsec/default_header_tags.rb +52 -0
  145. data/lib/datadog/appsec/event.rb +14 -47
  146. data/lib/datadog/appsec/ext.rb +3 -0
  147. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +17 -1
  148. data/lib/datadog/appsec/instrumentation/gateway/middleware.rb +2 -3
  149. data/lib/datadog/appsec/instrumentation/gateway.rb +2 -15
  150. data/lib/datadog/appsec/metrics/collector.rb +47 -5
  151. data/lib/datadog/appsec/metrics/exporter.rb +16 -3
  152. data/lib/datadog/appsec/metrics/telemetry.rb +21 -4
  153. data/lib/datadog/appsec/metrics/telemetry_exporter.rb +47 -0
  154. data/lib/datadog/appsec/metrics.rb +5 -4
  155. data/lib/datadog/appsec/monitor/gateway/watcher.rb +8 -6
  156. data/lib/datadog/appsec/processor/rule_loader.rb +5 -6
  157. data/lib/datadog/appsec/remote.rb +51 -76
  158. data/lib/datadog/appsec/response.rb +18 -4
  159. data/lib/datadog/appsec/route_normalizer/rails_route_pattern.rb +176 -0
  160. data/lib/datadog/appsec/route_normalizer/route_pattern.rb +378 -0
  161. data/lib/datadog/appsec/route_normalizer/route_text.rb +57 -0
  162. data/lib/datadog/appsec/route_normalizer.rb +80 -0
  163. data/lib/datadog/appsec/security_engine/engine.rb +197 -0
  164. data/lib/datadog/appsec/security_engine/result.rb +45 -9
  165. data/lib/datadog/appsec/security_engine/runner.rb +44 -21
  166. data/lib/datadog/appsec/security_event.rb +5 -7
  167. data/lib/datadog/appsec/thread_safe_ref.rb +61 -0
  168. data/lib/datadog/appsec/trace_keeper.rb +36 -0
  169. data/lib/datadog/appsec/utils/hash_coercion.rb +23 -0
  170. data/lib/datadog/appsec/utils/http/body.rb +38 -0
  171. data/lib/datadog/appsec/utils/http/body_reader.rb +61 -0
  172. data/lib/datadog/appsec/utils/http/media_range.rb +2 -1
  173. data/lib/datadog/appsec/utils/http/media_type.rb +32 -26
  174. data/lib/datadog/appsec/utils/http/url_encoded.rb +52 -0
  175. data/lib/datadog/appsec.rb +10 -17
  176. data/lib/datadog/auto_instrument_base.rb +2 -1
  177. data/lib/datadog/core/configuration/agent_settings.rb +52 -0
  178. data/lib/datadog/core/configuration/agent_settings_resolver.rb +5 -47
  179. data/lib/datadog/core/configuration/base.rb +17 -5
  180. data/lib/datadog/core/configuration/components.rb +192 -20
  181. data/lib/datadog/core/configuration/components_state.rb +6 -1
  182. data/lib/datadog/core/configuration/config_helper.rb +109 -0
  183. data/lib/datadog/core/configuration/deprecations.rb +36 -0
  184. data/lib/datadog/core/configuration/ext.rb +0 -1
  185. data/lib/datadog/core/configuration/option.rb +95 -65
  186. data/lib/datadog/core/configuration/option_definition.rb +42 -23
  187. data/lib/datadog/core/configuration/options.rb +57 -18
  188. data/lib/datadog/core/configuration/settings.rb +160 -25
  189. data/lib/datadog/core/configuration/stable_config.rb +11 -2
  190. data/lib/datadog/core/configuration/supported_configurations.rb +413 -0
  191. data/lib/datadog/core/configuration.rb +4 -4
  192. data/lib/datadog/core/contrib/rails/railtie.rb +32 -0
  193. data/lib/datadog/core/contrib/rails/utils.rb +7 -3
  194. data/lib/datadog/core/crashtracking/component.rb +73 -21
  195. data/lib/datadog/core/crashtracking/tag_builder.rb +9 -21
  196. data/lib/datadog/core/ddsketch.rb +19 -0
  197. data/lib/datadog/core/deprecations.rb +2 -2
  198. data/lib/datadog/core/diagnostics/environment_logger.rb +3 -1
  199. data/lib/datadog/core/environment/agent_info.rb +65 -1
  200. data/lib/datadog/core/environment/cgroup.rb +52 -25
  201. data/lib/datadog/core/environment/container.rb +140 -46
  202. data/lib/datadog/core/environment/ext.rb +13 -2
  203. data/lib/datadog/core/environment/git.rb +2 -2
  204. data/lib/datadog/core/environment/identity.rb +40 -4
  205. data/lib/datadog/core/environment/process.rb +122 -0
  206. data/lib/datadog/core/environment/socket.rb +13 -0
  207. data/lib/datadog/core/environment/variable_helpers.rb +3 -3
  208. data/lib/datadog/core/environment/yjit.rb +2 -1
  209. data/lib/datadog/core/error.rb +6 -6
  210. data/lib/datadog/core/evp.rb +11 -0
  211. data/lib/datadog/core/feature_flags.rb +61 -0
  212. data/lib/datadog/core/knuth_sampler.rb +57 -0
  213. data/lib/datadog/core/logger.rb +1 -1
  214. data/lib/datadog/core/metrics/client.rb +7 -7
  215. data/lib/datadog/core/metrics/logging.rb +1 -1
  216. data/lib/datadog/core/pin.rb +8 -8
  217. data/lib/datadog/core/process_discovery/tracer_memfd.rb +13 -0
  218. data/lib/datadog/core/process_discovery.rb +51 -21
  219. data/lib/datadog/core/rate_limiter.rb +11 -1
  220. data/lib/datadog/core/remote/client/capabilities.rb +49 -6
  221. data/lib/datadog/core/remote/client.rb +15 -7
  222. data/lib/datadog/core/remote/component.rb +64 -36
  223. data/lib/datadog/core/remote/configuration/content.rb +15 -2
  224. data/lib/datadog/core/remote/configuration/digest.rb +14 -7
  225. data/lib/datadog/core/remote/configuration/repository.rb +13 -1
  226. data/lib/datadog/core/remote/configuration/target.rb +13 -6
  227. data/lib/datadog/core/remote/transport/config.rb +9 -36
  228. data/lib/datadog/core/remote/transport/http/config.rb +15 -55
  229. data/lib/datadog/core/remote/transport/http/negotiation.rb +14 -44
  230. data/lib/datadog/core/remote/transport/http.rb +15 -24
  231. data/lib/datadog/core/remote/transport/negotiation.rb +8 -33
  232. data/lib/datadog/core/remote/worker.rb +25 -37
  233. data/lib/datadog/core/runtime/ext.rb +0 -1
  234. data/lib/datadog/core/runtime/metrics.rb +11 -2
  235. data/lib/datadog/core/semaphore.rb +1 -4
  236. data/lib/datadog/core/tag_builder.rb +52 -0
  237. data/lib/datadog/core/tag_normalizer.rb +84 -0
  238. data/lib/datadog/core/telemetry/component.rb +65 -17
  239. data/lib/datadog/core/telemetry/emitter.rb +6 -6
  240. data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +3 -3
  241. data/lib/datadog/core/telemetry/event/app_endpoints_loaded.rb +30 -0
  242. data/lib/datadog/core/telemetry/event/app_extended_heartbeat.rb +32 -0
  243. data/lib/datadog/core/telemetry/event/app_started.rb +203 -89
  244. data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +27 -4
  245. data/lib/datadog/core/telemetry/event.rb +2 -7
  246. data/lib/datadog/core/telemetry/ext.rb +1 -0
  247. data/lib/datadog/core/telemetry/logger.rb +5 -2
  248. data/lib/datadog/core/telemetry/logging.rb +22 -4
  249. data/lib/datadog/core/telemetry/metrics_manager.rb +9 -0
  250. data/lib/datadog/core/telemetry/request.rb +17 -5
  251. data/lib/datadog/core/telemetry/transport/http/telemetry.rb +8 -34
  252. data/lib/datadog/core/telemetry/transport/http.rb +21 -16
  253. data/lib/datadog/core/telemetry/transport/telemetry.rb +8 -17
  254. data/lib/datadog/core/telemetry/worker.rb +108 -32
  255. data/lib/datadog/core/transport/ext.rb +3 -0
  256. data/lib/datadog/core/transport/http/adapters/net.rb +17 -2
  257. data/lib/datadog/core/transport/http/api/endpoint.rb +9 -4
  258. data/lib/datadog/core/transport/http/api/instance.rb +4 -21
  259. data/lib/datadog/core/transport/http/builder.rb +11 -7
  260. data/lib/datadog/core/transport/http/client.rb +80 -0
  261. data/lib/datadog/core/transport/http/env.rb +8 -0
  262. data/lib/datadog/core/transport/http/response.rb +4 -0
  263. data/lib/datadog/core/transport/http.rb +24 -19
  264. data/lib/datadog/core/transport/parcel.rb +61 -9
  265. data/lib/datadog/core/transport/response.rb +16 -2
  266. data/lib/datadog/core/transport/transport.rb +90 -0
  267. data/lib/datadog/core/utils/at_fork_monkey_patch.rb +1 -1
  268. data/lib/datadog/core/utils/{base64.rb → base64_codec.rb} +4 -3
  269. data/lib/datadog/core/utils/enumerable_compat.rb +29 -0
  270. data/lib/datadog/core/utils/fnv.rb +26 -0
  271. data/lib/datadog/core/utils/forking.rb +3 -1
  272. data/lib/datadog/core/utils/hash.rb +0 -23
  273. data/lib/datadog/{appsec/api_security → core/utils}/lru_cache.rb +10 -14
  274. data/lib/datadog/core/utils/network.rb +22 -1
  275. data/lib/datadog/core/utils/only_once.rb +1 -1
  276. data/lib/datadog/core/utils/only_once_successful.rb +8 -2
  277. data/lib/datadog/core/utils/safe_dup.rb +2 -2
  278. data/lib/datadog/core/utils/sequence.rb +2 -0
  279. data/lib/datadog/core/utils/spawn_monkey_patch.rb +68 -0
  280. data/lib/datadog/core/utils/time.rb +1 -1
  281. data/lib/datadog/core/utils.rb +10 -1
  282. data/lib/datadog/core/workers/async.rb +11 -2
  283. data/lib/datadog/core/workers/interval_loop.rb +51 -3
  284. data/lib/datadog/core/workers/polling.rb +2 -0
  285. data/lib/datadog/core/workers/queue.rb +96 -1
  286. data/lib/datadog/core/workers/runtime_metrics.rb +9 -1
  287. data/lib/datadog/core.rb +11 -2
  288. data/lib/datadog/data_streams/configuration.rb +50 -0
  289. data/lib/datadog/data_streams/ext.rb +11 -0
  290. data/lib/datadog/data_streams/extensions.rb +16 -0
  291. data/lib/datadog/data_streams/pathway_context.rb +169 -0
  292. data/lib/datadog/data_streams/processor.rb +511 -0
  293. data/lib/datadog/data_streams/transport/http/stats.rb +58 -0
  294. data/lib/datadog/data_streams/transport/http.rb +36 -0
  295. data/lib/datadog/data_streams/transport/stats.rb +39 -0
  296. data/lib/datadog/data_streams.rb +100 -0
  297. data/lib/datadog/di/base.rb +15 -7
  298. data/lib/datadog/di/boot.rb +11 -1
  299. data/lib/datadog/di/code_tracker.rb +217 -15
  300. data/lib/datadog/di/component.rb +143 -48
  301. data/lib/datadog/di/configuration.rb +235 -2
  302. data/lib/datadog/di/context.rb +76 -0
  303. data/lib/datadog/di/contrib/active_record.rb +34 -5
  304. data/lib/datadog/di/el/compiler.rb +168 -0
  305. data/lib/datadog/di/el/evaluator.rb +159 -0
  306. data/lib/datadog/di/el/expression.rb +42 -0
  307. data/lib/datadog/di/el.rb +5 -0
  308. data/lib/datadog/di/error.rb +44 -0
  309. data/lib/datadog/di/fatal_exceptions.rb +26 -0
  310. data/lib/datadog/di/instrumenter.rb +620 -132
  311. data/lib/datadog/di/logger.rb +2 -2
  312. data/lib/datadog/di/probe.rb +78 -15
  313. data/lib/datadog/di/probe_builder.rb +42 -3
  314. data/lib/datadog/di/probe_file_loader/railtie.rb +15 -0
  315. data/lib/datadog/di/probe_file_loader.rb +87 -0
  316. data/lib/datadog/di/probe_manager.rb +195 -100
  317. data/lib/datadog/di/probe_notification_builder.rb +285 -100
  318. data/lib/datadog/di/probe_notifier_worker.rb +120 -36
  319. data/lib/datadog/di/probe_repository.rb +198 -0
  320. data/lib/datadog/di/proc_responder.rb +36 -0
  321. data/lib/datadog/di/redactor.rb +24 -2
  322. data/lib/datadog/di/remote.rb +258 -95
  323. data/lib/datadog/di/serializer.rb +297 -20
  324. data/lib/datadog/di/transport/diagnostics.rb +12 -42
  325. data/lib/datadog/di/transport/http/diagnostics.rb +4 -34
  326. data/lib/datadog/di/transport/http/input.rb +12 -34
  327. data/lib/datadog/di/transport/http.rb +43 -19
  328. data/lib/datadog/di/transport/input.rb +121 -39
  329. data/lib/datadog/di/utils.rb +42 -14
  330. data/lib/datadog/di.rb +203 -10
  331. data/lib/datadog/error_tracking/collector.rb +2 -1
  332. data/lib/datadog/error_tracking/component.rb +2 -2
  333. data/lib/datadog/error_tracking/configuration.rb +55 -2
  334. data/lib/datadog/error_tracking/filters.rb +2 -2
  335. data/lib/datadog/kit/appsec/events/v2.rb +253 -0
  336. data/lib/datadog/kit/appsec/events.rb +11 -10
  337. data/lib/datadog/kit/enable_core_dumps.rb +1 -1
  338. data/lib/datadog/kit/identity.rb +17 -11
  339. data/lib/datadog/kit/tracing/method_tracer.rb +135 -0
  340. data/lib/datadog/open_feature/component.rb +100 -0
  341. data/lib/datadog/open_feature/configuration.rb +37 -0
  342. data/lib/datadog/open_feature/evaluation_engine.rb +70 -0
  343. data/lib/datadog/open_feature/exposures/batch_builder.rb +32 -0
  344. data/lib/datadog/open_feature/exposures/buffer.rb +43 -0
  345. data/lib/datadog/open_feature/exposures/deduplicator.rb +30 -0
  346. data/lib/datadog/open_feature/exposures/event.rb +60 -0
  347. data/lib/datadog/open_feature/exposures/reporter.rb +40 -0
  348. data/lib/datadog/open_feature/exposures/worker.rb +116 -0
  349. data/lib/datadog/open_feature/ext.rb +16 -0
  350. data/lib/datadog/open_feature/flag_evaluation/aggregator.rb +286 -0
  351. data/lib/datadog/open_feature/flag_evaluation/writer.rb +433 -0
  352. data/lib/datadog/open_feature/hooks/flag_eval_evp_hook.rb +101 -0
  353. data/lib/datadog/open_feature/hooks/flag_eval_metrics_hook.rb +49 -0
  354. data/lib/datadog/open_feature/metrics/flag_eval_metrics.rb +149 -0
  355. data/lib/datadog/open_feature/native_evaluator.rb +60 -0
  356. data/lib/datadog/open_feature/noop_evaluator.rb +26 -0
  357. data/lib/datadog/open_feature/provider.rb +191 -0
  358. data/lib/datadog/open_feature/remote.rb +67 -0
  359. data/lib/datadog/open_feature/resolution_details.rb +35 -0
  360. data/lib/datadog/open_feature/transport.rb +121 -0
  361. data/lib/datadog/open_feature.rb +19 -0
  362. data/lib/datadog/opentelemetry/api/baggage.rb +3 -3
  363. data/lib/datadog/opentelemetry/api/context.rb +10 -9
  364. data/lib/datadog/opentelemetry/configuration/settings.rb +226 -0
  365. data/lib/datadog/opentelemetry/ext.rb +9 -0
  366. data/lib/datadog/opentelemetry/logs.rb +98 -0
  367. data/lib/datadog/opentelemetry/metrics.rb +90 -0
  368. data/lib/datadog/opentelemetry/sdk/configurator.rb +66 -2
  369. data/lib/datadog/opentelemetry/sdk/id_generator.rb +16 -10
  370. data/lib/datadog/opentelemetry/sdk/logs_exporter.rb +30 -0
  371. data/lib/datadog/opentelemetry/sdk/metrics_exporter.rb +28 -0
  372. data/lib/datadog/opentelemetry/sdk/propagator.rb +13 -7
  373. data/lib/datadog/opentelemetry/sdk/span_processor.rb +12 -9
  374. data/lib/datadog/opentelemetry/sdk/trace/span.rb +14 -10
  375. data/lib/datadog/opentelemetry/sdk.rb +19 -0
  376. data/lib/datadog/opentelemetry/signal_configuration.rb +53 -0
  377. data/lib/datadog/opentelemetry/trace.rb +4 -4
  378. data/lib/datadog/opentelemetry.rb +4 -0
  379. data/lib/datadog/profiling/collectors/code_provenance.rb +83 -15
  380. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +52 -3
  381. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +13 -4
  382. data/lib/datadog/profiling/collectors/info.rb +59 -4
  383. data/lib/datadog/profiling/collectors/thread_context.rb +17 -5
  384. data/lib/datadog/profiling/component.rb +73 -49
  385. data/lib/datadog/profiling/exporter.rb +48 -13
  386. data/lib/datadog/profiling/ext/dir_monkey_patches.rb +24 -5
  387. data/lib/datadog/profiling/ext/exec_monkey_patch.rb +32 -0
  388. data/lib/datadog/profiling/ext.rb +2 -15
  389. data/lib/datadog/profiling/flush.rb +23 -11
  390. data/lib/datadog/profiling/http_transport.rb +24 -11
  391. data/lib/datadog/profiling/load_native_extension.rb +2 -2
  392. data/lib/datadog/profiling/profiler.rb +31 -12
  393. data/lib/datadog/profiling/scheduler.rb +12 -10
  394. data/lib/datadog/profiling/sequence_tracker.rb +44 -0
  395. data/lib/datadog/profiling/stack_recorder.rb +5 -13
  396. data/lib/datadog/profiling/tag_builder.rb +42 -38
  397. data/lib/datadog/profiling/tasks/exec.rb +10 -5
  398. data/lib/datadog/profiling/tasks/help.rb +1 -0
  399. data/lib/datadog/profiling/tasks/setup.rb +4 -2
  400. data/lib/datadog/profiling.rb +8 -11
  401. data/lib/datadog/ruby_version.rb +25 -0
  402. data/lib/datadog/single_step_instrument.rb +10 -1
  403. data/lib/datadog/symbol_database/component.rb +734 -0
  404. data/lib/datadog/symbol_database/configuration.rb +73 -0
  405. data/lib/datadog/symbol_database/extensions.rb +19 -0
  406. data/lib/datadog/symbol_database/extractor.rb +1110 -0
  407. data/lib/datadog/symbol_database/file_hash.rb +48 -0
  408. data/lib/datadog/symbol_database/logger.rb +43 -0
  409. data/lib/datadog/symbol_database/remote.rb +180 -0
  410. data/lib/datadog/symbol_database/scope.rb +102 -0
  411. data/lib/datadog/symbol_database/scope_batcher.rb +292 -0
  412. data/lib/datadog/symbol_database/service_version.rb +66 -0
  413. data/lib/datadog/symbol_database/symbol.rb +69 -0
  414. data/lib/datadog/symbol_database/transport/http/endpoint.rb +28 -0
  415. data/lib/datadog/symbol_database/transport/http.rb +45 -0
  416. data/lib/datadog/symbol_database/transport.rb +54 -0
  417. data/lib/datadog/symbol_database/uploader.rb +230 -0
  418. data/lib/datadog/symbol_database.rb +71 -0
  419. data/lib/datadog/tracing/analytics.rb +1 -1
  420. data/lib/datadog/tracing/buffer.rb +10 -10
  421. data/lib/datadog/tracing/component.rb +17 -17
  422. data/lib/datadog/tracing/configuration/dynamic.rb +6 -8
  423. data/lib/datadog/tracing/configuration/ext.rb +25 -5
  424. data/lib/datadog/tracing/configuration/settings.rb +125 -11
  425. data/lib/datadog/tracing/context.rb +2 -2
  426. data/lib/datadog/tracing/contrib/action_cable/event.rb +1 -1
  427. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +4 -1
  428. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +4 -1
  429. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +4 -1
  430. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +4 -1
  431. data/lib/datadog/tracing/contrib/action_cable/integration.rb +1 -1
  432. data/lib/datadog/tracing/contrib/action_mailer/event.rb +4 -1
  433. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +1 -1
  434. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +29 -11
  435. data/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb +47 -12
  436. data/lib/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rb +3 -1
  437. data/lib/datadog/tracing/contrib/action_pack/ext.rb +2 -0
  438. data/lib/datadog/tracing/contrib/action_pack/integration.rb +1 -1
  439. data/lib/datadog/tracing/contrib/action_pack/utils.rb +1 -2
  440. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +4 -1
  441. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +6 -3
  442. data/lib/datadog/tracing/contrib/active_job/event.rb +8 -8
  443. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +6 -3
  444. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +6 -3
  445. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +6 -3
  446. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +6 -3
  447. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +6 -3
  448. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +6 -3
  449. data/lib/datadog/tracing/contrib/active_job/integration.rb +1 -1
  450. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +21 -7
  451. data/lib/datadog/tracing/contrib/active_job/patcher.rb +5 -1
  452. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +2 -2
  453. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +4 -4
  454. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +1 -2
  455. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +3 -3
  456. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +2 -2
  457. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +7 -10
  458. data/lib/datadog/tracing/contrib/active_record/integration.rb +1 -1
  459. data/lib/datadog/tracing/contrib/active_record/utils.rb +16 -16
  460. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +15 -12
  461. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +1 -4
  462. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +13 -0
  463. data/lib/datadog/tracing/contrib/active_support/integration.rb +1 -1
  464. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +2 -1
  465. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +8 -10
  466. data/lib/datadog/tracing/contrib/aws/ext.rb +1 -1
  467. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +8 -10
  468. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +3 -1
  469. data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -1
  470. data/lib/datadog/tracing/contrib/aws/service/base.rb +2 -1
  471. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +1 -1
  472. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +1 -1
  473. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +1 -1
  474. data/lib/datadog/tracing/contrib/aws/service/s3.rb +1 -1
  475. data/lib/datadog/tracing/contrib/aws/service/sns.rb +1 -1
  476. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +1 -1
  477. data/lib/datadog/tracing/contrib/aws/service/states.rb +1 -1
  478. data/lib/datadog/tracing/contrib/aws/services.rb +7 -7
  479. data/lib/datadog/tracing/contrib/component.rb +3 -3
  480. data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +1 -1
  481. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -1
  482. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -1
  483. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +1 -1
  484. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +1 -1
  485. data/lib/datadog/tracing/contrib/configurable.rb +22 -7
  486. data/lib/datadog/tracing/contrib/configuration/resolver.rb +14 -4
  487. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +4 -4
  488. data/lib/datadog/tracing/contrib/dalli/ext.rb +3 -2
  489. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +1 -5
  490. data/lib/datadog/tracing/contrib/dalli/integration.rb +5 -2
  491. data/lib/datadog/tracing/contrib/dalli/quantize.rb +1 -1
  492. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +1 -1
  493. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +2 -0
  494. data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +1 -0
  495. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +3 -2
  496. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +4 -4
  497. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +47 -53
  498. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +7 -7
  499. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +5 -1
  500. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +7 -8
  501. data/lib/datadog/tracing/contrib/ethon/ext.rb +4 -2
  502. data/lib/datadog/tracing/contrib/ethon/integration.rb +1 -1
  503. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +1 -8
  504. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +16 -5
  505. data/lib/datadog/tracing/contrib/excon/ext.rb +4 -2
  506. data/lib/datadog/tracing/contrib/excon/integration.rb +1 -1
  507. data/lib/datadog/tracing/contrib/excon/middleware.rb +5 -9
  508. data/lib/datadog/tracing/contrib/ext.rb +6 -4
  509. data/lib/datadog/tracing/contrib/extensions.rb +28 -11
  510. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +16 -9
  511. data/lib/datadog/tracing/contrib/faraday/ext.rb +4 -2
  512. data/lib/datadog/tracing/contrib/faraday/integration.rb +1 -1
  513. data/lib/datadog/tracing/contrib/faraday/middleware.rb +7 -9
  514. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +7 -3
  515. data/lib/datadog/tracing/contrib/grape/endpoint.rb +18 -15
  516. data/lib/datadog/tracing/contrib/grape/instrumentation.rb +13 -8
  517. data/lib/datadog/tracing/contrib/grape/integration.rb +1 -1
  518. data/lib/datadog/tracing/contrib/grape/patcher.rb +6 -1
  519. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +7 -0
  520. data/lib/datadog/tracing/contrib/graphql/ext.rb +1 -0
  521. data/lib/datadog/tracing/contrib/graphql/integration.rb +1 -1
  522. data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -2
  523. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +105 -63
  524. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +5 -2
  525. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +11 -15
  526. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +6 -10
  527. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +1 -1
  528. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +2 -0
  529. data/lib/datadog/tracing/contrib/grpc/ext.rb +1 -0
  530. data/lib/datadog/tracing/contrib/grpc/integration.rb +1 -1
  531. data/lib/datadog/tracing/contrib/grpc.rb +1 -0
  532. data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +1 -0
  533. data/lib/datadog/tracing/contrib/hanami/ext.rb +2 -2
  534. data/lib/datadog/tracing/contrib/hanami/integration.rb +1 -1
  535. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +2 -1
  536. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +10 -11
  537. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +16 -5
  538. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +4 -4
  539. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +2 -0
  540. data/lib/datadog/tracing/contrib/http/ext.rb +4 -2
  541. data/lib/datadog/tracing/contrib/http/instrumentation.rb +9 -13
  542. data/lib/datadog/tracing/contrib/http/integration.rb +0 -2
  543. data/lib/datadog/tracing/contrib/http.rb +1 -0
  544. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +16 -5
  545. data/lib/datadog/tracing/contrib/httpclient/ext.rb +4 -2
  546. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +10 -10
  547. data/lib/datadog/tracing/contrib/httpclient/integration.rb +1 -1
  548. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +16 -5
  549. data/lib/datadog/tracing/contrib/httprb/ext.rb +4 -2
  550. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +8 -12
  551. data/lib/datadog/tracing/contrib/httprb/integration.rb +1 -1
  552. data/lib/datadog/tracing/contrib/kafka/event.rb +2 -1
  553. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +1 -1
  554. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +1 -1
  555. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +1 -1
  556. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +1 -1
  557. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +1 -1
  558. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +1 -1
  559. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +1 -1
  560. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +1 -1
  561. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +1 -1
  562. data/lib/datadog/tracing/contrib/kafka/instrumentation/consumer.rb +66 -0
  563. data/lib/datadog/tracing/contrib/kafka/instrumentation/producer.rb +66 -0
  564. data/lib/datadog/tracing/contrib/kafka/integration.rb +1 -1
  565. data/lib/datadog/tracing/contrib/kafka/patcher.rb +14 -0
  566. data/lib/datadog/tracing/contrib/karafka/configuration/settings.rb +5 -1
  567. data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +2 -0
  568. data/lib/datadog/tracing/contrib/karafka/ext.rb +1 -0
  569. data/lib/datadog/tracing/contrib/karafka/framework.rb +30 -0
  570. data/lib/datadog/tracing/contrib/karafka/monitor.rb +24 -13
  571. data/lib/datadog/tracing/contrib/karafka/patcher.rb +39 -8
  572. data/lib/datadog/tracing/contrib/karafka.rb +1 -0
  573. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +1 -1
  574. data/lib/datadog/tracing/contrib/lograge/integration.rb +1 -1
  575. data/lib/datadog/tracing/contrib/lograge/patcher.rb +4 -2
  576. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +1 -1
  577. data/lib/datadog/tracing/contrib/mongodb/ext.rb +1 -1
  578. data/lib/datadog/tracing/contrib/mongodb/integration.rb +1 -1
  579. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +6 -6
  580. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +11 -14
  581. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +6 -0
  582. data/lib/datadog/tracing/contrib/mysql2/ext.rb +1 -1
  583. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +19 -12
  584. data/lib/datadog/tracing/contrib/mysql2/integration.rb +1 -1
  585. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +1 -1
  586. data/lib/datadog/tracing/contrib/opensearch/ext.rb +3 -2
  587. data/lib/datadog/tracing/contrib/opensearch/integration.rb +1 -2
  588. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +64 -70
  589. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +7 -7
  590. data/lib/datadog/tracing/contrib/patcher.rb +7 -9
  591. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +6 -0
  592. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +3 -6
  593. data/lib/datadog/tracing/contrib/pg/integration.rb +1 -1
  594. data/lib/datadog/tracing/contrib/presto/ext.rb +1 -1
  595. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +9 -11
  596. data/lib/datadog/tracing/contrib/presto/integration.rb +1 -1
  597. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +1 -1
  598. data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +13 -0
  599. data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +6 -2
  600. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +25 -1
  601. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +5 -2
  602. data/lib/datadog/tracing/contrib/que/ext.rb +1 -0
  603. data/lib/datadog/tracing/contrib/que/integration.rb +1 -1
  604. data/lib/datadog/tracing/contrib/que/tracer.rb +1 -0
  605. data/lib/datadog/tracing/contrib/racecar/event.rb +2 -6
  606. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +2 -2
  607. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +1 -1
  608. data/lib/datadog/tracing/contrib/racecar/events/message.rb +2 -2
  609. data/lib/datadog/tracing/contrib/racecar/integration.rb +1 -1
  610. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +11 -1
  611. data/lib/datadog/tracing/contrib/rack/ext.rb +28 -0
  612. data/lib/datadog/tracing/contrib/rack/header_collection.rb +1 -1
  613. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +55 -32
  614. data/lib/datadog/tracing/contrib/rack/integration.rb +1 -1
  615. data/lib/datadog/tracing/contrib/rack/middlewares.rb +83 -44
  616. data/lib/datadog/tracing/contrib/rack/patcher.rb +2 -2
  617. data/lib/datadog/tracing/contrib/rack/request_queue.rb +4 -3
  618. data/lib/datadog/tracing/contrib/rack/route_inference.rb +67 -0
  619. data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +126 -2
  620. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +6 -3
  621. data/lib/datadog/tracing/contrib/rails/ext.rb +3 -1
  622. data/lib/datadog/tracing/contrib/rails/integration.rb +2 -2
  623. data/lib/datadog/tracing/contrib/rails/log_injection.rb +2 -2
  624. data/lib/datadog/tracing/contrib/rails/middlewares.rb +3 -3
  625. data/lib/datadog/tracing/contrib/rails/patcher.rb +4 -2
  626. data/lib/datadog/tracing/contrib/rails/runner.rb +64 -40
  627. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +10 -8
  628. data/lib/datadog/tracing/contrib/rake/integration.rb +1 -1
  629. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +2 -2
  630. data/lib/datadog/tracing/contrib/redis/ext.rb +3 -2
  631. data/lib/datadog/tracing/contrib/redis/integration.rb +2 -2
  632. data/lib/datadog/tracing/contrib/redis/patcher.rb +4 -4
  633. data/lib/datadog/tracing/contrib/redis/quantize.rb +2 -2
  634. data/lib/datadog/tracing/contrib/redis/tags.rb +2 -7
  635. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +6 -4
  636. data/lib/datadog/tracing/contrib/registerable.rb +11 -0
  637. data/lib/datadog/tracing/contrib/registry.rb +1 -1
  638. data/lib/datadog/tracing/contrib/resque/integration.rb +1 -1
  639. data/lib/datadog/tracing/contrib/resque/resque_job.rb +2 -1
  640. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +5 -2
  641. data/lib/datadog/tracing/contrib/rest_client/ext.rb +4 -2
  642. data/lib/datadog/tracing/contrib/rest_client/integration.rb +1 -1
  643. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +8 -9
  644. data/lib/datadog/tracing/contrib/roda/ext.rb +1 -0
  645. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +8 -3
  646. data/lib/datadog/tracing/contrib/roda/integration.rb +1 -1
  647. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +1 -1
  648. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +1 -1
  649. data/lib/datadog/tracing/contrib/sequel/database.rb +6 -5
  650. data/lib/datadog/tracing/contrib/sequel/dataset.rb +2 -1
  651. data/lib/datadog/tracing/contrib/sequel/integration.rb +1 -1
  652. data/lib/datadog/tracing/contrib/sequel/utils.rb +1 -6
  653. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +1 -1
  654. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +1 -0
  655. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +1 -0
  656. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +5 -1
  657. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +2 -0
  658. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +2 -0
  659. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +1 -1
  660. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +2 -0
  661. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +1 -0
  662. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +1 -0
  663. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +2 -0
  664. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/stop.rb +1 -0
  665. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +8 -4
  666. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +1 -1
  667. data/lib/datadog/tracing/contrib/sidekiq.rb +1 -0
  668. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +5 -1
  669. data/lib/datadog/tracing/contrib/sinatra/ext.rb +1 -0
  670. data/lib/datadog/tracing/contrib/sinatra/integration.rb +1 -1
  671. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +1 -0
  672. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +40 -39
  673. data/lib/datadog/tracing/contrib/sneakers/integration.rb +15 -4
  674. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +1 -0
  675. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +1 -1
  676. data/lib/datadog/tracing/contrib/status_range_matcher.rb +13 -1
  677. data/lib/datadog/tracing/contrib/stripe/integration.rb +1 -1
  678. data/lib/datadog/tracing/contrib/stripe/request.rb +2 -2
  679. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +1 -0
  680. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +1 -1
  681. data/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +6 -0
  682. data/lib/datadog/tracing/contrib/trilogy/ext.rb +1 -1
  683. data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +4 -6
  684. data/lib/datadog/tracing/contrib/trilogy/integration.rb +1 -1
  685. data/lib/datadog/tracing/contrib/utils/quantization/{hash.rb → hash_formatter.rb} +15 -13
  686. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +6 -6
  687. data/lib/datadog/tracing/contrib/waterdrop/configuration/settings.rb +31 -0
  688. data/lib/datadog/tracing/contrib/waterdrop/distributed/propagation.rb +50 -0
  689. data/lib/datadog/tracing/contrib/waterdrop/ext.rb +18 -0
  690. data/lib/datadog/tracing/contrib/waterdrop/integration.rb +43 -0
  691. data/lib/datadog/tracing/contrib/waterdrop/middleware.rb +46 -0
  692. data/lib/datadog/tracing/contrib/waterdrop/patcher.rb +49 -0
  693. data/lib/datadog/tracing/contrib/waterdrop/producer.rb +50 -0
  694. data/lib/datadog/tracing/contrib/waterdrop.rb +42 -0
  695. data/lib/datadog/tracing/contrib.rb +9 -0
  696. data/lib/datadog/tracing/diagnostics/environment_logger.rb +12 -4
  697. data/lib/datadog/tracing/distributed/b3_single.rb +1 -1
  698. data/lib/datadog/tracing/distributed/baggage.rb +133 -12
  699. data/lib/datadog/tracing/distributed/datadog.rb +17 -16
  700. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +11 -26
  701. data/lib/datadog/tracing/distributed/helpers.rb +1 -1
  702. data/lib/datadog/tracing/distributed/none.rb +4 -2
  703. data/lib/datadog/tracing/distributed/propagation.rb +39 -4
  704. data/lib/datadog/tracing/distributed/propagation_policy.rb +1 -1
  705. data/lib/datadog/tracing/distributed/trace_context.rb +107 -78
  706. data/lib/datadog/tracing/event.rb +5 -7
  707. data/lib/datadog/tracing/ext.rb +9 -0
  708. data/lib/datadog/tracing/flush.rb +1 -1
  709. data/lib/datadog/tracing/metadata/analytics.rb +1 -1
  710. data/lib/datadog/tracing/metadata/ext.rb +23 -1
  711. data/lib/datadog/tracing/metadata/tagging.rb +6 -6
  712. data/lib/datadog/tracing/pipeline/span_filter.rb +3 -1
  713. data/lib/datadog/tracing/pipeline/span_processor.rb +3 -1
  714. data/lib/datadog/tracing/pipeline.rb +2 -2
  715. data/lib/datadog/tracing/remote.rb +36 -13
  716. data/lib/datadog/tracing/sampling/ext.rb +2 -2
  717. data/lib/datadog/tracing/sampling/priority_sampler.rb +16 -1
  718. data/lib/datadog/tracing/sampling/rate_sampler.rb +8 -19
  719. data/lib/datadog/tracing/sampling/rule.rb +1 -1
  720. data/lib/datadog/tracing/sampling/rule_sampler.rb +77 -48
  721. data/lib/datadog/tracing/sampling/span/rule_parser.rb +3 -3
  722. data/lib/datadog/tracing/sampling/span/sampler.rb +0 -7
  723. data/lib/datadog/tracing/span.rb +2 -2
  724. data/lib/datadog/tracing/span_event.rb +12 -12
  725. data/lib/datadog/tracing/span_link.rb +12 -12
  726. data/lib/datadog/tracing/span_operation.rb +63 -19
  727. data/lib/datadog/tracing/sync_writer.rb +1 -2
  728. data/lib/datadog/tracing/trace_digest.rb +28 -23
  729. data/lib/datadog/tracing/trace_operation.rb +209 -98
  730. data/lib/datadog/tracing/trace_segment.rb +2 -2
  731. data/lib/datadog/tracing/tracer.rb +113 -52
  732. data/lib/datadog/tracing/transport/http/client.rb +12 -26
  733. data/lib/datadog/tracing/transport/http/traces.rb +4 -52
  734. data/lib/datadog/tracing/transport/http.rb +15 -9
  735. data/lib/datadog/tracing/transport/io/client.rb +11 -14
  736. data/lib/datadog/tracing/transport/io/traces.rb +28 -34
  737. data/lib/datadog/tracing/transport/statistics.rb +1 -1
  738. data/lib/datadog/tracing/transport/trace_formatter.rb +22 -0
  739. data/lib/datadog/tracing/transport/traces.rb +14 -82
  740. data/lib/datadog/tracing/workers.rb +4 -3
  741. data/lib/datadog/tracing/writer.rb +1 -1
  742. data/lib/datadog/tracing.rb +2 -2
  743. data/lib/datadog/version.rb +2 -2
  744. data/lib/datadog.rb +14 -0
  745. metadata +201 -40
  746. data/ext/datadog_profiling_native_extension/clock_id_noop.c +0 -21
  747. data/ext/libdatadog_api/macos_development.md +0 -26
  748. data/lib/datadog/appsec/assets/waf_rules/processors.json +0 -321
  749. data/lib/datadog/appsec/assets/waf_rules/scanners.json +0 -1023
  750. data/lib/datadog/appsec/configuration/settings.rb +0 -342
  751. data/lib/datadog/appsec/contrib/rails/ext.rb +0 -13
  752. data/lib/datadog/appsec/processor/rule_merger.rb +0 -171
  753. data/lib/datadog/appsec/processor.rb +0 -107
  754. data/lib/datadog/core/remote/transport/http/api.rb +0 -53
  755. data/lib/datadog/core/remote/transport/http/client.rb +0 -49
  756. data/lib/datadog/core/telemetry/transport/http/api.rb +0 -43
  757. data/lib/datadog/core/telemetry/transport/http/client.rb +0 -49
  758. data/lib/datadog/core/transport/http/api/spec.rb +0 -36
  759. data/lib/datadog/di/configuration/settings.rb +0 -212
  760. data/lib/datadog/di/transport/http/api.rb +0 -42
  761. data/lib/datadog/di/transport/http/client.rb +0 -47
  762. data/lib/datadog/error_tracking/configuration/settings.rb +0 -63
  763. data/lib/datadog/opentelemetry/api/baggage.rbs +0 -26
  764. data/lib/datadog/tracing/transport/http/api.rb +0 -44
  765. data/lib/datadog/tracing/workers/trace_writer.rb +0 -199
data/CHANGELOG.md CHANGED
@@ -2,6 +2,450 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [2.37.0] - 2026-07-06
6
+
7
+ ### Added
8
+
9
+ * AppSec: Add sign-up event tracking to `Datadog::Kit::AppSec::Events::V2` ([#5973][])
10
+ * AppSec: Integrations: Add normalized HTTP route for API Security Testing ([#5834][])
11
+ * Dynamic Instrumentation: DI can now be enabled from the Datadog UI without setting `DD_DYNAMIC_INSTRUMENTATION_ENABLED` or restarting the application. Setting `DD_DYNAMIC_INSTRUMENTATION_ENABLED=false` explicitly still disables it and blocks UI-driven enablement ([#5525][])
12
+
13
+ ### Changed
14
+
15
+ * Profiling: Reduce profiler overhead by sampling profiler-internal threads only once per minute ([#5955][])
16
+ * Dynamic Instrumentation: Reject method probes that target `Kernel#lambda`, which cannot be safely instrumented ([#5954][])
17
+ * Dynamic Instrumentation: Reject method probes that target classes or modules in the Datadog namespace ([#5907][])
18
+ * Dynamic Instrumentation: Enable Symbol Database by default when Dynamic Instrumentation is enabled ([#5828][])
19
+
20
+ ### Fixed
21
+
22
+ * AppSec: AI Guard: Fix endpoint configuration via `DD_SITE` environment variable ([#5940][])
23
+ * AppSec: Fix API Security schema extraction timeout and telemetry ([#5975][])
24
+ * AppSec: Fix remote configuration errors when the ruleset name changes ([#5970][])
25
+ * AppSec: Integrations: Add configurable size limit for downstream HTTP request and response body analysis ([#5990][])
26
+ * AppSec: Integrations: Fix WAF analysis for requests with cached or parsed bodies in Rack and Sinatra ([#5991][])
27
+ * AppSec: Integrations: Fix an exception for unauthorized requests when using Devise with Rails. ([#5987][])
28
+ * Tracing: Fix a `SIGSEGV` crash that could happen with experimental heap profiling enabled on Ruby 4.0 ([#5938][]) ([@navidemad][])
29
+ * Dynamic Instrumentation: Normalize Rack CGI header prefix (`HTTP_<HEADER>`) in redactor so snapshot captures redact sensitive headers like their bare names ([#5911][])
30
+ * Dynamic Instrumentation: Symbol Database and DI background threads no longer stop when application code raises a non-StandardError during introspection ([#5945][])
31
+
32
+ ## [2.36.0] - 2026-06-24
33
+
34
+ ### Added
35
+
36
+ * Tracing: Add `DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT` to control trace extraction behavior with `continue`, `restart`, and `ignore` modes ([#5844][])
37
+ * AppSec: Add `DD_APPSEC_BODY_PARSING_SIZE_LIMIT` to control processing of request and response body size; set to 0 to disable ([#5877][])
38
+ * AppSec: Detect attacks from inline fragments in GraphQL queries ([#5916][])
39
+ * Dynamic Instrumentation: Show lazily loaded classes in UI ([#5697][])
40
+
41
+ ### Changed
42
+
43
+ * Dynamic Instrumentation: Reduce peak memory usage during Symbol Database extraction ([#5883][])
44
+ * Profiling: Reduce profiler overhead by up to 50% by skipping redundant samples for threads without the GVL ([#5777][])
45
+ * Profiling: Remove overhead when cleaning up dead threads ([#5816][])
46
+
47
+ ### Fixed
48
+
49
+ * Tracing: Workaround Ruby VM bug causing segmentation faults inside CachingResolver ([#5719][], [#5890][])
50
+ * Dynamic Instrumentation: Prevent uploading stale class definitions for apps using `remove_const`-then-redefine patterns ([#5872][])
51
+ * Profiling: Fix GC profiling being incorrectly disabled on Ruby 3.2.10 and 3.2.11 ([#5894][])
52
+ * Profiling: Fix over-counting of the first allocation sample at profiler startup ([#5881][])
53
+ * Profiling: Fix rare profiler crash during shutdown in heap profiling cleanup ([#5920][])
54
+ * Core: Fix exception message formatting from native extensions ([#5857][])
55
+
56
+ ## [2.35.0] - 2026-06-03
57
+
58
+ ### Added
59
+
60
+ * Tracing: Add `dynamic_service` SQL comment propagation mode for Database Monitoring ([#5812][])
61
+ * Tracing: Prevent Datadog-generated traffic from interfering with application metrics ([#5811][])
62
+
63
+ ### Changed
64
+
65
+ * AppSec: Improve route extraction performance for Rails applications ([#5836][])
66
+
67
+ ### Fixed
68
+
69
+ * Tracing: Restore `Datadog::Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE` constant removed in v2.34.0 ([#5830][])
70
+
71
+ ### Removed
72
+
73
+ * Profiling: Deprecate the `profiling.advanced.timeline_enabled` setting for removal; it no longer does anything. Please remove it from `Datadog.configure` and do not set `DD_PROFILING_TIMELINE_ENABLED` ([#5750][])
74
+
75
+ ## [2.34.0] - 2026-05-27
76
+
77
+ ### Added
78
+
79
+ * Dynamic Instrumentation: Enable opt-in Symbol Database upload so Ruby services populate Live Debugger UI autocomplete when creating probes ([#5717][])
80
+ * Open Telemetry: Add OpenTelemetry logs support with OTLP export. Enable using `DD_LOGS_OTEL_ENABLED=true`; supports standard `OTEL_EXPORTER_OTLP_*` settings ([#5446][])
81
+
82
+ ### Fixed
83
+
84
+ * Core: Fix Remote configuration `TransportError` messages removing wrapper response object memory addresses ([#5762][])
85
+ * Core: Fix `TypeError` from `Process.spawn` when passing an environment Hash ([#5773][], [#5634][])
86
+ * AppSec: Prevent host application crashes when AppSec fails to initialize ([#5768][])
87
+ * Dynamic Instrumentation: Fix off-by-one in `max_capture_depth` so snapshots respect the configured nesting limit exactly ([#5753][])
88
+ * Dynamic Instrumentation: Improve line probes to match `sourceFile` case-insensitively and support Windows-style backslashes for correct installation ([#5754][])
89
+
90
+ ## [2.33.0] - 2026-05-13
91
+
92
+ ### Added
93
+
94
+ * AI Guard: Ensure client IP is always collected when AI Guard is enabled ([#5677][])
95
+ * AppSec: Add support for AWS Lambda ([#5663][])
96
+ * Tracing: Add inferred proxy spans for services behind AWS Gateway ([#5681][])
97
+ * Open Telemetry: Add support for `DD_HOSTNAME` to set trace hostname and OTel `host.name` when `DD_TRACE_REPORT_HOSTNAME` is enabled ([#5705][])
98
+
99
+ ### Changed
100
+
101
+ * Core: Collect all threads in crash reports to provide full thread context during crashes ([#5724][])
102
+ * Core: Update `libdatadog` dependency to version 33.0.0 ([#5723][])
103
+
104
+ ## [2.32.0] - 2026-05-08
105
+
106
+ ### Added
107
+
108
+ * Open Feature: Add flag evaluation metrics (`feature_flag.evaluations`) via OpenTelemetry for OpenFeature provider. ([#5599][])
109
+ * Profiling: Add metric for total time spent waiting for the GVL. ([#5569][])
110
+ * Dynamic Instrumentation: Live Debugger line probes can now target third-party and Ruby standard library code loaded before datadog gem is loaded. ([#5501][])
111
+
112
+ ### Changed
113
+
114
+ * Profiling: Print failure info when native extension setup fails ([#5657][])
115
+ * Tracing: Add parsing limits to `tracestate` and `traceparent` propagation headers and remove whitespace around list members. ([#5674][])
116
+ * Tracing: Limit extracted [baggage](https://www.w3.org/TR/2024/CR-baggage-20240530/) header parsing to 64 items and 8192 bytes. ([#5672][])
117
+
118
+ ### Fixed
119
+
120
+ * Tracing: Enforce `x-datadog-tags` propagation header size limits by byte size. ([#5687][])
121
+ * Tracing: Return empty baggage on invalid UTF-8 baggage extraction ([#5689][])
122
+
123
+ ## [2.31.0] - 2026-04-20
124
+
125
+ ### Added
126
+
127
+ * Core: Add `app-extended-heartbeat` telemetry event to resend full configuration every 24h for long-running services. ([#5531][])
128
+ * AI Guard: Add multi-model messages support to AI Guard, enabling text and image URL content parts in evaluation SDK ([#5564][])
129
+ * AI Guard: Add evaluation of images in user prompt and tool output for RubyLLM contrib. ([#5573][])
130
+ * AI Guard: Expose Sensitive Data Scanner findings in AI Guard results via `AIGuard::Evaluation::Result#sds_findings`. ([#5579][])
131
+ * AI Guard: Expose tag probabilities in AI Guard results via `AIGuard::Evaluation::Result#tag_probabilities`. ([#5580][])
132
+ * Tracing: Integrations: Add `rails.application` to the process tags. ([#5468][])
133
+ * Tracing: Report and display all configurations used by a service in the 'SDK & Agent Configurations' tab of a Ruby service page in Datadog UI ([#5483][])
134
+
135
+ ### Changed
136
+
137
+ * Core: Upgrade `libdatadog` dependency to version 30.0.0 ([#5574][])
138
+ * AI Guard: **Breaking change:** AIGuard.evaluate now defaults to `allow_raise: true`. Pass `allow_raise: false` to keep the previous non-raising behavior. ([#5587][])
139
+ * Dynamic Instrumentation: Report exception messages in method probe snapshots. Require the libdatadog_api C extension for Dynamic Instrumentation. ([#5111][])
140
+
141
+ ### Fixed
142
+
143
+ * Profiling: Detect when `libdatadog` version does not match expected version. ([#5484][])
144
+ * Profiling: Log profiler initialization errors as warnings instead of raising them. ([#5509][])
145
+ * Tracing: Fix `NoMethodError` in `extract_trace_id!` caused by `extract_tags` returning `true`. ([#5499][])
146
+
147
+ ### Removed
148
+
149
+ * Core: Removed JRuby from the CI test matrix ([#5594][])
150
+
151
+ ## [2.30.0] - 2026-03-19
152
+
153
+ ### Added
154
+
155
+ * Core: Enable `libdatadog`-based features and tests on macOS ([#5351][])
156
+ * Tracing: Add `_dd.p.ksr` propagated tag to transmit Knuth sampling rate for backend resampling ([#5436][])
157
+ * Tracing: Integrations: Add `DD_TRACE_<INTEGRATION>_DISTRIBUTED_TRACING` environment variables to control distributed tracing per integration ([#5396][])
158
+ * Profiling: Add profiler setting `experimental_use_system_dns` to use system DNS resolver (defaults to true) ([#5425][], [#5449][])
159
+ * Profiling: Allow lowering CPU profiling sampling interval with `experimental_cpu_sampling_interval_ms` setting ([#5424][])
160
+
161
+ ### Changed
162
+
163
+ * Core: Enable process tags by default by setting `DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED`, expanding tag collection for Tracing, Database Monitoring, Data Streams Monitoring, Profiling, Runtime Metrics, Process Discovery, Remote Configuration, Telemetry, Dynamic Instrumentation, and CrashTracking ([#5432][])
164
+ * Core: Upgrade `libdatadog` dependency to version 29.0.0 ([#5274][], [#5461][])
165
+ * Core: Remove dependency on `pkg-config` system tool for native extension builds ([#5469][])
166
+ * Profiling: Improve profiling error message when another profiler is present ([#5375][])
167
+
168
+ ### Fixed
169
+
170
+ * Tracing: Integrations: Fix `endpoint_render.grape` ActiveSupport notification instrumentation for `grape` 3.x ([#5414][])
171
+ * Tracing: Integrations: Fix compatibility with `dalli` version 5.x and later ([#5435][])
172
+ * Dynamic Instrumentation: Fix JSON serialization failures when snapshots contain binary data and invalid UTF-8 strings ([#5434][])
173
+ * Dynamic Instrumentation: Show ERROR probe status when custom serializers produce non-JSON-encodable data instead of silent failures ([#5448][])
174
+ * Data Streams: Fix Data Streams Monitoring to correctly report the configured environment instead of showing `env:none` ([#5427][])
175
+
176
+ ## [2.29.0] - 2026-02-20
177
+
178
+
179
+ ### Added
180
+
181
+ * AppSec: Add analysis for downstream request with redirects ([#5347][])
182
+ * AppSec: Add downstream request body analysis. ([#5320][])
183
+ * SSI: Add support for Bundler vendored mode (`BUNDLE_PATH`) ([#5368][])
184
+ * SSI: Default to local dependency resolution ([#5368][])
185
+ * Dynamic Instrumentation: Added circuit breaker to automatically disable probes consuming excessive CPU time ([#5335][])
186
+ * Crashtracking: Add reporting of unhandled exceptions ([#5321][])
187
+ * Tracing: Add support for the `kicks` gem ([#5305][])
188
+ * Profiling: Add heap profiling for ruby 4.x ([#5201][])
189
+ * Tracing: Add simple method tracing API ([#5294][])
190
+ * Tracing: Add `trace_singleton_class_method` for tracing singleton class methods. ([#5334][])
191
+
192
+ ### Changed
193
+
194
+ * Dynamic Instrumentation: Improve error reporting when instrumentation fails or is removed due to circuit breaker ([#5371][])
195
+ * SSI: Reduce SSI package size ([#5352][])
196
+ * Core: Change default logger output from stdout to stderr ([#5342][])
197
+ * AppSec: Make AppSec blocking page more friendly for vulnerability scanners ([#5341][])
198
+ * Core: Add process tags and container id to process discovery payloads when the experimental setting `DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED=true` is enabled. ([#5336][])
199
+
200
+ ### Fixed
201
+
202
+ * Dynamic Instrumentation: Fix Live Debugger UI for forking web servers with more than one worker process ([#5304][])
203
+
204
+ ## [2.28.0] - 2026-02-04
205
+
206
+ ### Added
207
+
208
+ * AI Guard: Add instrumentation for `ruby_llm` gem. ([#5273][])
209
+
210
+ ### Changed
211
+
212
+ * Core: Bump minimum version of datadog-ruby_core_source to 3.5.2 ([#5278][])
213
+
214
+ ### Fixed
215
+
216
+ * AppSec: Fix exception in Rails contrib `:after_routes_loaded` hook when routes are reloaded. ([#5283][])
217
+
218
+ ## [2.27.0] - 2026-01-21
219
+
220
+ ### Added
221
+
222
+ * AppSec: Add analysis of the downstream requests ([#5206][])
223
+ * Telemetry: Add static error reporting for native extensions ([#5076][])
224
+
225
+ ### Changed
226
+
227
+ * SSI: Update injector to v1.2.1 ([#5254][])
228
+ * SSI: Prepare for expanded platform support ([#5254][])
229
+ * SSI: Improve remote resolution with expanded platform support via fallback to local gems ([#5254][])
230
+ * SSI: Introduce experimental fully local resolution support ([#5254][])
231
+ * Profiling: Telemetry-safe error reporting for native extensions ([#5076][])
232
+
233
+
234
+ ### Fixed
235
+
236
+ * Profiler: Fix interrupting new processes with the message `Profiling timer expired` during `exec` ([#5246][])
237
+ * Profiler: Fix rare race in profiler causing flaky spec on Ruby 2.7 ([#5247][])
238
+ * Appsec: Fix reporting of multi-method routes for Endpoint Collection ([#5240][])
239
+ * AppSec: Fix reporting of Rails routes that accept multiple request methods. ([#5240][])
240
+
241
+ ## [2.26.0] - 2026-01-16
242
+
243
+ ### Added
244
+
245
+ * Core: Add process tags to runtime metrics when `DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED` is enabled. ([#5210][])
246
+ * SSI: Add experimental dependency injection validation.
247
+
248
+ ### Changed
249
+
250
+ * Profiling: Improve profiler error reporting. ([#5237][])
251
+ * SSI: Improve injection debug error reporting. ([#5238][])
252
+
253
+ ## [2.25.0] - 2026-01-13
254
+
255
+ ### Added
256
+
257
+ AI Guard: Add SDK for evaluating the safety of user messages and assistant commands for LLM session ([#5144][])
258
+
259
+ ### Changed
260
+
261
+ Core: Bump minimum version of `datadog-ruby_core_source` dependency ([#5215][])
262
+
263
+ ### Fixed
264
+
265
+ AppSec: Fix processing of numeric data for WAF and RASP checks ([#5222][])
266
+
267
+ ## [2.24.0] - 2026-01-08
268
+
269
+ ### Added
270
+
271
+ * Core: Add support for installing the gem on Ruby 4.0.x stable ([#5157][])
272
+ * Tracing: Add origin detection using extra headers and the `DD_EXTERNAL_ENV` variable. ([#5028][])
273
+ * Dynamic Instrumentation: Add one-click enablement support ([#5150][])
274
+ * SSI: Add support for Bundler deployment mode ([#5053][])
275
+ * SSI: Report UI-oriented injection results ([#5053][])
276
+ * SSI: Guard against Bundler global force_ruby_platform ([#5053][])
277
+ * SSI: Guard against Bundler 4.0 and Bundler 2.7 in 4.0 mode ([#5053][])
278
+ * SSI: Guard against Ruby 3.5+ ([#5053][])
279
+
280
+ ### Changed
281
+
282
+ * Profiling: Remove profiler warning related to the Ractor issue ([#5194][])
283
+ * Profiling: Disable heap profiling on Ruby 4 due to incompatibility ([#5148][])
284
+ * Dynamic Instrumentation: Stop using customer-provided time provider for method duration calculation ([#5153][])
285
+ * Live Debugger / Dynamic Instrumentation: Improve probe instrumentation ([#5165][])
286
+ * Live Debugger / Dynamic Instrumentation: Improve instrumentation reliability for probes ([#5169][])
287
+
288
+ ### Fixed
289
+
290
+ * Core: Improve reliability of worker shutdown ([#5176][])
291
+ * Core: Fix RDoc error when installing the `datadog` gem ([#5145][])
292
+ * Tracing: Ensure `Tracing.continue_from!` keeps the active trace for the full block duration. ([#4941][])
293
+ * Profiling: Fix and refine profiler thread state categorization for Ruby 4 ([#5197][])
294
+ * Profiling: Fix profiler error triggering `Bundler::PermissionError` ([#5146][])
295
+ * Live Debugger / Dynamic Instrumentation: Fix Live Debugger and Dynamic Instrumentation UI for forking web servers ([#5159][])
296
+ * Live Debugger / Dynamic Instrumentation: Fix method probe leak when a referenced class loads after the probe reaches the application ([#5168][])
297
+
298
+ ## [2.23.0] - 2025-12-11
299
+
300
+ ### Added
301
+
302
+ * Tracing: Add process tags to trace payloads with `DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED` environment variable ([#5033][])
303
+ * Tracing: Integrations: Add Data Streams Monitoring (DSM) instrumentation to Waterdrop producers ([#5031][])
304
+ * Tracing: Open Telemetry: Add OpenTelemetry metrics support with OTLP exporters using `DD_METRICS_OTEL_ENABLED` and standard OpenTelemetry environment variables ([#5021][])
305
+ * Tracing: Add `http.endpoint` tag which contains the route whenever routing info is available, and falls back to route inferred from the request path ([#4995][])
306
+ * Tracing: Add configuration of HTTP client and server error ranges via `DD_TRACE_HTTP_CLIENT_ERROR_STATUSES` and `DD_TRACE_HTTP_SERVER_ERROR_STATUSES` ([#4991][])
307
+ * Tracing: Integrations: Add Data Streams Monitoring for `ruby-kafka` and `karafka` consumers with optional manual instrumentation ([#4901][])
308
+ * Dynamic Instrumentation: Add support for Hash length operations in expression language ([#5019][])
309
+ * AppSec: Add unique security response identifier in the response body for blocked requests ([#5049][])
310
+ * AppSec: Add support for processor overrides and custom data scanners ([#5044][])
311
+ * Feature Flags: Add new component to support Open Feature SDK ([#5054][], [#5024][])
312
+
313
+ ### Changed
314
+
315
+ * Core: Update minimum `datadog-ruby_core_source` dependency to 3.4.2 ([#5122][])
316
+ * Core: Update `libdatadog` dependency to version 24.0.1 ([#5058][], [#5045][], [#5020][])
317
+ * Tracing: Treat IPs from `100.65.0.0/10` range as private. ([#4975][])
318
+
319
+ ### Fixed
320
+
321
+ * Live Debugger / Dynamic Instrumentation: Fix issues delivering large quantities of snapshots ([#5086][])
322
+ * Tracing: Integrations: Fix `NoMethodError` in GraphQL integration when error has no `locations`. ([#5025][])
323
+ * Tracing: Integrations: Fix `http.route` tag for Rack applications mounted inside Rails. ([#4988][])
324
+ * Profiling: Fix profiler support for Ruby 4.0.0-preview2 ([#5091][])
325
+ * Profiling: Fix profiler sleep and wait states not being categorized in timeline ([#5000][])
326
+ * Profiling: Fix profiler not identifying executables with gems they belong to ([#4999][])
327
+ * Stable Config: Fix potential segfault during configuration file parsing ([#5073][])
328
+ * AppSec: Fix route extraction error for Rails 8.1.1+. ([#5042][])
329
+
330
+ ## [2.22.0] - 2025-10-15
331
+
332
+ ### Added
333
+
334
+ * Tracing: Add GraphQL error tracking with OpenTelemetry semantics ([#4864][])
335
+ * AppSec: API Security: Add endpoint collection for Rails ([#4919][])
336
+ * AppSec: Updated WAF rules to add support for JWT analysis ([#4907][])
337
+ * AppSec: Enable Remote Configuration capabilities for fingerprinting, trace tagging and user auto-instrumentation ([#4965][])
338
+ * Dynamic Instrumentation: Support `[@duration][]`, `[@return][]` and `[@exception][]` in message templates ([#4914][])
339
+ * Dynamic Instrumentation: Report evaluation errors to the UI ([#4913][])
340
+ * Dynamic Instrumentation: Support conditions for method probes ([#4909][])
341
+ * Dynamic Instrumentation: Capture exceptions raised by instrumented methods in method probes ([#4906][])
342
+ * Dynamic Instrumentation: Add support for probe conditions for line probes ([#4861][])
343
+
344
+ ### Changed
345
+
346
+ * Core: Upgrade `libdatadog` dependency to 22.0.1 ([#4902][])
347
+ * Tracing: Add `Forwarded` header to the list of headers used for remote IP detection. ([#4969][])
348
+ * AppSec: Update `libbddwaf` to version 1.25.1.0.1 ([#4894][])
349
+ * AppSec: WAF rules can control whether traces are kept or sampled ([#4918][])
350
+ * Dynamic Instrumentation: Evaluate message templates when logging instrumented code ([#4908][])
351
+
352
+ ### Fixed
353
+
354
+ * Core: Improve locking code for remote configuration worker ([#4957][])
355
+ * Dynamic Instrumentation: Emit a single log event for line probes on exception-raising lines ([#4900][])
356
+
357
+ ## [2.21.0] - 2025-09-17
358
+
359
+ ### Added
360
+
361
+ * Tracing: Generate metrics for GraphQL operation execution ([#4862][])
362
+
363
+ ### Changed
364
+
365
+ * Tracing: The `graphql.execute` span resource now includes the operation type ([#4862][])
366
+
367
+ ### Fixed
368
+
369
+ * Tracing: Fix Service Discovery capabilities on forked processes ([#4877][])
370
+ * Tracing: Fix an unclosed trace issue when the Rack application has proxy spans and raises an exception. This caused traces that encompassed multiple requests ([#4779][])
371
+ * AppSec: Fix API Security route extraction for Rails ([#4887][])
372
+ * AppSec: Fix a bug with non-string Hash keys conversion ([#4893][])
373
+ * Dynamic Instrumentation: Fix incorrect template expression evaluation in some cases ([#4884][])
374
+
375
+ ## [2.20.0] - 2025-09-04
376
+
377
+ ### Added
378
+
379
+ * Tracing: Add capability to add [W3C Baggage](https://www.w3.org/TR/baggage/#example) headers to the local root span as span tags ([#4716][])
380
+ * AppSec: Add WAF analysis of the responses with JSON body ([#4848][])
381
+ * Dynamic Instrumentation: Live Debugger: Add support for specifying probes in a file via `DD_DYNAMIC_INSTRUMENTATION_PROBE_FILE` environment variable ([#4838][])
382
+
383
+ ### Changed
384
+
385
+ * Core: Expand generated warning and error messages during `libdatadog` build ([#4831][])
386
+ * AppSec: Rework handling of Remote Config updates for multi-threaded web servers ([#4833][])
387
+ * AppSec: Update security tags for Business Logic Events and User Events SDK v1 and v2 ([#4851][])
388
+
389
+ ### Fixed
390
+
391
+ * Tracing: Fix constants resolution for Rails runner ([#4863][])
392
+
393
+ ## [2.19.0] - 2025-07-24
394
+
395
+ ### Added
396
+
397
+ * AppSec: Added Business Logic Events SDK v2. ([#4802][])
398
+ * Tracing: Add `record_exception` API to capture and attach error information to spans via span events. ([#4771][])
399
+ * Tracing: Add `:cache_store` option to ActiveSupport integration to allow tracing only specified cache backends. ([#4693][])
400
+ * SSI: Rework SSI from the ground up. ([#4366][])
401
+
402
+ ### Changed
403
+
404
+ * Profiling: Switch profiler stack truncation strategy and improve sampling performance ([#4819][])
405
+ * Profiling: Report GC tuning environment variables with profiles ([#4813][])
406
+ * Profiling: Tag profiles with sequence number ([#4794][])
407
+ * Profiling: Enable sample from inside signal handler by default on modern Rubies ([#4786][], [#4785][])
408
+
409
+ ### Fixed
410
+
411
+ * Core: Fix emitting duplicate warnings on agent configuration mismatch ([#4814][])
412
+ * Appsec: Fix an error in AppSec route extractor for not-found routes in Rails 8 ([#4793][])
413
+ * Profiling: Add workaround for Ruby VM bug ([#4787][])
414
+ * Profiling: Fix checking for dladdr in profiling ([#4783][])
415
+ * Profiling: Fix potential profiler compilation issue. ([#4783][])
416
+ * Tracing: The mysql integration now only sets the `db.name` tag if there is a valid value ([#4776][])
417
+ * Tracing: The Rails Runner instrumentation should now create Rails Runner spans. ([#4681][])
418
+ * Tracing: Fix sampling rules and sample rate reporting in environment logger. ([#4772][])
419
+
420
+ ### Removed
421
+
422
+ ## [2.18.0] - 2025-07-03
423
+
424
+ ### Added
425
+
426
+ * AppSec: Add API Security with new sampling algorithm to the Rack, Rails, Sinatra and Grape frameworks ([#4699][])
427
+ * Core: Add support for tracer configuration through Fleet Automation ([#4651][])
428
+ * Tracing: Add Rails view render times and database query times to the spans, when available ([#4697][])
429
+ * Core: Add Service Discovery capability, enabling the tracer to reliably determine which process are instrumented
430
+
431
+ ### Changed
432
+
433
+ * AppSec: Enable API Security feature by default ([#4756][])
434
+ * AppSec: Improve overall threat detection ([#4757][])
435
+ * AppSec: Deprecate `config.appsec.ip_passlist`, `config.appsec.ip_denylist`, and `config.appsec.user_id_denylist` ([#4757][])
436
+ * Profiling: Graduate Heap Profiling from alpha to preview ([#4401][], [#4460][])
437
+ * Dynamic Instrumentation: Add instance variable capture to method and line probes ([#4668][])
438
+ * Profiling: Add capturing of native filenames in backtraces ([#4745][])
439
+ * Profiling: Clean up profiler logging ([#4728][])
440
+ Tracing: Add support for `DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED` to tag runtime metrics with the current runtime ID, allowing correlation across processes ([#4718][])
441
+ * Tracing: Improve performance of `http.route` tag computation for Rails ([#4688][])
442
+
443
+ ### Fixed
444
+
445
+ * AppSec: Fix authenticated users tracking in anonymization mode for Devise ([#4731][])
446
+ * Dynamic Instrumentation: Fix source code display in dynamic instrumentation/live debugger ([#4743][])
447
+ * Profiling: Fix profiler stopping due to bug in heap profiling serialization ([#4721][])
448
+
5
449
  ## [2.17.0] - 2025-06-02
6
450
 
7
451
  ### Added
@@ -3241,7 +3685,27 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1
3241
3685
  Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
3242
3686
 
3243
3687
 
3244
- [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v2.17.0...master
3688
+ [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v2.37.0...master
3689
+ [2.37.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.36.0...v2.37.0
3690
+ [2.36.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.35.0...v2.36.0
3691
+ [2.35.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.34.0...v2.35.0
3692
+ [2.34.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.33.0...v2.34.0
3693
+ [2.33.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.32.0...v2.33.0
3694
+ [2.32.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.31.0...v2.32.0
3695
+ [2.31.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.30.0...v2.31.0
3696
+ [2.30.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.29.0...v2.30.0
3697
+ [2.29.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.28.0...v2.29.0
3698
+ [2.28.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.27.0...v2.28.0
3699
+ [2.27.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.26.0...v2.27.0
3700
+ [2.26.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.25.0...v2.26.0
3701
+ [2.25.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.24.0...v2.25.0
3702
+ [2.24.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.23.0...v2.24.0
3703
+ [2.23.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.22.0...v2.23.0
3704
+ [2.22.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.21.0...v2.22.0
3705
+ [2.21.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.20.0...v2.21.0
3706
+ [2.20.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.19.0...v2.20.0
3707
+ [2.19.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.18.0...v2.19.0
3708
+ [2.18.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.17.0...v2.18.0
3245
3709
  [2.17.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.16.0...v2.17.0
3246
3710
  [2.16.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.15.0...v2.16.0
3247
3711
  [2.15.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.14.0...v2.15.0
@@ -4742,9 +5206,11 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
4742
5206
  [#4353]: https://github.com/DataDog/dd-trace-rb/issues/4353
4743
5207
  [#4360]: https://github.com/DataDog/dd-trace-rb/issues/4360
4744
5208
  [#4363]: https://github.com/DataDog/dd-trace-rb/issues/4363
5209
+ [#4366]: https://github.com/DataDog/dd-trace-rb/issues/4366
4745
5210
  [#4391]: https://github.com/DataDog/dd-trace-rb/issues/4391
4746
5211
  [#4398]: https://github.com/DataDog/dd-trace-rb/issues/4398
4747
5212
  [#4399]: https://github.com/DataDog/dd-trace-rb/issues/4399
5213
+ [#4401]: https://github.com/DataDog/dd-trace-rb/issues/4401
4748
5214
  [#4403]: https://github.com/DataDog/dd-trace-rb/issues/4403
4749
5215
  [#4406]: https://github.com/DataDog/dd-trace-rb/issues/4406
4750
5216
  [#4411]: https://github.com/DataDog/dd-trace-rb/issues/4411
@@ -4755,6 +5221,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
4755
5221
  [#4433]: https://github.com/DataDog/dd-trace-rb/issues/4433
4756
5222
  [#4437]: https://github.com/DataDog/dd-trace-rb/issues/4437
4757
5223
  [#4455]: https://github.com/DataDog/dd-trace-rb/issues/4455
5224
+ [#4460]: https://github.com/DataDog/dd-trace-rb/issues/4460
4758
5225
  [#4473]: https://github.com/DataDog/dd-trace-rb/issues/4473
4759
5226
  [#4493]: https://github.com/DataDog/dd-trace-rb/issues/4493
4760
5227
  [#4497]: https://github.com/DataDog/dd-trace-rb/issues/4497
@@ -4787,14 +5254,228 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
4787
5254
  [#4616]: https://github.com/DataDog/dd-trace-rb/issues/4616
4788
5255
  [#4625]: https://github.com/DataDog/dd-trace-rb/issues/4625
4789
5256
  [#4644]: https://github.com/DataDog/dd-trace-rb/issues/4644
5257
+ [#4651]: https://github.com/DataDog/dd-trace-rb/issues/4651
4790
5258
  [#4653]: https://github.com/DataDog/dd-trace-rb/issues/4653
4791
5259
  [#4656]: https://github.com/DataDog/dd-trace-rb/issues/4656
4792
5260
  [#4665]: https://github.com/DataDog/dd-trace-rb/issues/4665
5261
+ [#4668]: https://github.com/DataDog/dd-trace-rb/issues/4668
4793
5262
  [#4669]: https://github.com/DataDog/dd-trace-rb/issues/4669
4794
5263
  [#4672]: https://github.com/DataDog/dd-trace-rb/issues/4672
4795
5264
  [#4673]: https://github.com/DataDog/dd-trace-rb/issues/4673
4796
5265
  [#4678]: https://github.com/DataDog/dd-trace-rb/issues/4678
4797
5266
  [#4679]: https://github.com/DataDog/dd-trace-rb/issues/4679
5267
+ [#4681]: https://github.com/DataDog/dd-trace-rb/issues/4681
5268
+ [#4688]: https://github.com/DataDog/dd-trace-rb/issues/4688
5269
+ [#4693]: https://github.com/DataDog/dd-trace-rb/issues/4693
5270
+ [#4697]: https://github.com/DataDog/dd-trace-rb/issues/4697
5271
+ [#4699]: https://github.com/DataDog/dd-trace-rb/issues/4699
5272
+ [#4716]: https://github.com/DataDog/dd-trace-rb/issues/4716
5273
+ [#4718]: https://github.com/DataDog/dd-trace-rb/issues/4718
5274
+ [#4721]: https://github.com/DataDog/dd-trace-rb/issues/4721
5275
+ [#4728]: https://github.com/DataDog/dd-trace-rb/issues/4728
5276
+ [#4731]: https://github.com/DataDog/dd-trace-rb/issues/4731
5277
+ [#4743]: https://github.com/DataDog/dd-trace-rb/issues/4743
5278
+ [#4745]: https://github.com/DataDog/dd-trace-rb/issues/4745
5279
+ [#4756]: https://github.com/DataDog/dd-trace-rb/issues/4756
5280
+ [#4757]: https://github.com/DataDog/dd-trace-rb/issues/4757
5281
+ [#4771]: https://github.com/DataDog/dd-trace-rb/issues/4771
5282
+ [#4772]: https://github.com/DataDog/dd-trace-rb/issues/4772
5283
+ [#4776]: https://github.com/DataDog/dd-trace-rb/issues/4776
5284
+ [#4779]: https://github.com/DataDog/dd-trace-rb/issues/4779
5285
+ [#4783]: https://github.com/DataDog/dd-trace-rb/issues/4783
5286
+ [#4785]: https://github.com/DataDog/dd-trace-rb/issues/4785
5287
+ [#4786]: https://github.com/DataDog/dd-trace-rb/issues/4786
5288
+ [#4787]: https://github.com/DataDog/dd-trace-rb/issues/4787
5289
+ [#4793]: https://github.com/DataDog/dd-trace-rb/issues/4793
5290
+ [#4794]: https://github.com/DataDog/dd-trace-rb/issues/4794
5291
+ [#4802]: https://github.com/DataDog/dd-trace-rb/issues/4802
5292
+ [#4813]: https://github.com/DataDog/dd-trace-rb/issues/4813
5293
+ [#4814]: https://github.com/DataDog/dd-trace-rb/issues/4814
5294
+ [#4819]: https://github.com/DataDog/dd-trace-rb/issues/4819
5295
+ [#4831]: https://github.com/DataDog/dd-trace-rb/issues/4831
5296
+ [#4833]: https://github.com/DataDog/dd-trace-rb/issues/4833
5297
+ [#4838]: https://github.com/DataDog/dd-trace-rb/issues/4838
5298
+ [#4848]: https://github.com/DataDog/dd-trace-rb/issues/4848
5299
+ [#4851]: https://github.com/DataDog/dd-trace-rb/issues/4851
5300
+ [#4861]: https://github.com/DataDog/dd-trace-rb/issues/4861
5301
+ [#4862]: https://github.com/DataDog/dd-trace-rb/issues/4862
5302
+ [#4863]: https://github.com/DataDog/dd-trace-rb/issues/4863
5303
+ [#4864]: https://github.com/DataDog/dd-trace-rb/issues/4864
5304
+ [#4877]: https://github.com/DataDog/dd-trace-rb/issues/4877
5305
+ [#4884]: https://github.com/DataDog/dd-trace-rb/issues/4884
5306
+ [#4887]: https://github.com/DataDog/dd-trace-rb/issues/4887
5307
+ [#4893]: https://github.com/DataDog/dd-trace-rb/issues/4893
5308
+ [#4894]: https://github.com/DataDog/dd-trace-rb/issues/4894
5309
+ [#4900]: https://github.com/DataDog/dd-trace-rb/issues/4900
5310
+ [#4901]: https://github.com/DataDog/dd-trace-rb/issues/4901
5311
+ [#4902]: https://github.com/DataDog/dd-trace-rb/issues/4902
5312
+ [#4906]: https://github.com/DataDog/dd-trace-rb/issues/4906
5313
+ [#4907]: https://github.com/DataDog/dd-trace-rb/issues/4907
5314
+ [#4908]: https://github.com/DataDog/dd-trace-rb/issues/4908
5315
+ [#4909]: https://github.com/DataDog/dd-trace-rb/issues/4909
5316
+ [#4913]: https://github.com/DataDog/dd-trace-rb/issues/4913
5317
+ [#4914]: https://github.com/DataDog/dd-trace-rb/issues/4914
5318
+ [#4918]: https://github.com/DataDog/dd-trace-rb/issues/4918
5319
+ [#4919]: https://github.com/DataDog/dd-trace-rb/issues/4919
5320
+ [#4941]: https://github.com/DataDog/dd-trace-rb/issues/4941
5321
+ [#4957]: https://github.com/DataDog/dd-trace-rb/issues/4957
5322
+ [#4965]: https://github.com/DataDog/dd-trace-rb/issues/4965
5323
+ [#4969]: https://github.com/DataDog/dd-trace-rb/issues/4969
5324
+ [#4975]: https://github.com/DataDog/dd-trace-rb/issues/4975
5325
+ [#4988]: https://github.com/DataDog/dd-trace-rb/issues/4988
5326
+ [#4991]: https://github.com/DataDog/dd-trace-rb/issues/4991
5327
+ [#4995]: https://github.com/DataDog/dd-trace-rb/issues/4995
5328
+ [#4999]: https://github.com/DataDog/dd-trace-rb/issues/4999
5329
+ [#5000]: https://github.com/DataDog/dd-trace-rb/issues/5000
5330
+ [#5019]: https://github.com/DataDog/dd-trace-rb/issues/5019
5331
+ [#5020]: https://github.com/DataDog/dd-trace-rb/issues/5020
5332
+ [#5021]: https://github.com/DataDog/dd-trace-rb/issues/5021
5333
+ [#5024]: https://github.com/DataDog/dd-trace-rb/issues/5024
5334
+ [#5025]: https://github.com/DataDog/dd-trace-rb/issues/5025
5335
+ [#5028]: https://github.com/DataDog/dd-trace-rb/issues/5028
5336
+ [#5031]: https://github.com/DataDog/dd-trace-rb/issues/5031
5337
+ [#5033]: https://github.com/DataDog/dd-trace-rb/issues/5033
5338
+ [#5042]: https://github.com/DataDog/dd-trace-rb/issues/5042
5339
+ [#5044]: https://github.com/DataDog/dd-trace-rb/issues/5044
5340
+ [#5045]: https://github.com/DataDog/dd-trace-rb/issues/5045
5341
+ [#5049]: https://github.com/DataDog/dd-trace-rb/issues/5049
5342
+ [#5053]: https://github.com/DataDog/dd-trace-rb/issues/5053
5343
+ [#5054]: https://github.com/DataDog/dd-trace-rb/issues/5054
5344
+ [#5058]: https://github.com/DataDog/dd-trace-rb/issues/5058
5345
+ [#5073]: https://github.com/DataDog/dd-trace-rb/issues/5073
5346
+ [#5076]: https://github.com/DataDog/dd-trace-rb/issues/5076
5347
+ [#5086]: https://github.com/DataDog/dd-trace-rb/issues/5086
5348
+ [#5091]: https://github.com/DataDog/dd-trace-rb/issues/5091
5349
+ [#5111]: https://github.com/DataDog/dd-trace-rb/issues/5111
5350
+ [#5122]: https://github.com/DataDog/dd-trace-rb/issues/5122
5351
+ [#5144]: https://github.com/DataDog/dd-trace-rb/issues/5144
5352
+ [#5145]: https://github.com/DataDog/dd-trace-rb/issues/5145
5353
+ [#5146]: https://github.com/DataDog/dd-trace-rb/issues/5146
5354
+ [#5148]: https://github.com/DataDog/dd-trace-rb/issues/5148
5355
+ [#5150]: https://github.com/DataDog/dd-trace-rb/issues/5150
5356
+ [#5153]: https://github.com/DataDog/dd-trace-rb/issues/5153
5357
+ [#5157]: https://github.com/DataDog/dd-trace-rb/issues/5157
5358
+ [#5159]: https://github.com/DataDog/dd-trace-rb/issues/5159
5359
+ [#5165]: https://github.com/DataDog/dd-trace-rb/issues/5165
5360
+ [#5168]: https://github.com/DataDog/dd-trace-rb/issues/5168
5361
+ [#5169]: https://github.com/DataDog/dd-trace-rb/issues/5169
5362
+ [#5176]: https://github.com/DataDog/dd-trace-rb/issues/5176
5363
+ [#5194]: https://github.com/DataDog/dd-trace-rb/issues/5194
5364
+ [#5197]: https://github.com/DataDog/dd-trace-rb/issues/5197
5365
+ [#5201]: https://github.com/DataDog/dd-trace-rb/issues/5201
5366
+ [#5206]: https://github.com/DataDog/dd-trace-rb/issues/5206
5367
+ [#5210]: https://github.com/DataDog/dd-trace-rb/issues/5210
5368
+ [#5215]: https://github.com/DataDog/dd-trace-rb/issues/5215
5369
+ [#5222]: https://github.com/DataDog/dd-trace-rb/issues/5222
5370
+ [#5237]: https://github.com/DataDog/dd-trace-rb/issues/5237
5371
+ [#5238]: https://github.com/DataDog/dd-trace-rb/issues/5238
5372
+ [#5240]: https://github.com/DataDog/dd-trace-rb/issues/5240
5373
+ [#5246]: https://github.com/DataDog/dd-trace-rb/issues/5246
5374
+ [#5247]: https://github.com/DataDog/dd-trace-rb/issues/5247
5375
+ [#5254]: https://github.com/DataDog/dd-trace-rb/issues/5254
5376
+ [#5273]: https://github.com/DataDog/dd-trace-rb/issues/5273
5377
+ [#5274]: https://github.com/DataDog/dd-trace-rb/issues/5274
5378
+ [#5278]: https://github.com/DataDog/dd-trace-rb/issues/5278
5379
+ [#5283]: https://github.com/DataDog/dd-trace-rb/issues/5283
5380
+ [#5294]: https://github.com/DataDog/dd-trace-rb/issues/5294
5381
+ [#5304]: https://github.com/DataDog/dd-trace-rb/issues/5304
5382
+ [#5305]: https://github.com/DataDog/dd-trace-rb/issues/5305
5383
+ [#5320]: https://github.com/DataDog/dd-trace-rb/issues/5320
5384
+ [#5321]: https://github.com/DataDog/dd-trace-rb/issues/5321
5385
+ [#5334]: https://github.com/DataDog/dd-trace-rb/issues/5334
5386
+ [#5335]: https://github.com/DataDog/dd-trace-rb/issues/5335
5387
+ [#5336]: https://github.com/DataDog/dd-trace-rb/issues/5336
5388
+ [#5341]: https://github.com/DataDog/dd-trace-rb/issues/5341
5389
+ [#5342]: https://github.com/DataDog/dd-trace-rb/issues/5342
5390
+ [#5347]: https://github.com/DataDog/dd-trace-rb/issues/5347
5391
+ [#5351]: https://github.com/DataDog/dd-trace-rb/issues/5351
5392
+ [#5352]: https://github.com/DataDog/dd-trace-rb/issues/5352
5393
+ [#5368]: https://github.com/DataDog/dd-trace-rb/issues/5368
5394
+ [#5371]: https://github.com/DataDog/dd-trace-rb/issues/5371
5395
+ [#5375]: https://github.com/DataDog/dd-trace-rb/issues/5375
5396
+ [#5396]: https://github.com/DataDog/dd-trace-rb/issues/5396
5397
+ [#5414]: https://github.com/DataDog/dd-trace-rb/issues/5414
5398
+ [#5424]: https://github.com/DataDog/dd-trace-rb/issues/5424
5399
+ [#5425]: https://github.com/DataDog/dd-trace-rb/issues/5425
5400
+ [#5427]: https://github.com/DataDog/dd-trace-rb/issues/5427
5401
+ [#5432]: https://github.com/DataDog/dd-trace-rb/issues/5432
5402
+ [#5434]: https://github.com/DataDog/dd-trace-rb/issues/5434
5403
+ [#5435]: https://github.com/DataDog/dd-trace-rb/issues/5435
5404
+ [#5436]: https://github.com/DataDog/dd-trace-rb/issues/5436
5405
+ [#5446]: https://github.com/DataDog/dd-trace-rb/issues/5446
5406
+ [#5448]: https://github.com/DataDog/dd-trace-rb/issues/5448
5407
+ [#5449]: https://github.com/DataDog/dd-trace-rb/issues/5449
5408
+ [#5461]: https://github.com/DataDog/dd-trace-rb/issues/5461
5409
+ [#5468]: https://github.com/DataDog/dd-trace-rb/issues/5468
5410
+ [#5469]: https://github.com/DataDog/dd-trace-rb/issues/5469
5411
+ [#5483]: https://github.com/DataDog/dd-trace-rb/issues/5483
5412
+ [#5484]: https://github.com/DataDog/dd-trace-rb/issues/5484
5413
+ [#5499]: https://github.com/DataDog/dd-trace-rb/issues/5499
5414
+ [#5501]: https://github.com/DataDog/dd-trace-rb/issues/5501
5415
+ [#5509]: https://github.com/DataDog/dd-trace-rb/issues/5509
5416
+ [#5525]: https://github.com/DataDog/dd-trace-rb/issues/5525
5417
+ [#5531]: https://github.com/DataDog/dd-trace-rb/issues/5531
5418
+ [#5564]: https://github.com/DataDog/dd-trace-rb/issues/5564
5419
+ [#5569]: https://github.com/DataDog/dd-trace-rb/issues/5569
5420
+ [#5573]: https://github.com/DataDog/dd-trace-rb/issues/5573
5421
+ [#5574]: https://github.com/DataDog/dd-trace-rb/issues/5574
5422
+ [#5579]: https://github.com/DataDog/dd-trace-rb/issues/5579
5423
+ [#5580]: https://github.com/DataDog/dd-trace-rb/issues/5580
5424
+ [#5587]: https://github.com/DataDog/dd-trace-rb/issues/5587
5425
+ [#5594]: https://github.com/DataDog/dd-trace-rb/issues/5594
5426
+ [#5599]: https://github.com/DataDog/dd-trace-rb/issues/5599
5427
+ [#5634]: https://github.com/DataDog/dd-trace-rb/issues/5634
5428
+ [#5657]: https://github.com/DataDog/dd-trace-rb/issues/5657
5429
+ [#5663]: https://github.com/DataDog/dd-trace-rb/issues/5663
5430
+ [#5672]: https://github.com/DataDog/dd-trace-rb/issues/5672
5431
+ [#5674]: https://github.com/DataDog/dd-trace-rb/issues/5674
5432
+ [#5677]: https://github.com/DataDog/dd-trace-rb/issues/5677
5433
+ [#5681]: https://github.com/DataDog/dd-trace-rb/issues/5681
5434
+ [#5687]: https://github.com/DataDog/dd-trace-rb/issues/5687
5435
+ [#5689]: https://github.com/DataDog/dd-trace-rb/issues/5689
5436
+ [#5697]: https://github.com/DataDog/dd-trace-rb/issues/5697
5437
+ [#5705]: https://github.com/DataDog/dd-trace-rb/issues/5705
5438
+ [#5717]: https://github.com/DataDog/dd-trace-rb/issues/5717
5439
+ [#5719]: https://github.com/DataDog/dd-trace-rb/issues/5719
5440
+ [#5723]: https://github.com/DataDog/dd-trace-rb/issues/5723
5441
+ [#5724]: https://github.com/DataDog/dd-trace-rb/issues/5724
5442
+ [#5750]: https://github.com/DataDog/dd-trace-rb/issues/5750
5443
+ [#5753]: https://github.com/DataDog/dd-trace-rb/issues/5753
5444
+ [#5754]: https://github.com/DataDog/dd-trace-rb/issues/5754
5445
+ [#5762]: https://github.com/DataDog/dd-trace-rb/issues/5762
5446
+ [#5768]: https://github.com/DataDog/dd-trace-rb/issues/5768
5447
+ [#5773]: https://github.com/DataDog/dd-trace-rb/issues/5773
5448
+ [#5777]: https://github.com/DataDog/dd-trace-rb/issues/5777
5449
+ [#5811]: https://github.com/DataDog/dd-trace-rb/issues/5811
5450
+ [#5812]: https://github.com/DataDog/dd-trace-rb/issues/5812
5451
+ [#5816]: https://github.com/DataDog/dd-trace-rb/issues/5816
5452
+ [#5828]: https://github.com/DataDog/dd-trace-rb/issues/5828
5453
+ [#5830]: https://github.com/DataDog/dd-trace-rb/issues/5830
5454
+ [#5834]: https://github.com/DataDog/dd-trace-rb/issues/5834
5455
+ [#5836]: https://github.com/DataDog/dd-trace-rb/issues/5836
5456
+ [#5844]: https://github.com/DataDog/dd-trace-rb/issues/5844
5457
+ [#5857]: https://github.com/DataDog/dd-trace-rb/issues/5857
5458
+ [#5872]: https://github.com/DataDog/dd-trace-rb/issues/5872
5459
+ [#5877]: https://github.com/DataDog/dd-trace-rb/issues/5877
5460
+ [#5881]: https://github.com/DataDog/dd-trace-rb/issues/5881
5461
+ [#5883]: https://github.com/DataDog/dd-trace-rb/issues/5883
5462
+ [#5890]: https://github.com/DataDog/dd-trace-rb/issues/5890
5463
+ [#5894]: https://github.com/DataDog/dd-trace-rb/issues/5894
5464
+ [#5907]: https://github.com/DataDog/dd-trace-rb/issues/5907
5465
+ [#5911]: https://github.com/DataDog/dd-trace-rb/issues/5911
5466
+ [#5916]: https://github.com/DataDog/dd-trace-rb/issues/5916
5467
+ [#5920]: https://github.com/DataDog/dd-trace-rb/issues/5920
5468
+ [#5938]: https://github.com/DataDog/dd-trace-rb/issues/5938
5469
+ [#5940]: https://github.com/DataDog/dd-trace-rb/issues/5940
5470
+ [#5945]: https://github.com/DataDog/dd-trace-rb/issues/5945
5471
+ [#5954]: https://github.com/DataDog/dd-trace-rb/issues/5954
5472
+ [#5955]: https://github.com/DataDog/dd-trace-rb/issues/5955
5473
+ [#5970]: https://github.com/DataDog/dd-trace-rb/issues/5970
5474
+ [#5973]: https://github.com/DataDog/dd-trace-rb/issues/5973
5475
+ [#5975]: https://github.com/DataDog/dd-trace-rb/issues/5975
5476
+ [#5987]: https://github.com/DataDog/dd-trace-rb/issues/5987
5477
+ [#5990]: https://github.com/DataDog/dd-trace-rb/issues/5990
5478
+ [#5991]: https://github.com/DataDog/dd-trace-rb/issues/5991
4798
5479
  [@AdrianLC]: https://github.com/AdrianLC
4799
5480
  [@Azure7111]: https://github.com/Azure7111
4800
5481
  [@BabyGroot]: https://github.com/BabyGroot
@@ -4853,6 +5534,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
4853
5534
  [@dorner]: https://github.com/dorner
4854
5535
  [@drcapulet]: https://github.com/drcapulet
4855
5536
  [@dudo]: https://github.com/dudo
5537
+ [@duration]: https://github.com/duration
4856
5538
  [@e1senh0rn]: https://github.com/e1senh0rn
4857
5539
  [@ecdemis123]: https://github.com/ecdemis123
4858
5540
  [@elliterate]: https://github.com/elliterate
@@ -4861,6 +5543,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
4861
5543
  [@erict-square]: https://github.com/erict-square
4862
5544
  [@errriclee]: https://github.com/errriclee
4863
5545
  [@evan-waters]: https://github.com/evan-waters
5546
+ [@exception]: https://github.com/exception
4864
5547
  [@fledman]: https://github.com/fledman
4865
5548
  [@frsantos]: https://github.com/frsantos
4866
5549
  [@fteem]: https://github.com/fteem
@@ -4907,6 +5590,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
4907
5590
  [@mscrivo]: https://github.com/mscrivo
4908
5591
  [@mstruve]: https://github.com/mstruve
4909
5592
  [@mustela]: https://github.com/mustela
5593
+ [@navidemad]: https://github.com/navidemad
4910
5594
  [@nic-lan]: https://github.com/nic-lan
4911
5595
  [@noma4i]: https://github.com/noma4i
4912
5596
  [@norbertnytko]: https://github.com/norbertnytko
@@ -4918,6 +5602,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
4918
5602
  [@rahul342]: https://github.com/rahul342
4919
5603
  [@randy-girard]: https://github.com/randy-girard
4920
5604
  [@renchap]: https://github.com/renchap
5605
+ [@return]: https://github.com/return
4921
5606
  [@ricbartm]: https://github.com/ricbartm
4922
5607
  [@roccoblues]: https://github.com/roccoblues
4923
5608
  [@rqz13]: https://github.com/rqz13