<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Muhammet Şafak — Language &amp; runtime research</title><description>What version upgrades, compiler and runtime settings change on the same workload: JIT, opcache, GC and memory behaviour.</description><link>https://muhammetsafak.com/</link><language>en-US</language><lastBuildDate>Wed, 30 Sep 2026 00:00:00 GMT</lastBuildDate><managingEditor>info@muhammetsafak.com (Muhammet Şafak)</managingEditor><atom:link href="https://muhammetsafak.com/research/program/dil-runtime/rss.xml" rel="self" type="application/rss+xml"/><item><title>64 goroutines on four cores: Mutex and channel run at the same speed, but the Mutex&apos;s p99 is five times higher</title><link>https://muhammetsafak.com/research/mutex-vs-channel-under-contention/</link><guid isPermaLink="true">https://muhammetsafak.com/research/mutex-vs-channel-under-contention/</guid><description>With 64 goroutines on four cores, sync.Mutex and a one-way channel run at the same speed (7.69 and 7.94 million operations/s) but the Mutex&apos;s p99 wait is 5 times higher. On eight cores the Mutex is 2.4 and 4.0 times faster (15.96 million operations/s; the channels 6.65 and 3.97 million); the ratios come from unflagged cells.</description><pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate><category>dil-runtime</category><category>go</category><category>mutex</category><category>channel</category><category>goroutine</category><category>benchmark</category><category>concurrency</category></item><item><title>Laravel&apos;s preload curve: 123 files buy eight times what the last 1,912 do</title><link>https://muhammetsafak.com/research/laravel-preload-curve/</link><guid isPermaLink="true">https://muhammetsafak.com/research/laravel-preload-curve/</guid><description>The curve is not proportional to volume. The first 1,592 files — Laravel&apos;s own framework — buy 30 ms and add 1.2 seconds to start-up. The next 1,094 Symfony files buy 9.5 ms for free. The **123 files** after that (psr, carbon) buy 15.7 ms, more than the 1,094 before them. And the last 1,912 buy 1.8 ms while adding another 1.2 seconds. So the blanket preload the earlier record measured as a ceiling is the worst point on the curve that is not the origin: stopping at 2,809 files gives 12.77 ms for 1,514 ms of start-up, while 4,721 files ask 2,691 ms to reach 10.96 ms.</description><pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate><category>dil-runtime</category><category>php</category><category>opcache</category><category>preload</category><category>laravel</category><category>deploy</category></item><item><title>opcache preload cuts the deploy bill by up to fourteen times — but five of seven frameworks do not hand it to you</title><link>https://muhammetsafak.com/research/opcache-preload-deploy-bill/</link><guid isPermaLink="true">https://muhammetsafak.com/research/opcache-preload-deploy-bill/</guid><description>Preload shortens the cold first request by between 3.5× and 14.2× on the six candidates whose classes are PHP source: Symfony drops from 35.58 ms to 2.50 ms, down to Phalcon&apos;s bare figure. But only two of the seven candidates — Symfony and CodeIgniter — publish a preload file of their own; for the other five the gain sits on the table waiting for the user to write one. Writing one is not as easy as it looks: a preload generated blindly from the classmap never brings Symfony up at all, and on CodeIgniter it does worse (5.29 ms) than the hand-picked official file (3.13 ms). And the cost does not vanish: Laravel&apos;s classmap preload takes the 62 ms it saves each visitor and writes it back as 2,340 ms of php-fpm start-up.</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate><category>dil-runtime</category><category>php</category><category>opcache</category><category>preload</category><category>deploy</category><category>framework</category></item><item><title>The PHP ecosystem does not wait for a new release — but it does not declare support either</title><link>https://muhammetsafak.com/research/php-version-support-declarations/</link><guid isPermaLink="true">https://muhammetsafak.com/research/php-version-support-declarations/</guid><description>56.4% of installs arrive on a constraint with no upper bound at all — `symfony/console` says `&gt;=8.4.1` today, which claims support for PHP 12 as well. Of the 280 packages that do close the top, 247 made the commitment before the version existed: `guzzlehttp/guzzle` covered 8.4 in October 2020, four years early. That leaves 33 packages that genuinely waited, at a median of 325 days. The raw medians fall version over version and read as an ecosystem speeding up; restricted to an equal observation window the trend reverses (238 → 215 → 325 days).</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate><category>dil-runtime</category><category>php</category><category>ekosistem</category><category>composer</category><category>surum-yukseltme</category><category>bagimlilik</category></item></channel></rss>