Releases: DataDog/dd-trace-php
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
0.90.0
This release adds logs correlation and telemetry support:
- Used configurations, libraries and integrations will be collected. This may be disabled with
DD_INSTRUMENTATION_TELEMETRY_ENABLED=0
. - Logs written by common logging libraries will be attached metadata about the trace and span the log line was generated in. This may be disabled with
DD_LOGS_INJECTION=0
.
Added
- Add Logs Correlation #2118
- Add network destination name to http client spans #2134
- Add peer.service to Mysqli instrumentation #2142
- Add peer.service to PHPRedis instrumentation #2152
- Add peer.service to PDO instrumentation #2148
- Add peer.service to SQLSRV instrumentation #2155
- Add peer.service to Mongodb instrumentation #2147
- Add peer.service to Memcached clients instrumentation #2145
- Add peer.service to http client instrumentations #2134
- Add automated login events to Symfony #2132 #2146
- Opt-in to flat service names #2163
Changed
- Move all integrations to deferred loading #2153
- Reflect changes to datadog.version and datadog.env in existing spans #2165
- Evaluate the service name after the service mapping for a sampling decision #2166
Fixed
- Add invalid regex handling for sampling rules #2160
Internal Changes
- Add SpanData::peerServiceSources #2130
- Handle peer.service-related post-process in the extension #2135
- Enable instrumentation telemetry by default #2153
- With this change, a new datadog-ipc-helper process will be started alongside the application. This process will be in charge of collecting telemetry and will take over more responsibilities in upcoming releases.
Profiling
Added
Fixed
Internal changes
- refactor(profiling): apply clippy suggestions #2141
0.89.0
This release adds timeline support to the profiler. This is off by default. Enable it with the environment variable DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED=1
or INI setting datadog.profiling.experimental_timeline_enabled=1
.
Added
- Add horizon as artisan queue command #2124 Thanks, @markwalet.
- Add network destination name to http client spans #2134
- Add automated Laravel user tracking events #2100
- Add DD_HTTP_SERVER_ROUTE_BASED_NAMING config to enforce resources #2138
Fixed
- Fix a memory leak when overriding default arguments in install_hook (PHP7.2-) #2107
- Generate runtime-id on first request #2137
- Better GC workaround on PHP 7.3 and below for cycle collected span stacks #2123
- Use proper variable for php-config #2114
- Generate runtime-id on first request #2137
Internal Changes
- Add note about cargo in README, make debug symbols included by default for manual compilation #2110
Profiling
Added
- Add timeline support #1997, #2108
- Add endpoint counts #2111
- Add file compilation times to timeline #2119
Internal changes
- ci: add stack walking benchmark #2041, #2133, #2136
- build: bump indexmap to v2.0.0 #2127
- build: bump bindgen to 0.66.1 #2128
Application Security Management (0.10.0)
Added
- Add automated user login events DataDog/dd-appsec-php#272
- Add sign up event DataDog/dd-appsec-php#275
Fixed
- Persist top-most root span from RINIT DataDog/dd-appsec-php#273
Internal Changes
- Rename system-test scenario DataDog/dd-appsec-php#271
- Support multiple traces and spans but provide only the root span on integration tests DataDog/dd-appsec-php#274
- Set libddwaf as git
safe.directory
onbuild package
step DataDog/dd-appsec-php#276
0.88.1
0.88.0
Added
- Add support for environment variable syntax to config mode in datadog-setup.php #2050
Changed
- Use span links in the RabbitMQ Integration #2092
- Disable root span generation and removes orphans for Laravel Horizon #2091
Fixed
- datadog-setup.php: remove return types for compatibility with PHP 5 #2059 Thanks @dserodio!
- Work around fiber->execute_data only being correct upon yielding #2072
- Skip error assignment on the root span for 5xx errors that shouldn't be reported #2089
- Ensure no crashes happen with multiple observers installed #2093
- Fix incorrect offset access in Laminas Integration #2094
Internal Changes
- build: delete unused C components #2055
- build: bump cmake and catch2 versions #2056
- build: reduce Laravel queues' tests flakiness #2057
- testing: add snapshot testing #2058
- build: pin guzzlehttp/promises to ^1.5.3 #2071
- Update removed methods used in Guzzle V6 & V7 test suites #2073
- build: drop now-unused uuid component #2096
- Prepare instrumentation telemetry #2029, #2086, #2099
- build: Add rebuild with ASAN section to randomized tests README.md #2084
Profiling
Allocation profiling is now enabled by default. You can manage it using the DD_PROFILING_ALLOCATION_ENABLED
environment variable or the datadog.profiling.allocation_enabled
setting in the INI file. Although the DD_PROFILING_EXPERIMENTAL_ALLOCATION_ENABLED
environment variable and datadog.profiling.experimental_allocation_enabled
INI setting still work, the new ones take precedence.
Added
Fixed
- fixed segfault in test suite #2077
Internal changes
- move allocation profiling to its own module #2090
Application Security Management (0.9.0)
Fixed
- Use /proc/self/fd to avoid rlimit iteration starvation DataDog/dd-appsec-php#265
Internal changes
- Update ruleset to 1.7.1 and libddwaf to 1.11.0 DataDog/dd-appsec-php#267
- Update fuzzer corpus DataDog/dd-appsec-php#268
0.87.2
Application Security Management (0.8.1)
Fixed
- Remove max payload size on remote config calls DataDog/dd-appsec-php#256
- Improve output of phpinfo DataDog/dd-appsec-php#259
- Avoid emitting errors when blocking on RSHUTDOWN DataDog/dd-appsec-php#261
- Improve RSHUTDOWN blocking and add logging DataDog/dd-appsec-php#264