CTL v10.0.0 is out, with full Van Rossem support (protocol version 11). The balancer follows the relaxed reference-input rule, and new queries cover governance proposals and DReps.
@IntersectMBO #Cardano github.com/Plutonomicon/card…
A Plutarch type can live on-chain three ways. Builtin is fastest but fits only primitives and their newtypes. Sum-of-products comes second and can't go in a datum. Data is the one you can exchange.
mlabs.city/blog/do-you-even-… #Cardano
A Plutarch Term s a is a computation that yields an a or an error, the way an IO a holds no a inside it. Koz Ross starts there to explain the type class nearly all of Plutarch rests on.
mlabs.city/blog/from-term-to… #Cardano
The most expensive technical decisions get made early, by people who won't know for 18 months whether they were right. By the time a full-time CTO arrives, those decisions are the codebase.
mlabs.city/blog/fractional-c… #CTO
A write that returned no error may not have happened. Our daily reconcile once found three items that didn't match what was live, and none had reported an error.
mlabs.city/blog/automating-a… #Automation
One change to a Haskell substring search made its worst case about 15% faster and its best case almost seven times slower. Benchmark only the worst case and it looks like a win.
mlabs.city/blog/first-know-t… #Haskell
In Haskell, 1 % 0 fails at runtime because % is a smart constructor. A quasiquoter rejects it at compile time, and it works in a pattern match, which % can't.
mlabs.city/blog/quasiquoting… #Haskell
Game of Life in Haskell took 242 ms per update with vector and 11.2 ms with massiv stencils. Same memory. A 3D automaton went from 418 ms to 39 ms.
mlabs.city/blog/our-performa… #Haskell
A three-valued logic packed into an Int8 can still be pattern matched like an ordinary data type, exhaustiveness checks included. Pattern synonyms do it with no Template Haskell, and they work on types you didn't write, like Word8.
mlabs.city/blog/patterns-and… #Haskell
One command boots a VM running a Cardano preview node, with Ogmios answering on localhost port 1337. cardano.nix ships cardano-node, Ogmios, Kupo and db-sync as NixOS modules, each tested in VMs against the real networks.
mlabs.city/blog/introducing-… #Cardano
Map two 20-element arrays on Cardano, then zip them. Through builtin lists that cost 88.1M CPU units. With Plutarch's pull arrays it cost 44.1M, and half the memory. The longer the pipeline, the more intermediate lists it skips.
mlabs.city/blog/performance-… #Cardano
A Cardano script compared a big constant with itself. Inlined twice, it cost 578,965 CPU units. Bound to a variable, 668,284. In UPLC every variable needs a lambda and an apply around it, and you pay for both.
mlabs.city/blog/how-executio… #Cardano
Finding one byte in 2 MiB of Haskell data: 880 ÎĽs naive, 123 ÎĽs with SWAR, 16.8 ÎĽs through C's memchr. Then we used memchr to find every match. It came out about 50% slower than the naive loop.
mlabs.city/blog/fast-finding… #Haskell
Checking a buffer is ASCII in Haskell, one byte at a time, ran at about 2.2 GiB/s worst case. Masking the high bit of 8 bytes per word got 13.75 GiB/s. Theory said eight times faster. We measured about six.
mlabs.city/blog/checking-asc… #Haskell
One Cardano transaction can spend several script outputs at once. If each validator only checks that it got paid, a single payment can satisfy all of them. That's multiple satisfaction, and our audit write-up walks through one.
mlabs.city/blog/from-bugs-to… #Cardano
A failing QuickCheck property is only as useful as its counter-example. Without a shrinker, a random failure can be too big to read. With one, QuickCheck cuts it down to a small input that still fails.
mlabs.city/blog/mastering-qu… #Haskell
Whoever scans a ProofTap tag trusts none of the people who made the record. So the chain alone has to carry the check. We wrote the Cardano smart contracts behind @ProofTap2026, and this is what that constraint rules out. mlabs.city/blog/prooftap-car… #Cardano
MLabs is on Bluesky: mlabs-consulting.bsky.social
Engineering work goes up there as we do it. Who else is worth following over there?
