datadog 2.12.0 → 2.22.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 (570) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +348 -1
  3. data/README.md +0 -1
  4. data/ext/LIBDATADOG_DEVELOPMENT.md +60 -0
  5. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +63 -56
  6. data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +1 -1
  7. data/ext/datadog_profiling_native_extension/collectors_stack.c +263 -76
  8. data/ext/datadog_profiling_native_extension/collectors_stack.h +20 -3
  9. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +78 -26
  10. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +1 -0
  11. data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +1 -4
  12. data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +10 -0
  13. data/ext/datadog_profiling_native_extension/encoded_profile.c +79 -0
  14. data/ext/datadog_profiling_native_extension/encoded_profile.h +8 -0
  15. data/ext/datadog_profiling_native_extension/extconf.rb +10 -0
  16. data/ext/datadog_profiling_native_extension/heap_recorder.c +247 -364
  17. data/ext/datadog_profiling_native_extension/heap_recorder.h +4 -6
  18. data/ext/datadog_profiling_native_extension/http_transport.c +60 -94
  19. data/ext/datadog_profiling_native_extension/libdatadog_helpers.c +22 -0
  20. data/ext/datadog_profiling_native_extension/libdatadog_helpers.h +8 -5
  21. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +41 -21
  22. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +6 -4
  23. data/ext/datadog_profiling_native_extension/profiling.c +2 -0
  24. data/ext/datadog_profiling_native_extension/ruby_helpers.c +1 -13
  25. data/ext/datadog_profiling_native_extension/ruby_helpers.h +3 -11
  26. data/ext/datadog_profiling_native_extension/stack_recorder.c +173 -76
  27. data/ext/libdatadog_api/crashtracker.c +11 -12
  28. data/ext/libdatadog_api/crashtracker.h +5 -0
  29. data/ext/libdatadog_api/datadog_ruby_common.c +1 -4
  30. data/ext/libdatadog_api/datadog_ruby_common.h +10 -0
  31. data/ext/libdatadog_api/ddsketch.c +106 -0
  32. data/ext/libdatadog_api/extconf.rb +5 -3
  33. data/ext/libdatadog_api/init.c +18 -0
  34. data/ext/libdatadog_api/library_config.c +172 -0
  35. data/ext/libdatadog_api/library_config.h +25 -0
  36. data/ext/libdatadog_api/process_discovery.c +118 -0
  37. data/ext/libdatadog_api/process_discovery.h +5 -0
  38. data/ext/libdatadog_extconf_helpers.rb +15 -5
  39. data/lib/datadog/appsec/actions_handler/serializable_backtrace.rb +89 -0
  40. data/lib/datadog/appsec/actions_handler.rb +24 -2
  41. data/lib/datadog/appsec/anonymizer.rb +16 -0
  42. data/lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb +26 -0
  43. data/lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb +59 -0
  44. data/lib/datadog/appsec/api_security/endpoint_collection/rails_route_serializer.rb +29 -0
  45. data/lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb +26 -0
  46. data/lib/datadog/appsec/api_security/endpoint_collection.rb +10 -0
  47. data/lib/datadog/appsec/api_security/lru_cache.rb +56 -0
  48. data/lib/datadog/appsec/api_security/route_extractor.rb +75 -0
  49. data/lib/datadog/appsec/api_security/sampler.rb +59 -0
  50. data/lib/datadog/appsec/api_security.rb +23 -0
  51. data/lib/datadog/appsec/assets/waf_rules/README.md +44 -5
  52. data/lib/datadog/appsec/assets/waf_rules/recommended.json +601 -74
  53. data/lib/datadog/appsec/assets/waf_rules/strict.json +48 -75
  54. data/lib/datadog/appsec/autoload.rb +2 -2
  55. data/lib/datadog/appsec/component.rb +46 -71
  56. data/lib/datadog/appsec/compressed_json.rb +40 -0
  57. data/lib/datadog/appsec/configuration/settings.rb +162 -30
  58. data/lib/datadog/appsec/context.rb +30 -7
  59. data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +35 -18
  60. data/lib/datadog/appsec/contrib/active_record/integration.rb +2 -2
  61. data/lib/datadog/appsec/contrib/active_record/patcher.rb +62 -11
  62. data/lib/datadog/appsec/contrib/auto_instrument.rb +1 -1
  63. data/lib/datadog/appsec/contrib/devise/configuration.rb +7 -31
  64. data/lib/datadog/appsec/contrib/devise/data_extractor.rb +78 -0
  65. data/lib/datadog/appsec/contrib/devise/ext.rb +22 -0
  66. data/lib/datadog/appsec/contrib/devise/integration.rb +1 -2
  67. data/lib/datadog/appsec/contrib/devise/patcher.rb +34 -23
  68. data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +103 -0
  69. data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +70 -0
  70. data/lib/datadog/appsec/contrib/devise/{patcher/rememberable_patch.rb → patches/skip_signin_tracking_patch.rb} +2 -2
  71. data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +106 -0
  72. data/lib/datadog/appsec/contrib/excon/integration.rb +1 -1
  73. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +11 -12
  74. data/lib/datadog/appsec/contrib/faraday/integration.rb +1 -1
  75. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +10 -10
  76. data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +10 -9
  77. data/lib/datadog/appsec/contrib/graphql/integration.rb +1 -1
  78. data/lib/datadog/appsec/contrib/rack/ext.rb +34 -0
  79. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +53 -31
  80. data/lib/datadog/appsec/contrib/rack/integration.rb +1 -1
  81. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +52 -44
  82. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +35 -11
  83. data/lib/datadog/appsec/contrib/rails/integration.rb +1 -1
  84. data/lib/datadog/appsec/contrib/rails/patcher.rb +65 -47
  85. data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +27 -0
  86. data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +33 -0
  87. data/lib/datadog/appsec/contrib/rest_client/integration.rb +1 -1
  88. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +12 -12
  89. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +45 -22
  90. data/lib/datadog/appsec/contrib/sinatra/integration.rb +1 -1
  91. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +8 -18
  92. data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +31 -0
  93. data/lib/datadog/appsec/event.rb +91 -147
  94. data/lib/datadog/appsec/ext.rb +4 -2
  95. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +23 -2
  96. data/lib/datadog/appsec/instrumentation/gateway/middleware.rb +24 -0
  97. data/lib/datadog/appsec/instrumentation/gateway.rb +17 -22
  98. data/lib/datadog/appsec/metrics/collector.rb +23 -3
  99. data/lib/datadog/appsec/metrics/telemetry.rb +2 -2
  100. data/lib/datadog/appsec/metrics/telemetry_exporter.rb +29 -0
  101. data/lib/datadog/appsec/metrics.rb +1 -0
  102. data/lib/datadog/appsec/monitor/gateway/watcher.rb +49 -14
  103. data/lib/datadog/appsec/processor/rule_loader.rb +30 -33
  104. data/lib/datadog/appsec/remote.rb +43 -59
  105. data/lib/datadog/appsec/response.rb +6 -6
  106. data/lib/datadog/appsec/security_engine/engine.rb +176 -0
  107. data/lib/datadog/appsec/security_engine/result.rb +44 -9
  108. data/lib/datadog/appsec/security_engine/runner.rb +44 -21
  109. data/lib/datadog/appsec/security_event.rb +37 -0
  110. data/lib/datadog/appsec/thread_safe_ref.rb +61 -0
  111. data/lib/datadog/appsec/trace_keeper.rb +24 -0
  112. data/lib/datadog/appsec/utils/hash_coercion.rb +23 -0
  113. data/lib/datadog/appsec/utils.rb +0 -2
  114. data/lib/datadog/appsec.rb +5 -15
  115. data/lib/datadog/auto_instrument_base.rb +2 -1
  116. data/lib/datadog/core/buffer/random.rb +18 -2
  117. data/lib/datadog/core/configuration/agent_settings.rb +52 -0
  118. data/lib/datadog/core/configuration/agent_settings_resolver.rb +8 -50
  119. data/lib/datadog/core/configuration/agentless_settings_resolver.rb +176 -0
  120. data/lib/datadog/core/configuration/components.rb +69 -37
  121. data/lib/datadog/core/configuration/components_state.rb +23 -0
  122. data/lib/datadog/core/configuration/config_helper.rb +100 -0
  123. data/lib/datadog/core/configuration/deprecations.rb +36 -0
  124. data/lib/datadog/core/configuration/ext.rb +4 -1
  125. data/lib/datadog/core/configuration/option.rb +117 -77
  126. data/lib/datadog/core/configuration/option_definition.rb +5 -14
  127. data/lib/datadog/core/configuration/options.rb +15 -13
  128. data/lib/datadog/core/configuration/settings.rb +117 -48
  129. data/lib/datadog/core/configuration/stable_config.rb +32 -0
  130. data/lib/datadog/core/configuration/supported_configurations.rb +337 -0
  131. data/lib/datadog/core/configuration.rb +40 -16
  132. data/lib/datadog/core/crashtracking/component.rb +3 -10
  133. data/lib/datadog/core/crashtracking/tag_builder.rb +4 -22
  134. data/lib/datadog/core/ddsketch.rb +21 -0
  135. data/lib/datadog/core/deprecations.rb +2 -2
  136. data/lib/datadog/core/diagnostics/environment_logger.rb +1 -1
  137. data/lib/datadog/core/encoding.rb +1 -1
  138. data/lib/datadog/core/environment/agent_info.rb +4 -3
  139. data/lib/datadog/core/environment/cgroup.rb +10 -12
  140. data/lib/datadog/core/environment/container.rb +38 -40
  141. data/lib/datadog/core/environment/ext.rb +6 -8
  142. data/lib/datadog/core/environment/git.rb +3 -2
  143. data/lib/datadog/core/environment/identity.rb +3 -3
  144. data/lib/datadog/core/environment/platform.rb +3 -3
  145. data/lib/datadog/core/environment/variable_helpers.rb +4 -4
  146. data/lib/datadog/core/environment/yjit.rb +2 -1
  147. data/lib/datadog/core/error.rb +11 -9
  148. data/lib/datadog/core/logger.rb +2 -2
  149. data/lib/datadog/core/metrics/client.rb +29 -29
  150. data/lib/datadog/core/metrics/logging.rb +5 -5
  151. data/lib/datadog/core/pin.rb +4 -8
  152. data/lib/datadog/core/process_discovery/tracer_memfd.rb +13 -0
  153. data/lib/datadog/core/process_discovery.rb +61 -0
  154. data/lib/datadog/core/rate_limiter.rb +4 -2
  155. data/lib/datadog/core/remote/client.rb +44 -35
  156. data/lib/datadog/core/remote/component.rb +12 -17
  157. data/lib/datadog/core/remote/configuration/digest.rb +7 -7
  158. data/lib/datadog/core/remote/configuration/path.rb +1 -1
  159. data/lib/datadog/core/remote/configuration/repository.rb +14 -1
  160. data/lib/datadog/core/remote/negotiation.rb +9 -9
  161. data/lib/datadog/core/remote/transport/config.rb +4 -3
  162. data/lib/datadog/core/remote/transport/http/client.rb +5 -4
  163. data/lib/datadog/core/remote/transport/http/config.rb +27 -37
  164. data/lib/datadog/core/remote/transport/http/negotiation.rb +7 -33
  165. data/lib/datadog/core/remote/transport/http.rb +25 -89
  166. data/lib/datadog/core/remote/transport/negotiation.rb +4 -3
  167. data/lib/datadog/core/runtime/ext.rb +0 -1
  168. data/lib/datadog/core/runtime/metrics.rb +12 -5
  169. data/lib/datadog/core/tag_builder.rb +56 -0
  170. data/lib/datadog/core/telemetry/component.rb +92 -52
  171. data/lib/datadog/core/telemetry/emitter.rb +23 -11
  172. data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +66 -0
  173. data/lib/datadog/core/telemetry/event/app_closing.rb +18 -0
  174. data/lib/datadog/core/telemetry/event/app_dependencies_loaded.rb +33 -0
  175. data/lib/datadog/core/telemetry/event/app_endpoints_loaded.rb +30 -0
  176. data/lib/datadog/core/telemetry/event/app_heartbeat.rb +18 -0
  177. data/lib/datadog/core/telemetry/event/app_integrations_change.rb +58 -0
  178. data/lib/datadog/core/telemetry/event/app_started.rb +287 -0
  179. data/lib/datadog/core/telemetry/event/base.rb +40 -0
  180. data/lib/datadog/core/telemetry/event/distributions.rb +18 -0
  181. data/lib/datadog/core/telemetry/event/generate_metrics.rb +43 -0
  182. data/lib/datadog/core/telemetry/event/log.rb +76 -0
  183. data/lib/datadog/core/telemetry/event/message_batch.rb +42 -0
  184. data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +43 -0
  185. data/lib/datadog/core/telemetry/event.rb +18 -472
  186. data/lib/datadog/core/telemetry/http/adapters/net.rb +12 -97
  187. data/lib/datadog/core/telemetry/logger.rb +5 -4
  188. data/lib/datadog/core/telemetry/logging.rb +11 -5
  189. data/lib/datadog/core/telemetry/metric.rb +8 -8
  190. data/lib/datadog/core/telemetry/request.rb +4 -4
  191. data/lib/datadog/core/telemetry/transport/http/api.rb +43 -0
  192. data/lib/datadog/core/telemetry/transport/http/client.rb +49 -0
  193. data/lib/datadog/core/telemetry/transport/http/telemetry.rb +92 -0
  194. data/lib/datadog/core/telemetry/transport/http.rb +63 -0
  195. data/lib/datadog/core/telemetry/transport/telemetry.rb +51 -0
  196. data/lib/datadog/core/telemetry/worker.rb +90 -24
  197. data/lib/datadog/core/transport/http/adapters/net.rb +17 -2
  198. data/lib/datadog/core/transport/http/adapters/test.rb +2 -1
  199. data/lib/datadog/core/transport/http/api/instance.rb +17 -0
  200. data/lib/datadog/core/transport/http/api/spec.rb +17 -0
  201. data/lib/datadog/core/transport/http/builder.rb +19 -17
  202. data/lib/datadog/core/transport/http/env.rb +8 -0
  203. data/lib/datadog/core/transport/http.rb +75 -0
  204. data/lib/datadog/core/transport/response.rb +4 -1
  205. data/lib/datadog/core/utils/at_fork_monkey_patch.rb +6 -6
  206. data/lib/datadog/core/utils/duration.rb +32 -32
  207. data/lib/datadog/core/utils/forking.rb +2 -2
  208. data/lib/datadog/core/utils/network.rb +25 -6
  209. data/lib/datadog/core/utils/only_once_successful.rb +16 -5
  210. data/lib/datadog/core/utils/time.rb +20 -0
  211. data/lib/datadog/core/utils/truncation.rb +21 -0
  212. data/lib/datadog/core/utils.rb +7 -0
  213. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +1 -1
  214. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +8 -8
  215. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +7 -7
  216. data/lib/datadog/core/worker.rb +1 -1
  217. data/lib/datadog/core/workers/async.rb +29 -12
  218. data/lib/datadog/core/workers/interval_loop.rb +12 -1
  219. data/lib/datadog/core/workers/runtime_metrics.rb +2 -2
  220. data/lib/datadog/core.rb +10 -0
  221. data/lib/datadog/di/boot.rb +43 -0
  222. data/lib/datadog/di/component.rb +21 -2
  223. data/lib/datadog/di/context.rb +70 -0
  224. data/lib/datadog/di/el/compiler.rb +164 -0
  225. data/lib/datadog/di/el/evaluator.rb +159 -0
  226. data/lib/datadog/di/el/expression.rb +42 -0
  227. data/lib/datadog/di/el.rb +5 -0
  228. data/lib/datadog/di/error.rb +25 -0
  229. data/lib/datadog/di/instrumenter.rb +132 -20
  230. data/lib/datadog/di/probe.rb +35 -15
  231. data/lib/datadog/di/probe_builder.rb +39 -1
  232. data/lib/datadog/di/probe_file_loader/railtie.rb +15 -0
  233. data/lib/datadog/di/probe_file_loader.rb +82 -0
  234. data/lib/datadog/di/probe_manager.rb +3 -2
  235. data/lib/datadog/di/probe_notification_builder.rb +61 -67
  236. data/lib/datadog/di/probe_notifier_worker.rb +25 -17
  237. data/lib/datadog/di/remote.rb +5 -5
  238. data/lib/datadog/di/serializer.rb +160 -8
  239. data/lib/datadog/di/transport/diagnostics.rb +4 -3
  240. data/lib/datadog/di/transport/http/api.rb +2 -12
  241. data/lib/datadog/di/transport/http/client.rb +4 -3
  242. data/lib/datadog/di/transport/http/diagnostics.rb +7 -34
  243. data/lib/datadog/di/transport/http/input.rb +18 -35
  244. data/lib/datadog/di/transport/http.rb +15 -77
  245. data/lib/datadog/di/transport/input.rb +14 -5
  246. data/lib/datadog/di/utils.rb +5 -0
  247. data/lib/datadog/di.rb +0 -34
  248. data/lib/datadog/error_tracking/collector.rb +87 -0
  249. data/lib/datadog/error_tracking/component.rb +167 -0
  250. data/lib/datadog/error_tracking/configuration/settings.rb +63 -0
  251. data/lib/datadog/error_tracking/configuration.rb +11 -0
  252. data/lib/datadog/error_tracking/ext.rb +18 -0
  253. data/lib/datadog/error_tracking/extensions.rb +16 -0
  254. data/lib/datadog/error_tracking/filters.rb +77 -0
  255. data/lib/datadog/error_tracking.rb +18 -0
  256. data/lib/datadog/kit/appsec/events/v2.rb +196 -0
  257. data/lib/datadog/kit/appsec/events.rb +17 -4
  258. data/lib/datadog/kit/identity.rb +22 -12
  259. data/lib/datadog/opentelemetry/api/baggage.rb +90 -0
  260. data/lib/datadog/opentelemetry/api/baggage.rbs +26 -0
  261. data/lib/datadog/opentelemetry/api/context.rb +21 -6
  262. data/lib/datadog/opentelemetry/sdk/configurator.rb +1 -1
  263. data/lib/datadog/opentelemetry/sdk/propagator.rb +4 -4
  264. data/lib/datadog/opentelemetry/sdk/span_processor.rb +8 -8
  265. data/lib/datadog/opentelemetry/sdk/trace/span.rb +15 -11
  266. data/lib/datadog/opentelemetry/trace.rb +4 -4
  267. data/lib/datadog/opentelemetry.rb +2 -1
  268. data/lib/datadog/profiling/collectors/code_provenance.rb +18 -9
  269. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +6 -0
  270. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -0
  271. data/lib/datadog/profiling/collectors/info.rb +44 -0
  272. data/lib/datadog/profiling/collectors/thread_context.rb +17 -2
  273. data/lib/datadog/profiling/component.rb +8 -9
  274. data/lib/datadog/profiling/encoded_profile.rb +11 -0
  275. data/lib/datadog/profiling/exporter.rb +12 -7
  276. data/lib/datadog/profiling/ext.rb +2 -15
  277. data/lib/datadog/profiling/flush.rb +5 -8
  278. data/lib/datadog/profiling/http_transport.rb +8 -62
  279. data/lib/datadog/profiling/profiler.rb +2 -0
  280. data/lib/datadog/profiling/scheduler.rb +10 -2
  281. data/lib/datadog/profiling/sequence_tracker.rb +44 -0
  282. data/lib/datadog/profiling/stack_recorder.rb +9 -9
  283. data/lib/datadog/profiling/tag_builder.rb +7 -41
  284. data/lib/datadog/profiling/tasks/exec.rb +2 -2
  285. data/lib/datadog/profiling/tasks/setup.rb +2 -0
  286. data/lib/datadog/profiling.rb +13 -10
  287. data/lib/datadog/single_step_instrument.rb +9 -0
  288. data/lib/datadog/tracing/analytics.rb +1 -1
  289. data/lib/datadog/tracing/buffer.rb +7 -7
  290. data/lib/datadog/tracing/component.rb +21 -29
  291. data/lib/datadog/tracing/configuration/dynamic.rb +6 -8
  292. data/lib/datadog/tracing/configuration/ext.rb +8 -4
  293. data/lib/datadog/tracing/configuration/settings.rb +50 -12
  294. data/lib/datadog/tracing/context.rb +2 -2
  295. data/lib/datadog/tracing/context_provider.rb +1 -1
  296. data/lib/datadog/tracing/contrib/action_cable/event.rb +1 -1
  297. data/lib/datadog/tracing/contrib/action_cable/integration.rb +1 -1
  298. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +1 -1
  299. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +19 -4
  300. data/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb +19 -12
  301. data/lib/datadog/tracing/contrib/action_pack/ext.rb +2 -0
  302. data/lib/datadog/tracing/contrib/action_pack/integration.rb +1 -1
  303. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +1 -1
  304. data/lib/datadog/tracing/contrib/active_job/event.rb +8 -8
  305. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +1 -1
  306. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +1 -1
  307. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +1 -1
  308. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +1 -1
  309. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +1 -1
  310. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +1 -1
  311. data/lib/datadog/tracing/contrib/active_job/integration.rb +1 -1
  312. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +1 -1
  313. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +3 -3
  314. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +1 -2
  315. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +1 -1
  316. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +1 -1
  317. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +5 -5
  318. data/lib/datadog/tracing/contrib/active_record/integration.rb +2 -2
  319. data/lib/datadog/tracing/contrib/active_record/utils.rb +15 -15
  320. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +17 -8
  321. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +33 -0
  322. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +4 -0
  323. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +2 -4
  324. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +13 -0
  325. data/lib/datadog/tracing/contrib/active_support/integration.rb +1 -1
  326. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +2 -1
  327. data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +7 -9
  328. data/lib/datadog/tracing/contrib/aws/ext.rb +1 -1
  329. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +12 -2
  330. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +8 -2
  331. data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -1
  332. data/lib/datadog/tracing/contrib/aws/service/base.rb +2 -1
  333. data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +1 -1
  334. data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +1 -1
  335. data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +1 -1
  336. data/lib/datadog/tracing/contrib/aws/service/s3.rb +1 -1
  337. data/lib/datadog/tracing/contrib/aws/service/sns.rb +1 -1
  338. data/lib/datadog/tracing/contrib/aws/service/sqs.rb +1 -1
  339. data/lib/datadog/tracing/contrib/aws/service/states.rb +1 -1
  340. data/lib/datadog/tracing/contrib/aws/services.rb +7 -7
  341. data/lib/datadog/tracing/contrib/component.rb +2 -2
  342. data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +1 -1
  343. data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -1
  344. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -1
  345. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +1 -1
  346. data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +1 -1
  347. data/lib/datadog/tracing/contrib/configurable.rb +6 -6
  348. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +4 -4
  349. data/lib/datadog/tracing/contrib/configuration/settings.rb +1 -1
  350. data/lib/datadog/tracing/contrib/dalli/ext.rb +3 -2
  351. data/lib/datadog/tracing/contrib/dalli/integration.rb +1 -1
  352. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +1 -1
  353. data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +3 -2
  354. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +4 -4
  355. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +51 -53
  356. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +5 -5
  357. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +6 -7
  358. data/lib/datadog/tracing/contrib/ethon/ext.rb +3 -2
  359. data/lib/datadog/tracing/contrib/ethon/integration.rb +1 -1
  360. data/lib/datadog/tracing/contrib/excon/ext.rb +3 -2
  361. data/lib/datadog/tracing/contrib/excon/integration.rb +1 -1
  362. data/lib/datadog/tracing/contrib/excon/middleware.rb +7 -5
  363. data/lib/datadog/tracing/contrib/ext.rb +4 -3
  364. data/lib/datadog/tracing/contrib/extensions.rb +9 -9
  365. data/lib/datadog/tracing/contrib/faraday/ext.rb +3 -2
  366. data/lib/datadog/tracing/contrib/faraday/integration.rb +1 -1
  367. data/lib/datadog/tracing/contrib/faraday/middleware.rb +9 -5
  368. data/lib/datadog/tracing/contrib/grape/endpoint.rb +8 -8
  369. data/lib/datadog/tracing/contrib/grape/integration.rb +1 -1
  370. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +7 -0
  371. data/lib/datadog/tracing/contrib/graphql/ext.rb +1 -0
  372. data/lib/datadog/tracing/contrib/graphql/integration.rb +1 -1
  373. data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -2
  374. data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +84 -48
  375. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +15 -9
  376. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +3 -3
  377. data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +1 -1
  378. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +3 -0
  379. data/lib/datadog/tracing/contrib/grpc/integration.rb +1 -1
  380. data/lib/datadog/tracing/contrib/hanami/ext.rb +2 -2
  381. data/lib/datadog/tracing/contrib/hanami/integration.rb +1 -1
  382. data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +1 -1
  383. data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +9 -11
  384. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +0 -15
  385. data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +4 -4
  386. data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +4 -1
  387. data/lib/datadog/tracing/contrib/http/ext.rb +3 -2
  388. data/lib/datadog/tracing/contrib/http/instrumentation.rb +11 -15
  389. data/lib/datadog/tracing/contrib/httpclient/ext.rb +3 -2
  390. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +9 -19
  391. data/lib/datadog/tracing/contrib/httpclient/integration.rb +1 -1
  392. data/lib/datadog/tracing/contrib/httprb/ext.rb +3 -2
  393. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +11 -19
  394. data/lib/datadog/tracing/contrib/httprb/integration.rb +1 -1
  395. data/lib/datadog/tracing/contrib/kafka/event.rb +1 -1
  396. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +1 -1
  397. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +1 -1
  398. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +1 -1
  399. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +1 -1
  400. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +1 -1
  401. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +1 -1
  402. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +1 -1
  403. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +1 -1
  404. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +1 -1
  405. data/lib/datadog/tracing/contrib/kafka/integration.rb +1 -1
  406. data/lib/datadog/tracing/contrib/karafka/configuration/settings.rb +27 -0
  407. data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +48 -0
  408. data/lib/datadog/tracing/contrib/karafka/ext.rb +27 -0
  409. data/lib/datadog/tracing/contrib/karafka/integration.rb +45 -0
  410. data/lib/datadog/tracing/contrib/karafka/monitor.rb +66 -0
  411. data/lib/datadog/tracing/contrib/karafka/patcher.rb +71 -0
  412. data/lib/datadog/tracing/contrib/karafka.rb +37 -0
  413. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +1 -1
  414. data/lib/datadog/tracing/contrib/lograge/integration.rb +1 -1
  415. data/lib/datadog/tracing/contrib/lograge/patcher.rb +4 -2
  416. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +9 -1
  417. data/lib/datadog/tracing/contrib/mongodb/ext.rb +2 -1
  418. data/lib/datadog/tracing/contrib/mongodb/integration.rb +1 -1
  419. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -1
  420. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +23 -6
  421. data/lib/datadog/tracing/contrib/mysql2/ext.rb +1 -1
  422. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +16 -6
  423. data/lib/datadog/tracing/contrib/mysql2/integration.rb +1 -1
  424. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +17 -0
  425. data/lib/datadog/tracing/contrib/opensearch/ext.rb +12 -2
  426. data/lib/datadog/tracing/contrib/opensearch/integration.rb +1 -2
  427. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +68 -66
  428. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +5 -5
  429. data/lib/datadog/tracing/contrib/patcher.rb +12 -11
  430. data/lib/datadog/tracing/contrib/pg/integration.rb +1 -1
  431. data/lib/datadog/tracing/contrib/presto/ext.rb +1 -1
  432. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +3 -3
  433. data/lib/datadog/tracing/contrib/presto/integration.rb +1 -1
  434. data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +1 -1
  435. data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +1 -1
  436. data/lib/datadog/tracing/contrib/que/integration.rb +1 -1
  437. data/lib/datadog/tracing/contrib/racecar/event.rb +1 -1
  438. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +2 -2
  439. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +1 -1
  440. data/lib/datadog/tracing/contrib/racecar/events/message.rb +2 -2
  441. data/lib/datadog/tracing/contrib/racecar/integration.rb +1 -1
  442. data/lib/datadog/tracing/contrib/rack/header_collection.rb +1 -1
  443. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +32 -32
  444. data/lib/datadog/tracing/contrib/rack/integration.rb +1 -1
  445. data/lib/datadog/tracing/contrib/rack/middlewares.rb +21 -17
  446. data/lib/datadog/tracing/contrib/rack/patcher.rb +1 -1
  447. data/lib/datadog/tracing/contrib/rack/request_queue.rb +4 -3
  448. data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +7 -1
  449. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +1 -1
  450. data/lib/datadog/tracing/contrib/rails/ext.rb +2 -1
  451. data/lib/datadog/tracing/contrib/rails/integration.rb +2 -2
  452. data/lib/datadog/tracing/contrib/rails/log_injection.rb +1 -1
  453. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -1
  454. data/lib/datadog/tracing/contrib/rails/patcher.rb +4 -1
  455. data/lib/datadog/tracing/contrib/rails/runner.rb +62 -40
  456. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +4 -4
  457. data/lib/datadog/tracing/contrib/rake/integration.rb +1 -1
  458. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +2 -2
  459. data/lib/datadog/tracing/contrib/redis/ext.rb +3 -2
  460. data/lib/datadog/tracing/contrib/redis/integration.rb +2 -2
  461. data/lib/datadog/tracing/contrib/redis/patcher.rb +4 -4
  462. data/lib/datadog/tracing/contrib/redis/quantize.rb +1 -1
  463. data/lib/datadog/tracing/contrib/redis/tags.rb +1 -1
  464. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +4 -4
  465. data/lib/datadog/tracing/contrib/registry.rb +1 -1
  466. data/lib/datadog/tracing/contrib/resque/integration.rb +1 -1
  467. data/lib/datadog/tracing/contrib/resque/resque_job.rb +1 -1
  468. data/lib/datadog/tracing/contrib/rest_client/ext.rb +3 -2
  469. data/lib/datadog/tracing/contrib/rest_client/integration.rb +1 -1
  470. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +8 -6
  471. data/lib/datadog/tracing/contrib/roda/instrumentation.rb +1 -1
  472. data/lib/datadog/tracing/contrib/roda/integration.rb +1 -1
  473. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +1 -1
  474. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +1 -1
  475. data/lib/datadog/tracing/contrib/sequel/database.rb +5 -5
  476. data/lib/datadog/tracing/contrib/sequel/dataset.rb +1 -1
  477. data/lib/datadog/tracing/contrib/sequel/integration.rb +1 -1
  478. data/lib/datadog/tracing/contrib/sequel/utils.rb +1 -1
  479. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +1 -1
  480. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +6 -1
  481. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +3 -0
  482. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +1 -0
  483. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +1 -1
  484. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +5 -2
  485. data/lib/datadog/tracing/contrib/sidekiq/utils.rb +1 -1
  486. data/lib/datadog/tracing/contrib/sinatra/integration.rb +1 -1
  487. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +38 -40
  488. data/lib/datadog/tracing/contrib/sneakers/integration.rb +1 -1
  489. data/lib/datadog/tracing/contrib/span_attribute_schema.rb +1 -1
  490. data/lib/datadog/tracing/contrib/stripe/integration.rb +1 -1
  491. data/lib/datadog/tracing/contrib/stripe/request.rb +1 -1
  492. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +1 -1
  493. data/lib/datadog/tracing/contrib/support.rb +28 -0
  494. data/lib/datadog/tracing/contrib/trilogy/ext.rb +1 -1
  495. data/lib/datadog/tracing/contrib/trilogy/integration.rb +1 -1
  496. data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +11 -11
  497. data/lib/datadog/tracing/contrib/utils/quantization/http.rb +6 -6
  498. data/lib/datadog/tracing/contrib.rb +1 -0
  499. data/lib/datadog/tracing/correlation.rb +9 -2
  500. data/lib/datadog/tracing/diagnostics/environment_logger.rb +8 -2
  501. data/lib/datadog/tracing/distributed/b3_multi.rb +1 -1
  502. data/lib/datadog/tracing/distributed/b3_single.rb +2 -2
  503. data/lib/datadog/tracing/distributed/baggage.rb +196 -0
  504. data/lib/datadog/tracing/distributed/datadog.rb +8 -7
  505. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +11 -13
  506. data/lib/datadog/tracing/distributed/helpers.rb +1 -1
  507. data/lib/datadog/tracing/distributed/none.rb +4 -2
  508. data/lib/datadog/tracing/distributed/propagation.rb +28 -4
  509. data/lib/datadog/tracing/distributed/propagation_policy.rb +42 -0
  510. data/lib/datadog/tracing/distributed/trace_context.rb +22 -16
  511. data/lib/datadog/tracing/event.rb +5 -7
  512. data/lib/datadog/tracing/flush.rb +1 -1
  513. data/lib/datadog/tracing/metadata/analytics.rb +1 -1
  514. data/lib/datadog/tracing/metadata/errors.rb +4 -4
  515. data/lib/datadog/tracing/metadata/ext.rb +13 -0
  516. data/lib/datadog/tracing/metadata/metastruct.rb +36 -0
  517. data/lib/datadog/tracing/metadata/metastruct_tagging.rb +42 -0
  518. data/lib/datadog/tracing/metadata/tagging.rb +4 -4
  519. data/lib/datadog/tracing/metadata.rb +2 -0
  520. data/lib/datadog/tracing/pipeline/span_filter.rb +3 -1
  521. data/lib/datadog/tracing/pipeline/span_processor.rb +3 -1
  522. data/lib/datadog/tracing/pipeline.rb +1 -1
  523. data/lib/datadog/tracing/sampling/ext.rb +0 -2
  524. data/lib/datadog/tracing/sampling/rate_sampler.rb +2 -1
  525. data/lib/datadog/tracing/sampling/rule_sampler.rb +30 -30
  526. data/lib/datadog/tracing/sampling/span/rule.rb +0 -1
  527. data/lib/datadog/tracing/sampling/span/rule_parser.rb +1 -1
  528. data/lib/datadog/tracing/sampling/span/sampler.rb +0 -7
  529. data/lib/datadog/tracing/span.rb +11 -2
  530. data/lib/datadog/tracing/span_event.rb +11 -11
  531. data/lib/datadog/tracing/span_link.rb +12 -12
  532. data/lib/datadog/tracing/span_operation.rb +76 -26
  533. data/lib/datadog/tracing/sync_writer.rb +5 -4
  534. data/lib/datadog/tracing/trace_digest.rb +29 -24
  535. data/lib/datadog/tracing/trace_operation.rb +121 -97
  536. data/lib/datadog/tracing/trace_segment.rb +8 -6
  537. data/lib/datadog/tracing/tracer.rb +90 -43
  538. data/lib/datadog/tracing/transport/http/api.rb +2 -10
  539. data/lib/datadog/tracing/transport/http/client.rb +6 -5
  540. data/lib/datadog/tracing/transport/http/traces.rb +15 -43
  541. data/lib/datadog/tracing/transport/http.rb +13 -75
  542. data/lib/datadog/tracing/transport/io/client.rb +5 -5
  543. data/lib/datadog/tracing/transport/io/traces.rb +4 -4
  544. data/lib/datadog/tracing/transport/serializable_trace.rb +3 -1
  545. data/lib/datadog/tracing/transport/statistics.rb +1 -1
  546. data/lib/datadog/tracing/transport/trace_formatter.rb +7 -0
  547. data/lib/datadog/tracing/transport/traces.rb +31 -14
  548. data/lib/datadog/tracing/utils.rb +1 -1
  549. data/lib/datadog/tracing/workers/trace_writer.rb +16 -16
  550. data/lib/datadog/tracing/workers.rb +2 -2
  551. data/lib/datadog/tracing/writer.rb +4 -4
  552. data/lib/datadog/tracing.rb +16 -3
  553. data/lib/datadog/version.rb +1 -1
  554. data/lib/datadog.rb +8 -2
  555. metadata +115 -24
  556. data/ext/libdatadog_api/macos_development.md +0 -26
  557. data/lib/datadog/appsec/assets/waf_rules/processors.json +0 -92
  558. data/lib/datadog/appsec/assets/waf_rules/scanners.json +0 -114
  559. data/lib/datadog/appsec/contrib/devise/event.rb +0 -54
  560. data/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb +0 -72
  561. data/lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb +0 -47
  562. data/lib/datadog/appsec/contrib/devise/resource.rb +0 -35
  563. data/lib/datadog/appsec/contrib/devise/tracking.rb +0 -57
  564. data/lib/datadog/appsec/processor/rule_merger.rb +0 -170
  565. data/lib/datadog/appsec/processor.rb +0 -107
  566. data/lib/datadog/appsec/utils/trace_operation.rb +0 -15
  567. data/lib/datadog/core/telemetry/http/env.rb +0 -20
  568. data/lib/datadog/core/telemetry/http/ext.rb +0 -28
  569. data/lib/datadog/core/telemetry/http/response.rb +0 -70
  570. data/lib/datadog/core/telemetry/http/transport.rb +0 -90
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5687b95de2487329c4b7e6d6eab86704f8eb2cdcedd5588bcf11af0fdc266f7e
4
- data.tar.gz: 837992da8e2c14754b6eb12eb6b26de83a20b68d2bdc369ba925ddd404c2d91b
3
+ metadata.gz: 495f03c8c90a6786ec765ac781553fe5197d9511586a41964382b73bb69ccca9
4
+ data.tar.gz: 81c46a4063b395a010ad1a028289b74c2d55bdaa6dff36ce61085d066a9b1a19
5
5
  SHA512:
6
- metadata.gz: de9312020663a01030298e462fa5b86e12b151203c6c2a555fc091954c39ecebb36c49a6dee31f9b337c35d3cad7df24c93a883f0d7da426f78d62581200d272
7
- data.tar.gz: 26b49b0f342521eccdafe2390ab13c2762abfb1791cf27faf68c75be5727a949f888ccfc8ebff39ae69de267563ea38c1abea1faaafcfef166dd25226b340c9d
6
+ metadata.gz: 2d4ab14bf55177e33f186c762b5156dd8cb8c17471c6277e1e0d1bce444212c98d221e00a2150fb3358203c898bb40fe431e9ebca0ef8fd22feec80758f8e922
7
+ data.tar.gz: 505dd3f5f5a08a18a95aef5cb7ae979c63bee58b22d36b8d77b21b0b5998ef775ec8c437895633355664a5ac0c31a9c2624b73ef08b63fa4154712508411b172
data/CHANGELOG.md CHANGED
@@ -2,6 +2,233 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [2.22.0] - 2025-10-15
6
+
7
+ ### Added
8
+
9
+ * Tracing: Add GraphQL error tracking with OpenTelemetry semantics ([#4864][])
10
+ * AppSec: API Security: Add endpoint collection for Rails ([#4919][])
11
+ * AppSec: Updated WAF rules to add support for JWT analysis ([#4907][])
12
+ * AppSec: Enable Remote Configuration capabilities for fingerprinting, trace tagging and user auto-instrumentation ([#4965][])
13
+ * Dynamic Instrumentation: Support `[@duration][]`, `[@return][]` and `[@exception][]` in message templates ([#4914][])
14
+ * Dynamic Instrumentation: Report evaluation errors to the UI ([#4913][])
15
+ * Dynamic Instrumentation: Support conditions for method probes ([#4909][])
16
+ * Dynamic Instrumentation: Capture exceptions raised by instrumented methods in method probes ([#4906][])
17
+ * Dynamic Instrumentation: Add support for probe conditions for line probes ([#4861][])
18
+
19
+ ### Changed
20
+
21
+ * Core: Upgrade `libdatadog` dependency to 22.0.1 ([#4902][])
22
+ * Tracing: Add `Forwarded` header to the list of headers used for remote IP detection. ([#4969][])
23
+ * AppSec: Update `libbddwaf` to version 1.25.1.0.1 ([#4894][])
24
+ * AppSec: WAF rules can control whether traces are kept or sampled ([#4918][])
25
+ * Dynamic Instrumentation: Evaluate message templates when logging instrumented code ([#4908][])
26
+
27
+ ### Fixed
28
+
29
+ * Core: Improve locking code for remote configuration worker ([#4957][])
30
+ * Dynamic Instrumentation: Emit a single log event for line probes on exception-raising lines ([#4900][])
31
+
32
+ ## [2.21.0] - 2025-09-17
33
+
34
+ ### Added
35
+
36
+ * Tracing: Generate metrics for GraphQL operation execution ([#4862][])
37
+
38
+ ### Changed
39
+
40
+ * Tracing: The `graphql.execute` span resource now includes the operation type ([#4862][])
41
+
42
+ ### Fixed
43
+
44
+ * Tracing: Fix Service Discovery capabilities on forked processes ([#4877][])
45
+ * 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][])
46
+ * AppSec: Fix API Security route extraction for Rails ([#4887][])
47
+ * AppSec: Fix a bug with non-string Hash keys conversion ([#4893][])
48
+ * Dynamic Instrumentation: Fix incorrect template expression evaluation in some cases ([#4884][])
49
+
50
+ ## [2.20.0] - 2025-09-04
51
+
52
+ ### Added
53
+
54
+ * Tracing: Add capability to add [W3C Baggage](https://www.w3.org/TR/baggage/#example) headers to the local root span as span tags ([#4716][])
55
+ * AppSec: Add WAF analysis of the responses with JSON body ([#4848][])
56
+ * Dynamic Instrumentation: Live Debugger: Add support for specifying probes in a file via `DD_DYNAMIC_INSTRUMENTATION_PROBE_FILE` environment variable ([#4838][])
57
+
58
+ ### Changed
59
+
60
+ * Core: Expand generated warning and error messages during `libdatadog` build ([#4831][])
61
+ * AppSec: Rework handling of Remote Config updates for multi-threaded web servers ([#4833][])
62
+ * AppSec: Update security tags for Business Logic Events and User Events SDK v1 and v2 ([#4851][])
63
+
64
+ ### Fixed
65
+
66
+ * Tracing: Fix constants resolution for Rails runner ([#4863][])
67
+
68
+ ## [2.19.0] - 2025-07-24
69
+
70
+ ### Added
71
+
72
+ * AppSec: Added Business Logic Events SDK v2. ([#4802][])
73
+ * Tracing: Add `record_exception` API to capture and attach error information to spans via span events. ([#4771][])
74
+ * Tracing: Add `:cache_store` option to ActiveSupport integration to allow tracing only specified cache backends. ([#4693][])
75
+ * SSI: Rework SSI from the ground up. ([#4366][])
76
+
77
+ ### Changed
78
+
79
+ * Profiling: Switch profiler stack truncation strategy and improve sampling performance ([#4819][])
80
+ * Profiling: Report GC tuning environment variables with profiles ([#4813][])
81
+ * Profiling: Tag profiles with sequence number ([#4794][])
82
+ * Profiling: Enable sample from inside signal handler by default on modern Rubies ([#4786][], [#4785][])
83
+
84
+ ### Fixed
85
+
86
+ * Core: Fix emitting duplicate warnings on agent configuration mismatch ([#4814][])
87
+ * Appsec: Fix an error in AppSec route extractor for not-found routes in Rails 8 ([#4793][])
88
+ * Profiling: Add workaround for Ruby VM bug ([#4787][])
89
+ * Profiling: Fix checking for dladdr in profiling ([#4783][])
90
+ * Profiling: Fix potential profiler compilation issue. ([#4783][])
91
+ * Tracing: The mysql integration now only sets the `db.name` tag if there is a valid value ([#4776][])
92
+ * Tracing: The Rails Runner instrumentation should now create Rails Runner spans. ([#4681][])
93
+ * Tracing: Fix sampling rules and sample rate reporting in environment logger. ([#4772][])
94
+
95
+ ### Removed
96
+
97
+ ## [2.18.0] - 2025-07-03
98
+
99
+ ### Added
100
+
101
+ * AppSec: Add API Security with new sampling algorithm to the Rack, Rails, Sinatra and Grape frameworks ([#4699][])
102
+ * Core: Add support for tracer configuration through Fleet Automation ([#4651][])
103
+ * Tracing: Add Rails view render times and database query times to the spans, when available ([#4697][])
104
+ * Core: Add Service Discovery capability, enabling the tracer to reliably determine which process are instrumented
105
+
106
+ ### Changed
107
+
108
+ * AppSec: Enable API Security feature by default ([#4756][])
109
+ * AppSec: Improve overall threat detection ([#4757][])
110
+ * AppSec: Deprecate `config.appsec.ip_passlist`, `config.appsec.ip_denylist`, and `config.appsec.user_id_denylist` ([#4757][])
111
+ * Profiling: Graduate Heap Profiling from alpha to preview ([#4401][], [#4460][])
112
+ * Dynamic Instrumentation: Add instance variable capture to method and line probes ([#4668][])
113
+ * Profiling: Add capturing of native filenames in backtraces ([#4745][])
114
+ * Profiling: Clean up profiler logging ([#4728][])
115
+ Tracing: Add support for `DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED` to tag runtime metrics with the current runtime ID, allowing correlation across processes ([#4718][])
116
+ * Tracing: Improve performance of `http.route` tag computation for Rails ([#4688][])
117
+
118
+ ### Fixed
119
+
120
+ * AppSec: Fix authenticated users tracking in anonymization mode for Devise ([#4731][])
121
+ * Dynamic Instrumentation: Fix source code display in dynamic instrumentation/live debugger ([#4743][])
122
+ * Profiling: Fix profiler stopping due to bug in heap profiling serialization ([#4721][])
123
+
124
+ ## [2.17.0] - 2025-06-02
125
+
126
+ ### Added
127
+
128
+ * Tracing: Add support for Rails 8.0. ([#4455][])
129
+
130
+ ### Changed
131
+
132
+ * Core: Improve tracer error reporting when agent responds with error responses to remote configuration requests ([#4669][])
133
+ * Core: Profiling: Upgrade libdatadog dependency to version 18.1 ([#4577][])
134
+ * Dynamic Instrumentation: Improve UI reporting of application and host status ([#4678][])
135
+ * Tracing: Mark AWS integration spans as errored when AWS requests fail ([#4672][])
136
+
137
+ ### Fixed
138
+
139
+ * Error Tracking: remove error tracking support on Ruby 2.6 ([#4665][])
140
+ * Profiling: Fix profiling scheduler reporting corner case during shutdown ([#4679][])
141
+ * Tracing: Fix: The `on_error` warning for HTTP instrumentations ([#4673][])
142
+
143
+ ## [2.16.0] - 2025-05-19
144
+
145
+ ### Added
146
+
147
+ * Core: Add new configuration precedence value `environment` ([#4610][])
148
+ * Core: Add Source Code Integration (SCI) tags in Telemetry app-started event and in each Remote Config request ([#4653][])
149
+ * Core: Tracing: ErrorTracking: Add automatic reporting of handled errors ([#4604][])
150
+ * AppSec: Integrations: Add session tracking and attacker fingerprinting to `devise` and `rails` ([#4644][], [#4625][])
151
+ * Profiling: Add support for Ruby 3.5.0-preview1 ([#4600][])
152
+ * Tracing: Add warning when `on_error` handler is not a `Proc` ([#4611][])
153
+ * Tracing: Integrations: Add option to serialize MongoDB command as JSON ([#4403][])
154
+ * Tracing: Integrations: Add baggage to `karafka` list of propagation styles ([#4614][])
155
+
156
+ ### Changed
157
+
158
+ * Tracing: Adjust trace sampling formula ([#4616][])
159
+ * Profiling: Replace `JSON.fast_generate` with `JSON.generate` ([#4602][])
160
+
161
+ ### Fixed
162
+
163
+ * Core: Fix Ruby warnings when providing a custom time provider ([#4613][])
164
+ * Core: Fix Telemetry configuration in agentless mode to respect the timeout specified for the Agent ([#4590][])
165
+ * Profiling: Fix profiler compatibility with ruby-head (3.5) ([#4656][])
166
+
167
+ ### Removed
168
+
169
+ * Core: Remove duplicated classes from Telemetry transport ([#4575][])
170
+
171
+ ## [2.15.0] - 2025-04-17
172
+
173
+ ### Added
174
+
175
+ * AppSec: Add auto-patching for `activerecord` with sql injection detection ([#4581][])
176
+ * Tracing: Add option for `opensearch` to set resource with relative path ([#4509][])
177
+
178
+ ### Changed
179
+
180
+ * AppSec: Update In-App WAF rules, processors, and scanners ([#4568][])
181
+
182
+ ### Fixed
183
+
184
+ * AppSec: Fix blocked requests not marked correctly when using custom redirect blocking action ([#4580][])
185
+ * AppSec: Fix UTF-8 unsafe payloads in InApp-WAF causing runtime exceptions ([#4573][])
186
+
187
+ ## [2.14.0] - 2025-04-04
188
+
189
+ ### Added
190
+
191
+ * Tracing: Add `karafka` instrumentation with 2.3.0 as the minimum supported version. ([#4147][])
192
+
193
+ ### Fixed
194
+
195
+ * Core: Tracing: default logger arguments for compatibility with previous dd-trace-rb versions ([#4558][])
196
+ * AppSec: Fix `Datadog::Kit::AppSec::Events` SDK methods to correctly handle given string key `usr.login`. ([#4552][])
197
+
198
+ ## [2.13.0] - 2025-04-02
199
+
200
+ ### Added
201
+
202
+ * Core: Add `DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED` experimental option to enable runtime ID collection for runtime metrics. ([#4473][])
203
+ * Tracing: Add support for W3C Baggage API along with automatic extraction and injection, and OpenTelemetry support. ([#4493][], [#4505][])
204
+ * Tracing: Add `DD_APM_TRACING_ENABLED` option to disable APM tracing while keeping other products traces. ([#4498][])
205
+ * Tracing: Add `DD_TRACE_NATIVE_SPAN_EVENTS` option to override span events serialization for agent-less environments. ([#4507][])
206
+ * AppSec: Add stack trace reporting for security events. ([#4526][])
207
+ * AppSec: Improve `devise` instrumentation to support latest Account Takeover (ATO) detection. ([#4433][])
208
+
209
+ ### Changed
210
+
211
+ * Core: Improve `DD_TAGS` configuration handling to be more consistent across Datadog libraries and Agent. ([#4530][])
212
+ * Tracing: Enable by default 128-bit trace ID logging so that trace IDs are consistent across logs and the Datadog UI. ([#4528][])
213
+
214
+ ### Fixed
215
+
216
+ * Core: Fix initialization when the library is partially loaded. ([#4498][])
217
+ * Tracing: Fix trace ID propagation by ensuring extraction of 16-character hex values from the `_dd.p.tid` tag in `x-datadog-tags` header. ([#4534][])
218
+ * Tracing: Profiling: Fix warnings printed by `ruby -w`. ([#4547][], [#4549][])
219
+
220
+ ## [2.12.2] - 2025-03-17
221
+
222
+ ### Fixed
223
+
224
+ * AppSec: Fix custom In-App WAF blocking response that was configured in the UI is now applied correctly ([#4497][])
225
+
226
+ ## [2.12.1] - 2025-03-05
227
+
228
+ ### Fixed
229
+
230
+ * AppSec: Fix `ArgumentError` from ActiveRecord for Ruby < 2.7 ([#4437][])
231
+
5
232
  ## [2.12.0] - 2025-02-27
6
233
 
7
234
  ### Added
@@ -3133,7 +3360,19 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1
3133
3360
  Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
3134
3361
 
3135
3362
 
3136
- [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v2.12.0...master
3363
+ [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v2.22.0...master
3364
+ [2.22.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.21.0...v2.22.0
3365
+ [2.21.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.20.0...v2.21.0
3366
+ [2.20.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.19.0...v2.20.0
3367
+ [2.19.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.18.0...v2.19.0
3368
+ [2.18.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.17.0...v2.18.0
3369
+ [2.17.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.16.0...v2.17.0
3370
+ [2.16.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.15.0...v2.16.0
3371
+ [2.15.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.14.0...v2.15.0
3372
+ [2.14.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.13.0...v2.14.0
3373
+ [2.13.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.12.2...v2.13.0
3374
+ [2.12.2]: https://github.com/DataDog/dd-trace-rb/compare/v2.12.1...v2.12.2
3375
+ [2.12.1]: https://github.com/DataDog/dd-trace-rb/compare/v2.12.0...v2.12.1
3137
3376
  [2.12.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.11.0...v2.12.0
3138
3377
  [2.11.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.10.0...v2.11.0
3139
3378
  [2.10.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.9.0...v2.10.0
@@ -4593,6 +4832,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
4593
4832
  [#4085]: https://github.com/DataDog/dd-trace-rb/issues/4085
4594
4833
  [#4137]: https://github.com/DataDog/dd-trace-rb/issues/4137
4595
4834
  [#4140]: https://github.com/DataDog/dd-trace-rb/issues/4140
4835
+ [#4147]: https://github.com/DataDog/dd-trace-rb/issues/4147
4596
4836
  [#4153]: https://github.com/DataDog/dd-trace-rb/issues/4153
4597
4837
  [#4161]: https://github.com/DataDog/dd-trace-rb/issues/4161
4598
4838
  [#4164]: https://github.com/DataDog/dd-trace-rb/issues/4164
@@ -4626,15 +4866,119 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
4626
4866
  [#4353]: https://github.com/DataDog/dd-trace-rb/issues/4353
4627
4867
  [#4360]: https://github.com/DataDog/dd-trace-rb/issues/4360
4628
4868
  [#4363]: https://github.com/DataDog/dd-trace-rb/issues/4363
4869
+ [#4366]: https://github.com/DataDog/dd-trace-rb/issues/4366
4629
4870
  [#4391]: https://github.com/DataDog/dd-trace-rb/issues/4391
4630
4871
  [#4398]: https://github.com/DataDog/dd-trace-rb/issues/4398
4631
4872
  [#4399]: https://github.com/DataDog/dd-trace-rb/issues/4399
4873
+ [#4401]: https://github.com/DataDog/dd-trace-rb/issues/4401
4874
+ [#4403]: https://github.com/DataDog/dd-trace-rb/issues/4403
4632
4875
  [#4406]: https://github.com/DataDog/dd-trace-rb/issues/4406
4633
4876
  [#4411]: https://github.com/DataDog/dd-trace-rb/issues/4411
4634
4877
  [#4422]: https://github.com/DataDog/dd-trace-rb/issues/4422
4635
4878
  [#4424]: https://github.com/DataDog/dd-trace-rb/issues/4424
4636
4879
  [#4425]: https://github.com/DataDog/dd-trace-rb/issues/4425
4637
4880
  [#4426]: https://github.com/DataDog/dd-trace-rb/issues/4426
4881
+ [#4433]: https://github.com/DataDog/dd-trace-rb/issues/4433
4882
+ [#4437]: https://github.com/DataDog/dd-trace-rb/issues/4437
4883
+ [#4455]: https://github.com/DataDog/dd-trace-rb/issues/4455
4884
+ [#4460]: https://github.com/DataDog/dd-trace-rb/issues/4460
4885
+ [#4473]: https://github.com/DataDog/dd-trace-rb/issues/4473
4886
+ [#4493]: https://github.com/DataDog/dd-trace-rb/issues/4493
4887
+ [#4497]: https://github.com/DataDog/dd-trace-rb/issues/4497
4888
+ [#4498]: https://github.com/DataDog/dd-trace-rb/issues/4498
4889
+ [#4505]: https://github.com/DataDog/dd-trace-rb/issues/4505
4890
+ [#4507]: https://github.com/DataDog/dd-trace-rb/issues/4507
4891
+ [#4509]: https://github.com/DataDog/dd-trace-rb/issues/4509
4892
+ [#4526]: https://github.com/DataDog/dd-trace-rb/issues/4526
4893
+ [#4528]: https://github.com/DataDog/dd-trace-rb/issues/4528
4894
+ [#4530]: https://github.com/DataDog/dd-trace-rb/issues/4530
4895
+ [#4534]: https://github.com/DataDog/dd-trace-rb/issues/4534
4896
+ [#4547]: https://github.com/DataDog/dd-trace-rb/issues/4547
4897
+ [#4549]: https://github.com/DataDog/dd-trace-rb/issues/4549
4898
+ [#4552]: https://github.com/DataDog/dd-trace-rb/issues/4552
4899
+ [#4558]: https://github.com/DataDog/dd-trace-rb/issues/4558
4900
+ [#4568]: https://github.com/DataDog/dd-trace-rb/issues/4568
4901
+ [#4573]: https://github.com/DataDog/dd-trace-rb/issues/4573
4902
+ [#4575]: https://github.com/DataDog/dd-trace-rb/issues/4575
4903
+ [#4577]: https://github.com/DataDog/dd-trace-rb/issues/4577
4904
+ [#4580]: https://github.com/DataDog/dd-trace-rb/issues/4580
4905
+ [#4581]: https://github.com/DataDog/dd-trace-rb/issues/4581
4906
+ [#4590]: https://github.com/DataDog/dd-trace-rb/issues/4590
4907
+ [#4600]: https://github.com/DataDog/dd-trace-rb/issues/4600
4908
+ [#4602]: https://github.com/DataDog/dd-trace-rb/issues/4602
4909
+ [#4604]: https://github.com/DataDog/dd-trace-rb/issues/4604
4910
+ [#4610]: https://github.com/DataDog/dd-trace-rb/issues/4610
4911
+ [#4611]: https://github.com/DataDog/dd-trace-rb/issues/4611
4912
+ [#4613]: https://github.com/DataDog/dd-trace-rb/issues/4613
4913
+ [#4614]: https://github.com/DataDog/dd-trace-rb/issues/4614
4914
+ [#4616]: https://github.com/DataDog/dd-trace-rb/issues/4616
4915
+ [#4625]: https://github.com/DataDog/dd-trace-rb/issues/4625
4916
+ [#4644]: https://github.com/DataDog/dd-trace-rb/issues/4644
4917
+ [#4651]: https://github.com/DataDog/dd-trace-rb/issues/4651
4918
+ [#4653]: https://github.com/DataDog/dd-trace-rb/issues/4653
4919
+ [#4656]: https://github.com/DataDog/dd-trace-rb/issues/4656
4920
+ [#4665]: https://github.com/DataDog/dd-trace-rb/issues/4665
4921
+ [#4668]: https://github.com/DataDog/dd-trace-rb/issues/4668
4922
+ [#4669]: https://github.com/DataDog/dd-trace-rb/issues/4669
4923
+ [#4672]: https://github.com/DataDog/dd-trace-rb/issues/4672
4924
+ [#4673]: https://github.com/DataDog/dd-trace-rb/issues/4673
4925
+ [#4678]: https://github.com/DataDog/dd-trace-rb/issues/4678
4926
+ [#4679]: https://github.com/DataDog/dd-trace-rb/issues/4679
4927
+ [#4681]: https://github.com/DataDog/dd-trace-rb/issues/4681
4928
+ [#4688]: https://github.com/DataDog/dd-trace-rb/issues/4688
4929
+ [#4693]: https://github.com/DataDog/dd-trace-rb/issues/4693
4930
+ [#4697]: https://github.com/DataDog/dd-trace-rb/issues/4697
4931
+ [#4699]: https://github.com/DataDog/dd-trace-rb/issues/4699
4932
+ [#4716]: https://github.com/DataDog/dd-trace-rb/issues/4716
4933
+ [#4718]: https://github.com/DataDog/dd-trace-rb/issues/4718
4934
+ [#4721]: https://github.com/DataDog/dd-trace-rb/issues/4721
4935
+ [#4728]: https://github.com/DataDog/dd-trace-rb/issues/4728
4936
+ [#4731]: https://github.com/DataDog/dd-trace-rb/issues/4731
4937
+ [#4743]: https://github.com/DataDog/dd-trace-rb/issues/4743
4938
+ [#4745]: https://github.com/DataDog/dd-trace-rb/issues/4745
4939
+ [#4756]: https://github.com/DataDog/dd-trace-rb/issues/4756
4940
+ [#4757]: https://github.com/DataDog/dd-trace-rb/issues/4757
4941
+ [#4771]: https://github.com/DataDog/dd-trace-rb/issues/4771
4942
+ [#4772]: https://github.com/DataDog/dd-trace-rb/issues/4772
4943
+ [#4776]: https://github.com/DataDog/dd-trace-rb/issues/4776
4944
+ [#4779]: https://github.com/DataDog/dd-trace-rb/issues/4779
4945
+ [#4783]: https://github.com/DataDog/dd-trace-rb/issues/4783
4946
+ [#4785]: https://github.com/DataDog/dd-trace-rb/issues/4785
4947
+ [#4786]: https://github.com/DataDog/dd-trace-rb/issues/4786
4948
+ [#4787]: https://github.com/DataDog/dd-trace-rb/issues/4787
4949
+ [#4793]: https://github.com/DataDog/dd-trace-rb/issues/4793
4950
+ [#4794]: https://github.com/DataDog/dd-trace-rb/issues/4794
4951
+ [#4802]: https://github.com/DataDog/dd-trace-rb/issues/4802
4952
+ [#4813]: https://github.com/DataDog/dd-trace-rb/issues/4813
4953
+ [#4814]: https://github.com/DataDog/dd-trace-rb/issues/4814
4954
+ [#4819]: https://github.com/DataDog/dd-trace-rb/issues/4819
4955
+ [#4831]: https://github.com/DataDog/dd-trace-rb/issues/4831
4956
+ [#4833]: https://github.com/DataDog/dd-trace-rb/issues/4833
4957
+ [#4838]: https://github.com/DataDog/dd-trace-rb/issues/4838
4958
+ [#4848]: https://github.com/DataDog/dd-trace-rb/issues/4848
4959
+ [#4851]: https://github.com/DataDog/dd-trace-rb/issues/4851
4960
+ [#4861]: https://github.com/DataDog/dd-trace-rb/issues/4861
4961
+ [#4862]: https://github.com/DataDog/dd-trace-rb/issues/4862
4962
+ [#4863]: https://github.com/DataDog/dd-trace-rb/issues/4863
4963
+ [#4864]: https://github.com/DataDog/dd-trace-rb/issues/4864
4964
+ [#4877]: https://github.com/DataDog/dd-trace-rb/issues/4877
4965
+ [#4884]: https://github.com/DataDog/dd-trace-rb/issues/4884
4966
+ [#4887]: https://github.com/DataDog/dd-trace-rb/issues/4887
4967
+ [#4893]: https://github.com/DataDog/dd-trace-rb/issues/4893
4968
+ [#4894]: https://github.com/DataDog/dd-trace-rb/issues/4894
4969
+ [#4900]: https://github.com/DataDog/dd-trace-rb/issues/4900
4970
+ [#4902]: https://github.com/DataDog/dd-trace-rb/issues/4902
4971
+ [#4906]: https://github.com/DataDog/dd-trace-rb/issues/4906
4972
+ [#4907]: https://github.com/DataDog/dd-trace-rb/issues/4907
4973
+ [#4908]: https://github.com/DataDog/dd-trace-rb/issues/4908
4974
+ [#4909]: https://github.com/DataDog/dd-trace-rb/issues/4909
4975
+ [#4913]: https://github.com/DataDog/dd-trace-rb/issues/4913
4976
+ [#4914]: https://github.com/DataDog/dd-trace-rb/issues/4914
4977
+ [#4918]: https://github.com/DataDog/dd-trace-rb/issues/4918
4978
+ [#4919]: https://github.com/DataDog/dd-trace-rb/issues/4919
4979
+ [#4957]: https://github.com/DataDog/dd-trace-rb/issues/4957
4980
+ [#4965]: https://github.com/DataDog/dd-trace-rb/issues/4965
4981
+ [#4969]: https://github.com/DataDog/dd-trace-rb/issues/4969
4638
4982
  [@AdrianLC]: https://github.com/AdrianLC
4639
4983
  [@Azure7111]: https://github.com/Azure7111
4640
4984
  [@BabyGroot]: https://github.com/BabyGroot
@@ -4693,6 +5037,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
4693
5037
  [@dorner]: https://github.com/dorner
4694
5038
  [@drcapulet]: https://github.com/drcapulet
4695
5039
  [@dudo]: https://github.com/dudo
5040
+ [@duration]: https://github.com/duration
4696
5041
  [@e1senh0rn]: https://github.com/e1senh0rn
4697
5042
  [@ecdemis123]: https://github.com/ecdemis123
4698
5043
  [@elliterate]: https://github.com/elliterate
@@ -4701,6 +5046,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
4701
5046
  [@erict-square]: https://github.com/erict-square
4702
5047
  [@errriclee]: https://github.com/errriclee
4703
5048
  [@evan-waters]: https://github.com/evan-waters
5049
+ [@exception]: https://github.com/exception
4704
5050
  [@fledman]: https://github.com/fledman
4705
5051
  [@frsantos]: https://github.com/frsantos
4706
5052
  [@fteem]: https://github.com/fteem
@@ -4758,6 +5104,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
4758
5104
  [@rahul342]: https://github.com/rahul342
4759
5105
  [@randy-girard]: https://github.com/randy-girard
4760
5106
  [@renchap]: https://github.com/renchap
5107
+ [@return]: https://github.com/return
4761
5108
  [@ricbartm]: https://github.com/ricbartm
4762
5109
  [@roccoblues]: https://github.com/roccoblues
4763
5110
  [@rqz13]: https://github.com/rqz13
data/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # Datadog Trace Client
2
2
 
3
3
  [![Gem](https://img.shields.io/gem/v/datadog)](https://rubygems.org/gems/datadog/)
4
- [![codecov](https://codecov.io/gh/DataDog/dd-trace-rb/branch/master/graph/badge.svg)](https://app.codecov.io/gh/DataDog/dd-trace-rb/branch/master)
5
4
  [![YARD documentation](https://img.shields.io/badge/YARD-documentation-blue)][api docs]
6
5
 
7
6
  ``datadog`` is Datadog's client library for Ruby. It includes a suite of tools which provide visibility into the performance and security of Ruby applications, to enable Ruby developers to identify bottlenecks and other issues.
@@ -0,0 +1,60 @@
1
+ # Libdatadog development
2
+
3
+ These instructions can quickly get outdated, so feel free to open an issue if they're not working (and/or ping @ivoanjo).
4
+
5
+ ## Using libdatadog builds from CI or GitHub
6
+
7
+ If you're developing inside docker/natively on Linux, you can use libdatadog builds from CI and GitHub.
8
+
9
+ Here's what to do:
10
+
11
+ 1. Create a folder for extracting libdatadog into based on your ruby platform (for instance inside the dd-trace-rb repo):
12
+
13
+ ```bash
14
+ export DD_RUBY_PLATFORM=`ruby -e 'puts Gem::Platform.local.to_s'`
15
+ echo "Current ruby platform: $DD_RUBY_PLATFORM"
16
+ mkdir -p my-libdatadog-build/$DD_RUBY_PLATFORM
17
+ ```
18
+
19
+ 2. Find a libdatadog build from CI or [GitHub releases](https://github.com/DataDog/libdatadog/releases). This should match the Ruby platform seen above.
20
+ 3. Extract the libdatadog build into the folder:
21
+
22
+ ```bash
23
+ # In this example the build is in my downloads; notice the use of strip-components to get the correct folder structure
24
+ tar zxvf ~/Downloads/libdatadog-x86_64-unknown-linux-gnu.tar.gz -C my-libdatadog-build/$DD_RUBY_PLATFORM/ --strip-components=1
25
+ # Here's how it should look after
26
+ ls my-libdatadog-build/$DD_RUBY_PLATFORM
27
+ bin cmake include lib LICENSE LICENSE-3rdparty.yml NOTICE
28
+ ```
29
+
30
+ 6. Tell Ruby where to find libdatadog: ```export LIBDATADOG_VENDOR_OVERRIDE=`pwd`/my-libdatadog-build/``` (Notice no platform + use of pwd for full path here)
31
+ 7. From dd-trace-rb, run `bundle exec rake clean compile`
32
+ 8. For incremental builds, usually `bundle exec rake compile` is faster and `clean` is not needed
33
+
34
+ If you additionally want to run the profiler test suite, also remember to `export DD_PROFILING_MACOS_TESTING=true` and re-run `rake clean compile`.
35
+
36
+ ## Native development on macOS
37
+
38
+ As of this writing (August 2025), the libdatadog builds on rubygems.org only support Linux.
39
+
40
+ We don't officially support using libdatadog for Ruby on other platforms yet, but it is possible to use it for local development on macOS.
41
+ (**Note that you don't need these instructions if you develop inside docker.**)
42
+
43
+ Here's how you can do so:
44
+
45
+ 1. [Install rust](https://www.rust-lang.org/tools/install)
46
+ 2. Install `cbindgen`: `cargo install cbindgen`
47
+ 3. Clone [libdatadog](https://github.com/datadog/libdatadog)
48
+ 4. Create a folder for building into based on your ruby platform:
49
+
50
+ ```bash
51
+ export DD_RUBY_PLATFORM=`ruby -e 'puts Gem::Platform.local.to_s'`
52
+ mkdir -p my-libdatadog-build/$DD_RUBY_PLATFORM
53
+ ```
54
+
55
+ 5. From inside of the libdatadog repo, build libdatadog into this folder: `./build-profiling-ffi.sh my-libdatadog-build/$DD_RUBY_PLATFORM`
56
+ 6. Tell Ruby where to find libdatadog: `export LIBDATADOG_VENDOR_OVERRIDE=/adjust/this/to/be/the/full/path/to/my-libdatadog-build/` (Notice no platform here)
57
+ 7. From dd-trace-rb, run `bundle exec rake clean compile`
58
+ 8. For incremental builds, usually `bundle exec rake compile` is faster and `clean` is not needed
59
+
60
+ If you additionally want to run the profiler test suite, also remember to `export DD_PROFILING_MACOS_TESTING=true` and re-run `rake clean compile`.