I’ve created a new programming language, chillscript. You can download the very first public pre-release, which will be the basis for this post. You can also peruse the official documentation in the README.


As fellow developer in my Twitter feed was riffing on programming languages, he threw out a joke name for one: chillscript. He followed up with another tweet about there being no flow control in said language. Twitter’s lack of context worked in my favor, for a change, and my serious inquiries turned into brainstorming. Unable to get the idea of a “control flow-less” language out of my head, I prototyped the language on the spot. Four hours and one mocha later, chillscript was born.

For the grammar and basic design, I’ve taken some cues from Erlang, Elixir, and Gherkin.

For the ethos of the language and the project around it, I’ve borrowed straight from the Ruby playbook and put fun front and center. I promise to only add what’s necessary to chillscript, toward this end, and even cull features that prove more vexing than inspiring. If game design has taught me anything about how to foster fun, play, and the state of flow, it’s the primacy of providing safety and constraints.

I don’t expect chillscript to ever be “production ready”. It’s called chillscript, for crying out out, and not stress-about-deploymentscript. Rather, I hope that it “produces” people with a newfound love of programming, state machines, pattern matching, and programming language development.

In short, I dream of the day that someone is inspired to pen _why’s guide to chillscript for the sheer joy of it.


I want chillscript to be fun, not just for me to hack on, but primarily for those new to it. Therefore, the syntax will remain as accessible and non-arcane as possible. That way, readers can fully leverage their existing (English) linguistic abilities to grep how the language works without having to learn new syntax and grammar. The more brain power that can be freed up to focus on learning about state machines and pattern matching, the better.

I implemented the chillscript prototype in Ruby just because of (a) how well I know the language, and (b) its inherent legibility and expressiveness. The code right now is rather ugly and takes shortcuts, but I aspire to re-engineer it in a way that curious chillscript programmers can understand the higher level intent.

Down the road, I might also implement chillscript via more specialized tools like antlr, if only for my own edification.

I look forward to reimplementing chillscript in other human languages, after learning more about creating computer languages. Assistance appreciated.

For Now

As of this posting, I’m about to start a new full-time job and already have other work on my plate. Because of that, I expect quite a bit of time to pass before I return to chillscript, if I ever do. That said, I hope you’ve found this post inspirational. I’ve thoroughly enjoyed working on chillscript for even the short time I’ve spent on it, and I bet you would get a thrill out of trying your hand at making your own language. Good luck!