Xdebug Update: July 2021
In this monthly update I explain what happened with Xdebug development in this past month. These will be published on the first Tuesday after the 5th of each month.
Patreon and GitHub supporters will get it earlier, around the first of each month.
You can become a patron or support me through GitHub Sponsors. I am currently 57% towards my $2,000 per month goal. If you are leading a team or company, then it is also possible to support Xdebug through a subscription.
In July, I worked on Xdebug for about 50 hours, with funding being around 25 hours, which is only half.
PHP 8.1 Support
Now PHP 8.1's feature freeze has happened, I am working on integrating the missing features into Xdebug. Last month I added support for PHP 8.1's Enum type, but this required a little bit more work as it was emitting the same XML attribute more than once in some occasions. This came to the surface after adding support for Readonly Properties, another new feature in PHP 8.1.
IDEs have so far not yet been updated to make use of these new "facets" that Xdebug's debugger emits. PhpStorm's tracker has an issue for readonly as well as enums. The VS Code plugin's tracker has issues for readonly and enums as well.
I also had to make some more tweaks with regard to PHP 8.1's changes to internals, most notably related to static properties.
Xdebug 3.1
Beyond making sure that Xdebug 3.1 works will with PHP 8.1, and continues to work with PHP 7.2 through 8.0, I have been adding some new features too.
Xdebug 3.1 will no longer set either a timeout, or use Strict cookies to manage its debugging session through HTTP. Instead, it now uses a Lax and relies on the browser closing to clean out the cookie.
I have added a new function, xdebug_connect_to_client(). This function can be used to ask Xdebug to try to connect to a debugging client during a request. Normally, it only tries this at the start of a request. In some cases, with long running processes that run many worker jobs, it is sometimes useful to be able to open a debugging client at a later point, and then allow for Xdebug to try to connect to this debugging client. It will now do so if you call the xdebug_connect_to_client() function. This feature was requested by Tideways, a business supporter of Xdebug.
Now that PHP 8.1 has introduced a First Class Callable Syntax, I've updated Xdebug tracer and variable display routines to add information about which function/method a closure encapsulate as well. This information was previously missing. You can learn more about this PHP feature in the PHP Internals News episode First Class Callable Syntax.
Xdebug Cloud
To help with funding my work on Xdebug, I have a paid-for-service, called Xdebug Cloud.
Xdebug Cloud is the Proxy As A Service platform to allow for debugging in more scenarios, where it is hard, or impossible, to have Xdebug make a connection to the IDE. It is continuing to operate as Beta release.
Packages start at £49/month, and revenue will be used to further the development of Xdebug.
If you want to be kept up to date with Xdebug Cloud, please sign up to the mailinglist, which I will use to send out an update not more than once a month.
Xdebug Videos
I have published two more videos on how to use Xdebug on my YouTube channel.
These are part of a series to explain how to use Xdebug's profiling:
-
Xdebug 3 Profiling: 1. Setting Up, where I show how to configure Xdebug for profiling.
-
Xdebug 3 Profiling: 2. KCacheGrind tour, where I go over KCacheGrind's (and QCacheGrind's) features.
In an upcoming video I will use a "real life" application to show how to use the profiler to find bottlenecks.
If you would like to see a 5 to 10 minute long video on another specific topic, feel free to request them through this Google Form.
Business Supporter Scheme and Funding
In July, no new supporters signed up.
If you, or your company, would also like to support Xdebug, head over to the support page!
Besides business support, I also maintain a Patreon page and a profile on GitHub sponsors.
Life Line
Updated a pub
Updated 2 house buildings
Updated 2 estate_agent offices
I walked 8.2km in 1h37m13s
I'm excited about the PHP UK Conference on Friday!
I am speaking on @Xdebug, but the whole programme looks great:
https://www.phpconference.co.uk/scheduleTickets are still available, and you'll get 10% off with the code "PHPUK26".
Will I see you there?
RE: https://en.osm.town/@richardf/116086276801420468
For the UK #trains fans under us.
Missed a building outline
Added the Old Dairy House and Aston Mews buildings
More accurate Canterbury Road mapping
I walked 7.0km in 1h37m07s
I walked 8.4km in 1h21m36s
Put new open stretch of Canterbury Road on map
Created a bench and a crossing
Created 2 benches and a crossing; Updated 5 cushions, a post_box, and a crossing
Created a crossing; Updated a cushion
I walked 9.9km in 1h46m54s
If you were wondering whether the www.php.net & downloads.php.net services weren't responding very well in the last 6 hours — thousands of requests/sec to https://www.php.net/ 's root.
The server's load was 720, didn't die, but CDN connections to it timed out.
Now there is a caching strategy in place for a selected set of resources.
Updated a bench
Created 3 benches; Updated 10 benches
Updated a bench
Updated a bus_stop
Created a bench and a waste_basket; Updated 6 bus_stops and a crossing
Created 2 waste_baskets and a recycling; Updated 2 bicycle_parkings and a recycling
Updated a fast_food, a funeral_directors shop, and 2 other objects; Confirmed a fast_food and a hairdresser shop
Created an information; Updated 3 benches and 2 waste_baskets


Shortlink
This article has a short URL available: https://drck.me/xdebug-21jul-gga