<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Cognate Press</title>
    <link>https://cognate.press/</link>
    <atom:link href="https://cognate.press/rss.xml" rel="self" type="application/rss+xml" />
    <description>Every issue from the seven publications of Cognate Press — one programming language each, one specialist each, each on its own domain.</description>
    <language>en</language>
    <managingEditor>contact@cognate.press (Cognate Press)</managingEditor>
    <webMaster>contact@cognate.press (Cognate Press)</webMaster>
    <!-- The feed changes when a domain publishes, which is weekly at most. -->
    <ttl>1440</ttl>
    <image>
      <url>https://cognate.press/apple-touch-icon.png</url>
      <title>Cognate Press</title>
      <link>https://cognate.press/</link>
      <width>180</width>
      <height>180</height>
    </image>
    <copyright>Copyright 2026 Cognate Press. Each issue is published by, and remains with, the domain that carries it.</copyright>
    <lastBuildDate>Sun, 11 Oct 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>Appending to a string is free until someone else holds it</title>
      <link>https://elephantphp.com/blog/strings-in-php-interned-copies-and-concatenation/</link>
      <guid isPermaLink="true">https://elephantphp.com/blog/strings-in-php-interned-copies-and-concatenation/</guid>
      <pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Alden Pike</dc:creator>
      <category>PHP</category>
      <category>ElephantPHP</category>
      <description>The same .= statement took 0.269 ms and 218.836 ms in two loops that differ by one assignment. What a zend_string costs, where literals live, and why implode is not the fix.</description>
    </item>
    <item>
      <title>require(esm) Killed the Second Build, Not the Second Copy</title>
      <link>https://jsledger.com/blog/require-esm-is-stable/</link>
      <guid isPermaLink="true">https://jsledger.com/blog/require-esm-is-stable/</guid>
      <pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Jonah Vail</dc:creator>
      <category>JavaScript</category>
      <category>JS Ledger</category>
      <description>Being able to require() an ES module removes the reason most packages shipped two builds. The dual package hazard is a layout problem, and it survived.</description>
    </item>
    <item>
      <title>Reading a GC Log Line by Line</title>
      <link>https://jvmscope.com/blog/reading-a-gc-log-line-by-line/</link>
      <guid isPermaLink="true">https://jvmscope.com/blog/reading-a-gc-log-line-by-line/</guid>
      <pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Marcus Venn</dc:creator>
      <category>Java</category>
      <category>JVM Scope</category>
      <description>One run, one quantity, three answers. The allocation rate everyone derives from the default GC log is ten per cent low, and the log says why if you ask it correctly.</description>
    </item>
    <item>
      <title>UTF-8 by Default Fixes a Silent Bug and Adds a Loud One</title>
      <link>https://pydepth.com/blog/utf8-by-default/</link>
      <guid isPermaLink="true">https://pydepth.com/blog/utf8-by-default/</guid>
      <pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elliot Sayer</dc:creator>
      <category>Python</category>
      <category>PyDepth</category>
      <description>Under a Latin-1 locale, CPython 3.13 reads a UTF-8 file as mojibake and raises nothing. 3.15 reads it correctly and raises on the Latin-1 file 3.13 read fine.</description>
    </item>
    <item>
      <title>clrstack Shows the Waiter and syncblk Names the Lock Holder</title>
      <link>https://csharpmind.com/blog/what-a-managed-thread-dump-actually-contains/</link>
      <guid isPermaLink="true">https://csharpmind.com/blog/what-a-managed-thread-dump-actually-contains/</guid>
      <pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Callum Reeve</dc:creator>
      <category>C#</category>
      <category>CSharpMind</category>
      <description>In a dotnet-dump of a contested lock, clrstack -all marked no thread as the owner. syncblk named it, and a suspended await appeared only in dumpasync.</description>
    </item>
    <item>
      <title>Document or Relational: Read-Time or Write-Time Cost</title>
      <link>https://sqlpress.com/blog/access-pattern-first-modeling/</link>
      <guid isPermaLink="true">https://sqlpress.com/blog/access-pattern-first-modeling/</guid>
      <pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elias Rowe</dc:creator>
      <category>SQL</category>
      <category>SQLPress</category>
      <description>Relational modeling describes the entities and lets queries follow. Document modeling inverts that, and the inversion is the whole trade.</description>
    </item>
    <item>
      <title>Green Tea cut my GC time 63%, and raised it 39%</title>
      <link>https://gopheria.com/blog/green-tea-changed-your-gc-profile/</link>
      <guid isPermaLink="true">https://gopheria.com/blog/green-tea-changed-your-gc-profile/</guid>
      <pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Nolan Keir</dc:creator>
      <category>Go</category>
      <category>Gopheria</category>
      <description>One heap shape lost 63% of its collector CPU and gained 14% throughput. Another gained 39% collector CPU and lost nothing. Same flag, same binary pair, same machine.</description>
    </item>
    <item>
      <title>A property hook emits the same opcode as a plain property</title>
      <link>https://elephantphp.com/blog/property-hooks-and-what-the-compiler-emits/</link>
      <guid isPermaLink="true">https://elephantphp.com/blog/property-hooks-and-what-the-compiler-emits/</guid>
      <pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Alden Pike</dc:creator>
      <category>PHP</category>
      <category>ElephantPHP</category>
      <description>Plain, backed and virtual property reads compile to one identical FETCH_OBJ_R. What separates them is a function call the opcode does not show, measured at nine times.</description>
    </item>
    <item>
      <title>Your Reactive Graph Computed 4,11. That State Never Existed.</title>
      <link>https://jsledger.com/blog/why-signals-push-a-marker-and-pull-a-value/</link>
      <guid isPermaLink="true">https://jsledger.com/blog/why-signals-push-a-marker-and-pull-a-value/</guid>
      <pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Jonah Vail</dc:creator>
      <category>JavaScript</category>
      <category>JS Ledger</category>
      <description>A single-pass push through a diamond recomputes the leaf twice, and the first result mixes a fresh value with a stale one. Two passes are what remove it.</description>
    </item>
    <item>
      <title>Streams Versus Loops: What the JIT Sees</title>
      <link>https://jvmscope.com/blog/streams-versus-loops-what-the-jit-sees/</link>
      <guid isPermaLink="true">https://jvmscope.com/blog/streams-versus-loops-what-the-jit-sees/</guid>
      <pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Marcus Venn</dc:creator>
      <category>Java</category>
      <category>JVM Scope</category>
      <description>The same pipeline cost 7.05 times the loop over eight elements and 1.31 times over a million. The ratio everyone quotes is a measurement at a trip count.</description>
    </item>
    <item>
      <title>A Container Given 1.2 CPUs Tells the Runtime It Has 2</title>
      <link>https://csharpmind.com/blog/how-many-cpus-a-container-tells-the-runtime-it-has/</link>
      <guid isPermaLink="true">https://csharpmind.com/blog/how-many-cpus-a-container-tells-the-runtime-it-has/</guid>
      <pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Callum Reeve</dc:creator>
      <category>C#</category>
      <category>CSharpMind</category>
      <description>Environment.ProcessorCount is the CPU quota rounded up, never below 1. The thread pool minimum follows it, and Server GC switches itself off at 1.</description>
    </item>
    <item>
      <title>Connection Pool Sizing: Why More Connections Make It Slower</title>
      <link>https://sqlpress.com/blog/connection-pool-sizing/</link>
      <guid isPermaLink="true">https://sqlpress.com/blog/connection-pool-sizing/</guid>
      <pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elias Rowe</dc:creator>
      <category>SQL</category>
      <category>SQLPress</category>
      <description>Past the point where the server can execute work in parallel, adding connections adds queueing rather than throughput — and moves the queue somewhere worse.</description>
    </item>
    <item>
      <title>The GOGC I set next to GOMEMLIMIT never fired</title>
      <link>https://gopheria.com/blog/gogc-and-gomemlimit-are-different-knobs/</link>
      <guid isPermaLink="true">https://gopheria.com/blog/gogc-and-gomemlimit-are-different-knobs/</guid>
      <pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate>
      <dc:creator>Nolan Keir</dc:creator>
      <category>Go</category>
      <category>Gopheria</category>
      <description>GOGC=100 with a 256 MiB limit produced exactly what GOGC=off produced: same collections, same CPU share, same throughput. The tighter rule binds, the other goes quiet.</description>
    </item>
    <item>
      <title>A declared property is cheaper than an array key</title>
      <link>https://elephantphp.com/blog/objects-are-cheaper-than-arrays/</link>
      <guid isPermaLink="true">https://elephantphp.com/blog/objects-are-cheaper-than-arrays/</guid>
      <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Alden Pike</dc:creator>
      <category>PHP</category>
      <category>ElephantPHP</category>
      <description>One hundred thousand four-field records cost 143.54 bytes each as objects and 397.14 as associative arrays. Where the crossover is, and what one undeclared property costs.</description>
    </item>
    <item>
      <title>Your Conditional Type Answered Twice. Both Answers Are Right.</title>
      <link>https://jsledger.com/blog/conditional-types-distribute/</link>
      <guid isPermaLink="true">https://jsledger.com/blog/conditional-types-distribute/</guid>
      <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Jonah Vail</dc:creator>
      <category>JavaScript</category>
      <category>JS Ledger</category>
      <description>A naked type parameter splits its union before the conditional runs, so IsArray&lt;string[] | number&gt; comes back as &apos;no&apos; | &apos;yes&apos;. Read out of TypeScript 7.0.2.</description>
    </item>
    <item>
      <title>The Cost of Optional</title>
      <link>https://jvmscope.com/blog/the-cost-of-optional/</link>
      <guid isPermaLink="true">https://jvmscope.com/blog/the-cost-of-optional/</guid>
      <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Marcus Venn</dc:creator>
      <category>Java</category>
      <category>JVM Scope</category>
      <description>Identical source, five call sites, one JDK 26 run - nothing allocated at the first and twelve bytes at three others. The wrapper is not what decides.</description>
    </item>
    <item>
      <title>Swapping Two Imports Moved 5.5 ms to a Different Module</title>
      <link>https://pydepth.com/blog/import-time-is-not-import-cost/</link>
      <guid isPermaLink="true">https://pydepth.com/blog/import-time-is-not-import-cost/</guid>
      <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elliot Sayer</dc:creator>
      <category>Python</category>
      <category>PyDepth</category>
      <description>Importing logging before asyncio moves 5.5 ms from asyncio&apos;s line to logging&apos;s. The program does the same work. The cumulative column charges whoever got there first.</description>
    </item>
    <item>
      <title>The Box You Pay For Is the One That Escapes</title>
      <link>https://csharpmind.com/blog/the-box-you-pay-for-when-a-struct-meets-an-interface/</link>
      <guid isPermaLink="true">https://csharpmind.com/blog/the-box-you-pay-for-when-a-struct-meets-an-interface/</guid>
      <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Callum Reeve</dc:creator>
      <category>C#</category>
      <category>CSharpMind</category>
      <description>Assigning a struct to an interface allocated 0 bytes. Passing it across a call boundary allocated 24. A constrained generic allocated none, until its body asked for an object.</description>
    </item>
    <item>
      <title>Composite Indexes: One Ordering, Not Three</title>
      <link>https://sqlpress.com/blog/composite-index-column-order/</link>
      <guid isPermaLink="true">https://sqlpress.com/blog/composite-index-column-order/</guid>
      <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elias Rowe</dc:creator>
      <category>SQL</category>
      <category>SQLPress</category>
      <description>Column order decides which queries a composite index can serve. The rule follows from the structure, and so do the cases where it does not hold.</description>
    </item>
    <item>
      <title>A 404 from net/http costs 62 allocations</title>
      <link>https://gopheria.com/blog/http-router-dispatch-cost/</link>
      <guid isPermaLink="true">https://gopheria.com/blog/http-router-dispatch-cost/</guid>
      <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Nolan Keir</dc:creator>
      <category>Go</category>
      <category>Gopheria</category>
      <description>A static route through net/http&apos;s mux costs 85.6 ns and nothing on the heap. A path that matches no pattern costs 2125.5 ns and 62 allocations.</description>
    </item>
    <item>
      <title>Two hundred thousand objects, and the collector never ran</title>
      <link>https://elephantphp.com/blog/the-gc-only-collects-cycles/</link>
      <guid isPermaLink="true">https://elephantphp.com/blog/the-gc-only-collects-cycles/</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Alden Pike</dc:creator>
      <category>PHP</category>
      <category>ElephantPHP</category>
      <description>Two hundred thousand objects created and dropped, and zero collections. What puts an object in the root buffer, and why the collector&apos;s cost is set by what you keep alive.</description>
    </item>
    <item>
      <title>Vite 8 Ships One Bundler, Not One Pipeline</title>
      <link>https://jsledger.com/blog/vite-8-replaced-two-bundlers-with-one/</link>
      <guid isPermaLink="true">https://jsledger.com/blog/vite-8-replaced-two-bundlers-with-one/</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Jonah Vail</dc:creator>
      <category>JavaScript</category>
      <category>JS Ledger</category>
      <description>Vite 7 depends on esbuild and Rollup; Vite 8 on neither. Serving one module from both majors shows what the swap to Rolldown changed and what it left alone.</description>
    </item>
    <item>
      <title>lazy import Moved 26.8 ms and Removed None of It</title>
      <link>https://pydepth.com/blog/what-lazy-import-defers/</link>
      <guid isPermaLink="true">https://pydepth.com/blog/what-lazy-import-defers/</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elliot Sayer</dc:creator>
      <category>Python</category>
      <category>PyDepth</category>
      <description>A lazy import of asyncio costs no measurable time and no modules at startup. Read the name once and 26.4 of the 26.8 ms come back. Deferral is not removal.</description>
    </item>
    <item>
      <title>The Middleware That Looked Expensive Was Not the One Spending the Bytes</title>
      <link>https://csharpmind.com/blog/the-middleware-pipeline-measured-one-component-at-a-time/</link>
      <guid isPermaLink="true">https://csharpmind.com/blog/the-middleware-pipeline-measured-one-component-at-a-time/</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Callum Reeve</dc:creator>
      <category>C#</category>
      <category>CSharpMind</category>
      <description>Removing UseRouting dropped per-request allocation by 2.29 KB in isolation — separated from authorization&apos;s share, routing itself costs about 24 bytes.</description>
    </item>
    <item>
      <title>Why the Primary Key Is in Every Secondary Index</title>
      <link>https://sqlpress.com/blog/innodb-clustered-index/</link>
      <guid isPermaLink="true">https://sqlpress.com/blog/innodb-clustered-index/</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elias Rowe</dc:creator>
      <category>SQL</category>
      <category>SQLPress</category>
      <description>InnoDB stores the table inside its primary key. Almost every MySQL indexing consequence, good and bad, follows from that single decision.</description>
    </item>
    <item>
      <title>The mutex was 68 times faster, until I added work</title>
      <link>https://gopheria.com/blog/mutex-versus-channel-at-contention/</link>
      <guid isPermaLink="true">https://gopheria.com/blog/mutex-versus-channel-at-contention/</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Nolan Keir</dc:creator>
      <category>Go</category>
      <category>Gopheria</category>
      <description>One goroutine: 2.5 ns for the mutex, 172.6 ns for the channel. Sixteen goroutines with real work: the channel wins by less than the harness&apos;s own error.</description>
    </item>
    <item>
      <title>Three numbers for one process, and memory_limit reads the middle one</title>
      <link>https://elephantphp.com/blog/where-php-memory-actually-goes/</link>
      <guid isPermaLink="true">https://elephantphp.com/blog/where-php-memory-actually-goes/</guid>
      <pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Alden Pike</dc:creator>
      <category>PHP</category>
      <category>ElephantPHP</category>
      <description>memory_get_usage(), memory_get_usage(true) and ps disagree about one process. What each counts, which one memory_limit reads, and why a one-megabyte string costs two.</description>
    </item>
    <item>
      <title>Object Shapes Are a Tree, and the Tree Is Shared</title>
      <link>https://jsledger.com/blog/object-shapes-are-a-tree/</link>
      <guid isPermaLink="true">https://jsledger.com/blog/object-shapes-are-a-tree/</guid>
      <pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Jonah Vail</dc:creator>
      <category>JavaScript</category>
      <category>JS Ledger</category>
      <description>A hidden class is a node in a transition tree V8 keeps for the whole isolate — which is why an unrelated function can decide how your object is stored.</description>
    </item>
    <item>
      <title>JFR: The Events You Actually Need</title>
      <link>https://jvmscope.com/blog/jfr-the-events-you-actually-need/</link>
      <guid isPermaLink="true">https://jvmscope.com/blog/jfr-the-events-you-actually-need/</guid>
      <pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Marcus Venn</dc:creator>
      <category>Java</category>
      <category>JVM Scope</category>
      <description>Sixty seconds of default settings produced 4.3 MB, three quarters of it one event type, and none of it answered whether the application was lock-contended.</description>
    </item>
    <item>
      <title>A NamedTuple Read Cost 0.81x a Plain One, Then 1.9x</title>
      <link>https://pydepth.com/blog/the-cost-of-a-field/</link>
      <guid isPermaLink="true">https://pydepth.com/blog/the-cost-of-a-field/</guid>
      <pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elliot Sayer</dc:creator>
      <category>Python</category>
      <category>PyDepth</category>
      <description>On CPython 3.10 a NamedTuple attribute read cost 0.81x a read through an instance dictionary. On 3.11 it costs 1.90x. Nothing about NamedTuple changed.</description>
    </item>
    <item>
      <title>dotnet-counters Shows the Queue&apos;s Delta, Not Its Depth</title>
      <link>https://csharpmind.com/blog/dotnet-counters-shows-the-queues-delta-not-its-depth/</link>
      <guid isPermaLink="true">https://csharpmind.com/blog/dotnet-counters-shows-the-queues-delta-not-its-depth/</guid>
      <pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Callum Reeve</dc:creator>
      <category>C#</category>
      <category>CSharpMind</category>
      <description>A thread pool queue held at two thousand work items read 1986 through one provider and -13 through the other, in the same second, in the same process.</description>
    </item>
    <item>
      <title>Transaction Pooling Breaks Only Under Load</title>
      <link>https://sqlpress.com/blog/pgbouncer-pooling-modes/</link>
      <guid isPermaLink="true">https://sqlpress.com/blog/pgbouncer-pooling-modes/</guid>
      <pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elias Rowe</dc:creator>
      <category>SQL</category>
      <category>SQLPress</category>
      <description>Transaction pooling is what makes PgBouncer worth deploying, and it silently removes session state your application may depend on.</description>
    </item>
    <item>
      <title>A 1 MiB goroutine stack costs 136µs and reports 144 B/op</title>
      <link>https://gopheria.com/blog/goroutine-stacks-grow-by-copying/</link>
      <guid isPermaLink="true">https://gopheria.com/blog/goroutine-stacks-grow-by-copying/</guid>
      <pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Nolan Keir</dc:creator>
      <category>Go</category>
      <category>Gopheria</category>
      <description>Reaching a 1 MiB stack copied it nine times. The copying cost 136µs of CPU that -benchmem reports as 144 bytes, because stack memory is not heap memory.</description>
    </item>
    <item>
      <title>A by-reference foreach leaves a reference in every element</title>
      <link>https://elephantphp.com/blog/copy-on-write-and-the-cost-of-passing-arrays/</link>
      <guid isPermaLink="true">https://elephantphp.com/blog/copy-on-write-and-the-cost-of-passing-arrays/</guid>
      <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Alden Pike</dc:creator>
      <category>PHP</category>
      <category>ElephantPHP</category>
      <description>Walking an array with foreach ($rows as &amp;$row) wraps every element in a zend_reference. On a million integers that is 32 MB the loop never gives back.</description>
    </item>
    <item>
      <title>What await Compiles To, and What It Costs</title>
      <link>https://jsledger.com/blog/what-await-compiles-to/</link>
      <guid isPermaLink="true">https://jsledger.com/blog/what-await-compiles-to/</guid>
      <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Jonah Vail</dc:creator>
      <category>JavaScript</category>
      <category>JS Ledger</category>
      <description>One async function compiled three ways — TypeScript&apos;s ES5 emit, V8&apos;s bytecode and the spec&apos;s Await steps — and the microtask turns each one predicts.</description>
    </item>
    <item>
      <title>What a Safepoint Actually Stops</title>
      <link>https://jvmscope.com/blog/what-a-safepoint-actually-stops/</link>
      <guid isPermaLink="true">https://jvmscope.com/blog/what-a-safepoint-actually-stops/</guid>
      <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Marcus Venn</dc:creator>
      <category>Java</category>
      <category>JVM Scope</category>
      <description>One collection, reported as 2.275 ms by the GC log and 29.6 ms by the safepoint log. The gap is time to safepoint, and each instrument hides a different part of it.</description>
    </item>
    <item>
      <title>getsizeof Reports 296 Bytes, Then 96, for the Same Class</title>
      <link>https://pydepth.com/blog/what-getsizeof-does-not-count/</link>
      <guid isPermaLink="true">https://pydepth.com/blog/what-getsizeof-does-not-count/</guid>
      <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elliot Sayer</dc:creator>
      <category>Python</category>
      <category>PyDepth</category>
      <description>sys.getsizeof reports 296 bytes for a class&apos;s first instance dict and 96 once twenty-six exist. The instance itself costs 96 bytes and getsizeof says 48.</description>
    </item>
    <item>
      <title>EXPLAIN, ANALYZE, BUFFERS: Three Different Questions</title>
      <link>https://sqlpress.com/blog/explain-analyze-buffers/</link>
      <guid isPermaLink="true">https://sqlpress.com/blog/explain-analyze-buffers/</guid>
      <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elias Rowe</dc:creator>
      <category>SQL</category>
      <category>SQLPress</category>
      <description>Which variant you ran decides whether the numbers in front of you are the planner&apos;s estimate or a measurement, and whether the pages came from cache.</description>
    </item>
    <item>
      <title>benchstat reported p=0.000 between a function and itself</title>
      <link>https://gopheria.com/blog/benchstat-or-it-didnt-happen/</link>
      <guid isPermaLink="true">https://gopheria.com/blog/benchstat-or-it-didnt-happen/</guid>
      <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Nolan Keir</dc:creator>
      <category>Go</category>
      <category>Gopheria</category>
      <description>Two sub-benchmarks calling the same function with the same argument came back 1.10% apart at p=0.000. What a benchmark measures is not only your code.</description>
    </item>
    <item>
      <title>What a PHP variable actually is</title>
      <link>https://elephantphp.com/blog/what-a-php-variable-actually-is/</link>
      <guid isPermaLink="true">https://elephantphp.com/blog/what-a-php-variable-actually-is/</guid>
      <pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Alden Pike</dc:creator>
      <category>PHP</category>
      <category>ElephantPHP</category>
      <description>A zval is sixteen bytes, a value union and a type tag. What that tag says decides whether an assignment copies anything, what a reference costs, and which variable pays.</description>
    </item>
    <item>
      <title>The Provenance Was Valid. The Commit Was Not.</title>
      <link>https://jsledger.com/blog/provenance-proves-the-build-not-the-intent/</link>
      <guid isPermaLink="true">https://jsledger.com/blog/provenance-proves-the-build-not-the-intent/</guid>
      <pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Jonah Vail</dc:creator>
      <category>JavaScript</category>
      <category>JS Ledger</category>
      <description>An npm provenance attestation binds a tarball to a repository, a workflow and a commit. Reading the payload shows what it never claims.</description>
    </item>
    <item>
      <title>How the JVM Finds and Loads a Class</title>
      <link>https://jvmscope.com/blog/how-the-jvm-finds-and-loads-a-class/</link>
      <guid isPermaLink="true">https://jvmscope.com/blog/how-the-jvm-finds-and-loads-a-class/</guid>
      <pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Marcus Venn</dc:creator>
      <category>Java</category>
      <category>JVM Scope</category>
      <description>A hello-world program loads 423 classes before it prints anything. Where they come from, what the JVM does to each one, and how to see it.</description>
    </item>
    <item>
      <title>Slots Did Not Get Slower, One Build Did</title>
      <link>https://pydepth.com/blog/slots-did-not-get-slower/</link>
      <guid isPermaLink="true">https://pydepth.com/blog/slots-did-not-get-slower/</guid>
      <pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elliot Sayer</dc:creator>
      <category>Python</category>
      <category>PyDepth</category>
      <description>A read through __slots__ costs 24% more than one through an instance dictionary on CPython 3.13.2. Rebuild the same version and the gap goes away.</description>
    </item>
    <item>
      <title>Server GC, Workstation GC, and the Numbers Between Them</title>
      <link>https://csharpmind.com/blog/server-gc-workstation-gc-and-the-numbers-between-them/</link>
      <guid isPermaLink="true">https://csharpmind.com/blog/server-gc-workstation-gc-and-the-numbers-between-them/</guid>
      <pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Callum Reeve</dc:creator>
      <category>C#</category>
      <category>CSharpMind</category>
      <description>Server GC finished 2.7 times faster and collected 17 times less often — and made the slowest request in the run 5 to 13 times slower. Both numbers are real.</description>
    </item>
    <item>
      <title>N+1 Queries: What the ORM Is Actually Doing</title>
      <link>https://sqlpress.com/blog/n-plus-one-queries/</link>
      <guid isPermaLink="true">https://sqlpress.com/blog/n-plus-one-queries/</guid>
      <pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elias Rowe</dc:creator>
      <category>SQL</category>
      <category>SQLPress</category>
      <description>One query for the list, then one more for every item in it. The cost is per statement, which is why the profiler shows a fast database and a slow request.</description>
    </item>
    <item>
      <title>GOMAXPROCS is not your thread count</title>
      <link>https://gopheria.com/blog/gomaxprocs-is-not-thread-count/</link>
      <guid isPermaLink="true">https://gopheria.com/blog/gomaxprocs-is-not-thread-count/</guid>
      <pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Nolan Keir</dc:creator>
      <category>Go</category>
      <category>Gopheria</category>
      <description>GOMAXPROCS=1 with 200 goroutines blocked in read(2) produced 202 OS threads. Measured on go1.27.0, alongside the container case Go 1.25 changed.</description>
    </item>
    <item>
      <title>sync.Pool survives one GC, not two</title>
      <link>https://gopheria.com/blog/sync-pool-under-gc-pressure/</link>
      <guid isPermaLink="true">https://gopheria.com/blog/sync-pool-under-gc-pressure/</guid>
      <pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Nolan Keir</dc:creator>
      <category>Go</category>
      <category>Gopheria</category>
      <description>A pool holding 100 objects lost none across one collection and all 100 across two. Here is the victim cache, and what it costs at 122,000 ops per millisecond.</description>
    </item>
    <item>
      <title>Reading a Lockfile: Supply Chain in Practice</title>
      <link>https://jsledger.com/blog/reading-a-lockfile/</link>
      <guid isPermaLink="true">https://jsledger.com/blog/reading-a-lockfile/</guid>
      <pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Jonah Vail</dc:creator>
      <category>JavaScript</category>
      <category>JS Ledger</category>
      <description>What package-lock.json actually records, what its integrity hashes do and do not prove, and where the real install-time risk sits.</description>
    </item>
    <item>
      <title>Where Spring Boot Startup Time Goes</title>
      <link>https://jvmscope.com/blog/where-spring-boot-startup-time-goes/</link>
      <guid isPermaLink="true">https://jvmscope.com/blog/where-spring-boot-startup-time-goes/</guid>
      <pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Marcus Venn</dc:creator>
      <category>Java</category>
      <category>JVM Scope</category>
      <description>Startup time is class loading, condition evaluation and JIT warmup in some proportion. Measure the split before reaching for a fix.</description>
    </item>
    <item>
      <title>Escape analysis is not a rule of thumb</title>
      <link>https://gopheria.com/blog/escape-analysis-is-not-a-rule-of-thumb/</link>
      <guid isPermaLink="true">https://gopheria.com/blog/escape-analysis-is-not-a-rule-of-thumb/</guid>
      <pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Nolan Keir</dc:creator>
      <category>Go</category>
      <category>Gopheria</category>
      <description>The compiler said &quot;does not escape&quot; and the benchmark reported 104 KiB per operation. Both were right. What -gcflags=-m actually tells you.</description>
    </item>
    <item>
      <title>Type Hints at Run Time</title>
      <link>https://pydepth.com/blog/type-hints-at-runtime/</link>
      <guid isPermaLink="true">https://pydepth.com/blog/type-hints-at-runtime/</guid>
      <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elliot Sayer</dc:creator>
      <category>Python</category>
      <category>PyDepth</category>
      <description>Annotations cost nothing per call and everything at import. Reading __annotations__ takes 24 ns; resolving the same class with get_type_hints takes 3.4 µs, 140x more.</description>
    </item>
    <item>
      <title>What the Go scheduler does when your goroutine blocks</title>
      <link>https://gopheria.com/blog/go-scheduler-blocking-goroutine/</link>
      <guid isPermaLink="true">https://gopheria.com/blog/go-scheduler-blocking-goroutine/</guid>
      <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Nolan Keir</dc:creator>
      <category>Go</category>
      <category>Gopheria</category>
      <description>A blocking syscall costs an OS thread. A blocking network read costs nothing. Measured with 200 goroutines, GOMAXPROCS=2 and a thread count.</description>
    </item>
    <item>
      <title>Where Thread Pool Starvation Actually Comes From</title>
      <link>https://csharpmind.com/blog/where-thread-pool-starvation-actually-comes-from/</link>
      <guid isPermaLink="true">https://csharpmind.com/blog/where-thread-pool-starvation-actually-comes-from/</guid>
      <pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Callum Reeve</dc:creator>
      <category>C#</category>
      <category>CSharpMind</category>
      <description>Blocking on a task is the case the thread pool compensates for. Blocking on a sleep or an event is the case it cannot see, and it finished 2.5 times slower.</description>
    </item>
    <item>
      <title>Why an Index Is Not Used: the Estimate, Not the Index</title>
      <link>https://sqlpress.com/blog/index-not-used-estimate-not-index/</link>
      <guid isPermaLink="true">https://sqlpress.com/blog/index-not-used-estimate-not-index/</guid>
      <pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elias Rowe</dc:creator>
      <category>SQL</category>
      <category>SQLPress</category>
      <description>An index the planner ignores is usually a row-estimate problem. The fix starts with what the optimizer expected, not with the index definition.</description>
    </item>
    <item>
      <title>PHP-FPM process management in production</title>
      <link>https://elephantphp.com/blog/php-fpm-process-management-in-production/</link>
      <guid isPermaLink="true">https://elephantphp.com/blog/php-fpm-process-management-in-production/</guid>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Alden Pike</dc:creator>
      <category>PHP</category>
      <category>ElephantPHP</category>
      <description>pm static, dynamic and ondemand, the memory ceiling nothing enforces, and how to size a pool from measurements rather than guesses.</description>
    </item>
    <item>
      <title>Type-Level Narrowing: How TypeScript Decides What You Meant</title>
      <link>https://jsledger.com/blog/type-level-narrowing-in-typescript/</link>
      <guid isPermaLink="true">https://jsledger.com/blog/type-level-narrowing-in-typescript/</guid>
      <pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Jonah Vail</dc:creator>
      <category>JavaScript</category>
      <category>JS Ledger</category>
      <description>Control flow analysis is a graph walk over your code. Knowing what widens a type again explains most of the errors that look wrong.</description>
    </item>
    <item>
      <title>Reading a Thread Dump Without Guessing</title>
      <link>https://jvmscope.com/blog/reading-a-thread-dump-without-guessing/</link>
      <guid isPermaLink="true">https://jvmscope.com/blog/reading-a-thread-dump-without-guessing/</guid>
      <pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Marcus Venn</dc:creator>
      <category>Java</category>
      <category>JVM Scope</category>
      <description>A thread dump answers precise questions if you ask them precisely. What each state really means, and the traps that produce confident wrong diagnoses.</description>
    </item>
    <item>
      <title>Where Your Django Request Time Actually Goes</title>
      <link>https://pydepth.com/blog/where-django-request-time-goes/</link>
      <guid isPermaLink="true">https://pydepth.com/blog/where-django-request-time-goes/</guid>
      <pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elliot Sayer</dc:creator>
      <category>Python</category>
      <category>PyDepth</category>
      <description>Removing Django&apos;s entire default middleware chain saved 0.02 ms per request. Fixing one N+1 query on a fifty-row list view saved 3.30 ms.</description>
    </item>
    <item>
      <title>The State Machine Your async Method Compiles Into</title>
      <link>https://csharpmind.com/blog/the-state-machine-your-async-method-compiles-into/</link>
      <guid isPermaLink="true">https://csharpmind.com/blog/the-state-machine-your-async-method-compiles-into/</guid>
      <pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Callum Reeve</dc:creator>
      <category>C#</category>
      <category>CSharpMind</category>
      <description>An async method that never suspends allocates nothing. The same method, suspended once, allocates 160 bytes. The cost is not the keyword — it is the suspension.</description>
    </item>
    <item>
      <title>What compiled DI containers actually buy you</title>
      <link>https://elephantphp.com/blog/what-compiled-di-containers-actually-buy-you/</link>
      <guid isPermaLink="true">https://elephantphp.com/blog/what-compiled-di-containers-actually-buy-you/</guid>
      <pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Alden Pike</dc:creator>
      <category>PHP</category>
      <category>ElephantPHP</category>
      <description>Container compilation moves reflection from request time to build time. What that removes, what it costs, and when it matters.</description>
    </item>
    <item>
      <title>The Event Loop You Think You Know</title>
      <link>https://jsledger.com/blog/the-event-loop-you-think-you-know/</link>
      <guid isPermaLink="true">https://jsledger.com/blog/the-event-loop-you-think-you-know/</guid>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Jonah Vail</dc:creator>
      <category>JavaScript</category>
      <category>JS Ledger</category>
      <description>Microtasks, rendering opportunities and starvation — what the loop actually does between your callbacks, in the browser and in Node.</description>
    </item>
    <item>
      <title>The Real Cost of an async Call</title>
      <link>https://pydepth.com/blog/the-real-cost-of-an-async-call/</link>
      <guid isPermaLink="true">https://pydepth.com/blog/the-real-cost-of-an-async-call/</guid>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elliot Sayer</dc:creator>
      <category>Python</category>
      <category>PyDepth</category>
      <description>Awaiting a coroutine that never suspends costs 53 ns against 24 ns for a plain call. Wrapping the same coroutine in a Task and awaiting it costs 28,958 ns.</description>
    </item>
    <item>
      <title>G1 versus ZGC: What the Pause Numbers Hide</title>
      <link>https://jvmscope.com/blog/g1-versus-zgc-what-pause-numbers-hide/</link>
      <guid isPermaLink="true">https://jvmscope.com/blog/g1-versus-zgc-what-pause-numbers-hide/</guid>
      <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Marcus Venn</dc:creator>
      <category>Java</category>
      <category>JVM Scope</category>
      <description>Sub-millisecond pauses are real, and they are not the whole cost. What the two collectors actually trade, and which numbers to compare instead.</description>
    </item>
    <item>
      <title>PHP arrays are not arrays</title>
      <link>https://elephantphp.com/blog/php-arrays-are-not-arrays/</link>
      <guid isPermaLink="true">https://elephantphp.com/blog/php-arrays-are-not-arrays/</guid>
      <pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Alden Pike</dc:creator>
      <category>PHP</category>
      <category>ElephantPHP</category>
      <description>One structure serves as list, dictionary and set. Packed and hashed layouts, what each costs in memory, and when a conversion happens.</description>
    </item>
    <item>
      <title>What Actually Happens When Vite Serves a Module</title>
      <link>https://jsledger.com/blog/what-happens-when-vite-serves-a-module/</link>
      <guid isPermaLink="true">https://jsledger.com/blog/what-happens-when-vite-serves-a-module/</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Jonah Vail</dc:creator>
      <category>JavaScript</category>
      <category>JS Ledger</category>
      <description>A walk through one request to a Vite dev server: resolution, the transform pipeline, import rewriting, pre-bundling, and why production differs.</description>
    </item>
    <item>
      <title>Escape Analysis and the Allocation That Never Happened</title>
      <link>https://jvmscope.com/blog/escape-analysis-and-the-allocation-that-never-happened/</link>
      <guid isPermaLink="true">https://jvmscope.com/blog/escape-analysis-and-the-allocation-that-never-happened/</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Marcus Venn</dc:creator>
      <category>Java</category>
      <category>JVM Scope</category>
      <description>C2 can delete an object entirely by proving it never escapes. Here is when that works, when it silently stops, and how to measure the difference.</description>
    </item>
    <item>
      <title>The GIL Is Not a Lock on Your CPU</title>
      <link>https://pydepth.com/blog/the-gil-is-not-a-lock-on-your-cpu/</link>
      <guid isPermaLink="true">https://pydepth.com/blog/the-gil-is-not-a-lock-on-your-cpu/</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elliot Sayer</dc:creator>
      <category>Python</category>
      <category>PyDepth</category>
      <description>Eight threads of pure-Python arithmetic run at 0.98x the speed of one. The same eight threads doing IO run at 7.90x. The GIL is a scheduler, and it has a dial.</description>
    </item>
    <item>
      <title>OPcache, the JIT, and where time actually goes</title>
      <link>https://elephantphp.com/blog/opcache-jit-and-where-time-actually-goes/</link>
      <guid isPermaLink="true">https://elephantphp.com/blog/opcache-jit-and-where-time-actually-goes/</guid>
      <pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Alden Pike</dc:creator>
      <category>PHP</category>
      <category>ElephantPHP</category>
      <description>OPcache removes compilation, not execution. The JIT reaches arithmetic-heavy code and little else. Where the remaining time lives.</description>
    </item>
    <item>
      <title>Virtual Threads and the Pinning Problem</title>
      <link>https://jvmscope.com/blog/virtual-threads-and-the-pinning-problem/</link>
      <guid isPermaLink="true">https://jvmscope.com/blog/virtual-threads-and-the-pinning-problem/</guid>
      <pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Marcus Venn</dc:creator>
      <category>Java</category>
      <category>JVM Scope</category>
      <description>Virtual threads scale until something nails one to its carrier. Here is what still pins on modern JDKs, and how to see it happen.</description>
    </item>
    <item>
      <title>What import Actually Does</title>
      <link>https://pydepth.com/blog/what-import-actually-does/</link>
      <guid isPermaLink="true">https://pydepth.com/blog/what-import-actually-does/</guid>
      <pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elliot Sayer</dc:creator>
      <category>Python</category>
      <category>PyDepth</category>
      <description>Importing asyncio costs 21.9 ms and pulls in 100 modules. Importing email costs 0.1 ms and pulls in one. Granularity predicts import cost; size does not.</description>
    </item>
    <item>
      <title>Signals Are Not Magic: The Dependency Graph Underneath</title>
      <link>https://jsledger.com/blog/signals-are-not-magic/</link>
      <guid isPermaLink="true">https://jsledger.com/blog/signals-are-not-magic/</guid>
      <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Jonah Vail</dc:creator>
      <category>JavaScript</category>
      <category>JS Ledger</category>
      <description>Every signals library is the same forty lines of bookkeeping. Here is what those lines do, and where the four popular implementations diverge.</description>
    </item>
    <item>
      <title>Benchmarking PHP without lying to yourself</title>
      <link>https://elephantphp.com/blog/benchmarking-php-without-lying-to-yourself/</link>
      <guid isPermaLink="true">https://elephantphp.com/blog/benchmarking-php-without-lying-to-yourself/</guid>
      <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Alden Pike</dc:creator>
      <category>PHP</category>
      <category>ElephantPHP</category>
      <description>Microbenchmarks measure exactly what you tell them to, which is rarely what you meant. Method, noise, and the numbers worth reporting.</description>
    </item>
    <item>
      <title>What the JIT Actually Does to Your Hot Loop</title>
      <link>https://jvmscope.com/blog/what-the-jit-does-to-your-hot-loop/</link>
      <guid isPermaLink="true">https://jvmscope.com/blog/what-the-jit-does-to-your-hot-loop/</guid>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Marcus Venn</dc:creator>
      <category>Java</category>
      <category>JVM Scope</category>
      <description>Tiered compilation, on-stack replacement and inlining decide how your loop really runs. Here is how to read those decisions instead of guessing.</description>
    </item>
    <item>
      <title>The Shape of a Python Object</title>
      <link>https://pydepth.com/blog/the-shape-of-a-python-object/</link>
      <guid isPermaLink="true">https://pydepth.com/blog/the-shape-of-a-python-object/</guid>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Elliot Sayer</dc:creator>
      <category>Python</category>
      <category>PyDepth</category>
      <description>An instance with three attributes costs 96 bytes, not the 344 sys.getsizeof reports, and __slots__ read 12% slower on the CPython 3.13.2 build measured here.</description>
    </item>
    <item>
      <title>How V8 Decides to Optimize Your Function</title>
      <link>https://jsledger.com/blog/how-v8-decides-to-optimize-your-function/</link>
      <guid isPermaLink="true">https://jsledger.com/blog/how-v8-decides-to-optimize-your-function/</guid>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Jonah Vail</dc:creator>
      <category>JavaScript</category>
      <category>JS Ledger</category>
      <description>Two functions that look identical can run at very different speeds. The difference is usually shapes, inline caches, and a deoptimization you never saw.</description>
    </item>
    <item>
      <title>What happens when PHP runs your code</title>
      <link>https://elephantphp.com/blog/what-happens-when-php-runs-your-code/</link>
      <guid isPermaLink="true">https://elephantphp.com/blog/what-happens-when-php-runs-your-code/</guid>
      <pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Alden Pike</dc:creator>
      <category>PHP</category>
      <category>ElephantPHP</category>
      <description>A request walks from the SAPI to the Zend VM — lexing, compilation to opcodes, the OPcache lookup that skips both, and execution.</description>
    </item>
  </channel>
</rss>
