Skip to content

2026

pony-doc: From the back pew to the front pew

ponyc --docs is how you used to generate Pony API documentation. For more than a decade, you’d run that command, point it at a package, and the compiler would write you documentation in MkDocs-compatible format. It was quiet. It was reliable. It was boring.

Last month I deleted the documentation pass from the compiler. pony-doc, a separate Pony program, generates Pony documentation now. It creates the same output as the old documentation pass did. We switched all our sites over from one to the other and no one noticed.

So why move documentation generation out of the compiler? Why do work that has no discernible change for the user? Why now, after a decade of ponyc --docs working just fine?

Last Week in Pony - May 10, 2026

This week’s theme song is “My Bucket’s Got a Hole in It” by Tim Timebomb. Looks like Pony’s bucket has sprung a leak this week, doesn’t it? It hasn’t.

You’ve been getting a steady drumbeat of Pony news for months now. That drumbeat goes quiet this week, and it’ll stay quiet for a stretch. Don’t read it as the momentum dropping off. The water’s all running into one place — a big job that’s eaten most of my coding hours, more on it below.

pony-lint: Codifying the Style Guide

A couple months ago I wrote about teaching Claude to write Pony. The shorthand version: treat the LLM like a junior developer with no memory, build up a CLAUDE.md, refine it as you find where Claude falls short. The CLAUDE.md got Claude most of the way there.

The piece it never quite covered was the style guide. There’s one for the projects under the ponylang GitHub org. It has rules for indentation, line length, naming, where blank lines go. Claude would write code that compiled and worked but didn’t follow the rules. Indentation that should have been two spaces would land on three. A type name would pick up an underscore. A function that belonged on three lines would end up jammed onto one. Stray trailing whitespace. Each one I’d correct. And correct it again. And again.

Last Week in Pony - May 3, 2026

This week’s theme song is “Voodoo Child” by Monica Valli. Trust me on this one.

Big release week. ponyc 0.63.4 ships two new pony-lsp features. Signature help pops up the parameters of the method you’re calling and highlights the one you’re filling in. Type hierarchy navigation lets your editor walk between a type, its supertypes, and its subtypes. The release also fixes a link failure on Fedora-family distributions, a multilib crt1.o gotcha, and a match exhaustiveness hole on Bool tuples. The RFC front was busy too: three new proposals and one across the finish line. Let’s get into it.

Last Week in Pony - April 26, 2026

This week’s theme song is from the man himself, Johnny Cash: “Take Me Home”. I’ve been on the road for two weeks and I’m finally back home, so this one fits.

Plenty to dig into. ponyc 0.63.3 ships another round of pony-lsp work and tightens the runtime’s memory ordering on its hottest queues. ponylang/ssl picked up OpenSSL 4.0.x support and the matching builder image is live. There’s also Ubuntu 26.04 support, a new blog post on the design of pony-lsp, and a couple of RFC moves to chew on. Let’s get into it.

pony-lsp: An Actor and a Callback

Embed You a ponyc for Great Good introduced libponyc-standalone, a static compiler library you can link your tools against, and a Pony wrapper called pony-ast that exposes the compiler as a callable function. This post is about the Pony language server we built on top of it.

A quick disclaimer before I get going. Almost none of pony-lsp is my work. Matthias Wahl built it from scratch. He wrote the actor architecture, the message dispatch, and the original feature set. He also wrote pony-ast. Orien Madgwick has been pushing it forward; most of the new features over the past several months are his. My contribution is mostly fixing things that broke when I imported the project into ponyc, plus a small feature here and there. The clever stuff is theirs.

Last Week in Pony - April 19, 2026

Two theme songs this week. The topical pick is “New York Groove”, because I spent most of the week back in NYC. Apropos. But the real theme song is “Dollar Bill Bar” because OMFG, I love that little damn song so much. You go Sierra. You fucking go. Right, umm, where was I. Oh yeah. Pony shit.

Big week. ponyc 0.63.2 is out with a pile of pony-lsp work that makes your editor a lot more useful. ponylang/postgres 0.5.0 is a security-hardening release that closes a SCRAM mutual-authentication bypass, requires SCRAM by default, and routes a stack of protocol failures to your application instead of crashing the driver. contact-red/sensitive shipped its first release and gives you a clean way to keep secrets out of your log files. And three networking libraries picked up timer failure callbacks so you actually find out when your timer subsystem has fallen over. Let’s dig in.

Embed You a ponyc for Great Good

The ponyc command you run every day is a main() function with a terminal-width detector glued to it. The actual compiler is a library called libponyc. ponyc is a wrapper around that library, and the wrapper is 149 lines of C.

That’s the setup for this post. The Pony compiler is a library and you can link against it. And because you can link against it, you can build your own tools. And if you want your tool to be one binary instead of a ball of loose dependencies, you want libponyc-standalone.

Last Week in Pony - April 12, 2026

I’m going to be traveling a lot during the next couple weeks, so our theme song this week is Willie Nelson’s “On the Road Again”. A true classic. And for a true story: once upon a time I was a young child and met another kid while we were both sitting on Willie’s lap at his 4th of July picnic. Years later, I met him again at a bar in NYC when he came up from Texas to hang out with a good friend who was one of my best friends. Small world, right? Willie Nelson, bringing together awesome people since the time of the dinosaurs.

All that aside, we have some great stuff as usual happening in Pony land. ponyc 0.63.1 is out and has safety-related fixes you need. ponylang/postgres 0.3.0 is a monster of a release. A pile of networking libraries went out that you’ll want to grab. And there’s a whole pitch to make about LLMs and Pony. Let’s dig in, because it all just fucking rocks. Get on board this train while there is still time. That’s what I’m saying. Get the fuck on board. Oh, and Cloudsmith has throttled us until the end of the day today UTC so, sorry, you can’t download any prebuilt binaries until that has lifted.