Skip to content

Releases: DataDog/dd-trace-rb

2.41.0

Choose a tag to compare

@eregon eregon released this 13 Aug 12:06
a36bba3

Added

  • Tracing: Integrations: Add support for redis-rb 6.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 during Thread.new. (#6173)
  • Profiling: Fix possible crash in sample_thread() when rb_id2str() returns Qfalse. (#6138)
  • Tracing: Prevent runtime configuration telemetry from being rejected when header tags or sampling rules are updated remotely. (#6126)

2.40.0

Choose a tag to compare

@Strech Strech released this 04 Aug 10:36
5d50cc4

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 via tracing.native_transport (#5971)

Changed

  • 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)

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_count and kafka.request_size in the ruby-kafka integration. (#6104)

2.39.0

Choose a tag to compare

@vpellan vpellan released this 22 Jul 11:25
119daea

Added

  • Tracing: Integrations: Add database name and host to Sequel spans and infer peer.service so datastore dependencies appear in the service map. (#6072)

Fixed

  • AppSec: Fix error in devise contrib 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 resulting Kafka::BufferOverflow) raised by the Kafka producer integration on Ruby 2.5 and 2.6. (#6060)

2.38.0

Choose a tag to compare

@eregon eregon released this 16 Jul 09:51
48cf202

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_source to 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 pg instrumentation which raised ArgumentError when calling exec_params, exec_prepared without a params argument, or their async_/sync_ variants (#6020)

2.37.0

Choose a tag to compare

@Strech Strech released this 06 Jul 13:41
161ea80

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_ENABLED or restarting the application. Setting DD_DYNAMIC_INSTRUMENTATION_ENABLED=false explicitly 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_SITE environment 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 SIGSEGV crash 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

Choose a tag to compare

@TonyCTHsu TonyCTHsu released this 24 Jun 14:11
0aa2ab6

Added

  • Tracing: Add DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT to control trace extraction behavior with continue, restart, and ignore modes (#5844)
  • AppSec: Add DD_APPSEC_BODY_PARSING_SIZE_LIMIT to 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

Choose a tag to compare

@Strech Strech released this 03 Jun 10:27
4a3a8ed

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_service SQL 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_SERVICE constant removed in v2.34.0 (#5830)

Removed

  • Profiling: Deprecate the profiling.advanced.timeline_enabled setting for removal; it no longer does anything. Please remove it from Datadog.configure and do not set DD_PROFILING_TIMELINE_ENABLED (#5750)

2.34.0

Choose a tag to compare

@Strech Strech released this 27 May 17:52
c13657d

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 standard OTEL_EXPORTER_OTLP_* settings (#5446)

Fixed

  • Core: Fix Remote configuration TransportError messages removing wrapper response object memory addresses (#5762)
  • Core: Fix TypeError from Process.spawn when 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_depth so snapshots respect the configured nesting limit exactly (#5753)
  • Dynamic Instrumentation: Improve line probes to match sourceFile case-insensitively and support Windows-style backslashes for correct installation (#5754)

2.33.0

Choose a tag to compare

@Strech Strech released this 13 May 09:52
ee26dc1

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_HOSTNAME to set trace hostname and OTel host.name when DD_TRACE_REPORT_HOSTNAME is enabled (#5705)

Changed

  • Core: Collect all threads in crash reports to provide full thread context during crashes (#5724)
  • Core: Update libdatadog dependency to version 33.0.0 (#5723)

2.32.0

Choose a tag to compare

@marcotc marcotc released this 08 May 07:53
3fe084a

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 tracestate and traceparent propagation headers and remove whitespace around list members. (#5674)
  • Tracing: Limit extracted baggage header parsing to 64 items and 8192 bytes. (#5672)

Fixed

  • Tracing: Enforce x-datadog-tags propagation header size limits by byte size. (#5687)
  • Tracing: Return empty baggage on invalid UTF-8 baggage extraction (#5689)