Jacquard - Programming language for AI-written, human-reviewed code

Show HN: Jacquard, a programming language for AI-written, human-reviewed code

Jacquard - Programming language for AI-written, human-reviewed code

Jacquard is a novel programming language designed for a future where AI models write most code and humans focus on review. It uniquely exposes program effects, uncertainty, and canonical identity directly in the syntax, allowing developers to instantly see what a function can touch without reading every line. Built with an OCaml checker and C backend, Jacquard enables running code against multiple simulated worlds and performing exact probabilistic inference. This research prototype empowers humans to trust and verify machine-generated software with unprecedented clarity.

When most code is written by machines, the humans reviewing it need the language itself to answer 'what can this touch, and how sure are we' without reading every line.
  1. andai

    > External/world effects are visible in function signatures

    Brilliant. I think Jai has something like that? Each function declares what it's going to touch (both read/write) globally, and I think you can specify that per block even.

    I haven't used Jai (I think it's not out yet) but I remember the author talking about this and it sounded like a great idea.

    It's related to the idea of pure functions being easy to reason about. Right now most languages don't even have a concept of pure functions, but the ones that do, just have two categories. When a function is messing with global state you do actually want to know what it's doing.

    I think that can be statically computed (and displayed as IDE annotations or whatever) but specifying it explicitly sounds like a good practice either way.

    I like that you're including other side effects (e.g. network) there too though, that's pretty cool!

    Another thing I'm really interested in is proofs. Not necessarily total proofs (though we seem to be moving in that direction, at least for subsets of the codebase), but just normalizing rudimentary pre and post conditions checks.

    I was thinking of setting it up so code can't even compile in release mode if those are missing. (Not every function would need them, but you at least want to state their absence explicitly.)

    I was also thinking of setting up strictness levels per function, using hashing or something, so if a function is modified, you'd have to go through a process of double checking it a […]

  2. derdi

    > a C-emitting native AOT backend that currently compiles the kernel .jqd carrier

    This human reviewer gave up at line 4 of the Readme. What is the kernel? What does the carrier carry? Why does it need to be carried? Where does the .jqd come from?

    Also, for whatever reason, from the submission here:

    > I had AI analyze the ASTs of several mainstream languages plus a few of the conceptually groundbreaking but esoteric ones (listed in the README)

    No, they are not listed in the Readme. Why lie to us right off the bat?

    I like the general idea, but the human responsible for this seems to demonstrate no interest in actually reviewing their system's output. Which does not bode well.

  3. wren6991

    Given how poorly LLMs do with writing prompts for LLMs, I'm not sure I'd trust their judgement in designing a language for LLMs.

    > and the runtime requires explicit permission to touch the filesystem, network, etc

    This feels like more of an OS problem (or library problem) than a language problem.

    > Run one program against many worlds. The same code can run against the real network, a scripted fake, a recording of last week's traffic, or a probability model of how servers usually behave

    How is the "world" model different from plain dependency injection?

  4. Cyberdog

    The obvious problem with any new AI-centric programming language (I think this is the third I’ve seen at this point) is that any LLM you try to use with it will be starting from zero - it has nothing to copy from and very little documentation available to find on its own, if it’s even capable of doing web searches. Java or C++ or whatever may be “worse” by some standards for LLMs (or humans) to work with, but all LLMs in common use have already been trained on decades of existing code which it can crib from.

  5. jondwillis

    lol I had started a “plugin compiler” that Claude also wanted to name after the Jacquard loom https://github.com/jondwillis/jacq

    Fricking training distribution/same-y ness coming for us all… cool project though.

More from this day

2026-07-13