What is Gray? A guide to the language, runtime, and research
I’m Annabella Proctor. I created Gray, a programming language and native runtime for server software, and I’m building it at Grayworth. If you’ve come across the name through a paper or one of my websites, here’s where to start.
What the runtime does
The language gives you a way to write a program. The runtime does the work of running it: handling values, talking to the operating system, and keeping track of operations that are still in progress.
Take a request handler that reads from a database and returns a response. Its source might be short. While it runs, though, something has to manage the connection, wait for the result, deal with an error, and clean up if the request is cancelled. A lot of my work on Gray concerns what happens at those points.
Which site should you open?
Gray Language has the language and documentation. Grayworth is the company behind the work. Preflight is where you can look through benchmark evidence and qualification results.
This is my personal website. The biography covers my background, and the Work page covers projects and experience. For syntax or release-specific behavior, go to the language documentation.
Where the papers fit
The publication records cover four subjects: sustained server measurements, PostgreSQL continuations, native loop lowering, and typed NativeIR.
If you work on services, start with the server measurements or PostgreSQL paper. They get into behavior under load and what happens while database operations wait. If you work on compilers, the loop-lowering and NativeIR papers are closer to the execution machinery.
The titles can be a mouthful. The common question is fairly direct: when the runtime changes how it executes a program, does the program still behave as it should? Speed is part of the work, along with ownership, cancellation, and recovery.
Trying to evaluate Gray?
Start with a program you actually need to run. Check the current documentation, then look for evidence relevant to that kind of work. A result for one loop or one server fixture won’t answer every question about your application.
I wrote a separate guide to reading benchmarks for that part. If you have a question about a workload, an integration, or one of the papers, send it to me. A concrete example gives us something useful to discuss.

