PHP Extension 5.10.0 released
- Improvement: Stacktraces attached to Spans now start at so-called “vendor boundaries” instead of the function that is actually instrumented to prevent deeply-nested library wrappers from pushing the application stackframes over the
tideways.backtrace_limit. An example would becurl_exec()being called inside of Guzzle’s middleware stack. Now the stacktrace will be cut at outermost call to Guzzle’srequest()method. The default value oftideways.stack_thresholdhas been reduced to 3000ms to generate more stack traces and the default valuetideways.backtrace_limithas been reduced to 5 to counter-balance the increase in payload size. - Improvement: The timer used for measurements now uses PHP’s
hrtime()timer for PHP 7.3+. Going forward the INI settingtideways.clock_sourceis only used for PHP 7.2. - Improvement: Callgraph argument capture for regular expressions with the
/xmodifier now strips whitespace to show more useful parts of the regular expression. - Improvement: Span events now include memory usage data.
- Bugfix: Fix possible crash in Callgraph when first-class callables are used.
- Bugfix: Registering a dynamic callback using
Profiler::watch()orProfiler::watchCallback()for functions that are already instrumented is no longer allowed. - Bugfix: Fix MongoDB instrumentation memory leak if Tideways is started multiple times during a single request, for example in long-running worker scripts.
- Bugfix: Parameter types of the
\Tideways\Profilerand\Tideways\Profiler\Spanmethods are now unconditionally validated, resulting in consistent error reporting behavior independent of whether Tideways is running in tracing mode or not. - Bugfix: Manually handling Tideways’ lifecycle with
Profiler::start()andProfiler::stop(), for example with FrankenPHP’s worker mode or long-running queue workers, will now send the PHPInfo payload duringProfiler::stop(), resulting in more accurate data. - Bugfix: Self-recursive Closures are now correctly handled in the Callgraph, if
tideways.features.closure_namingis active.