|
1 | 1 | Changelog for older versions can be found in our [release page](https://github.com/DataDog/dd-trace-php/releases). |
2 | 2 |
|
3 | | -## All products |
4 | | -### Changed |
5 | | -- The sidecar is now always spawned unconditionally, regardless of configuration #3912 |
6 | | - |
7 | | -### Internal |
8 | | -- Bump Rust MSRV to 1.87 #3926 |
9 | | - |
10 | 3 | ## Tracer |
11 | | -### Added |
12 | | -- Add PHP feature flag evaluation including evaluation metrics via OTLP #3906, #3909, #3910, #3911 |
13 | | -- Add `dynamic_service` DBM propagation mode as a convenience alias for `service` mode with base hash injection; this mode will replace `service` on the long term #3940 |
14 | | -- Add `DD_DBM_ALWAYS_APPEND_SQL_COMMENT` to unconditionally append SQL comments in DBM regardless of sampling #3954 |
15 | | -- Recognize PCF Garden container IDs for Cloud Foundry deployments DataDog/libdatadog#2025 |
16 | | - |
17 | 4 | ### Fixed |
18 | | -- Fix remote config not being delivered after forking #3958 |
19 | | -- Fix span pointer invalidation crash during inferred span serialization with `DD_TRACE_INFERRED_PROXY_SERVICES_ENABLED` #3934 |
20 | | -- Fix buffer overflow in autoload path construction for oversized class/path names #3932 |
21 | | -- Fix Swoole integration parsing the POST body regardless of `DD_TRACE_HTTP_POST_DATA_PARAM_ALLOWED` #3931 |
22 | | -- Guard JIT blacklist rewrite to prevent crashes with non-tracing JIT metadata #3929 |
23 | | -- Fix OTel polyfill post hooks with `:void` return type overwriting the instrumented function's actual return value #3920 |
24 | | -- Fix span stats broken for nested services due to incorrect `top_level` span detection #3916 |
25 | | -- Fix `php.compilation.total_time_ms` reporting values 1000x too large (microseconds labeled as milliseconds) #3915 (thank you @dortort!) |
26 | | -- Fix memory corruption of INIs in ZTS builds #3898 |
27 | | -- Fix data race in curl header assignment (non-atomic write to `_Atomic` field) #3945 |
28 | | -- Fix sample rate normalization to 0..1 range, preventing incorrect Knuth hash computation #3935 |
29 | | -- Fix multi-request failures caused by incorrect rinit ordering after tracer/ext split #3946 |
| 5 | +- Fix `SpanStack::$active` unset corruption #3962 |
| 6 | +- Fix sandbox not saving/restoring `jit_trace_num` #3964 |
| 7 | +- Fix `SpanStack` state corruption when tracing objects with deep clone operations #3976 |
| 8 | +- Fix `request_exec` being issued between requests #3939 |
| 9 | +- Fix Azure Functions instance name resolution DataDog/libdatadog#2077 |
| 10 | +- Fix remote config `tracing_sample_rate` missing/null deserialization DataDog/libdatadog#2102 |
30 | 11 |
|
31 | 12 | ### Internal |
32 | | -- Split the tracer code into a separate `tracer/` directory within the extension #3912 |
33 | | -- Improve crashtracker reliability: socket-based thread collection, incomplete stack handling, and `language:native` tag DataDog/libdatadog#2080, DataDog/libdatadog#2079, DataDog/libdatadog#2083 |
| 13 | +- Fix crashtracker metadata: correctly distinguish JIT disabled vs opcache disabled, and correct system INI classification #3965 |
| 14 | +- Use libdatadog's CSS trace filter implementation, aligning filtering behavior with the agent #3986, DataDog/libdatadog#1985 |
| 15 | +- Add configurable sidecar connection retry interval #3977, DataDog/libdatadog#2106 |
| 16 | +- Emit `_dd.svc_src` span tag per Service Override Source Attribution RFC #3948 |
| 17 | +- Fix duplicate span serialization in the sidecar DataDog/libdatadog#2107 |
34 | 18 |
|
35 | 19 | ## Profiling |
| 20 | +### Added |
| 21 | +- Add trampoline for frameless functions (FLF) to correctly capture timings on aarch64 and x86_64 #3595 |
| 22 | +- Add experimental heap-live profiling for memory leak detection, enabled via `DD_PROFILING_EXPERIMENTAL_HEAP_LIVE_ENABLED` (requires allocation profiling to be active) #3623 |
| 23 | + |
36 | 24 | ### Fixed |
37 | | -- Fix macOS release builds for the profiler #3923 |
| 25 | +- Fix profiler crashes and hangs: stderr fd leak (`O_CLOEXEC` missing) causing child processes to hang, NULL file dereference in timeline error observer on PHP 8.0, and async signal delivery to helper threads causing a segfault on ZTS builds #3364 |
| 26 | +- Fix macOS release builds for the profiler #3987 |
38 | 27 |
|
39 | 28 | ### Internal |
40 | | -- Support PHP DEBUG builds for the profiler, enabling ASAN testing in CI #3908 |
| 29 | +- Replace `lazy_static` with `std::sync::LazyLock` and optimize `Sapi`/`RefCellExt` #3990 |
| 30 | +- Simplify profiler name/version string constants to compile-time values #3998 |
41 | 31 |
|
42 | 32 | ## AppSec |
43 | | -### Added |
44 | | -- Collect `x-datadog-endpoint-scan` and `x-datadog-security-test` security testing headers as span tags on HTTP entry spans, independent of `DD_TRACE_HEADER_TAGS` and AppSec enablement #3925 |
| 33 | +### Changed |
| 34 | +- Enable Rust helper by default for all PHP versions (can be disabled with `DD_APPSEC_HELPER_RUST_REDIRECTION=false`) #3991 |
45 | 35 |
|
46 | | -### Fixed |
47 | | -- Fix out-of-bounds iteration in PHP <8.1 backtrace `HashTable` loop in the AppSec backtrace collection path #3933 |
| 36 | +### Internal |
| 37 | +- Implement `waf.error` and `rasp.error` error tracking metrics #3963 |
| 38 | +- Harden `_assume_utf8` against potential out-of-bounds access #4009 |
0 commit comments