Releases: DataDog/dd-trace-php
1.0.0beta1
This beta release contains all breaking changes planned for dd-trace-php 1.0. An upgrade guide can be found at https://github.com/DataDog/dd-trace-php/blob/1.0.0beta1/UPGRADE-1.0.md.
Tracer
Added
- Add --ini and --extension-dir installation option #2620
- CodeIgniter 3 Compatibility #2515
- Add CakePHP 3+ Support #2618
Changed
- Cleanup deferred loader and remove some PHP 5 compat code #2527
- Change DD_TRACE_SAMPLING_RULES_FORMAT default from regex to glob #2534
- Raise API errors instead of debug logs when wrong arguments are passed #2542
- Change WordPress Default Behavior #2525
- [OTel] Only set resource info on root spans #2558
- Remove early code execution and use an autoloader instead #2530
- Remove deprecated configuration keys or APIs #2574
- Drop Configuration classes from API #2596
Fixed
- Elasticsearch: Hook not being removed #2616
- Fix shared compilation on macOS #2613
- Fix host Scopes not being removed #2624
- Add note about update_span_duration semantics #2622
Internal
- Use a global version and change installer tests to use the version #2537
- Clean PHP 5 checks #2584
- Collect 'logs_created' internal metric #2604
- Make the root Makefile macOS compatible #2614
- Add stats reporting for sidecar and telemetry #2621
- Clean Integration configuration #2598
- Re-added spans_created telemetry metric DataDog/libdatadog#391
Application Security Management
Fixed
- Disable Appsec when FrankenPHP SAPI is detected #2617
0.99.1
0.99.0
⛔ This release has a memory leak in the tracer parts. A fix was released with version 0.99.1 and we encourage you to upgrade.
Tracer
Windows x64 support is officially GA (generally available).
Some performance work has been undertaken to primarily reduce the overhead of telemetry reporting.
The next release will be version 1.0 and remove deprecated and some unused code and APIs.
Added
- Support the FrankenPHP SAPIs #2602
- Add zts support for alpine #2564
- Swoole Integration #2595
Changed
- w3c phase 2: add last parent_id to tracestate #2549
Fixed
- Handle relative ext/ paths and test the windows installer #2559
- Fix exec integration build on PHP 8.4 #2543
- Fix Orphans not being sampled-out #2550
- Fix fibers with tracer disabled #2576
- Update update_span_duration return type #2586
- Fix #2563: ddtrace overrides php error log permissions #2583
- Allow hooking an inherited internal constructor #2591
- Distinguish architectures on windows #2593
- Fix the ExecIntegration name #2597
Internal
- Get rid of some bitwise checking in ddog_shall_log #2539
- Use faster bincode for ipc #2544
- Update to use DDOG_CHARSLICE_C and new DDOG_CHARSLICE_C_BARE helpers #2565
- Slightly Improve OTel Performances #2561
- Send spans_created telemetry metric #2577
Profiler
Added
- add FrankenPHP to the list of recognised SAPIs #2523
- enabled allocation profiling for PHP ZTS #2506
- report PHP build (
nts-ndebug
vszts-ndebug
) #2536
Internal
Application Security Management
Added
Fixed
0.98.1
Tracer
Fixed
- Always include the whole of src/ in the Windows and PECL build (#2533)
- Ensure the permissions of the log file are actually really 0666 (#2528)
- Avoid remapping freed memory in trace sender fallback (#2541)
- Fix possible crash in dd_patched_zend_call_known_function on early PHP 8.0 and 8.1 versions (#2548)
- Make ddtrace_disable a true global to avoid crashes in ZTS with unsupported SAPI/extensions (#2545)
0.98.0
Fixes across all extensions
- Handle Apache graceful restarts more accurately #2483
- Mark config as immutable and interned to avoid refcounting race conditions #2516
Tracer
This release includes Windows dlls for the tracer starting with PHP 7.2. #2230
Windows support is in beta. We recommend carefully deploying the tracer to staging environments and testing it there before putting it to production. We are looking towards stabilizing Windows quickly, so any feedback and issue reports are welcome.
Added
- Enhance logging #2490
- This features two new logging options:
datadog.trace.log_level
allows more fine-grained control over logging (error
,warn
,info
,debug
,trace
). It follows the RUST_LOG standard. Note thatdatadog.trace.debug
still takes precedence if set.datadog.trace.log_file
allows specifying a dedicated target file for any datadog trace logs instead of the default php error location.
- More log lines were added to allow for observing submitted spans (debug level) and hook invocations (trace level).
- This features two new logging options:
- Add http.route to Wordpress #2491
Changed
- Have datadog.trace.db_client_split_by_instance also affect mysqli and sqlsrv #2508
- Record nested exceptions in the integrations #2514
- Evaluate numbers and bools in tags and metrics for sampling rules #2521
Fixed
- Access to undefined method
attempts
in LaravelQueueIntegration #2485 - Include generated curl_exec spans of curl_multi_exec() in metrics #2505
- Remove Symfony Command Hook After Execution #2492
- Add zend_try around closing and flushing spans #2507
- Make PDO split-by coherent with other DB split-by with service name flattening #2524
Internal
- No longer compile the mockgen as part of the rust build #2512
- Add TEA Benchmarks #2438
- Reduce CI and Local Flakiness #2496, #2518
Profiling
This release requires System INIs to be used to configure the profiler settings which control the enabling/disabling of individual features. If you are configuring the profiler using php datadog-setup.php config set
, you should be fine. We recommend switching to use the config mode of datadog-setup.php to configure profiling.
Added
- Enable timeline by default #2480. This can be disabled by setting the INI setting datadog.profiling.timeline_enabled to 0 or false. Using the datadog-setup.php script is recommended, for example:
php datadog-setup.php config set --php-bin all -ddatadog.profiling.timeline_enabled=0
- PHP ZTS support for CPU- and Wall Time profiling #2470
- Add exception message to exception sample (opt-in) #2434
Changed
- Breaking-change: require system INIs for profiling features #2468
Internal
- Update dependencies and pin
ahash
#2479 - Fix clippy::single-match #2482
- Update to libdatadog 6 #2513
- Refactor: use SystemSettings in locals #2487
- Fix accidentally skipped tests #2517
Application Security Management
This release introduces support for the Roadrunner application server and extends threat detection and blocking on XML and JSON request payloads. Request and response payloads are now also used to expand the already existing API security features.
Added
- Roadrunner appsec support #2443
- Provide server.response.body #2489
- Support json/xml request bodies #2499
Changed
- Change ip header parsing/header reporting #2503
Fixed
Internal
- Upgrade libddwaf and ruleset #2520
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