Xdebug Update: July 2024
In this monthly update I explain what happened with Xdebug development in the past month. These are normally published on the first Tuesday on or after the 5th of each month.
GitHub and Pro/Business supporters will get it earlier, around the first of each month.
On GitHub sponsors, I am currently 42% towards my $2,500 per month goal, which is set to allow continued maintenance of Xdebug. This is less than last month.
If you are leading a team or company, then it is also possible to support Xdebug through a subscription.
In the last month, I spend around 15 hours on Xdebug, with 21 hours funded. I also spent 6 hours on the Native Path Mapping project.
PHP 8.4
I spent some time making sure that Xdebug will be ready for PHP 8.4, once that comes out later in the year. There are always some incompatibilities, such as the new frameless calls and some deprecations.
I also did a deep dive into supporting a potential large change into the way PHP handles the exit keyword. There is a proposal to change that from a language instruction to an actual function, but this impacts Xdebug fairly significantly — it uses the instruction for path and branch analysis, and to make sure profiling files get stored on disk in full. At the moment, it is unsure whether this change will be adopted.
Beyond preparatory work for PHP 8.4, I also spend some time on improving the out-of-band socket communication support to make it easier for IDEs to use. This work will continue to be ongoing for a while.
Native Xdebug Path Mapping
I have started on the Native Xdebug Path Mapping project.
As this is a separately funded project, I don't classify the hours that I worked on this in "Xdebug Hours". I also publish a separate report on the project page.
As an exception, I am including it here:
In this first month, or rather, the last week of July, I have been working on setting up a testing framework for the parser. Previously Xdebug only had tests in PHPT form, PHP's standard for testing syntax and functions. However, this is rather more an integration test framework, as it compares the output of a script with an expected output.
For low-level features, such as testing the implementation of the parser that parses the path mapping files, PHPT tests are not suitable. Instead, the testing framework tests the return values and generated structures directly, without PHP having to be involved. The CppUTest framework that I use for this, is much more similar to PHPUnit. It is also a framework that I have used for testing timelib, the library that powers PHP and MongoDB's date/time functionality.
Beyond the testing framework, I have also made a start on the parser itself. It can currently parse the remote_prefix and local_prefix stanzas, as well as mapping lines, although it does not distinguish between directory maps, file maps, or line maps yet, nor does it apply the prefix stanzas yet.
Xdebug Videos
I have created no new videos since last month, but you can see all the previous ones on my channel.
If you have any suggestions, feel free to reach out to me on Mastodon or via email.
Business Supporter Scheme and Funding
In the last month, one new business supporter signed up:
Besides business support, I also maintain a Patreon page, a profile on GitHub sponsors, as well as an OpenCollective organisation.
If you want to contribute to specific projects, you can find those on the Projects page.
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 I have recently introduced a package for larger companies. This has a larger initial set of tokens, and discounted extra tokens.
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.
Life Line
Created 2 waste_baskets; Updated 2 bus_stops and 2 crossings
I hate this timeline.
For @fridaynightdinners I wanted to look up what the difference between Raviolo and Girasolo is.
DuckDuckGo's (non-ai variant) top three results are all AI generated content with AI generated author images, bio, and "flair".
I want stuff written by *humans*, not this AI slop BS.
Created 3 waste_baskets; Updated a waste_basket
Updated 6 crossings
Northern Lapwing On The Move
This dapper bird is having a stroll looking for lunch. I like the iridescence in its wings.
#BirdPhotography #BirdsOfFediverse #Nature #Photography #London #BirdsOfMastodon
Created a vending_machine
Updated a bus_stop
I hiked 5.4km in 2h35m46s
I walked 2.2km in 27m13s
I walked 1.6km in 32m29s
I walked 3.3km in 34m33s
Updated a confectionery shop, a massage shop, and 2 other objects; Deleted a books shop
I hiked 7.0km in 4h21m00s
Updated a deli shop and a pet_grooming shop
I walked 4.2km in 49m42s
I walked 1.4km in 10m14s
I walked 2.2km in 1h43m13s
I walked 4.4km in 1h25m00s
Updated a cafe
Updated a bar
I walked 1.7km in 19m07s
I got a new lens. It's a little bit larger, and loads heavier, than my older one.
I walked 1.6km in 15m10s





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