Xdebug Update: March 2019
This is the first of the monthly update reports in what happened with Xdebug development in this past month. In these reports I will outline what I've been working on the month that has passed. It will be published on every second Tuesday of each month. Patreon supporters will get it earlier, on the first of each month. You can become a patron here.
In March, I worked on the following things:
CI
Xdebug needs testing on many PHP versions, from PHP 7.0.0 to PHP 7.3.3, and the tip of the PHP 7.0 to 7.4 and master branches. Each patch version can introduce changes, and so they all need to be tested against. There are also two different configuration axis: thread-safe vs. non-thread-safe, and 32-bit vs 64-bit. There are currently 37 versions, and with all 4 combinations, that makes 148 configurations to test. If I would test this with Travis CI this would take at least an hour, and with Appveyor it would take at least 16 hours. This is clearly not something that I would like to wait on.
So instead I set up a local CI system, where after each commit I can kick off a script that recompiles and tests all of the configurations. I test the following three variants for each PHP version: 64-bit and non-thread-safe (that's the normal one most people use), 64-bit with thread-safe, and 32-bit with non-thread-safe. My local machine can run 24 tasks in parallel, and the full run of recompiling and testing takes less than 5 minutes.
The results are imported in a MongoDB database that I run on their Atlas hosted server, and the results are read and published by the Xdebug website, where you can see the result of the latest 8 runs.
I still need to add the with-OPcache/without-OPcache access; right now, I only test with OPcache present and loaded. I would also like to add configurations of daily versions of the latest PHP-7.4 and master branches to be able to get PHP API changes, and functional changes before they start breaking PHP.
Bugs
I created stablexdebug_2_7 branch so that I can work on both bug fixes (in xdebug_2_7) and features (in master). There is currently a persistent bug that I discovered while analysing #1646: Excessive error messages for broken pipes. I noticed that although my tests would check for this happening, it would never actually make sure that there were no messages sent to stderr. When enabling this, I encountered issues in the step-debugger tests where I wouldn't correctly detach the debugging session.
These tests are now fixed, but there is now one that produces an elusive crash bug that I haven't managed to track down now.
Beyond the broken-pipe step debugger connection issue, I have also started to make a little bit of progress in addressing #1388: Support 'resolved' flag for breakpoints in cooperation with Jetbrains and the PhpStorm team, who are sponsoring this work.
Podcast
The last thing I wanted to draw your attention to is a new podcast that I started: PHP Internals News. This is a weekly-ish 15 minutes-ish long podcast, where I talk with PHP internals developers about a new RFC, implementations, and upcoming features. It is available on Spotify and iTunes, and an RSS Feed.
So far I have spoken with Nikita Popov on the Saner string to number comparisons RFC, Anthony Ferrara on his PHP Compiler and FFI, and Joe Watkins on the Abolish Narrow Margins and Weak References RFCs. Why not give it a listen too?
Life Line
Created 6 benches, a main entrance, and a bicycle_parking; Updated 2 main entrances
Created 4 trees, a balancebeam, and 3 other objects; Updated 5 benches and 2 waste_baskets
Merge branch 'xdebug_3_5'
Merged pull request #1092
Use actual PID here, as we use that to be able to connect
Created 2 main entrances; Updated a vacant shop, a furniture shop, and a cafe; Confirmed an estate_agent office, a laundry shop, and 4 other objects
Merged pull request #1091
PHP 8.6: Fixed test expectation for 'debugInfo' name in error
Add 'strace' to run-xdebug-tests.php command
Oystercatcher Parent and Chick
Standing on the edge of a lake in the Arundel Wetlands.
#birds #birdPhotography #Birdsoffediverse #Photography #Nature #Wildlife
Updated 2 main entrances
Fixed tagging and bollard location
I hiked 8.7km in 4h4m28s
Updated a restaurant
Updated a restaurant
Updated a restaurant
I walked 5.5km in 56m26s
Created an entrance
I walked 5.7km in 1h20m50s
Updated a fitness_centre; Confirmed a charging_station
I walked 4.0km in 47m13s
I walked 1.1km in 9m32s
Also, whatnow‽
`GET /icons/blank.gif HTTP/1.1" 200 398 "https://downloads.php.net/~windows/pecl/releases/?utm_source=chatgpt.com`
WTF does that need an `utm_source` for?
I sometimes wish cache expiries could be fuzzy, like 900±15 seconds. Y'know, to prevent the thundering herd effect.
Created a chemist shop


Shortlink
This article has a short URL available: https://drck.me/xdebug-19mar-es0