Releases: DataDog/dd-trace-php
0.94.0
⛔ 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
Internal changes
- add DD_PROFILING_WALLTIME_ENABLED for testing #2316
0.93.2
0.93.1
0.93.0
⛔ 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
- Set sampling priority using ddtrace_set_priority_sampling_on_root DataDog/dd-appsec-php#311
0.92.2
0.92.1
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
- Improve tracer state detection DataDog/dd-appsec-php#305
- Fix setting perdir INI setting for multiple ZAI config users #2277
0.92.0
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 settingdatadog.trace.sidecar_trace_sender=1
. It replaces the sending of traces through a dedicated thread.
- This functionality is currently experimental and guarded behind a configuration option
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
- Add default processors and scanners DataDog/dd-appsec-php#298
- Exchange more types between extension and helper DataDog/dd-appsec-php#299
- API security configuration settings DataDog/dd-appsec-php#300
Fixed
- Propagate Runtime IDs and keep a valid pool in the RC client DataDog/dd-appsec-php#301
Internal changes
- Add nginx container to integration tests DataDog/dd-appsec-php#294
- Upgrade WAF to 1.14.0 DataDog/dd-appsec-php#295
- Upgrade tracer to v0.91.0 and remove master build downloads DataDog/dd-appsec-php#296
- Upgrade ruleset to 1.8.0 DataDog/dd-appsec-php#302
- Merge appsec repository as subtree #2267
0.91.2
0.91.1
0.91.0
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 throughdatadog.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
- Add trusted IPs capability DataDog/dd-appsec-php#279
- Add extra_services configuration DataDog/dd-appsec-php#282
Fixed
- Ensure ddtrace is also enabled DataDog/dd-appsec-php#281
- Fix service name alias configuration DataDog/dd-appsec-php#293
Internal changes
- Add automated login events integration test for Laravel and Symfony DataDog/dd-appsec-php#270
- Upload suppressions and fix current ones DataDog/dd-appsec-php#280
- WAF upgrade to 1.13.1 DataDog/dd-appsec-php#292
- Send events even when limiter does not force manual keep DataDog/dd-appsec-php#290
- Update ruleset to 1.7.2 DataDog/dd-appsec-php#291