Skip to content

Releases: DataDog/dd-trace-php

0.94.0

21 Nov 09:23
dc23b0c
Compare
Choose a tag to compare

⛔ This release has a bug with the profiler where it produces profiles even if it's been configured to be disabled. A fix was released with version 0.94.1 and we encourage you to upgrade in case you have the profiler installed but disabled.

This release adds support to OpenTelemetry so that you can use the OpenTelemetry API to generate Datadog spans. This is off by default. Enable it with the environment variable DD_TRACE_OTEL_ENABLED=1 or INI setting datadog.trace.otel_enabled=1. Please, refer to the documentation to get started. Also, the tracer now generates 128 bits trace ids by default, in an effort to match OpenTelemetry standards.

Tracer

Added

  • Set _dd.base_service when overriding service name for a span #2275
  • OpenTelemetry API #2332
  • Add tracing for curl_multi_exec() #2347
  • CakePHP http.route implementation #2360

Changed

  • Enable 128-bit trace ID generation by default #2358, #2368
  • Respect DD_LOGS_INJECTION default value #2365
  • Completely avoid instrumenting the PSR NullLogger #2367
  • Inject the _dd.dbm_trace_injected tag only when full propagation is enabled #2346
  • Retain tracestate from tracecontext if extracted at all #2359

Fixed

  • Handle extra arguments for internal overrideArgs #2348
  • Fix possible double-free with hooks on internal methods inherited by user classes #2372
  • Fix crash with functions with no run_time_cache yet #2373
  • Workaround php bug #81634 in PHP 8.0-8.1.0 #2353
  • Fix PHP5: The Magento Integration is not part of PHP5 #2363
  • Fix orphans removal when 128-bit is enabled #2366
  • Use _dd.agent_psr instead of _dd.rule_psr for agent sampling #2370

Internal changes

  • Add xfail for Zend/tests/stack_limit/stack_limit_013.phpt on PHP 8.3 #2371

Profiling

Added

  • Add idle phases to timeline #2343

Fixed

  • perf: increase allocation sampling distance #2350, #2364

Internal changes

  • add DD_PROFILING_WALLTIME_ENABLED for testing #2316

0.93.2

13 Nov 13:12
Compare
Choose a tag to compare

Tracer

This release fixes a bug in the PDO integration (cf #2351). Please do not use previous 0.93.x versions

Fixed

  • [PDO] injectDBIntegration should be public. #2351

0.93.1

31 Oct 17:46
db7c775
Compare
Choose a tag to compare

⛔ This release contains a bug when using PDO (cf #2351).
Please use 0.93.2 instead

Tracer

Fixed

  • Reset distributed context on request init #2340. Fixes a bug introduced in 0.93.0

0.93.0

30 Oct 11:07
93664fd
Compare
Choose a tag to compare

⛔ This release contains a bug where some spans would report to previous traces and an issue with the PDO integration.
Please use 0.93.2 instead

This release adds support for PHP 8.3 for the tracer and the profiler. Please be aware that we are currently building against PHP 8.3.0 RC3.

Tracer

Added

  • Add Magento 2 Integration #2274
  • Support for PHP 8.3 #2098, #2282
  • Add a configuration flag to disable laravel queue distributed tracing #2304
  • Laminas RESTful methods handling #2322
  • Expand arrays in meta and metrics into nested-tag format #2302, #2333
  • Report extensions used in telemetry #2295

Changed

  • Redis Span Removal and Priority Sampling Orphans Cleanup #2306
  • Subclass SpanData with RootSpanData #2309
  • Refactor tightly coupled extraction state #2314

Fixed

  • Propagate env to telemetry #2313
  • Fix ZAI config handling for .htaccess with php-fpm #2298
  • Explicitly drop dd.p.dm if provided in propagated tags when the incoming sampling priority is reject #2310
  • Strictly validate dd.p.tid #2303
  • Fix PHP 5: The Drupal integration is not part of PHP 5 #2326
  • Avoid %.*s in places where longer strings are used #2330
  • Respect service mapping when propagating for DBM #2321
  • Specify the odbc driver in db.system and exclude the Ingres driver from DBM #2334
  • Fix daemonization of sidecar closing stderr properly DataDog/libdatadog#271

Profiling

Added

Fixed

  • neighboring extension handling in gc_mem_caches() #2297
  • panic after shutdown of forked child when USE_ZEND_ALLOC=0 #2301
  • fix typo in info log message #2307
  • sampling distance in exception profiling #2323
  • reuse thread RNG and poisson sampler #2320

Internal changes

  • fix reliability environment deployment #2289
  • upgrade to libdatadog v5 #2299
  • add memory benchmark #2319
  • fix flaky exception correctness test #2331

Application Security Management (0.14.3)

Fixed

0.92.2

06 Oct 15:46
d1546b6
Compare
Choose a tag to compare

Application Security Management (0.14.2)

Fixed

0.92.1

02 Oct 13:17
548306b
Compare
Choose a tag to compare

Tracer

Fixed

  • Handle UnwindExit in sandbox error reporting #2288
  • Add a safeguard nullcheck for the sidecar into telemetry reporting #2293

Profiling

Fixed

  • Do not leak module entry on purpose #2291
  • Fix allocation profiling shutdown with USE_ZEND_ALLOC=0 crashing #2294

Application Security Management (0.14.1)

Fixed

0.92.0

26 Sep 17:35
14ec354
Compare
Choose a tag to compare

This release adds experimental exception profiling to the profiler. This is off by default. Enable it with the environment variable DD_PROFILING_EXPERIMENTAL_EXCEPTION_ENABLED=1 or INI setting datadog.profiling.experimental_exception_enabled=1.

In Application Security Management, this release introduces the latest version of the WAF v1.14.0 and the latest ASM ruleset v1.8.0, as well as a fix to ensure runtime IDs reported by the remote configuration client are always valid and consistent with those reported by the Tracer.

Tracer

Added

  • Add Drupal Integration #2188
  • Implement sidecar tracing #2234
    • This functionality is currently experimental and guarded behind a configuration option DD_TRACE_SIDECAR_TRACE_SENDER=1 or INI setting datadog.trace.sidecar_trace_sender=1. It replaces the sending of traces through a dedicated thread.

Fixed

  • Do not emit a deprecated diagnostic for DD_LOGS_INJECTION #2253
  • Set peer.service as dddbs when available #2260
  • Fix toggling datadog.trace.enabled with perdir configuration #2269
  • Enable auto flush for artisan commands #2270

Internal changes

  • Keep doctrine/dbal to major version 2 in symfony 5.2 tests #2254
  • docs: Explain minimum and nice-to-have from LLVM #2264

Profiling

Added

  • Add exception profiling #2197, #2262
  • Do not disable allocation profiling on fixed PHP versions with active JIT #2246

Fixed

  • Add missing end_timestamp_ns to string compilation event #2251
  • store customized heap #2261
  • remove “BETA” in datadog-setup.php as the profiler is not beta anymore #2278
  • use-after-free with Closure trampolines #2280

Internal changes

  • add tests for timeline #2192

Application Security Management (0.14.0)

Added

Fixed

Internal changes

0.91.2

14 Sep 16:33
67d0ca8
Compare
Choose a tag to compare

Tracer

Fixed

  • fix: Use DD_SERVICE if available (Laravel) #2256

0.91.1

08 Sep 16:57
2e9e3b7
Compare
Choose a tag to compare

Profiling

Fixed

  • detect an uninitialized runtime cache #2250

0.91.0

06 Sep 16:42
7a50d6f
Compare
Choose a tag to compare

⚠️ Important: If you are using the profiler please update to 0.91.1 to avoid a possible crash (see #2250 for more information).

Summary

This release adds:

  • an enhanced WordPress integration, which can be enabled through datadog.trace.wordpress_enhanced_integration=1 in INI. Even more extensive span collection can be enabled through datadog.trace.wordpress_callbacks=1. Feedback is welcome - just open a new issue with your thoughts!
  • Agent sampling as described in our public documentation. This will allow an automatic control of sampling rates allowing to reduce the traffic sent to Datadog while keeping most important spans.

Added

  • Add automated login events to Wordpress #2162
  • Enhance the WordPress Integration #2126
  • Implement agent sampling #2223
  • Add Laravel 9.X & 10.X tests #2237
  • Add http.route to laravel #2204 #2241

Fixed

  • (Legacy OpenTracing API) Check if the active span has a parent #2177
  • Handle killed workers and change root span initialization in the integrations #2176
  • fix: add Symfony command's exception to the root span #2194
  • Fix #2174: Can't pass less args to an untyped function than originally passed #2227, #2243
  • Fix #2232: Add Cargo.lock to pecl #2233
  • fix: wrong service name on some laravel.event.handle spans #2235
  • fix: PHP7 compatibility in logs correlation #2236
  • Store library_dependencies in memfd, referenced via /proc/self/fd/X DataDog/libdatadog#221
  • fix datadog-setup.php when INI file is a symlink #2242
  • update webpki and other dependencies #2247

Internal Changes

  • Add log levels #2158
  • Add zai_option_str and use it in config #2205, #2213
  • Refactor zai_string_view APIs and use them more #2203
  • Rename zai_string_view to zai_str #2206, #2207, #2212
  • Require zai_str.ptr to not be null #2214
  • Add zai_string and use it in zai_config #2217
  • Fix tests: allocate less TLS space by putting uhook HashTables into module globals #2219
  • Add sidecar metrics into their own namespace, fix seq id DataDog/libdatadog#220

Profiling

This release reduces CPU overhead to collect stacks, and also reduces overhead when services are idle or partially idle. It also reduces the average amount of memory used.

Added

  • attach fiber's function name as a label #2169

Fixed

  • enable allocation profiling only if profiling is enabled #2185
  • enable timeline only if profiling is enabled and lower overhead when disabled #2189
  • fix empty profiles with timeline due to end_timestamp_ns unit being set #2244

Internal changes

  • perf: speed up stack walking by using function run_time_cache #1998, #2182
  • perf: only wake every 10ms if PHP is serving a request #2168
  • refactor: extract ZaiStringView::to_string #2175
  • build: update Cargo.lock #2183
  • refactor: simplify string tables #2186
  • perf: use u32 instead of usize for string table indices #2187
  • test: add Datadog\Profiling\trigger_time_sample #2201
  • build: Update to Rust 1.71 / LLVM 16 #2208
  • Bump libdatadog to v3.0.0 #2210
  • fix(profiling): clippy lints #2215
  • style(profiler): use let-else syntax #2216
  • build(profiling): bump dependencies including libdatadog v4.0.0 #2228

Application Security Management (0.13.1)

Added

Fixed

Internal changes