Releases: DataDog/dd-trace-php
1.5.0
There is a known issue with the Application Security Management module on aarch64 architectures in this release. If you use datadog.appsec.enabled=0
, this won't affect you. Otherwise it might happen that the datadog-ipc-helper process crashes immediately.
Tracer
Added
- PHP 8.4 support #2758
- Support Tag Keys for DD_TRACE_HEADER_TAGS #2922
- Add stubs for the Public PHP API #2933
- These are available as datadog_tracer.stubs.php release asset
- Collect agent info and apply the env for remote config #2930
Changed
- Increase read timeout of sidecar for synchronous flushes #2910
- Implement Universal Service Tracking Consistency #2896
- Updating Default Rate Limit Value and Usage Based on Sample Rate #2912
Fixed
- Fix a possible crash in zai config #2906
- Fix crash when yielding from generators are destroyed #2908
- Fix bad hasThis() check on PHP 7.0 #2911
- Fix RootSpanData writer interception on consecutive calls #2919
- Fix DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP Empty Value Behavior #2909
- Handle hooks on trampoline fake closures #2925
- Fix crash with locals collection in generator close sequence #2932
- Avoid the hook frame in mysqli connection error tracking #2937
- Support multiple PHP_INI_SCAN_DIR's #2941
- Fix use-after-free in exception replay #2947
- Fully disable the sidecar on lambda by setting all related configs to false #2948
- Fix Symfony Messenger propagation to non-instrumented clients #2956
- Fix JIT crash: There may or may not be a readable ZEND_TRACE_OP_INFO() #2942
- Block remote config signals during ftp functions #2957
- Deduplicate Debugger diagnostics in sidecar DataDog/libdatadog#736
- Handle case where the applictaion is stopped without other telemetry sent DataDog/libdatadog#743
Internal
- Create many tiny artifacts for faster download #2951
- Using datadog-setup.php will now download less than 50 MB for a single PHP version
- Add names to memfds DataDog/libdatadog#714
- Allow attaching to the sidecar via gdb DataDog/libdatadog#687
SSI Loader changes
Profiling
Added
- Add fatals and thread start/end events to timeline #2820
- Add thread names #2934
- Add timeline active check for fatals #2945
- Add stream_select()-type functions to timeline #2943
- Visualise opcache restarts in the timeline #2946
Application Security Management
Changed
- Disable helper when appsec is fully disabled #2935
Fixed
- Fix heap corruption after apache reloads (appsec) #2928
Internal changes
1.4.2
Tracer
Changed
- Disable sidecar sending on lambda #2904
Fixed
- Fix exception property offset computation for PHP 8.1+ #2901
- Prevent Laravel Queue hooks from stacking up #2899
- Fix crash with missing name in span in debug mode #2893
- Restrict remote config path to a definite 31 chars DataDog/libdatadog#676
Application Security Management
Changed
- Update event obfuscation regex #2897
Fixed
- Fix abort() call on appsec helper unload #2900
1.4.1
Tracer
Fixed
- Fix: MongoDBIntegration condition typo #2884
- Fix crash in profiler when span stack switch causes GC run #2885
- Support build with disabled zend signals #2886
- Send git tags via remote config #2890
- Fix memory leak with sidecar trace sender #2875
Profiling
Fixed
- Fix profiler ZTS build on alpine #2887
Application Security Management
Fixed
- Improve behavior with empty DD_SERVICE/DD_ENV #2888
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