Releases: DataDog/dd-trace-rb
Release list
2.41.0
Added
- Tracing: Integrations: Add support for
redis-rb6.0/RESP3. (#6142) - Tracing: Native trace export now supports structured span metadata. (#6130)
Changed
- AppSec: Native trace export now encodes supported structured span metadata values without Ruby MessagePack encoding. (#6132)
- Tracing: Native trace export now writes structured span metadata directly through libdatadog. (#6133)
Fixed
- Profiling: Fix a rare crash (
SIGSEGV) in the profiler that could occur when sampling a thread duringThread.new. (#6173) - Profiling: Fix possible crash in
sample_thread()whenrb_id2str()returnsQfalse. (#6138) - Tracing: Prevent runtime configuration telemetry from being rejected when header tags or sampling rules are updated remotely. (#6126)
2.40.0
Added
- Profiling: Add experimental profiling setting to show class/module names in stack frames (#6024)
- Tracing: Add an experimental native (
libdatadog-backed) trace transport, selectable viatracing.native_transport(#5971)
Changed
- Core: Deprecate
time_now_providersetting for removal; it no longer does anything. Please remove it from yourDatadog.configure block. The datadog gem always uses the real non-mocked time, even when the timecop gem monkey-patchesTime(#6010)
Fixed
- AppSec: Fix standalone billing issues for partially flushed traces (#6116)
- Dynamic Instrumentation: Limit dynamic instrumentation regular expression evaluation time to 500ms (#5908)
- Profiling: Fix missing native filename for static Ruby binaries (#6097)
- Profiling: Fix crash in
rb_iseq_path()caused by incorrect GC marking (#6024) - Tracing: Fix missing or zero Kafka producer and connection span tags like
kafka.message_countandkafka.request_sizein theruby-kafkaintegration. (#6104)
2.39.0
Added
- Tracing: Integrations: Add database name and host to Sequel spans and infer
peer.serviceso datastore dependencies appear in the service map. (#6072)
Fixed
- AppSec: Fix error in
devisecontrib for non-standard Warden session serialization. (#6064) - Dynamic Instrumentation: Fix dynamic instrumentation line probes failing to install when dynamic instrumentation is enabled remotely after application startup. (#6050)
- Profiling: Fix crash when trying to sample during GC compaction (#6056)
- Tracing: Integrations: Fix an
ArgumentError(and the resultingKafka::BufferOverflow) raised by the Kafka producer integration on Ruby 2.5 and 2.6. (#6060)
2.38.0
Added
- Dynamic Instrumentation: Log probes now support capture expressions as an alternative to capturing the full local/argument scope (#5845)
- SSI: Add support for Ruby 4.0 runtime (#5981)
- SSI: Add support for Bundler 4.0 and RubyGems 4.0 (#5981)
Fixed
- AppSec: Fix Rack-based and Rails request body analysis when body parsing fails (#5993)
- Profiling: Add workaround for crash when collecting frame information (#6014)
- Profiling: Fix left-over state impacting samples when profiler gets stopped and started again (#5960)
- Profiling: Fix Ruby 4.0.6 support by bumping minimum version of
datadog-ruby_core_sourceto 3.5.3 (#6047) - Profiling: Disable live heap size profiling on Ruby 4.0 due to incompatibility (#6022)
- Profiling: Disallow heap profiling on Ruby 4.1+ (#6023)
- Tracing: Fix
pginstrumentation which raisedArgumentErrorwhen callingexec_params,exec_preparedwithout aparamsargument, or theirasync_/sync_variants (#6020)
2.37.0
Highlights
Dynamic Instrumentation can now be enabled directly from the Datadog UI without restarting your application, and the Symbol Database is automatically enabled when DI is active.
AppSec adds signup event tracking and normalized HTTP routes for API Security Testing, along with multiple fixes to improve schema extraction, WAF analysis, and remote configuration stability.
We’ve also reduced profiler overhead and fixed a potential crash when using experimental heap profiling on Ruby 4.0.
Added
- AppSec: Add sign-up event tracking to
Datadog::Kit::AppSec::Events::V2(#5973) - AppSec: Integrations: Add normalized HTTP route for API Security Testing (#5834)
- Dynamic Instrumentation: DI can now be enabled from the Datadog UI without setting
DD_DYNAMIC_INSTRUMENTATION_ENABLEDor restarting the application. SettingDD_DYNAMIC_INSTRUMENTATION_ENABLED=falseexplicitly still disables it and blocks UI-driven enablement (#5525)
Changed
- Profiling: Reduce profiler overhead by sampling profiler-internal threads only once per minute (#5955)
- Dynamic Instrumentation: Reject method probes that target
Kernel#lambda, which cannot be safely instrumented (#5954) - Dynamic Instrumentation: Reject method probes that target classes or modules in the Datadog namespace (#5907)
- Dynamic Instrumentation: Enable Symbol Database by default when Dynamic Instrumentation is enabled (#5828)
Fixed
- AppSec: AI Guard: Fix endpoint configuration via
DD_SITEenvironment variable (#5940) - AppSec: Fix API Security schema extraction timeout and telemetry (#5975)
- AppSec: Fix remote configuration errors when the ruleset name changes (#5970)
- AppSec: Integrations: Add configurable size limit for downstream HTTP request and response body analysis (#5990)
- AppSec: Integrations: Fix WAF analysis for requests with cached or parsed bodies in Rack and Sinatra (#5991)
- AppSec: Integrations: Fix an exception for unauthorized requests when using Devise with Rails. (#5987)
- Profiling: Fix a
SIGSEGVcrash that could happen with experimental heap profiling enabled on Ruby 4.0 (#5938) (@navidemad) - Dynamic Instrumentation: Normalize Rack CGI header prefix (
HTTP_<HEADER>) in redactor so snapshot captures redact sensitive headers like their bare names (#5911) - Dynamic Instrumentation: Symbol Database and DI background threads no longer stop when application code raises a non-StandardError during introspection (#5945)
2.36.0
Added
- Tracing: Add
DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACTto control trace extraction behavior withcontinue,restart, andignoremodes (#5844) - AppSec: Add
DD_APPSEC_BODY_PARSING_SIZE_LIMITto control processing of request and response body size; set to 0 to disable (#5877) - AppSec: Detect attacks from inline fragments in GraphQL queries (#5916)
- Dynamic Instrumentation: Show lazily loaded classes in UI (#5697)
Changed
- Dynamic Instrumentation: Reduce peak memory usage during Symbol Database extraction (#5883)
- Profiling: Reduce profiler overhead by up to 50% by skipping redundant samples for threads without the GVL (#5777)
- Profiling: Remove overhead when cleaning up dead threads (#5816)
Fixed
- Tracing: Workaround Ruby VM bug causing segmentation faults inside CachingResolver (#5719, #5890)
- Dynamic Instrumentation: Prevent uploading stale class definitions for apps using
remove_const-then-redefine patterns (#5872) - Profiling: Fix GC profiling being incorrectly disabled on Ruby 3.2.10 and 3.2.11 (#5894)
- Profiling: Fix over-counting of the first allocation sample at profiler startup (#5881)
- Profiling: Fix rare profiler crash during shutdown in heap profiling cleanup (#5920)
- Core: Fix exception message formatting from native extensions (#5857)
2.35.0
Highlights
This release improves telemetry quality, Rails AppSec performance, and upgrade compatibility. It adds dynamic_service SQL comment propagation, excludes Datadog-generated traffic from application metrics, speeds up Rails route extraction, restores a tracing compatibility constant, and deprecates profiling.advanced.timeline_enabled profiling setting.
Added
- Tracing: Add
dynamic_serviceSQL comment propagation mode for Database Monitoring (#5812) - Tracing: Prevent Datadog-generated traffic from interfering with application metrics (#5811)
Changed
- AppSec: Improve route extraction performance for Rails applications (#5836)
Fixed
- Tracing: Restore
Datadog::Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICEconstant removed in v2.34.0 (#5830)
Removed
- Profiling: Deprecate the
profiling.advanced.timeline_enabledsetting for removal; it no longer does anything. Please remove it fromDatadog.configureand do not setDD_PROFILING_TIMELINE_ENABLED(#5750)
2.34.0
Highlights
This release adds opt-in Symbol Database uploads for Dynamic Instrumentation, allowing Ruby services to populate Live Debugger autocomplete when creating probes. OpenTelemetry logs can now be exported over OTLP using DD_LOGS_OTEL_ENABLED=true and standard OTEL_EXPORTER_OTLP_* settings. Dynamic Instrumentation background symbol extraction now throttles CPU usage to reduce request latency impact under load. AppSec initialization failures no longer crash host applications, and this release includes additional fixes for remote configuration errors, Process.spawn, and probe behavior.
Added
- Dynamic Instrumentation: Enable opt-in Symbol Database upload so Ruby services populate Live Debugger UI autocomplete when creating probes (#5717)
- Open Telemetry: Add OpenTelemetry logs support with OTLP export. Enable using
DD_LOGS_OTEL_ENABLED=true; supports standardOTEL_EXPORTER_OTLP_*settings (#5446)
Fixed
- Core: Fix Remote configuration
TransportErrormessages removing wrapper response object memory addresses (#5762) - Core: Fix
TypeErrorfromProcess.spawnwhen passing an environment Hash (#5773, #5634) - AppSec: Prevent host application crashes when AppSec fails to initialize (#5768)
- Dynamic Instrumentation: Fix off-by-one in
max_capture_depthso snapshots respect the configured nesting limit exactly (#5753) - Dynamic Instrumentation: Improve line probes to match
sourceFilecase-insensitively and support Windows-style backslashes for correct installation (#5754)
2.33.0
Highlights
This release expands AppSec and serverless support. It adds AWS Lambda integration and ensures the client IP is always collected when AI Guard is enabled.
Tracing now includes inferred proxy spans for services behind AWS Gateway. It also adds support for DD_HOSTNAME, which controls trace hostnames and the OpenTelemetry host.name value when hostname reporting is enabled.
We’ve also enhanced crash reports to include all threads for better debugging context.
Added
- AI Guard: Ensure client IP is always collected when AI Guard is enabled (#5677)
- AppSec: Add support for AWS Lambda (#5663)
- Tracing: Add inferred proxy spans for services behind AWS Gateway (#5681)
- Open Telemetry: Add support for
DD_HOSTNAMEto set trace hostname and OTelhost.namewhenDD_TRACE_REPORT_HOSTNAMEis enabled (#5705)
Changed
2.32.0
Highlights
This release adds a Profiling metric for time spent waiting for the GVL, expands Live Debugger line probe coverage to third-party and Ruby standard library code loaded before the Datadog gem, and adds OpenFeature flag evaluation metrics through OpenTelemetry.
We’ve also strengthened trace propagation with stricter parsing and size limits to improve reliability and standards compliance.
Added
- Open Feature: Add flag evaluation metrics (
feature_flag.evaluations) via OpenTelemetry for OpenFeature provider. (#5599) - Profiling: Add metric for total time spent waiting for the GVL. (#5569)
- Dynamic Instrumentation: Live Debugger line probes can now target third-party and Ruby standard library code loaded before datadog gem is loaded. (#5501)
Changed
- Profiling: Print failure info when native extension setup fails (#5657)
- Tracing: Add parsing limits to
tracestateandtraceparentpropagation headers and remove whitespace around list members. (#5674) - Tracing: Limit extracted baggage header parsing to 64 items and 8192 bytes. (#5672)