Skip to content

Releases: DataDog/dd-trace-php

1.3.1

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

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

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 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

1.0.0beta1

17 Apr 08:09
e11c3aa
Compare
Choose a tag to compare
1.0.0beta1 Pre-release
Pre-release

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

05 Apr 08:29
8de3b1f
Compare
Choose a tag to compare

This release fixes a memory leak in the tracer, specifically affecting version 0.99.0

Tracer

Fixed

  • Fix compilation on macOs #2613

Changed

  • REVERT: “Send spans_created telemetry metric #2577” to fix a memory leak

0.99.0

03 Apr 11:17
ac0f416
Compare
Choose a tag to compare

⛔ 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

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 vs zts-ndebug) #2536

Internal

  • add tests for exception profiling in ZTS builds #2562
  • update to libdatadog v7 #2605

Application Security Management

Added

  • Add DD_API_SECURITY_ENABLED flag #2532
  • Add DD_APPSEC_SCA_ENABLED new configuration variable #2557

Fixed

  • Make Laravel appsec login success event more accurate #2600
  • Enable appsec by ini only when enable-appsec present #2567
  • Provide path params to appsec #2395

0.98.1

04 Mar 17:58
c9c873d
Compare
Choose a tag to compare

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

20 Feb 10:42
b25dc1e
Compare
Choose a tag to compare

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 that datadog.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).
  • 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

  • Fix blocking on PHP 7.0-7.1 ZTS #2502
  • Ensure logs are committed to disk upon shutdown #2495

Internal

  • Upgrade libddwaf and ruleset #2520