Skip to content

Releases: DataDog/dd-trace-php

1.5.0

18 Nov 16:53
93849dd
Compare
Choose a tag to compare

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

SSI Loader changes

  • Fix compatilibity with PHP 5 #2939
  • Fix crash when the loader is loaded multiple times #2954

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

  • Update spdlog so it works with recent musls #2921
  • Bump libddwaf to 1.20.1 #2913

1.4.2

21 Oct 10:52
a618ff5
Compare
Choose a tag to compare

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

14 Oct 13:22
72c5212
Compare
Choose a tag to compare

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

08 Oct 17:33
dcc880f
Compare
Choose a tag to compare

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

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

26 Sep 13:51
a5e07d7
Compare
Choose a tag to compare

Tracer

Fixed

  • Fix crash with git metadata injection #2862

1.3.1

06 Sep 16:24
2b11926
Compare
Choose a tag to compare

⚠️ This version can crash with git source code integration when the .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

30 Aug 13:05
8b6e326
Compare
Choose a tag to compare

⚠️ This version can crash with git source code integration when the .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

  • Automated user ID collection modes #2782
  • Report backtraces #2715

Changed

Fixed

  • Refactor the sampler to fix errors #2761

1.2.0

23 Jul 11:52
dbdd922
Compare
Choose a tag to compare

⚠️ This version can crash with git source code integration when the .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

  • Upgrade helper to use WAF 1.18.0 #2660
  • Add more logs around schema extraction #2755

1.1.0

10 Jun 21:30
65bf25c
Compare
Choose a tag to compare

Tracer

Added

  • Implement OTel config remapping #2691
  • Remap OTel to DD status code #2695

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

  • Switch 2 logs to logev to avoid useless work #2679
  • shrink size of Rust artifacts #2696

Profiling

Added

  • Add thread id label on every sample #2692

Internal

  • Reduce memory usage by upgrading libdatadog to v10 #2697

1.0.0

04 Jun 15:08
c582c9f
Compare
Choose a tag to compare

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

  • Update asm collected headers #2641
  • Add all asm headers on user events #2647

Fixed

  • Improve login accuracy event on Laravel>5 #2642