
Gui
754 posts






















So, with Bend2's launch incoming, I'm struggling a bit with the branding. The coolest feature of Bend2 is that it is built from scratch around the idea that we, humans, will stop maintaining codebases. Instead, we write specs - i.e., what we want, as *precise types* - and the AI does the coding, and then *proves that it is correct*. In other words, Bend2 is a way to use vibe coding when you can't risk having bugs at all, and that's something that doesn't exist today. Problem is: Bend1 has already been "marketed" as a language centered around parallelism, and *that is true for Bend2 too*. It will be able to run on GPUs, and will solve most of the Bend1's limitations (2 GB memory, 24-bit numbers, no IO, ultra strict evaluator, etc.). Now, the thing is: how do we market that? Do we talk about all the updated parallelism features? Or do we keep the communication simple and focus about the "vibe coding without bugs" thing? If we talk too much, it may look like feature bloat and not really click to many people. But if we focus only on the AI proof system, it may look like we're completely dropping the old features, which isn't the case. I also wonder if we should rebrand it as ProofScript... "So what is your codebase written in?" "ProofScript!" "Wait what's that?" "Oh it is like TypeScript but we can write these super precise specs and the code is only accepted if the AI proves mathematically the specs are fulfilled. It is super nice because we can vibe code all we want without worrying the AI will break things. You should try it!" "Uh sorry JavaScript is too slow for my serious bank code" "Oh no it compiles to C, and even runs on the GPU if you want to" "Wait what" Hmm I don't know...

I think it must be a very interesting time to be in programming languages and formal methods because LLMs change the whole constraints landscape of software completely. Hints of this can already be seen, e.g. in the rising momentum behind porting C to Rust or the growing interest in upgrading legacy code bases in COBOL or etc. In particular, LLMs are *especially* good at translation compared to de-novo generation because 1) the original code base acts as a kind of highly detailed prompt, and 2) as a reference to write concrete tests with respect to. That said, even Rust is nowhere near optimal for LLMs as a target language. What kind of language is optimal? What concessions (if any) are still carved out for humans? Incredibly interesting new questions and opportunities. It feels likely that we'll end up re-writing large fractions of all software ever written many times over.



