Releases: DataDog/dd-trace-php
1.4.0
Tracer
The default value for datadog.trace.cli_enabled is now set to true (except for composer), meaning that CLI processes will be traced by default.
Added
- Dynamic configuration #2796
- Dynamic instrumentation #2796
- Can be enabled with datadog.dynamic_instrumentation.enabled=1.
- Exception replay #2796
- Can be enabled with datadog.exception_replay_enabled=1.
- Track peak memory usage in root span metrics #2840
Changed
- Enable sidecar trace sender on PHP 8.3 #2729
- Optimize sending traces via sidecar DataDog/libdatadog#598
- Add new ini config datadog.crashtracking_enabled #2850
- Add ionCube to the list of incompatible extensions + add INI setting to ignore incompatible extensions #2858
- Enable CLI by default #2871
Fixed
- Crashtracker: fix a use-after-free error #2843
- Fix curl integration race condition #2847
- Fix memory leak with sidecar trace sender #2875
- OpenTelemetry: Missing addLink method and Fiber handling #2849
- Mongodb: Deprecated exception in v1.20+ #2870
- Fix leaking sidecar sessions DataDog/libdatadog#642
- Implement deadlock watchdog for sidecar DataDog/libdatadog#647
Internal
- Fix testsuite flakiness #2841, #2846, #2848, #2867
- Fix telemetry metric name DataDog/libdatadog#666
SSI Loader changes
- Add SSI requirements.json file #2813
- Disable the tracer in case of a potential incompatibility (extension/jit) #2853
Profiling
Internal
- bump to Rust 1.76 #2876
Application Security Management
Changed
- Move helper to sidecar remote config #2864
Fixed
- Fix improper symbol exports in appsec ext/helper #2854
- Remove gid from socket/lock path of helper #2855
- appsec ext: retry on connection refused #2860
- Fix orderly helper appsec shutdown #2859
Internal changes
- Add appsec benchmarks #2791
1.3.2
1.3.1
.git/
folder is in an inconsistent state. To mitigate set datadog.trace.git_metadata_enabled=0
(or environment variable DD_TRACE_GIT_METADATA_ENABLED=0
) or upgrade to v1.3.2.
Tracer
Fixed
- Fix DD_AUTOLOAD_NO_COMPILE #2833
- Loader: Use the same version number as for other extensions #2838
- Consider ifunc symbols also defined DataDog/libdatadog#609
- Fix crash with double parent key in tracestate #2837
- Fix #2831: Failure with LTO #2839
Internal
- Avoid using non-bundled rust git dependencies #2827
1.3.0
.git/
folder is in an inconsistent state. To mitigate set datadog.trace.git_metadata_enabled=0
(or environment variable DD_TRACE_GIT_METADATA_ENABLED=0
) or upgrade to v1.3.2.
Tracer
The default value for datadog.log_backtrace
is now set to true, meaning that on compatible systems, a segmentation fault will cause the process's backtrace to be printed in the log.
Added
- Add SpanEvents support for DD and OTEL #2754
- Symfony Messenger Integration #2749
- Add crashtracker #2763
Changed
- Updates the expected telemetry tags for OTel env-var mapping in line with the latest RFC #2775
Fixed
- Multiple Workers in SWOOLE_BASE mode #2778
- Fix ini creation when
--extension-dir
is used #2789 - Fix fatal error when reading uninit $meta on a span #2790
- Fix JIT crash with instrumented generators #2797
- Handle absolute paths in extension_dir containing forward slashes #2798
- Fix setup with spaces in path to php binary #2803
- Fix #2774: shared hooks removal caused xdebug end handler to be skipped #2780
- Fix error message for not loaded/not available #2810
- Implement fallback for when memfd is not available on Linux DataDog/libdatadog#591
- Use the Windows User ID as sidecar identifier instead of the Session ID DataDog/libdatadog#558
- Fix error check in trampoline.c DataDog/libdatadog#569
- Do not implicitly fall back to spl_autoload() if no autoloader is registered on PHP 7 #2822
- Prevent crash in shutdown if hook was not stored #2824
Internal
- Send x-datadog-test-session-token metric and send metrics to request-replayer #2802
- Only warn on missing
json
extension #2805 - Fix compilation after alpine container upgrade #2811
- Telemetry v2 schema for app-started payload requires 'configuration' DataDog/libdatadog#543
Profiling
Added
- Add timestamp to exception sample #2793
Internal
- Perf: remove profiler mutex #2714
Application Security Management
Added
Changed
- Support loading appsec helper in sidecar DataDog/libdatadog#565
Fixed
- Refactor the sampler to fix errors #2761
1.2.0
.git/
folder is in an inconsistent state. To mitigate set datadog.trace.git_metadata_enabled=0
(or environment variable DD_TRACE_GIT_METADATA_ENABLED=0
) or upgrade to v1.3.2.
This release adds beta support for PHP Single Step Instrumentation, allowing the instrumentation of your PHP applications without the manual installation of the dd-trace-php extension.
Read https://docs.datadoghq.com/tracing/trace_collection/automatic_instrumentation/single-step-apm/ for more details.
Tracer
Added
- Add span field meta_struct #2673
- Add config to disable obfuscation in memcached queries #2725
- Add PDO spans to orphans removal #2743
- Make generators replaceable #2718
- Source Code Integration #2731
- OpenAI Integration #2685
- Add support for Single Step Instrumentation #2684 #2723
Fixed
- Fix PHP binary detection in package post-install script #2707
- Handle OTel HTTP semantic conventions < 1.21.0 #2717
- Respect the active service/env/version for metric tags #2742
- Fix post bailout hook execution in 8.3 unoptimized builds #2737
- Fix env&version tags leaking in metrics #2745
- Fix global priority sampling #2728
- Fix crash in OpenTelemetry Span::getCurrent() when accessing span link #2767
Internal
- Compile sidecar and extension separately, to link them together later #2741
- Sync with libdatadog for telemetry flush data intval #2757
Profiling
Internal
- Keep string cache data alive longer #2668
- Extract func is_internal() #2736
- Less unsafe code #2739
- Refactor fork handling #2747
Application Security Management
Fixed
- Refactor the sampler to fix errors #2761
Internal
1.1.0
Tracer
Added
Fixed
- Apply some fixes with sidecar trace sender #2680, #2686, #2689, #2698, #2700
- Don't treat Symfony 2 differently from other versions #2693
- Ensure DDTRACE_G(active_stack) is always NULL when the root span is being pushed #2701
Internal
Profiling
Added
- Add
thread id
label on every sample #2692
Internal
- Reduce memory usage by upgrading libdatadog to v10 #2697
1.0.0
This release introduces some minor breaking changes. An upgrade guide can be found at https://github.com/DataDog/dd-trace-php/blob/1.0.0/UPGRADE-1.0.md.
This changeset is on top of 1.0.0beta1.
Tracer
Added
- Instrument AMQP batched publishing #2659 (Thanks @lcobucci!)
- Peer Service Precursors for DBM #2664
- Provide a DogStatsD API #2639
- Collect trace_api.{requests,responses,errors} metrics in the background trace sender #2672
Changed
- Use app name as service for laravel queue #2643
- Mark Laravel Octane requests as laravel.request #2655
- Move env and version from meta to span properties #2665
- w3c(phase 3): ensure tracecontext headers always take precedence #2667
Fixed
- Do not check get_DD_TRACE_ENABLED() outside of a request #2631
- Fix rejected distributed sampling decision overwrite #2652
- Fix Background Sender reset on Swoole Fork #2645
- Don't handle fork in SWOOLE_BASE mode #2656
- Web Tests Errors Detection #2666
- Fix coalescing send data DataDog/libdatadog#451
- Link libpthread into the spawn_worker trampoline DataDog/libdatadog#452
- Make use of the sidecar thread safe #2671
- Send a correct size hint to the sidecar trace flusher #2686
- Allow synchronous sidecar flushes and reduce flush limit #2689
Internal
- Update to maintain compatibility with libdatadog #2634, #2661
- Minor cbindgen improvements #2651
- Compile tracer version into sidecar #2678
Profiling
Added
- Add uptime information to profiles #2610
Fixed
- Fix exception profiling in Generator->throw() #2682
Internal
- Stack walking cleanup #2638
- Shrink env/service/version and simplify #2640
- Use php_version when available #2657
- Update profiling deps/libdatadog v9 #2662
Application Security Management
Changed
Fixed
- Improve login accuracy event on Laravel>5 #2642
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