Releases: DataDog/dd-trace-php
0.97.0
Tracer
Added
Changed
Fixed
- Remove Symfony controller hook after execution #2436
- Move the dummy function of call_attribute_constructor onto the VM stack #2446
- Avoid resolving unresolved functions and classes #2450
- Fix removal of the directly accessed hook after binding in DDTrace\remove_hook #2449
- Handle async requests using Guzzle #2460
- Fix removing an end observer with other observers active #2469
- Fix fibers on PHP 8.1.2 #2473
Internal Changes
- Add MicroBenchmarks #2435, #2456, #2458
- Add Symfony 7.0 test suite #2437
- Track DD_TRACE_DEBUG=1 errors in integration and web tests #2472
- Reduce noise in composer package download #2401
Profiling
Added
- prevent emitting empty profiles #2397
Fixed
- potential allocation profiling crashes with certain opcodes #2352
Internal Changes
- test with address sanitizer on bookworm with GH actions #2432
- make the profiler compile in ZTS PHP #2463
- extract wall_time.rs file #2467
Application Security Management
Internal changes
- Change schema extraction zip compression to PHP_ZLIB_ENCODING_GZIP #2447
0.96.0
Exception profiling is now enabled by default. You can manage it using the DD_PROFILING_EXCEPTION_ENABLED
environment variable or the datadog.profiling.exception_enabled
setting in the INI file. Although the DD_PROFILING_EXPERIMENTAL_EXCEPTION_ENABLED
environment variable and datadog.profiling.experimental_exception_enabled
INI setting still work, the new ones take precedence.
Tracer
Added
- Implement extended sampling #2384
Fixed
- Add PHP 8.3 to supported versions #2417 (thank you @markwalet)
- OTel: Fix analytics.event override (#2409)
- Fix dddbs service mapping #2413
- WordPress: Avoid Setting User ID When Unauthenticated #2424
Internal Changes
Profiling
Added
- GA exception profiling #2403
- allow enabling all experimental features using
datadog.profiling.experimental_features_enabled
#2385
Internal Changes
- run prof-correctness nightly in
master
branch #2420
0.95.0
This release introduces support for arm64 and PHP 8.3 for appsec. Additionally, it adds schema extraction and classification to appsec, which forms the foundation for API security. Finally, the appsec extension has been officially incorporated into the dd-trace-php
repository and will adhere to the same versioning scheme as the tracer and profiler.
Tracer
Added
- Add http.route to CodeIgniter #2379
Fixed
- Use http_code instead of connect_time to detect curl errors #2391
- Fix handling of invalid persistent JSON #2381
- Zero pad the tid and exclude it from OTel tracestate #2386
Internal changes
- Update CI images to use PHP 8.3.0rc6, pin mongodb for PHP 7.2-7.3 #2382
- Update CI images to 8.1.26, 8.2.13 and 8.3.0 and XDedug to 3.3.0 #2400 #2405
- Add macrobenchmark runs #2408
Profiling
Internal changes
- add allocation and exception count to event.json #2392
Application Security Management
Added
- Implement sampler and processor trigger DataDog/dd-appsec-php#308
- Zip long schemas DataDog/dd-appsec-php#315
- Add compression library to helper DataDog/dd-appsec-php#316
- Always serialize schemas when available #2406
- Upgrade libddwaf to v1.15.1 #2377
Internal changes
- Fix fuzzer build & increase RSS limit DataDog/dd-appsec-php#313
- Build AppSec extension & helper in CI with support for Arm64 and PHP 8.3 #2344
- AppSec extension & helper unit tests in CI #2349
- Package appsec using new builds #2369
0.94.1
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