Login  |  Packages  |  Support  |  Bugs

Return

Changelog for datadog_trace
Release What has changed?
0.82.0 ### Added
- PHP-8.2 support #1800
- Add Elasticsearch 8 support #1808
- Add a Roadrunner integration #1813

### Changed
- Change system.pid to process_id #1796

### Fixed
- Extract priority sampling whenever is string or int #1789
- Fix crash during preloading on 8.1+ #1799
- Fix $integration->setError() to also accept \Error instances #1802
- Fix ZEND_CATCH chaining logic #1803, #1814
- Fix misbehaviour with 256+ hooks on a same function #1809
- FIX PSR-4 autoloading in ComposerBootstrap class #1816 (Thanks @ls-youssef-jlidat)
- Fix dropped spans causing an infinite loop #1818

### Internal changes
- Avoid deprecated zend_atol on PHP 8.2 #1778
- Retry docker images not starting in CI #1807

## Profiling (0.11.0)

Profiling now defaults to being enabled. This removes one step in onboarding as the environment variable DD_PROFILING_ENABLED no longer needs to be set to 1, which can be difficult in some situations. The recommended way to configure profiling is to use .ini settings, which is generally easier.

### Added
- Add .ini support #1775.
- Groundwork for allocation profiling #1794

### Changed
- Bump libdatadog to 0.9 #1782.
- Bump env_logger to 0.9.3 #1804.

### Internal Changes
- Add troubleshooting to README #1761
0.81.1 #### Fixed
- Fix span limiter not being reset in long running processes #1785
0.81.0 ### Added
- Rate limiting support #1769
- Add span stacks #1746

### Changed
- Stop collecting IP on tracer #1774
- Amend wording when uninstalling datadog #1756

### Fixed
- Guzzle Integration not initialized correctly #1762.
- Do not create root spans for certain Symfony methods #1771. Thanks, @radykal-com!
- ldconfig not found by installer #1773
- Fix crash in ddtrace_curl_multi_get_gc #1779

### Internal changes
- Fix in-tree compilation #1760
- Reusability of zai config across products #1765
- Avoid deprecated zend_atol on PHP 8.2 #1778

## Profiling (v0.10.2)

### Fixed
- Prevent deadlocks when forking #1752
- Fix linking on arm64 mac #1759

## Application Security Monitoring (v0.4.4)

#### Added
- Generate ip and duplicate ip headers on appsec DataDog/dd-appsec-php#141
0.80.0 ### Added

### Changed
- Make sampling priorities public API again #1742

### Fixed
- Fix behaviour of return false in trace hooks #1749
- Handle non-binaries in installer #1743
- Fix mishandling of payload size limit #1750

### Internal changes


## Profiling (v0.10.1)

### Fixed
- Match the service names of the tracer when unset or empty #1733
- Avoid crashing when pcntl_fork is called #1745

## Application Security Monitoring (v0.4.3)

### Fixed
- Return error response in helper when incoming message can't be unpacked DataDog/dd-appsec-php#120
- Avoid creating a log file during MINIT/MSHUTDOWN DataDog/dd-appsec-php#124
- Handle helper errors gracefully DataDog/dd-appsec-php#127
- Reset context on shutdown DataDog/dd-appsec-php#130
- Handle errors on request shutdown DataDog/dd-appsec-php#132

### Internal changes
- Enable CI on all relevant branches DataDog/dd-appsec-php#123
0.79.0 ### Added
- Integrate with Symfony console commands #1724

### Changed

### Fixed
- Fix #1709 appsec attempting to load erroneously #1711
- Fix symfony service and root span name #1723 (Thanks @numyx)
- Initialize hooks and config early to prevent conflicts with code executed in early startup #1726
- Fix hook dynamic data zeroing when new hooks are added during hook execution #1730

### Internal changes
- Fix compilation on MacOS #1716
- Deduplicate PHP 7 and PHP 8 source files #1722


## Profiling (v0.10.0)

#### Added
- Add Endpoint Profiling #1720

#### Internal changes
- Extract C API module; refactor Uuid #1710
0.78.0 ### Added
- Instrument pcntl_fork and reset tracing when it is called #1633 (Thanks @jlesueur)
- ARM64 support (Build arm images in CI) #1701

### Changed
- Accept pseudonym on via header as specified by rfc7230 #1696
- Add agent target URL to flush-message to help with debugging #1705
- Add IPv6 support to DD_AGENT_HOST #1707

### Fixed
- Fix span memory leak and packaging #1697
- Fix datadog-setup.php failing in environments without scan directory #1702
- Fix random number generator usage #1704
- Set root span name only in HttpKernel::boot() to avoid side effects on CLI #1706
- Fix meta information loss in PDOIntegration #1708

### Internal changes
- Update artifact URL for v0.77.0 gitlab deployments #1686
- Update relenv to use datadog-setup.php #1689
- Add arm support to docker images #1699

## Application Security Monitoring (v0.4.0)

#### Fixed
- Fix interned string invalidation on PHP <= 7.2 DataDog/dd-appsec-php#99
- Replace `php_error_docref` with `php_log_err` DataDog/dd-appsec-php#101

#### Changed
- Log helper communication DataDog/dd-appsec-php#97
- Set environment values at rinit on php-fpm DataDog/dd-appsec-php#105

#### Internal changes
- Update development documentation DataDog/dd-appsec-php#98
- Update system tests with new variants DataDog/dd-appsec-php#102
- Add helper test for config DataDog/dd-appsec-php#108
- Fix missing helper header coverage DataDog/dd-appsec-php#109
- Upgrade integration test tracer version to 0.76.1 DataDog/dd-appsec-php#110
- Add a way to include local changes to the cmake build process DataDog/dd-appsec-php#111
- libddwaf upgraded to 1.4.0 DataDog/dd-appsec-php#116

## Profiling (v0.9.0)

#### Added
- Add Unix Domain Socket (UDS) support #1698

#### Fixed
- Avoid PHP per-request interning #1700

#### Internal changes
- Add phpt tests for profiling #1690
0.77.0 ?? The tracer and profiling packages for PHP 7 and 8 are built on CentOS 7. These packages will not run on older GNU Linux versions like CentOS 6, Debian 7, and Ubuntu 12.04.

### Added
- Add single span ingestion mechanism #1628
- Add "recurse" => true option to hook/trace config array #1677

### Changed
- Allow Symfony EventDispatcher::dispatch hooks to recurse #1678

### Fixed
- Fix JIT compatibility under macOS #1661
- Fix -Werror=address-of-packed-member #1664
- Add support for ports on x-forwarded-for header #1675. Thanks, @estringana!

### Internal changes
- Move to CentOS 7; begin adding profiling deps #1660
- Add profiling sources #1606
- Build and package datadog-profiling in CI #1663
- Fix profiler config in randomized tests #1682

## Profiling (v0.8.0)

### Added
- Add `process_id` and `runtime_version` tags #1606.
- Add support for changing env vars per request, such as per-directory env var settings in Apache #1606.
- Add fake frame when truncating stacks #1679. This way users can tell when the stack is truncated.

### Changed
- Switch <php> to <?php #1680
- Raise max stack depth to 512 #1681
- Enable CPU Time profile by default #1663. This can disabled by setting the environment variable `DD_PROFILING_EXPERIMENTAL_CPU_TIME_ENABLED` to `0`, `off`, or `no`.
- Change logging format #1606. Add a new log level `trace`, which is even more verbose than `debug`.
- Stop sending a profile on every `phpinfo()` (or the equivalent command line option `--ri datadog-profiling`) #1606
0.76.2 ### Fixed
- Check for datadog-profiling in startup only instead of inside a message_handler #1670. This fixes a possible crash when all of tracer, profiler and appsec are loaded.
- Add opcode shutdown handlers, fix integrations after repeated minit #1669. This fixes a crash when using reload on apache (sending SIGUSR1).
- (PHP 7) Fix curl wrapper use after free #1662. This fixes a possible crash when curl handles are manually released within destructors inside the PHP shutdown sequence.
- Fix -Werror=address-of-packed-member (#1664).

### Internal changes
- Skip curl test if curl is not loaded #1668

## Profiling (v0.7.2)
- Fix crash with SAPI env vars DataDog/dd-prof-php#46
- Avoid .message_handler due to upstream bug DataDog/dd-prof-php#47
0.76.1 ### Fixed

- Bump PHP minimum version in PECL #1652
- PHP 7.3+ Fix compatibility with opcache #1656

### Internal changes

- %d resource ids in language tests #1657
0.76.0 ### Added
- Add B3 headers injection and extraction #1629
- Collect http.client_ip #1621

### Changed
- Filter x-datadog-tags for _dd.p. prefix and add DDTrace\add_distributed_tag #1618
- Rename query string obfuscation variable #1630
- Collect query string by default and obfuscate #1615
- Update regex to account for URL encoding #1622
- Update library versions used in tests + support plesk paths #1632
- Remove service name propagation #1635, #1636
- Add integration loaded output for deferred integrations on DD_TRACE_DEBUG=1 #1639
- Reduce memory footprint of strpprintf #1640
- New implementation for hooks #1617
- (PHP 5) Add g1a/composer-test-scenarios and symfony/flex to composer allow-plugin list #1647

### Fixed
- Fix crash with numerical value in $_SERVER array #1634
- Fix missing query string on http.url from integrations #1642

### Internal changes
- Add link to compatibility requirements in README.md #1610
- Manually build PHP for randomized tests images #1616
- Eliminate PHP 5 references from master #1626
- Remove PHP 5 from CI and fetch it instead from the latest PHP-5 branch build #1624
- Fix test_web on PHP 8.0 #1631
- Add g1a/composer-test-scenarios and symfony/flex to composer allow-plugin list #1637
- (PHP 5) Run Wordpress testsuite actually against PHP 5 #1638
- Test debian bullseye instead of stretch in CI #1644
- Update rel env to use 0.75.0 (#1620)
- Disable clang format check in CI #1619
- Add one more allow-plugins in root composer.json #1646
- (PHP 5) Add g1a/composer-test-scenarios and symfony/flex to composer allow-plugin list #1647

## Profiling (v0.7.0)
# Changed
- Do not upload empty profiles. See DataDog/dd-prof-php@e03ff23e5216f863061285e13170d011d0c04bc8 for details.

# Fixed
- Fix a small memory leak with env var handling.

# Added
- Add SAPI as profile tag.
- Add support for `DD_PROFILING_EXPERIMENTAL_CPU_TIME_ENABLED` env var. It previously supported this functionality under a different, undocumented name.
0.75.0 ## Tracer
### Added
- Add a new decision maker mechanism #1598
- Rename DD_TRACE_X_DATADOG_TAGS_PROPAGATE_SERVICE to DD_TRACE_PROPAGATE_SERVICE #1612, #1613
- Add support for unix domain sockets #1601
- Add RedisCluster split by host #1602 (Thanks to @radykal-com)
- Add http.useragent to root span #1607

### Fixed
- Fix #1582: *_id keys in meta and metrics are wrongly encoded #1599
- Fix dlerror logging format #1605
- Fix DD_TRACE_URL_AS_RESOURCE_NAMES_ENABLED accidentally guarding http.method and http.url as well #1608

### Internal changes
- Fix downstream job trigger for deployments to rel-env #1597
- Update dd-trace-php link for reliability environment #1595
- Move request-replayer from our internal deprecated repository to dd-trace-php #1600
- Support restricting PHP versions while running randomized tests #1604
- Transition to non-legacy circleci images #1609
0.74.0 ## Tracer
### Added
- Add configurations for retaining select query string parameters in resources and http.url #1566

### Changed
- Respect autofinish on flush(), add warnings in debug mode when having unbalanced spans #1564, #1569
- Loose restrictions around distributed tracing context setting #1571

### Fixed
- Fix dispatch resetting #1570
- Fix run_time_cache initialization for closure calls with foreign scope on PHP 7.4-8.1 #1578
- Eliminate the separate span id stack, fix distributed tracing trace_id #1586
- Fix handling of INI and ENV changes post minit, pre runtime #1593
- Fix inconsistent module load and unload sequence #1585
- Fix installer setting check for extensions #1584

### Internal changes
- Pin composer on PHP 7 docker containers to version 2.2 #1565
- Disable flaky test on PHP 5.4 #1583
- Remove Symfony 4.2 from PHP 7.4 web tests #1587
- Add the scenario name to the randomized test docker name #1590
- Fix ownership of files within release artifact tars #1591

## Profiling (v0.6.1)
### Fixed
- Bump profiling to v0.6.1 #1588. This re-initializes static variables on startup/minit which may help prevent Apache reload from crashing.
- Enable profiling installation on PHP 8.1 #1576

## Application Security Monitoring (v0.3.2)
### Fixed
- Fix hybrid extension initialisation [#92](https://github.com/DataDog/dd-appsec-php/pull/92)
0.73.0 ## Application Security Monitoring
### v0.3.1
#### Fixes
- Fix relative module order with ddtrace on PHP 7.3 issue [#88](https://github.com/DataDog/dd-appsec-php/issues/88) - [#86](https://github.com/DataDog/dd-appsec-php/pull/86)

### v0.3.0
#### Breaking Changes
- Rename ini settings from `datadog.appsec.rules_path` to `datadog.appsec.rules` [#74](https://github.com/DataDog/dd-appsec-php/pull/74)
- Interpret `datadog.appsec.waf_timeout` as microseconds rather than milliseconds [#74](https://github.com/DataDog/dd-appsec-php/pull/74)

### Fixes
- Add obfuscator strings when initialising WAF from client settings [#83](https://github.com/DataDog/dd-appsec-php/pull/83)

#### Additions
- Add WAF metrics and errors to traces [#79](https://github.com/DataDog/dd-appsec-php/pull/79)
- Actor IP resolution from request headers [#80](https://github.com/DataDog/dd-appsec-php/pull/80)
- Add support for WAF event obfuscator [#82](https://github.com/DataDog/dd-appsec-php/pull/82)
- Add obfuscator regex for values [#84](https://github.com/DataDog/dd-appsec-php/pull/84)

#### Miscellaneous Changes
- Update installer links in documentation and tests [#76](https://github.com/DataDog/dd-appsec-php/pull/76)
- Add `parameter_view` for non-ownership of WAF parameters [#78](https://github.com/DataDog/dd-appsec-php/pull/78)
- Accept IP list on `X-Cluster-Client-IP` header [#81](https://github.com/DataDog/dd-appsec-php/pull/81)
- Update ruleset to v1.3.1 [#82](https://github.com/DataDog/dd-appsec-php/pull/82)
- libddwaf upgraded to v1.3.0 [#82](https://github.com/DataDog/dd-appsec-php/pull/82)
- Update installation instructions [#84](https://github.com/DataDog/dd-appsec-php/pull/84)
0.72.0 ### Added
- Add support for memcached on PHP 8 #1558

### Fixed
- Fix #1544: Handle hook dummy span hack when assigning parent #1557

### Internal changes
- Add gdbinit files for php 8.0 and 8.1 #1556
- Add system tests in CI #1552
- Use latest 8.0.17 in buster images #1559
- Update flex to v1.18.5 in composer.lock files for Symfony 4.0 and 5.0 #1560
- Add a single test to xfail after upgrade of docker image to 8.0.18 #1561
- Update link to download 0.71.1 in the reliability environment #1555
0.71.1 ### Fixed

- Use -1 as uninitialized op_array_extension marker #1550

### Internal changes

- Use latest ubuntu images in CI #1543
- Use 8.1.4 in development buster images #1553
- Add randomized tests for PHP 8.1 and make buster containers arm64 ready #1551
- Remove regressions from randomized tests #1547
0.71.0 ### Changed
- Do not disable tracing when ionCube loader is detected #1520

### Added
- Added ES integration support for newer PHP and ES versions #1516
- Add support for wordpress on PHP 8 and use a different hook #1522
- Add Code Hotspots #1517
- Implement split by instance in PDO #1498

### Fixed
- Trigger profiling interrupt function before internal observer_end #1499
- Fix compatibility with PHP 8.2 (master) #1521

### Internal changes
- Clean up Tea SAPI and allow ddtrace to run there #1502
- Use a new curl session for each writer iteration and clear it after #1504
- Increase bgs backlog by 20% #1506
- Always include the Tea SAPI Catch2 test header #1507
- Add is_nil function to UUID component #1515
- Fix randomized testsuite memory limits and background sender curl handling #1525
- Run cmake-format on TEA's CMakeLists.txt #1527
- Simplify calls (zai symbols), add support for generators #1529
- Update profiling to v0.5.0 #1537
- Update profiling to v0.5.1 #1541
- Move from checking status code reported by vegeta to check error logs #1540
- Fix ZAI symbols on PHP 7.3+ (randomized tests failures) #1536
- ??Add a test case for guzzle url no schema + split by domain #1534
- Point rel-env deployment to GH release 0.70.1 #1531
- Tea ZE Suppport #1526
- Show curl response status code in tests #1524
- Add long running script memory check to randomized tests #1356
- Add a test for sub path and wildcards normalization #1505
0.70.1 ### Changed
- Disable x-datadog-tags header propagation #1528
### Fixed
- Fix Laravel exceptions being over-reported #1361
- Fix too aggressive symbol exporting #1523
- Hide the dummy span during trace hooks away #1519
- (PHP 5) Remove empty multi_curl handles hashtables #1513
- Do not mess with the span duration in curl integration #1512
- Fix #1510 post-install not detecting required extension #1511
- ??Explicitly depend on ext/standard and fix in-tree builds #1509
0.70.0 ### Changed
- Make the legacy API a pure proxy to internal spans #1471
- Load the legacy tracer only when actually used #1449
- Update profiling to v0.4.0 #1495

### Added
- Add appsec library to the release bundle #1469
- Add appsec installation #1470

### Fixed
- Always emit NoopSpans if the tracer extension is disabled #1475
- fix dd_update_upstream_services on php5 #1476
- Setup: Error if profiling is given but unavailable #1477
- Ensure dropped spans are distinguishable from unfinished spans #1480
- Fix Span::setError docblock #1481
- Fix invalid reads in background sender #1483
- Restore support for manual distributed tracing #1484
- Remove version number from datadog-setup.php's help output #1487
- Improve error detection for datadog-setup.php #1489

### Internal changes
- Add parallelism to makefile for builds and test runs #1382
- Add profiling module to randomized tests #1412
- Run randomized internal API stress testing in CI #1445
- Switch to Symbols interface, cleanup tests #1465
- Improve Symbol Call interface, introduce closure support #1467
- Support in-tree builds of Tea #1472
- Sandbox Bailout #1473
- Patch zend_alloc.c to not crash in CI for PHP 7.0 to 7.2 #1478
- build tea once during development #1479
- Update PHP 8.1 dependencies, include laravel testing #1482
- Inline queue function pointers #1490
- Adjust stack sample max stack depth #1491
- Remove unused profiling components #1492
0.69.0 ### Breaking changes
- Query string is now not included in `http.url` in Nette integration and in generic web frameworks tracing.

### Added
- Implement x-datadog-tag propagation and _dd.p.upstream_services #1405

### Changed
- Get rid of ini-ignoring and redundant checking of ddtrace being enabled #1448
- Strip query string from http.url in generic web tracing #1454
- Use internal root spans in Integrations in place of using the legacy API #1383
- Hard-code version in installer, remove --url option, rename it #1463
- Remove generator support on PHP 7 #1464

### Fixed
- Ensure a proper sampling decision is also evaluated when distributed tracing is used #1450
- Fix ObjectKVStore compatibility with throwing autoloaders #1451
- Properly report error for artisan command in Laravel 7+ #1456 (thank you @ls-paul-julien-vauthier)

### Internal changes
- Migrate ZAI tests to use ZAI SAPI harness #1457
- Move ZAI SAPI to root directory #1411 #1443
- ZAI methods on PHP 5: Args and retval #1401
- Implement ZAI Value interface #1453
- Implement ZAI SAPI test harness (catch2) #1455
- Implement ZAI SAPI test fixture (catch2) #1458
- Refactor ZAI SAPI into Tea SAPI, brings various improvements #1462
- Implement ZAI Symbols interface #1452
- Address Sanitizer check for ZAI SAPI - 1459
- Fix ZaiSapi_ROOT path in Makefile #1443
0.68.2 ### Changed
- Clean up generate-final-artifact.sh #1442

### Fixed
- Replace direct access of meta/metrics zvals by safe array access in most places #1440
- Always separate meta and metrics arrays on access #1441
- Bump profiling to v0.3.0-rc.6 (fixes some linking bugs) #1444
0.68.1 ### Fixed
- Do not diagnostics when ddtrace is disabled #1434
- Fix json symbol address resolving logic #1432
- Disable tracing when PHP is executed during RINIT #1429
- Change Predis integration type to "redis" #1427
0.68.0 ### Added
- Bring priority sampling to internal #1366
- SpanData::$parent property #1369
- Add queue and channel components #1388
- Add log component #1390
- Add arena component #1391
- Add stack sample component #1392
- Add uuid component #1393
- Add time component #1394, #1408
- Add profiler installation #1422
- Zai/json #1378, #1397
- Add Code Coverage #1389

### Changed
- (PHP 8) Migrate ObjectKVStore to WeakMap internally #1362
- Adjust components #1387
- Export only specific symbols #1407
- Sanitize user information from urls #1396
- Split INI setting in installer so they can be added separately when missing #1415
- Use the new targz bundle format with the new PHP installer #1421
- Have both legacy and new installer to fail when json PHP extension is not enabled #1410

### Fixed
- Fix Laravel unnamed route with caching and domain specification #1364
- Fix http.url of internal root span #1360
- Add small framework to stress test our internal API with bogus inputs #1365
- PDOIntegration::parseDSN fails to parse some DSN #1373
- Fix constructor of OpenTracing wrapper when no Datadog tracer is provided #1406 - thanks @OGKevin for the reproduction case
- Fix parsing of urls without schema into host name #1385
0.67.0 ### Added
- (PHP 5) Add zai config, internal spans, and exception handling (#1339)
- (PHP 7, 8) Add mongodb instrumentation (#1345)
- PHP installation script (beta) (#1335)

### Changed
- (PHP 5, 7) Move _dd.origin handling to internal #1347

### Fixed
- (PHP 7, 8) Fix exception handling with opcache cfg optimization enabled (#1344)
- (PHP 7, 8) Fix memory leaks in curl and error handling (#1350)
- Use ObjectKVStore in place of internal registry to store PDO connection parameters (#1355)
0.66.0 ### Breaking changes
* Global tags are now assigned early. This means that users have to make sure to not overwrite `meta`, but only add to it instead, if they don't want to lose global tags. Wrong: `$span->meta = [ 'some' => 'tag' ]`. Correct `$span->meta['some'] = 'tag'`.
* Support for legacy param `DD_TRACE_RESOURCE_URI_MAPPING` has been dropped with the migration to C code, after more than a year of deprecation. Use `DD_TRACE_RESOURCE_URI_FRAGMENT_REGEX`, `DD_TRACE_RESOURCE_URI_MAPPING_INCOMING`, and `DD_TRACE_RESOURCE_URI_MAPPING_OUTGOING ` instead. See [resource mapping](https://docs.datadoghq.com/tracing/setup_overview/setup/php/?tab=containers#map-resource-names-to-normalized-uri) for more details.

### Added

- (PHP 8) Migrate _dd.origin and distributed header sending to internal (#1267)
- (PHP 5) Add headers ZAI implementation (#1308)
- Add support for PHP 8.1 (#1297)

### Changed
- (PHP 7, 8) Internal (root) span initialization (#1329)

### Fixed

- (PHP 5, 7, 8) Remove all lines containing zai_sapi from config.m4 (#1333)
- (PHP 7, 8) Fix unnamed service spans caused by improper handling of `DD_TRACE_ENABLED` (#1332)
0.65.1 ### Fixed
- Prevent flushing traces of requests without actual PHP code #1327
0.65.0 **WARNING**: Resource names for ?Lumen? applications will change by default to `GET /actual/uri/path` from the previous format `GET action_name` or `GET App\Controller@action_method`. You might need to adjust your monitors and filters for the change. In order to go back to the previous behavior, instead, you can temporarily set `DD_TRACE_URL_AS_RESOURCE_NAMES_ENABLED=false`

### Added
- Add functions ZAI support for PHP 5 and 7 #1300
- Add properties and exceptions ZAI implementations for PHP 5 #1306
- Enhance exception reporting on Laravel 5+ #1322

### Changed
- Remove src/dd-doctor.php #1316
- Honor DD_TRACE_URL_AS_RESOURCE_NAMES_ENABLED in Lumen resource naming #1318

### Fixed
- Fix CLI processes emitting empty root spans when CLI tracing is not enabled #1320
0.64.1 **WARNING**: Users doing manual instrumentation using the `GlobalTracer::get()->startActiveSpan()` api should update to this version from 0.63.0 and 0.64.0.

### Fixed
- Fix span start times of userland spans (#1312)
0.64.0 **WARNING**: With this release the file `_generated.php` is not used anymore and files `_generated_api.php` and `_generated_internal.php` are generated instead. This only impacts users having a very custom installation procedure that requires custom builds and manual copy of files.

### Added
- Bring ZAI config, internal spans, and improved exception handling to PHP 7 #1293

### Fixed
- Disable flaky ext/ftp tests on PHP <8.1 #1296
- Compatibility with PHP 7.4+ preloading #1298 (thank you @olsavmic for the investigation and reproduction case)
- Check for php8 binary in package/post-install.sh script #1301 (thank you for the contribution @daiwai)
- Support userland spans with custom root spans created internally #1303
- Fix memory leak of already defined global tags #1304
0.63.0 ### Added

- ZAI config (#1260)
- Use exceptions ZAI for PHP 7 as well (#1283)

### Fixed

- Fix arginfo of error & exception handler (#1291)
0.62.1 ### Fixed
- Add linux/securebits.h to CentOS docker container, to have it present in linux build artifacts #1286
- Handle an additional case of capabilities being dropped within our background sender #1287
0.62.0 ### Added
- ZAI env #1250
- Add ZAI component for reading headers #1256
- (PHP 8) Add proper exception and error reporting #1272
- (PHP 8) Register SpanData->exception property and store exception info there instead of internally #1281
### Changed
- Refactor internal span objects to be allocated together with their internal data #1254
- Enforce metrics to be floats in internal serializer #1258
- Allow for global debug mode, add zai testing to Makefile and more minor testing improvements #1265
- Move DDTrace\Format to src/api #1271
- Moving spans from userland to extension #1262
### Fixed
- Fix msgpack serialization of empty arrays #1259
- Set SECBIT_NO_SETUID_FIXUP to prevent crashes after setuid() calls #1276
- Apply original curl headers when curl_setopt_array() fails #1279
- Fix owner of files included in the distributed .tar.gz archive #1280
- Fix tests: Pin Symfony 4 tests to laminas/laminas-code < 4.4 #1266
0.61.0 ### Added
- Add \DDTrace\get_current_context #1227
- Create property ZAI seam for PHP 8 #1246
- Create exceptions ZAI seam for PHP 8 #1248
- Run mongodb-driver testsuite in CI with and without the tracer #1255
### Changed
- Move mapping-settings to be deserialized as a zend_array * #1253
### Fixed
- Remove TSRMLS_C from \DDTrace\current_context #1249
0.60.0 **Breaking change**: Users that are not explicitly setting or using json encoding are not impacted but this breaking change. Users either requiring json encoding for special purposes to send traces to their own custom targets or relying on the Stream class (that was not part of the public api in src/api) will have to manually clone the classes from the previous release SHA and register themselves. This is discouraged because as of today, json causes a fallback to blocking sync transmission to the Datadog agent, while using messagepack we support the unblocking async transport to our agent.

### Added
- Zend Abstract Interface: Method call seam (PHP 5) #1186
- ZAI Sandbox #1213
- Auto-flushing (PHP 5) #1189
- Nette integration (v2 and v3) #504 #1220 (thanks @kozaktomas for the original contribution and thanks @Anilm3 for reviving the original PR)
- Begin documenting architecture #1225
- Detect ZAI ZMM leaks #1229
- ZAI function-call seam (PHP 8) #1234
### Changed
- Update Docker ci docs #1202
- Remove Json encoder and Stream transport #1235
- Move from uint63 to uint64 for trace_id span_id and parent_id #1237
- Remove redundant dd_trace_tracer_is_limited() calls #1239
- Change config.m4 to allow in-tree build #1238
- Eliminate "innerhook" from trace_method and trace_function #1240
- Remove TSRMLS_* macros from PHP 7 and PHP 8 #1241
- Deferred loading with ZAI function-call seam (PHP 8) #1243
- Speed up randomized testing using a post #1192 version #1245
- Self update composer in the image we use to prepare the code in CI (#1221)
### Fixed
- Fix meta header name for language version in BGS agent request #1244
- Fix flaky PCNTL tests (#1232)
0.59.0 ### Added
- [ZAI SAPI] Zai\trigger_error() SAPI function #1212
- Autocomplete Makefile target names in buster dev images #1224

### Changed
- Use new buster containers in CI #1210
- remove _tmp suffix from development buster images #1217
- Tidy the components/ #1216
- Tidy up the docker-compose file a bit #1223

### Fixed
- Disable PCNTL in forked processes #1196
- Updated contributing and fixed typo on Makefile::test_all #1218
- Fix ingestion control reporting #1222
- Skip tests that have development environment dependencies #1215 (thanks for the report @remicollet)
- Always resolve curl class entry symbols at runtime (PHP 8) #1209 (thanks for the report @metaxy)
0.58.0 ### Added
- ZAI SAPI #1204
- [ZAI SAPI] Add test helpers #1208
- Add a Kubernetes example to container tagging tests #1206
- Add Buster containers for PHP 5.4 through 7.4 #1201
### Changed
- Remove PHP version prefix from buster development containers #1203
### Fixed
- handle laravel 7+ generated:: prefix for unnamed routes #1198
0.56.0 ### Added
- Add randomized testing to test hundreds of different scenarios #1131
- Add configured http headers to root span #1154
- Add the possibility to freeze a regression in a specific randomized tests scenario #1153
### Changed
- Remove non php7 code from ext/php7 folder #1162
- Remove non php5 code from ext/php5 folder #1164
### Fixed
- Add missing dependency on curl extension for PHP 8 #1144 (Thanks @remicollet!)
- Fix initialization of `curl_multi_init()` for distributed tracing #1159
- Add comment to long running example for method instead of function #1149
- Fix linting + xfail a flaky test #1147
- Update links in README.md to configuration and OT docs #1069
- Fix clang-format installation after circleci image update to buster #1141
0.55.0 ### Added
- Slim 4 integration #1136
- Add support for redis cluster #1137
0.54.0 ### Added
- Support distributed tracing for calls to curl_multi_exec() #1119
### Changed
- Refactor PHP 7 curl distributed tracing #1123
- Real package verification on nginx, cli, apache #1129
0.53.0 ### Added
- Add function to correctly extract trace id in all contexts #1125
### Fixed
- Attach fatal errors to userland root span on PHP 5.6 + PHP 5.5 #1109
- Rebuild CentOS 6 containers #1116
- NullLogger is essential, not optional #1113
- Make Uri to resource name normalization case insensitive #1120
- Avoid empty resource names in Yii in case of root `/` paths #1122
- Fix multiple deferred integration loading on PHP from 7.0 to 7.2 #1121
- Fix error in case of x-datadog-origin header in distributed tracing on PHP 7.0-7.2 #1124
0.52.0 ### Added
- Laravel 8 support #1100 #1102
- Enable Yii 2 on PHP 8 #1106
- Add PHP 8 asan tests #1108

### Changed
- Use the observer API on PHP 8 #1089
- Remove integrations that do not yet support PHP 8 #1103
- Update containers to PHP 8.0.0 #1111

### Fixed
- Fix distributed tracing on PHP 8 #1099
0.51.0 ### Added
- Support service split by host in PHPRedis integration #1084
- Support service split by host in Predis integration #1094
- Load WordPress 5 integration on PHP 5 #1086
- Custom pre-RC5 build #1093
- Second custom pre-RC5 build #1096


### Changed
- Consolidate 3rd party code into vendor directory #1082
- Separate extension code by PHP major version #1085
- Make include paths relative to ext/ #1087
- Copy PHP 7 extension code to php8 directory #1088
- Upgrade to composer 2 #1075
- Fix composer self-update on master properly handling cached directories #1092
- Make execution of ext tests locally faster and easier #1091
0.50.0 ### Added
- Experimental support for PHP 8.0.0 RC 2 & RC 3 (Provided for testing only and not intended for use on production) #1039 #1053 #1054 #1076
- Trace Symfony controller and more #1048
- Add example for long running processes #1049
- Add tests and support for WordPress 5 on PHP 7 #1058 #1059 #1081
- Add tests for Symfony 5 #1060 #1062

### Changed
- Build alpine packages on alpine and add e2e package verification #774
- Add fatal error info to `DDTrace\Tracer` made root spans on PHP 7 #1040
0.49.0 ### Added
- Add .gdbinit files from released PHP versions #996
- Support PHP 5.5 #1008, #1018, #1020, #1030, #1032
- Add PHP 5.4 support to PECL package #1019
- Add Levi and Luca as lead developers to package.xml #1025
- Close open spans on fatal errors #1028
- Attach fatal errors to all open internal spans #1034
- Experimental PHP 8.0.0 RC 1 support (Provided for testing only and not intended for use on production) #1027 #1036 #1041

### Changed
- Enable the background sender by default on PHP 5.4 #991
- Remove userland references to sandboxing #1003
- Sandbox flush in limited mode on PHP 5.4 #1009
- Defer loading of PDO, Memcached, Slim, WordPress, and Yii integrations until first usage #1006
- Clear separation in testing of src/api vs src/DDTrace #1017
- Harden curl integration #1024
- Compile src/DDTrace/version.php into _generated.php to avoid loading it at runtime #1026
- Disable instrumenting generators on PHP 5 #1050

### Fixed
- Fix pecl-build for real releases #998
- Properly group traces sent in batch during long running scripts #1029
- Add back support for trace analytics to curl integration #1031
0.48.3 ### Fixed
- Fix sigsegv in deferred loading #1022
0.48.2 ### Changed
- Update excluded modules #1011
- Deprecate dd-doctor.php #1014

### Fixed
- PHP 5.4 build in ZTS mode #1011
- Call ddtrace_engine_hooks_{rinit,rshutdown} #1013
0.48.1 ### Fixed
- Symfony HttpException with status less than 500 should not be considered an error #995, #1002 (thanks, @franek!)
- Block Zend signals from background sender thread #1000
- Fix out-of-sync issue if span stack is closed while a closure is running #1001
0.48.0 ## Important!
The legacy API for custom instrumentation `dd_trace()` is now a no-op in this release. See the [upgrade guide](https://docs.datadoghq.com/tracing/custom_instrumentation/php/?tab=tracingfunctioncalls#legacy-api-upgrade-guide) for instructions on upgrading.

The way PHP 5.4 and 5.6 hook into the engine has changed. Please read [deep call stacks on PHP 5](https://docs.datadoghq.com/tracing/troubleshooting/php_5_deep_call_stacks/) for more information on potential issues.

All calls to `DDTrace\trace_function` or `DDTrace\trace_method` functions need to happen before the first invocation of the target e.g. `DDTrace\trace_function('foo', ...)` should be done before `foo` is called for the first time. In the future this may need to be done before the target is even defined. This was previously noted in 0.45.0, but is now enforced for all PHP versions.


### Added

- Deferred initialization of integrations, and matching integration to a callable at compile time #891 #972
- Test for non-zero durations #950
- Add support for PHPRedis 3 extension on PHP 7 #948
- Add support for PHPRedis 4 extension on PHP 7 #982
- Add support for PHPRedis 5 extension on PHP 7 #983
- Add non-tracing API (hook_function/hook_method) #984

### Changed

- Improve CGI usage in test suite #952 (thank you @remicollet!)
- Remove `ddtrace.strict_mode` INI setting #955
- Sandbox PHP 5.6 using `zend_execute_ex` + `zend_execute_internal` #970
- Package `_generated.php` with PECL #980
- Move startup logs behind debug mode #986
- Split PHP 7's opcode handlers for previous case #987
- Sandbox PHP 5.4, cache negative lookups on PHP 5, and delete integrations using dd_trace #988
- Cleanup PHP 7 curl handlers #989
- Update dd_trace warning for being a no-op #990
- Defer loading of PHPRedis #992
- Defer loading of Predis #994

### Fixed

- Compatibility issues with PECL #845 (thank you @remicollet!)
- Fix package.xml validation for PECL #954
- Removed obsolete pre-integrations loading check from dd-doctor.php #956
- Fix off-by-one error with longest config name for integrations #985
0.47.1 **Deprecation notice**: The following environment variable names have changed. The old names are deprecated. See #969 for more details.

| Old Name | New Name |
| ---------------------------------------------- | ---------------------------------------------------- |
| `DD_<INTEGRATION>_ANALYTICS_ENABLED` | `DD_TRACE_<INTEGRATION>_ANALYTICS_ENABLED` |
| `DD_<INTEGRATION>_ANALYTICS_SAMPLE_RATE` | `DD_TRACE_<INTEGRATION>_ANALYTICS_SAMPLE_RATE` |
| `DD_INTEGRATIONS_DISABLED` | `DD_TRACE_<INTEGRATION>_ENABLED` |

### Added

- Add `DD_TRACE_AGENT_URL` environment support #926 (thank you @nurcahyo!) #962
- Support for `DD_TRACE_<INTEGRATION>_<SUFFIX>` env vars #969
- Deeper instrumentation of Symfony 4.4 #967

### Fixed

- Move startup logging to first RINIT #961
- Fix propagation of `DD_ENV` and `DD_VERSION` to children spans #963
- Remove query string when new resource mapper is used #973
0.47.0 **Deprecation notice**:
- Setting service name via `DD_SERVICE_NAME` is now deprecated and will be removed in a future release. Use `DD_SERVICE` instead for consistency with other Datadog tracers and services.
- Setting global tags via `DD_TRACE_GLOBAL_TAGS` is now deprecated and will be removed in a future release. Use `DD_TAGS` instead (with the same format) for consistency with other Datadog tracers and services.
- `DD_TRACE_RESOURCE_URI_MAPPING` is deprecated now that it has been split into `DD_TRACE_RESOURCE_URI_MAPPING_INCOMING` and `DD_TRACE_RESOURCE_URI_MAPPING_OUTGOING`.
- The functions `dd_trace` and `dd_trace_forward_call` are deprecated and will be made a no-op in the next release. See #924 for how to migrate.

### Added

- Apply new uri to resource normalization rules #928
- Add DDTrace namespace for internal functions #930
- Startup logging (can be disabled by setting `DD_TRACE_STARTUP_LOGS=0`) #935

### Changed

- Sandboxed cURL (PHP 5) #911, #938
- Sandbox Lumen (PHP 5) #945
- Sandboxed Symfony (PHP 5) #946
- Add support for service name configuration via DD_SERVICE #919
- Add support for DD_TAGS, fallback to DD_TRACE_GLOBAL_TAGS #920
- Add support for DD_VERSION and DD_ENV variables #803 - thanks @brettlangdon
- Enable OpenTracing test suite in CI #921
- Defaults for name and resource on SpanData #923
- Refactor dispatch.{c,h} #932
- Extract ddtrace_sandbox_begin/ddtrace_sandbox_end helpers #940
- Warn on dd_trace usage if DD_TRACE_WARN_LEGACY_DD_TRACE #941

### Fixed

- Only build on 64-bit platforms #929 (thanks for the report @remicollet)
- (PHP 5.4) Make compilation to single file compatible with `include __DIR__ . '...'` in files #943
0.46.0 ## Important behavior changes in this release
If you use the OpenTracing API, the OpenTracing compatible tracer will no longer be returned from `OpenTracing\GlobalTracer::get` automatically. See #899 or [the documentation](https://docs.datadoghq.com/tracing/opentracing/php/) for more details.

On PHP 7, `dd_trace` will no longer work on internal functions e.g. `curl_exec`; use `dd_trace_method` or `dd_trace_function` instead. Additionally, when targeting internal functions they also need to be added to the environment variable `DD_TRACE_TRACED_INTERNAL_FUNCTIONS` which is a comma separated list e.g. `DD_TRACE_TRACED_INTERNAL_FUNCTIONS=array_sum,mt_rand,DateTime::add`. These two changes enable a significant performance optimization.

### Changed
- Avoid usage of spl_autoload_register while still allowing noop manual instrumentation without ext installed #877
- Sandbox Slim integration #878
- Sandbox Lumen integration #884
- Sandbox CakePHP integration #898
- Remove legacy hook for OpenTracing #899
- Noop the legacy API when a potentially conflicting module detected #900, #905
- Move the request init hook to `auto_prepend_file` #907
- Optimize internal functions handlers at startup (PHP 7) #895

### Fixed
- Fix early return in dd-doctor #894 (thank @tatsuo48!)
- Fix opcache check in dd-doctor #896 - thanks @tatsuo48
- Update CONTRIBUTING.md #897 - thanks @askkaz
0.45.1 ### Fixed

- Fix uncaught exceptions with auto flushing enabled #882
- Prevent curl and guzzle from inheriting top level app name #885
- Change PDO service name to lowercase #886
0.45.0 ## Important behavior changes in this release
If you are using `dd_trace`, `dd_trace_function`, or `dd_trace_method` then you need to call these functions before the first invocation of the target e.g. `dd_trace('foo', ...)` should be done before `foo` is called for the first time.

### Changed

- Compile to one single file #840, #874
- Simplify configuration #833, #870
- Refactor module blacklist #852
- Cache that a function is not traced #854, #863
- Simplify spl_autoload_register instrumentation #867
- Use normalized URL as the resource name for curl #869 (thanks, @akdh!)
- Sandbox header and http_response_code #875

### Fixed

- Fix variadic args with empty function signature #872
- Bump phpstan to 0.12 and fix issues #841
0.44.1 ### Fixed

- Revert "Merge pull request #815 from DataDog/levi/ddtrace_moment" #859
This fixes issue #855.
0.44.0 ### Fixed

- Fix ddtrace_config_* functions to use sapi_getenv #848
- Fix curl integrations #851

### Changed

- Whitelist the `cgi-fcgi` SAPI #835
- Add ddtrace_hash_find_ptr_lc which stack-allocates small strings #839
0.43.0 **Note: This release comes with minor behavior changes for tracing closures on PHP 7. Please see [the PR for details](https://github.com/DataDog/dd-trace-php/pull/762).**

### Added

- Service mapping with `DD_SERVICE_MAPPING=pdo:payments-db,mysqli:orders-db` #801, #817
- Auto flushing with `DD_TRACE_AUTO_FLUSH_ENABLED=1` (PHP 7) #819, #826
- Disable automatic root-span creation with `DD_TRACE_GENERATE_ROOT_SPAN=0` #834

### Changed

- Always return unaltered VM dispatch (PHP 7) #762
- Uri to resource name ON by default #798
- Sandbox Guzzle #809, #816
- Sandbox predis integration #813
- Sandbox curl (PHP 7) #814, #817, #831
- Convert pid from long to string for internal spans #825
- Move some Configuration methods to functions written at the C level #829
0.42.0 ### Added

- Close open sandboxed spans on exit (PHP 5) #780
- Prehook feature to run tracing closures before the original call #784

### Changed

- Enable background sender (BGS) by default #796, #800
- Improves alpine extensions build/verify process #774
- Refactor Symfony integration #786
- Let curl calculate Content-Length header value when sending requests to the agent #804

### Fixed

- Pass return value as null to tracing closure when value IS_UNDEF #791 (thanks for the report @wajdisawaf!)
- Set a sane memory limit when running php from inside post-install hook #792
0.41.1 ### Fixed
- Fix pecl installs #781
- Fix background sender logging for ZTS #783
0.41.0 ### Added
- Put compile_file hook behind a feature flag, default on #757

### Changed
- Require curl at configuration time #766
- Log background sender messages to error_log #776
- Deprecate manual usage of legacy Symfony bundles and Laravel provider #772
- Separate background sender timeout env vars from userland #773

### Fixed
- Gracefully handle a dropped span on exit #765
- Update contribution guidelines #769
- Trace http response code when set via function 'http_response_code' #755 - thanks @aderiyenko
- Fix execinfo on builds from source in Alpine containers #752
0.40.0 ### Added
- Background sender debug info in dd-doctor #758

### Changed
- Run neighboring extension's opcode handlers before instrumenting #754

### Fixed
- Circuit breaker should not prevent background sender #760
0.39.0 ### Changed:
- Bring background sender to feature parity #738
0.38.1 ### Fixed
- MessagePack serialization with a reference #730
0.38.0 ### Added
- Official support for PHP 7.4 #723
- Tools to measure memory overhead #718

### Changed
- Move Laravel to sanboxed api #700
- Remove the sandbox API for PHP 5.4 #719
- Dual-licensed under Apache 2.0 or BSD3 #727

### Fixed
- README reference to RELEASING.md was removed #720 (thanks @v1v!)
- MessagePack serialization with a reference #730
0.37.0 ### Added
- Target a specific PHP version during install by setting `DD_TRACE_PHP_BIN` #604
- Curl Integration: Add all available information from `curl_getinfo()` as span tags #642

### Changed
- Move dogstatsd client init to rinit #703

### Fixed
- Issues related to limited tracing #689
- Backup and restore last error (related to `error_get_last()` issue) #694
- Handle out-of-sync spans #702
- Sandbox tracer flushing #707
- Enhance OpenTracing StartSpanOptions support #708
- Ensure errors raised in request init hook do not affect `error_get_last()` #709
0.36.0 **Note** environment variable `DD_SAMPLING_RATE` as been deprecated. Use `DD_TRACE_SAMPLE_RATE` instead.

### Added

- Close open sandboxed spans on exit on PHP 7 #679
- Support for tracing without limits #686
- Add extra info to curl errors #688

### Changed

- Enable Sandboxed Symfony Integration #682
- Migrate Mongo library integration to sandboxed api #669
- Rename env DD_SAMPLING_RATE to DD_TRACE_SAMPLE_RATE #687
0.35.0 ### Added

- Compile-time metric #648
- Health metrics: track segmentation faults #621

### Changed

- Migrate Mysqli integration to sandboxed api #635
- Migrate Zend framework integration to sandboxed api #655
- Migrate Symfony framework integration to sandboxed api #667
- Migrate Mongo library integration to sandboxed api #669
- Refactor opcode hooks #659

### Fixed

- CodeIgniter namespace definition #650
- Error reporting in case of fatal errors #671
- Mutation of Memcached result code #663
0.34.1 ### Fixed

- PHP notice of undefined indexes `REQUEST_METHOD` and `REQUEST_URI` when running the request init hook on unsupported SAPI's #637
- Distributed trace ID handling #645
0.34.0 ### Added

- Yii 2 support #624, #630
- Enable tracing when no autoloaders used by setting `DD_TRACE_NO_AUTOLOADER=true` #627
- Safe to-string conversion for all datatypes on `DDTrace\SpanData` #613

### Changed

- Improve dd-doctor with and container tagging detector when open_basedir is set #629
0.33.0 ### Added
- Trace origin support (Synthetics support) #615
0.32.1 ### Added

- Preview CodeIgniter v2 integration #588
- Preview WordPress v4 integration #570

Please report any issues you encounter with these two preview integrations.

### Fixed

- ZF1 integration response after loading #609
- Prevent `mysqli_connect()` span from closing twice #610
- Support mysqli usage when using real_connect approach #607
0.31.0 ### Added
- Add container id header to http transport (Container Tagging) - #552
- Attach exceptions to spans in new API #548

### Changed
- Migrate PDO integration to sandbox API #538
- Migrate Eloquent integration to sandbox API #559
- Migrate memcached integration to sandbox API #578
- Migrate elasticsearch integration to sandbox API #562

### Fixed
- Predis integration for clusters #574 (thank you @RaoulMeyer!)
- Avoid reserved word "fn" #543
- Fix ZTS builds, remove COMPAT_CTX_* #544
- Curl headers are overwritten when using `curl_copy_handle` function #502
- Correctly treat class names as case insensitive #571
- Static keyword handling #576
- Improve sandboxing of request init hook #583
- Make PHP API check more specific #590 (thank you @iedsapala!)
0.30.2 ### Fixed
- Ensure the request init hook is bound by the `open_basedir` INI directive #579
0.30.0 ### Fixed
- Shutdown span flushing blocking the process when forked #493
- Memory access errors in cases when PHP code was run after extension data was freed on request shutdown #505
- Request init hook working when open_basedir restriction is in effect #505
- Ensure global resources are freed in shutdown #521 #523
- Http transport not setting required `X-Datadog-Trace-Count` header #525

### Changed
- Remove `zend_execute_ex` override and trace `ZEND_DO_UCALL` #519
0.29.0 ### Fixed
- Edge case where the extension version and userland version can get out of sync #488

### Changed
- Prefix hostnames as service names with `host-` to ensure compatibility with the Agent #490
0.28.1 ### Fixed
- Race condition when reading configuration from within writer thread context #486
0.28.0 ### Added
- Officially support Symfony 3.0 and 4.0 #475

### Fixed
- Stack level too deep error due to changes in how PHP interprets Opcodes caused by the extension #477

### Changed
- Backtrace handler will be run only once and will display information about maximum stack size being reached #478
0.27.2 ### Changed
- Valgrind configuration to perform more thorough memory consistency verification #472

### Fixed
- Memory leak detected in tests #472
0.27.1 ### Fixed
- Memory leak when garbage collecting span stacks #469
0.26.0 ### Added
- Initial implementation of flushing spans via background thread #450

### Changed
- URL-normalization rule boundaries #457
0.23.0 **NOTE: We changed the way the service name can be configured. Now you must use `DD_SERVICE_NAME` instead of `DD_TRACE_APP_NAME` for consistency with other tracers. Usage of `DD_TRACE_APP_NAME` is now deprecated and will be removed in a future release.**

### Added
- Support for Lumen 5.2+ #416
- Tracing support from the CLI SAPI #422
- Support for Laravel Artisan #422

### Changed
- Now the way to configure service name is through `DD_SERVICE_NAME` instead of `DD_TRACE_APP_NAME` #432
0.22.0 ### Added
- Official support for PHP 7.3 #429
- Tracer limited mode where spans are not created to preserve resources #417

### Fixed
- Error when a subclassed integration returns an object that cannot be cast as a string #423
0.21.0 ### Added
- `dd_trace_forward_call()` to forward the original call from within a tracing closure #284

### Fixed
- `parent::` keyword not honored from a subclass when forwarding a call from a tracing closure #284
- Private and protected callable strings not resolved properly from a tracing closure #303
0.20.0 ### Added
- Force tracing or discarding trace via special Span tag (manual.keep and manual.drop) #409

### Fixed
- Resource use by caching configuration values instead of processing data on every access #406
0.19.0 ### Changed
- Span and SpanContext main implementation uses public fields to share data to allow faster serialization and overall Span overhead #398
- `DDTrace\Encoders\SpanEncoder::encode()` now takes an instance of `DDTrace\Data\Span` instead of `DDTrace\Contracts\Span` #398
- `DDTrace\Processing\TraceAnalyticsProcessor::process()` now takes an instance of `DDTrace\Data\Span` instead of `DDTrace\Contracts\Span` #398
- Improve performance of setTag and setResource #398
- Load required PHP files in one go #387
- Load optional PHP files without filesystem check #387
0.18.0 **NOTE: THIS IS A BREAKING CHANGE RELEASE**

This change should not impact most users.

### Added
- MessagePack serialization for traces sent to the Agent with a new function `dd_trace_serialize_msgpack()` #378

### Changed
- Request init hook module blacklist now avoids miss matching partial matches #372
- Add 10MB cap to payloads sent to the Agent #388
- Added an `getTracesAsArray()` method to `DDTrace/Contracts/Tracer` which returns an array of spans (which are also encoded as an array.) To encode an instance of `DDTrace\Contracts\Span` as an array, use `DDTrace/Encoders/SpanEncoder::encode($span)` #378
- `DDTrace/Transport::send()` now takes an instance of `DDTrace/Contracts/Tracer` instead of an `array` #378
- `DDTrace/Encoder::encodeTraces()` now takes an instance of `DDTrace/Contracts/Tracer` instead of an `array` #378
- The default encoder is now `DDTrace/Encoders/MessagePack`. You can still use the JSON encoder by setting the environment variable `DD_TRACE_ENCODER=json`. It is generally not recommended to use the JSON encoder as parsing JSON payloads at the Agent level is more CPU & memory intensive.
0.17.0 ### Added
- Integration aware spans #360
- Trace Analytics Client Configuration #367
0.16.1 ### Fixed

- Error traces don't appear in "Total Errors" panel #375
0.16.0 ### Changed
- When shutdown hook is executed we disable all tracing to avoid creating unnecessary spans #361
- Inside request init hook we disable all function tracing when we decide not to trace #361

### Added
- Disable request_init_hook functionality in presence of blacklisted modules via `ddtrace.internal_blacklisted_modules_list=some_module,some_other_module` #345 & #370
- Integration-level configuration #354
- `dd_trace_disable_in_request` function which disables all function tracing until request ends #361

### Fixed
- Symfony template rendering spans #359
- Laravel integration user ID errors #363
- Non-success HTTP response codes aren't properly categorized as errors in the APM UI #366
0.15.1 ### Added
- Symfony 2.3 web tests for resource name #349
- Update images and enable leak detection, split tests in CI to Unit, Integration and Web #299

### Fixed
- Resource name on Symfony 2.x requests served through controllers #341
- Sanitize url in web spans #344
- Laravel 5.8 compatibility #351
0.14.1 ### Fixed
- Large number of mysqli spans not containing relevant information #330
0.14.0 ### Added
- Loading of integrations before knowing if the library will be actually used #319
- Ability to define tracing for not yet defined methods and classes #325
0.13.4 Special thanks to @stayallive for helping us debugging the memory issues in his environment! His help and
guidance were of paramount importance.

### Fixed
- Accessing freed memory when instrumentation code un/instrumented itself #314
- Freeing `$this` object prematurely in PHP-FPM VM #317
0.13.3 ### Fixed
- 7.x handling of `$this` pointer passed to the closure causing errors in PHP VM #311
0.13.2 ### Added
- Optional extension .so files compiled with "-g" flag #306
- Log backtrace on segmentation fault, enabled via ddtrace.log_backtrace=1 #300

### Fixed
- Auto-instrumentation when user's autoloader throws exception on not found #305
0.13.1 ### Fixed
- Honor ddtrace provided by composer if user provided one #276
- Remove unused function that was moved to dispatch_table_dtor() (#291)
- PHP 5.4 incorrectly handling nested internal functions #295
0.13.0 ### Added
- Span::setResource as a legit method # 287
- Logging more span's info when in debug mode # 292

### Fixed
- Symfony 4.2 traces generation #280
- Memory leak and misshandling of return value in PHP 5.4 #281
- Drupal crashes (temporary workaround) #285
- Tracing of http status code in generic web requests #288
- Route not set in symfony 3.4 when user calls exit() #289
- Fix hash table dtor for PHP 7 #290
0.12.0 ### Added
- Support for global tags via the environment variable `DD_TRACE_GLOBAL_TAGS=key1:value1,key2:value2` #273

### Fixed
- Memory leaks in `$this` object and return value handling in PHP 5.6 and 7.x #268
- Alpine APK package file being badly formatted when some file paths were over 100 character long #274
- Extension being compatible with CentOS 6 and other distributions using old Glibc #265
0.11.0 **WARNING: THIS IS A BREAKING CHANGE RELEASE**

This change should not impact most of the users as starting from `0.10.0` it is not required (and not recommended) to
manually set the transport. `DDtrace\Transport\Http` no longer accepts a logger as the second argument as it uses
the globally registered logger. If you are using the `Http` class, just remove the second argument from the constructor
invocation.

### Added
- Support for guzzle 6 #254
- Configurable Sampler #260
- Debug mode for logging #261
- Support for symfony 3.3 #266 and #243
- Build php 5.4 extension locally #267
- Basic tracing for unsupported and custom frameworks #264

### Fixed
- Composer PHP compatibility declaration #247
- Release notes for PECL and fix type-os in CHANGELOG #248
- Add missing files to PECL releases #252
- PHP 5.4 installation and build #255
- Trigger of autoloader un-tracing did not respect object #256
- docker-compose based packages verification #257
- Incorrect tar command in one-liner example from getting_started.md #258 - thanks @danielkay
- Auto-instrumentation in Symfony 3.4 and PHP 5.6 #262
- Type-o in command to install .deb packages #263
0.10.0 **WARNING: THIS IS A BREAKING CHANGE RELEASE**

Refer to the migration guide (/UPGRADE-0.10.md) for a detailed description.

At an high level here are the breaking changes we introduced:

- We removed OpenTracing as a required dependency. We still support OpenTracing, so you can do `OpenTracing\GlobalTracer::get()` in your code and still retrieve a OpenTracing compliant tracer, but OpenTracing dependency is now optional.
- We introduced auto-instrumentation and 1-step installation in place of manual registration of providers/bundles. Before, in order to see traces, you had to install our extension, add two dependencies to the composer file and add a provider (Laravel) or a bundle (Symfony). Starting from now you will only have to install the extension. You still have freedom to manually instrument the code, but only for advanced usage.

### Added
- Request init hook configuration allowing running arbitrary code before actual request execution #175
- Support OpenTracing without depending on it #193
- Initial C extension PHP 5.4 support #205
- Removal of external dependencies to support auto-instrumentation #206
- Migration from namespace based constants to class based constants for tags, formats and types #207
- Track integration loading to avoid re-loading unnecessary ones #211
- Documenting release steps #223
- Ability to run web framework tests in external web server #232
- Support for auto-instrumentation #237
- Support for Zend Framework 1 #238
- `Tracer::startRootSpan()` to track the root `Scope` instance which can be accessed with `Tracer::getRootScope()` #241

### Fixed
- The INI settings now appear in `phpinfo()` and when running `$ php -i` #242
0.9.1 ### Added
- Ability to reset all overrides via `dd_trace_reset`

### Changed
- By default do not throw an exception when method or function doesn't exist

### Fixed
- Eloquent integration calling protected `performInsert` method
0.9.0 ### Added
- PHP code compatibility with PHP 5.4 #194
- Move framework tests to tests root folder #198
- Move integrations tests to tests root folder #200
- Allow testing of multiple library versions #203
- Downgrade of phpunit to 4.* in order to prepare for php 5.4 #208
- Configurable autofinishing of unfinished spans on tracer flush #217

### Fixed
- Predis integration supporting constructor options as an object #187 - thanks @raffaellopaletta
- Properly set http status code tag in Laravel 4 integration #195
- Agent calls traced when using Symfony 3 integration #197
- Fix for trace and span ID's that were improperly serialized on the wire in distributed tracing contexts #204
- Fix noop tracer issues with Laravel integration #220
0.8.1 -

Return

PRIVACY POLICY  |  CREDITS
Copyright © 2001-2022 The PHP Group
All rights reserved.
Last updated: Mon Jun 01 07:05:01 2020 UTC
Bandwidth and hardware provided by: pair Networks