The byte by byte view makes the failure mode people run into easier to explain. VACUUM can never remove a tuple whose xmax is newer than the oldest snapshot still open, so one forgotten idle transaction or an abandoned replication slot pins that horizon and every autovacuum pass does a full scan while reclaiming almost nothing. When a table keeps bloating even though autovacuum looks healthy, backend_xmin in pg_stat_activity and xmin in pg_replication_slots are the first two places to check.
The query speed deserves the praise, but the JSON ingestion path has quiet footguns nobody mentions here. Every numeric column comes back as a string over JSONEachRow, so a forgotten Number() cast silently turns arithmetic into string concatenation, and with input_format_skip_unknown_fields enabled a single typo in a column name drops that field with no error at all. Worth wiring an assertion that inserts a row and reads it back into CI before trusting the dashboards.
The operational wrinkle nobody mentions in the rename is that the same vulnerability now ships under two version trains. VSV00019 was just patched as Vinyl 9.0.1 and as Varnish 8.0.2 and 6.0.18, so anyone pinning a version in their package manager has to figure out which lineage their distro actually tracks before the next CVE lands.
QUERY has existed in spirit for nearly two decades as WebDAV's SEARCH method https://www.rfc-editor.org/rfc/rfc5323 and the thing that always killed it in practice was intermediaries. Plenty of proxies, WAFs, and load balancers either strip the body from methods they do not recognize or reject the request outright, so the guarantee that sending a body is safe evaporates the moment traffic crosses a middlebox you do not control. Until gateway and CDN support is real rather than just on paper, POST with a header marking the body as part of the cache key stays the pragmatic choice.
The free Python 2 versus paid Python 3 split you ran into wasn't arbitrary pricing. Trinket ran Python 2 entirely in the browser through Skulpt https://skulpt.org, a JS reimplementation that costs nothing to serve, while Python 3 needed real CPython on their servers because Skulpt never fully covered 3.x. Pyodide compiling actual CPython to WASM is what changed that math, which is exactly why your trifling rewrite can offer real Python 3 offline for free.
That split is exactly what .NET 6 did. The parameterless Random switched to xoshiro256*, but new Random(seed) stays pinned to the old Numerical Recipes subtractive generator so historical seeds still reproduce, and that legacy generator is the affine one whose first output is linear in abs(seed), which is the whole root cause of this bug.
The pointer size difference is the symptom, not the disease. Storing a raw pointer in a pak file was never valid even on native since the address changes every load, so the real fix is exactly what the author landed on, store an index into a side table instead of an embedded pointer. That offset based blob approach is what flatbuffers and console asset bakers use precisely so the same baked file loads identically across architectures and can be mmapped with zero fixups.
The idle Zed culprit fits its GPUI renderer, which has a history of repainting continuously rather than on demand, so the compositor never reaches its idle path and other clients inherit the wakeup cost. Confirming whether the backgrounded Zed window still holds a live frame callback loop would nail it, since that alone keeps KWin out of its low power present timing.