datadog 2.40.0 → 2.42.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 (170) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +120 -59
  3. data/ext/datadog_profiling_native_extension/NativeExtensionDesign.md +12 -24
  4. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +110 -61
  5. data/ext/datadog_profiling_native_extension/collectors_stack.c +13 -5
  6. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +141 -103
  7. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +7 -3
  8. data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +0 -10
  9. data/ext/datadog_profiling_native_extension/extconf.rb +52 -93
  10. data/ext/datadog_profiling_native_extension/heap_recorder.c +338 -255
  11. data/ext/datadog_profiling_native_extension/heap_recorder.h +46 -31
  12. data/ext/datadog_profiling_native_extension/native_extension_helpers.rb +3 -27
  13. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +526 -443
  14. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +15 -3
  15. data/ext/datadog_profiling_native_extension/profiling.c +2 -0
  16. data/ext/datadog_profiling_native_extension/ruby_helpers.c +1 -79
  17. data/ext/datadog_profiling_native_extension/ruby_helpers.h +0 -7
  18. data/ext/datadog_profiling_native_extension/stack_recorder.c +93 -61
  19. data/ext/datadog_profiling_native_extension/stack_recorder.h +12 -4
  20. data/ext/libdatadog_api/datadog_ruby_common.h +0 -10
  21. data/ext/libdatadog_api/di.c +10 -0
  22. data/ext/libdatadog_api/extconf.rb +3 -0
  23. data/ext/libdatadog_api/init.c +2 -0
  24. data/ext/libdatadog_api/otel_thread_context.c +232 -0
  25. data/ext/libdatadog_api/otel_thread_context.h +5 -0
  26. data/ext/libdatadog_api/trace_exporter.c +409 -71
  27. data/ext/libdatadog_extconf_helpers.rb +1 -1
  28. data/lib/datadog/ai_guard/api_client.rb +1 -1
  29. data/lib/datadog/ai_guard/evaluation/request.rb +8 -8
  30. data/lib/datadog/ai_guard/evaluation.rb +10 -3
  31. data/lib/datadog/ai_guard/ext.rb +1 -1
  32. data/lib/datadog/appsec/actions_handler/serializable_backtrace.rb +21 -42
  33. data/lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb +1 -1
  34. data/lib/datadog/appsec/api_security/endpoint_collection/rails_route_serializer.rb +1 -1
  35. data/lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb +1 -1
  36. data/lib/datadog/appsec/assets/blocked.html +1 -108
  37. data/lib/datadog/appsec/configuration.rb +2 -2
  38. data/lib/datadog/appsec/context.rb +1 -1
  39. data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +1 -1
  40. data/lib/datadog/appsec/contrib/aws_lambda/waf_addresses.rb +2 -2
  41. data/lib/datadog/appsec/contrib/devise/configuration.rb +1 -1
  42. data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +2 -2
  43. data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +2 -2
  44. data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +1 -1
  45. data/lib/datadog/appsec/contrib/rack/ext.rb +2 -2
  46. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +2 -2
  47. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +2 -2
  48. data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +2 -2
  49. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +2 -2
  50. data/lib/datadog/appsec/processor/rule_loader.rb +12 -12
  51. data/lib/datadog/appsec/response.rb +1 -1
  52. data/lib/datadog/appsec/route_normalizer/route_pattern.rb +3 -3
  53. data/lib/datadog/appsec/security_engine/engine.rb +3 -3
  54. data/lib/datadog/core/configuration/components.rb +3 -2
  55. data/lib/datadog/core/configuration/option_definition.rb +1 -1
  56. data/lib/datadog/core/configuration/options.rb +1 -1
  57. data/lib/datadog/core/crashtracking/component.rb +5 -1
  58. data/lib/datadog/core/diagnostics/environment_logger.rb +36 -1
  59. data/lib/datadog/core/metrics/helpers.rb +1 -1
  60. data/lib/datadog/core/metrics/options.rb +2 -2
  61. data/lib/datadog/core/process_discovery.rb +1 -1
  62. data/lib/datadog/core/remote/client.rb +1 -1
  63. data/lib/datadog/core/remote/configuration/repository.rb +2 -2
  64. data/lib/datadog/core/telemetry/configuration_value.rb +38 -0
  65. data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +3 -1
  66. data/lib/datadog/core/telemetry/event/app_endpoints_loaded.rb +1 -1
  67. data/lib/datadog/core/telemetry/event/app_started.rb +5 -24
  68. data/lib/datadog/core/telemetry/event/generate_metrics.rb +1 -1
  69. data/lib/datadog/core/telemetry/event/log.rb +2 -2
  70. data/lib/datadog/core/telemetry/metric.rb +2 -2
  71. data/lib/datadog/core/telemetry/request.rb +2 -2
  72. data/lib/datadog/core/transport/http.rb +1 -1
  73. data/lib/datadog/core/transport/transport.rb +1 -1
  74. data/lib/datadog/core/utils/at_fork_monkey_patch.rb +127 -43
  75. data/lib/datadog/data_streams/pathway_context.rb +20 -22
  76. data/lib/datadog/data_streams/processor.rb +45 -14
  77. data/lib/datadog/di/el/compiler.rb +23 -0
  78. data/lib/datadog/di/el/expression.rb +8 -5
  79. data/lib/datadog/di/instrumenter.rb +46 -5
  80. data/lib/datadog/di/logger.rb +2 -2
  81. data/lib/datadog/di/probe.rb +9 -1
  82. data/lib/datadog/di/probe_builder.rb +5 -4
  83. data/lib/datadog/di/probe_notification_builder.rb +3 -2
  84. data/lib/datadog/di/remote.rb +3 -3
  85. data/lib/datadog/di/serializer.rb +29 -4
  86. data/lib/datadog/error_tracking/component.rb +1 -1
  87. data/lib/datadog/kit/appsec/events/v2.rb +2 -2
  88. data/lib/datadog/open_feature/evaluation_engine.rb +29 -3
  89. data/lib/datadog/open_feature/exposures/batch_builder.rb +1 -1
  90. data/lib/datadog/open_feature/exposures/event.rb +15 -8
  91. data/lib/datadog/open_feature/ext.rb +19 -0
  92. data/lib/datadog/open_feature/flag_evaluation/aggregator.rb +236 -80
  93. data/lib/datadog/open_feature/flag_evaluation/writer.rb +179 -68
  94. data/lib/datadog/open_feature/hooks/flag_eval_evp_hook.rb +24 -21
  95. data/lib/datadog/open_feature/native_evaluator.rb +33 -6
  96. data/lib/datadog/open_feature/noop_evaluator.rb +5 -0
  97. data/lib/datadog/open_feature/provider.rb +11 -2
  98. data/lib/datadog/opentelemetry/sdk/propagator.rb +1 -1
  99. data/lib/datadog/opentelemetry/trace.rb +3 -0
  100. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +3 -0
  101. data/lib/datadog/profiling/collectors/info.rb +1 -1
  102. data/lib/datadog/profiling/collectors/thread_context.rb +0 -4
  103. data/lib/datadog/profiling/component.rb +8 -16
  104. data/lib/datadog/profiling/tasks/exec.rb +1 -1
  105. data/lib/datadog/symbol_database/extractor.rb +6 -6
  106. data/lib/datadog/tracing/configuration/dynamic/option.rb +4 -0
  107. data/lib/datadog/tracing/configuration/dynamic.rb +5 -3
  108. data/lib/datadog/tracing/contrib/action_cable/events.rb +1 -1
  109. data/lib/datadog/tracing/contrib/action_mailer/events.rb +1 -1
  110. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +2 -2
  111. data/lib/datadog/tracing/contrib/action_view/events.rb +1 -1
  112. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +1 -1
  113. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +1 -1
  114. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +1 -0
  115. data/lib/datadog/tracing/contrib/active_record/events.rb +1 -1
  116. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +2 -2
  117. data/lib/datadog/tracing/contrib/aws/ext.rb +1 -1
  118. data/lib/datadog/tracing/contrib/aws/services.rb +1 -1
  119. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +1 -1
  120. data/lib/datadog/tracing/contrib/ext.rb +3 -3
  121. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +1 -1
  122. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +1 -1
  123. data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +1 -1
  124. data/lib/datadog/tracing/contrib/kafka/events.rb +1 -1
  125. data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +1 -1
  126. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -1
  127. data/lib/datadog/tracing/contrib/opensearch/ext.rb +1 -1
  128. data/lib/datadog/tracing/contrib/opensearch/quantize.rb +1 -1
  129. data/lib/datadog/tracing/contrib/patchable.rb +1 -1
  130. data/lib/datadog/tracing/contrib/patcher.rb +1 -1
  131. data/lib/datadog/tracing/contrib/que/tracer.rb +1 -1
  132. data/lib/datadog/tracing/contrib/racecar/events.rb +1 -1
  133. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +1 -1
  134. data/lib/datadog/tracing/contrib/rack/header_tagging.rb +1 -1
  135. data/lib/datadog/tracing/contrib/rack/patcher.rb +1 -1
  136. data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +1 -1
  137. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +1 -1
  138. data/lib/datadog/tracing/contrib/redis/quantize.rb +36 -2
  139. data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +9 -3
  140. data/lib/datadog/tracing/contrib/sequel/utils.rb +1 -1
  141. data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +1 -1
  142. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +1 -1
  143. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +1 -1
  144. data/lib/datadog/tracing/contrib/utils/quantization/hash_formatter.rb +1 -1
  145. data/lib/datadog/tracing/contrib/waterdrop/distributed/propagation.rb +1 -1
  146. data/lib/datadog/tracing/correlation.rb +2 -2
  147. data/lib/datadog/tracing/diagnostics/environment_logger.rb +2 -2
  148. data/lib/datadog/tracing/distributed/baggage.rb +1 -3
  149. data/lib/datadog/tracing/distributed/datadog.rb +3 -3
  150. data/lib/datadog/tracing/distributed/propagation.rb +3 -0
  151. data/lib/datadog/tracing/distributed/trace_context.rb +14 -271
  152. data/lib/datadog/tracing/distributed/trace_state/datadog.rb +233 -0
  153. data/lib/datadog/tracing/distributed/trace_state/ext.rb +44 -0
  154. data/lib/datadog/tracing/distributed/trace_state/open_telemetry.rb +156 -0
  155. data/lib/datadog/tracing/distributed/trace_state.rb +121 -0
  156. data/lib/datadog/tracing/metadata/tagging.rb +1 -1
  157. data/lib/datadog/tracing/otel_thread_context.rb +30 -0
  158. data/lib/datadog/tracing/remote.rb +197 -29
  159. data/lib/datadog/tracing/sampling/rule_sampler.rb +2 -0
  160. data/lib/datadog/tracing/span.rb +1 -1
  161. data/lib/datadog/tracing/span_operation.rb +1 -1
  162. data/lib/datadog/tracing/trace_digest.rb +22 -4
  163. data/lib/datadog/tracing/trace_operation.rb +22 -10
  164. data/lib/datadog/tracing/tracer.rb +5 -5
  165. data/lib/datadog/tracing/transport/io/traces.rb +1 -1
  166. data/lib/datadog/tracing/transport/native.rb +78 -54
  167. data/lib/datadog/tracing/writer.rb +1 -1
  168. data/lib/datadog/version.rb +1 -1
  169. metadata +15 -8
  170. data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +0 -69
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4894d3cc2404bab418412c2a96b2f15c2337f6e31dc567c6fd8d1ceafd372230
4
- data.tar.gz: e31bdb882385e48f731b925496b75964a02e17c4eb9c7b4a858083740009954c
3
+ metadata.gz: dfc982d67dbb768eb43d510dd6322ee484bc0a0fdacf20deb40196aa13821e51
4
+ data.tar.gz: be416fd9f34cbdf7ead90fa03d273f1739e90008cb82b6a0d22d5f62f17e1660
5
5
  SHA512:
6
- metadata.gz: 488fc94df9bda0fd8485f42934a08660a342617602e61a0fb999cb337239f98f226fc51e021df954ab74af985a6abfa38cc0b17069c00b0541c5100e8c961810
7
- data.tar.gz: '0197b5995f7861ddae8677caa96d419c89e2b25bb702d3c05e99e594562771c2c3193d8e9cc367bde5ebbd3fbd78362f55ea25fb1c071442b01d37a22c8d631e'
6
+ metadata.gz: 80d39181feb3e02e4f022d06f0c6bab26e993f48521c2fb5e526d3b81a5b4a68e7069d92af90638700f2e0a0af24efbd0df63de311c7561cb02c1270d63cbaaa
7
+ data.tar.gz: 44932c7f87c3a52e1790b44ae2c4f13ae63006360a0846c240ec0b6ac3ffe4b1c98ff33426b19f27f51ce5105770ab263870601ebe5b33788381debd85a04b37
data/CHANGELOG.md CHANGED
@@ -2,53 +2,95 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [2.42.0] - 2026-08-31
6
+
7
+ ### Added
8
+
9
+ * Tracing: Add sampling probability compatibility with OTel-instrumented services ([#6111][])
10
+ * Dynamic Instrumentation: Honor organization- and environment-level remote enablement for Ruby services. ([#6234][])
11
+ * Dynamic Instrumentation: Add per-process runtime id for snapshots to distinguish process restarts within a container ([#6232][])
12
+ * Open Feature: OpenFeature provider sends the serial ID of the assigned split on exposure events ([#6220][])
13
+
14
+ ### Changed
15
+
16
+ * Profiling: Drop usage of MJIT headers for Ruby 2.6 to 3.1 ([#6135][])
17
+ * Profiling: Re-enable heap live size profiling for Ruby 4+ ([#6176][])
18
+ * Dynamic Instrumentation: Enforce process-wide rate limit across all probes ([#6043][])
19
+
20
+ ### Fixed
21
+
22
+ * Core: Ignore `SignalException` from crashtracker as unhandled exception errors ([#6219][])
23
+ * Tracing: Fix missing peer tags for database queries traced through `ActiveRecord` ([#6213][])
24
+ * Profiling: Fix bug in `sample_after_gc` leading to profiler stopping ([#6242][])
25
+ * Profiling: Improve stability of heap profiling by using `ObjectSpace::WeakMap` instead of `_id2ref` ([#6176][])
26
+ * Profiling: VM-internal objects are no longer sampled for heap profiling ([#6176][])
27
+
28
+ ## [2.41.0] - 2026-08-13
29
+
30
+ ### Added
31
+
32
+ * Tracing: Integrations: Add support for `redis-rb` 6.0/RESP3. ([#6142][])
33
+ * Tracing: Native trace export now supports structured span metadata. ([#6130][])
34
+
35
+ ### Changed
36
+
37
+ * AppSec: Native trace export now encodes supported structured span metadata values without Ruby MessagePack encoding. ([#6132][])
38
+ * Tracing: Native trace export now writes structured span metadata directly through libdatadog. ([#6133][])
39
+
40
+ ### Fixed
41
+
42
+ * Profiling: Fix a rare crash (`SIGSEGV`) in the profiler that could occur when sampling a thread during `Thread.new`. ([#6173][])
43
+ * Profiling: Fix possible crash in `sample_thread()` when `rb_id2str()` returns `Qfalse`. ([#6138][])
44
+ * Tracing: Prevent runtime configuration telemetry from being rejected when header tags or sampling rules are updated remotely. ([#6126][])
45
+
5
46
  ## [2.40.0] - 2026-08-04
6
47
 
7
- ### Added
8
-
9
- * Profiling: Add experimental profiling setting to show class/module names in stack frames. Fix crash in `rb_iseq_path()` caused by incorrect GC marking. ([#6024][])
10
- * Tracing: Add an experimental native (`libdatadog`-backed) trace transport, selectable via `tracing.native_transport` ([#5971][])
11
-
12
- ### Changed
13
-
14
- * Core: Deprecate `time_now_provider` setting for removal; it no longer does anything. Please remove it from your `Datadog.configure block`. The datadog gem always uses the real non-mocked time, even when the timecop gem monkey-patches `Time` ([#6010][])
15
-
16
- ### Fixed
17
-
18
- * AppSec: Fix standalone billing issues for partially flushed traces ([#6116][])
19
- * Dynamic Instrumentation: Limit dynamic instrumentation regular expression evaluation time to 500ms ([#5908][])
20
- * Profiling: Fix missing native filename for static Ruby binaries ([#6097][])
48
+ ### Added
49
+
50
+ * Profiling: Add experimental profiling setting to show class/module names in stack frames ([#6024][])
51
+ * Tracing: Add an experimental native (`libdatadog`-backed) trace transport, selectable via `tracing.native_transport` ([#5971][])
52
+
53
+ ### Changed
54
+
55
+ * Core: Deprecate `time_now_provider` setting for removal; it no longer does anything. Please remove it from your `Datadog.configure block`. The datadog gem always uses the real non-mocked time, even when the timecop gem monkey-patches `Time` ([#6010][])
56
+
57
+ ### Fixed
58
+
59
+ * AppSec: Fix standalone billing issues for partially flushed traces ([#6116][])
60
+ * Dynamic Instrumentation: Limit dynamic instrumentation regular expression evaluation time to 500ms ([#5908][])
61
+ * Profiling: Fix missing native filename for static Ruby binaries ([#6097][])
62
+ * Profiling: Fix crash in `rb_iseq_path()` caused by incorrect GC marking ([#6024][])
21
63
  * Tracing: Fix missing or zero Kafka producer and connection span tags like `kafka.message_count` and `kafka.request_size` in the `ruby-kafka` integration. ([#6104][])
22
64
 
23
65
  ## [2.39.0] - 2026-07-22
24
66
 
25
- ### Added
26
-
27
- * Tracing: Integrations: Add database name and host to Sequel spans and infer `peer.service` so datastore dependencies appear in the service map. ([#6072][])
28
-
29
- ### Fixed
30
-
31
- * AppSec: Fix error in `devise` contrib for non-standard Warden session serialization. ([#6064][])
32
- * Dynamic Instrumentation: Fix dynamic instrumentation line probes failing to install when dynamic instrumentation is enabled remotely after application startup. ([#6050][])
33
- * Profiling: Fix crash when trying to sample during GC compaction ([#6056][])
67
+ ### Added
68
+
69
+ * Tracing: Integrations: Add database name and host to Sequel spans and infer `peer.service` so datastore dependencies appear in the service map. ([#6072][])
70
+
71
+ ### Fixed
72
+
73
+ * AppSec: Fix error in `devise` contrib for non-standard Warden session serialization. ([#6064][])
74
+ * Dynamic Instrumentation: Fix dynamic instrumentation line probes failing to install when dynamic instrumentation is enabled remotely after application startup. ([#6050][])
75
+ * Profiling: Fix crash when trying to sample during GC compaction ([#6056][])
34
76
  * Tracing: Integrations: Fix an `ArgumentError` (and the resulting `Kafka::BufferOverflow`) raised by the Kafka producer integration on Ruby 2.5 and 2.6. ([#6060][])
35
77
 
36
78
  ## [2.38.0] - 2026-07-16
37
79
 
38
- ### Added
39
-
40
- * Dynamic Instrumentation: Log probes now support capture expressions as an alternative to capturing the full local/argument scope ([#5845][])
41
- * SSI: Add support for Ruby 4.0 runtime ([#5981][])
42
- * SSI: Add support for Bundler 4.0 and RubyGems 4.0 ([#5981][])
43
-
44
- ### Fixed
45
-
46
- * AppSec: Fix Rack-based and Rails request body analysis when body parsing fails ([#5993][])
47
- * Profiling: Add workaround for crash when collecting frame information ([#6014][])
48
- * Profiling: Fix left-over state impacting samples when profiler gets stopped and started again ([#5960][])
49
- * Profiling: Fix Ruby 4.0.6 support by bumping minimum version of `datadog-ruby_core_source` to 3.5.3 ([#6047][])
50
- * Profiling: Disable live heap size profiling on Ruby 4.0 due to incompatibility ([#6022][])
51
- * Profiling: Disallow heap profiling on Ruby 4.1+ ([#6023][])
80
+ ### Added
81
+
82
+ * Dynamic Instrumentation: Log probes now support capture expressions as an alternative to capturing the full local/argument scope ([#5845][])
83
+ * SSI: Add support for Ruby 4.0 runtime ([#5981][])
84
+ * SSI: Add support for Bundler 4.0 and RubyGems 4.0 ([#5981][])
85
+
86
+ ### Fixed
87
+
88
+ * AppSec: Fix Rack-based and Rails request body analysis when body parsing fails ([#5993][])
89
+ * Profiling: Add workaround for crash when collecting frame information ([#6014][])
90
+ * Profiling: Fix left-over state impacting samples when profiler gets stopped and started again ([#5960][])
91
+ * Profiling: Fix Ruby 4.0.6 support by bumping minimum version of `datadog-ruby_core_source` to 3.5.3 ([#6047][])
92
+ * Profiling: Disable live heap size profiling on Ruby 4.0 due to incompatibility ([#6022][])
93
+ * Profiling: Disallow heap profiling on Ruby 4.1+ ([#6023][])
52
94
  * Tracing: Fix `pg` instrumentation which raised `ArgumentError` when calling `exec_params`, `exec_prepared` without a `params` argument, or their `async_`/`sync_` variants ([#6020][])
53
95
 
54
96
  ## [2.37.0] - 2026-07-06
@@ -80,26 +122,26 @@
80
122
 
81
123
  ## [2.36.0] - 2026-06-24
82
124
 
83
- ### Added
84
-
85
- * Tracing: Add `DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT` to control trace extraction behavior with `continue`, `restart`, and `ignore` modes ([#5844][])
86
- * AppSec: Add `DD_APPSEC_BODY_PARSING_SIZE_LIMIT` to control processing of request and response body size; set to 0 to disable ([#5877][])
87
- * AppSec: Detect attacks from inline fragments in GraphQL queries ([#5916][])
88
- * Dynamic Instrumentation: Show lazily loaded classes in UI ([#5697][])
89
-
90
- ### Changed
91
-
92
- * Dynamic Instrumentation: Reduce peak memory usage during Symbol Database extraction ([#5883][])
93
- * Profiling: Reduce profiler overhead by up to 50% by skipping redundant samples for threads without the GVL ([#5777][])
94
- * Profiling: Remove overhead when cleaning up dead threads ([#5816][])
95
-
96
- ### Fixed
97
-
98
- * Tracing: Workaround Ruby VM bug causing segmentation faults inside CachingResolver ([#5719][], [#5890][])
99
- * Dynamic Instrumentation: Prevent uploading stale class definitions for apps using `remove_const`-then-redefine patterns ([#5872][])
100
- * Profiling: Fix GC profiling being incorrectly disabled on Ruby 3.2.10 and 3.2.11 ([#5894][])
101
- * Profiling: Fix over-counting of the first allocation sample at profiler startup ([#5881][])
102
- * Profiling: Fix rare profiler crash during shutdown in heap profiling cleanup ([#5920][])
125
+ ### Added
126
+
127
+ * Tracing: Add `DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT` to control trace extraction behavior with `continue`, `restart`, and `ignore` modes ([#5844][])
128
+ * AppSec: Add `DD_APPSEC_BODY_PARSING_SIZE_LIMIT` to control processing of request and response body size; set to 0 to disable ([#5877][])
129
+ * AppSec: Detect attacks from inline fragments in GraphQL queries ([#5916][])
130
+ * Dynamic Instrumentation: Show lazily loaded classes in UI ([#5697][])
131
+
132
+ ### Changed
133
+
134
+ * Dynamic Instrumentation: Reduce peak memory usage during Symbol Database extraction ([#5883][])
135
+ * Profiling: Reduce profiler overhead by up to 50% by skipping redundant samples for threads without the GVL ([#5777][])
136
+ * Profiling: Remove overhead when cleaning up dead threads ([#5816][])
137
+
138
+ ### Fixed
139
+
140
+ * Tracing: Workaround Ruby VM bug causing segmentation faults inside CachingResolver ([#5719][], [#5890][])
141
+ * Dynamic Instrumentation: Prevent uploading stale class definitions for apps using `remove_const`-then-redefine patterns ([#5872][])
142
+ * Profiling: Fix GC profiling being incorrectly disabled on Ruby 3.2.10 and 3.2.11 ([#5894][])
143
+ * Profiling: Fix over-counting of the first allocation sample at profiler startup ([#5881][])
144
+ * Profiling: Fix rare profiler crash during shutdown in heap profiling cleanup ([#5920][])
103
145
  * Core: Fix exception message formatting from native extensions ([#5857][])
104
146
 
105
147
  ## [2.35.0] - 2026-06-03
@@ -3734,7 +3776,9 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1
3734
3776
  Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
3735
3777
 
3736
3778
 
3737
- [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v2.40.0...master
3779
+ [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v2.42.0...master
3780
+ [2.42.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.41.0...v2.42.0
3781
+ [2.41.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.40.0...v2.41.0
3738
3782
  [2.40.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.39.0...v2.40.0
3739
3783
  [2.39.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.38.0...v2.39.0
3740
3784
  [2.38.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.37.0...v2.38.0
@@ -5540,6 +5584,7 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
5540
5584
  [#6022]: https://github.com/DataDog/dd-trace-rb/issues/6022
5541
5585
  [#6023]: https://github.com/DataDog/dd-trace-rb/issues/6023
5542
5586
  [#6024]: https://github.com/DataDog/dd-trace-rb/issues/6024
5587
+ [#6043]: https://github.com/DataDog/dd-trace-rb/issues/6043
5543
5588
  [#6047]: https://github.com/DataDog/dd-trace-rb/issues/6047
5544
5589
  [#6050]: https://github.com/DataDog/dd-trace-rb/issues/6050
5545
5590
  [#6056]: https://github.com/DataDog/dd-trace-rb/issues/6056
@@ -5548,7 +5593,23 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
5548
5593
  [#6072]: https://github.com/DataDog/dd-trace-rb/issues/6072
5549
5594
  [#6097]: https://github.com/DataDog/dd-trace-rb/issues/6097
5550
5595
  [#6104]: https://github.com/DataDog/dd-trace-rb/issues/6104
5596
+ [#6111]: https://github.com/DataDog/dd-trace-rb/issues/6111
5551
5597
  [#6116]: https://github.com/DataDog/dd-trace-rb/issues/6116
5598
+ [#6126]: https://github.com/DataDog/dd-trace-rb/issues/6126
5599
+ [#6130]: https://github.com/DataDog/dd-trace-rb/issues/6130
5600
+ [#6132]: https://github.com/DataDog/dd-trace-rb/issues/6132
5601
+ [#6133]: https://github.com/DataDog/dd-trace-rb/issues/6133
5602
+ [#6135]: https://github.com/DataDog/dd-trace-rb/issues/6135
5603
+ [#6138]: https://github.com/DataDog/dd-trace-rb/issues/6138
5604
+ [#6142]: https://github.com/DataDog/dd-trace-rb/issues/6142
5605
+ [#6173]: https://github.com/DataDog/dd-trace-rb/issues/6173
5606
+ [#6176]: https://github.com/DataDog/dd-trace-rb/issues/6176
5607
+ [#6213]: https://github.com/DataDog/dd-trace-rb/issues/6213
5608
+ [#6219]: https://github.com/DataDog/dd-trace-rb/issues/6219
5609
+ [#6220]: https://github.com/DataDog/dd-trace-rb/issues/6220
5610
+ [#6232]: https://github.com/DataDog/dd-trace-rb/issues/6232
5611
+ [#6234]: https://github.com/DataDog/dd-trace-rb/issues/6234
5612
+ [#6242]: https://github.com/DataDog/dd-trace-rb/issues/6242
5552
5613
  [@AdrianLC]: https://github.com/AdrianLC
5553
5614
  [@Azure7111]: https://github.com/Azure7111
5554
5615
  [@BabyGroot]: https://github.com/BabyGroot
@@ -5704,4 +5765,4 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
5704
5765
  [@y-yagi]: https://github.com/y-yagi
5705
5766
  [@yujideveloper]: https://github.com/yujideveloper
5706
5767
  [@yukimurasawa]: https://github.com/yukimurasawa
5707
- [@zachmccormick]: https://github.com/zachmccormick
5768
+ [@zachmccormick]: https://github.com/zachmccormick
@@ -65,38 +65,26 @@ Non-exhaustive list of APIs that cause exceptions to be raised:
65
65
  To implement some of the features below, we sometimes require access to private Ruby header files (that describe VM
66
66
  internal types, structures and functions).
67
67
 
68
- Because these private header files are not included in regular Ruby installations, we have two different workarounds:
69
-
70
- 1. for Ruby versions 2.6 to 3.2 we make use use the Ruby private MJIT header
71
- 2. for Ruby versions < 2.6 and > 3.2 we make use of the `datadog-ruby_core_source` gem
68
+ Because these private header files are not included in regular Ruby installations, we make use of the
69
+ [`datadog-ruby_core_source`](https://github.com/DataDog/datadog-ruby_core_source) gem, which contains almost no code
70
+ of its own; instead, it just contains per-Ruby-version folders with the private VM headers (`.h`) files for that
71
+ version. Thus, even though a regular Ruby installation does not include these files, we can access the copy inside
72
+ this gem.
72
73
 
73
74
  Functions which make use of these headers are defined in the <private_vm_api_acccess.c> file.
74
75
 
75
- There is currently no way for disabling usage of the private MJIT header for Ruby 2.6 to 3.2.
76
-
77
76
  **Important Note**: Our medium/long-term plan is to stop relying on all private Ruby headers, and instead request and
78
77
  contribute upstream changes so that they become official public VM APIs.
79
78
 
80
- ### Approach 1: Using the Ruby private MJIT header
81
-
82
- Ruby versions 2.6 to 3.2 shipped a JIT compiler called MJIT. This compiler does not directly generate machine code;
83
- instead it generates C code and uses the system C compiler to turn it into machine code.
84
-
85
- The generated C code `#include`s a private header -- which we call "the MJIT header".
86
- The MJIT header gets shipped with all MJIT-enabled Rubies and includes the layout of many internal VM structures;
87
- and of course the intention is that it is only used by the Ruby MJIT compiler.
88
-
89
- This header is placed inside the `include/` directory in a Ruby installation, and is named for that specific Ruby
90
- version. e.g. `rb_mjit_min_header-2.7.4.h`.
91
-
92
- This header was removed in Ruby 3.3.
93
-
94
- ### Approach 2: Using the `datadog-ruby_core_source` gem
79
+ ### Historical note: the Ruby private MJIT header
95
80
 
96
- The [`datadog-ruby_core_source`](https://github.com/DataDog/datadog-ruby_core_source) contains almost no code;
97
- instead, it just contains per-Ruby-version folders with the private VM headers (`.h`) files for that version.
81
+ Ruby versions 2.6 to 3.2 shipped a JIT compiler called MJIT. This compiler did not directly generate machine code;
82
+ instead it generated C code and used the system C compiler to turn it into machine code.
98
83
 
99
- Thus, even though a regular Ruby installation does not include these files, we can access the copy inside this gem.
84
+ The generated C code `#include`d a private header -- which we called "the MJIT header". In the past we used to
85
+ rely on it for Ruby versions 2.6 to 3.2.
86
+ This header was removed in Ruby 3.3, and we have since moved all supported Ruby versions over to using the
87
+ `datadog-ruby_core_source` gem instead.
100
88
 
101
89
  ## Feature: Getting thread CPU-time clock_ids
102
90