Gato — We all deserve good software. And cake. And cats.[1]

Gato is a general-purpose programming language being very slowly created by yours truly, Changaco.

Right now it's still vaporware, but I've been thinking about it for years and I finally started writing a compiler for it in the last days of 2023, so I've settled on a name and acquired some domains.

Gato's design prioritizes correctness, efficiency, and productivity.

Correctness meaning that Gato is designed to prevent or mitigate bugs as much as possible.

Efficiency meaning that Gato should facilitate writing software which uses the computing power and memory of the machine it runs on as efficiently as possible. This has multiple implications, including the need to have good support for concurrency and parallelism.

Productivity meaning that reading and writing Gato code should be a piece of cake. 🤣 Puns aside, this goal is inseparable from the previous two, as it's about facilitating the creation and maintenance of correct and efficient software. Readability is partly subjective, but Python is widely considered to have good code readability, and Gato's syntax is inspired by Python's.

While Rust is advertised as having almost identical qualities,[2] it doesn't have them to the maximum extent possible, because it wasn't designed to. Basically, Rust was an attempt to improve upon C(++), and it did, but Gato aims to be significantly better than Rust (and Python) for as many use cases as possible.

Questions & Answers

How can a programming language be safer than Rust?

Relatively easily, as Rust doesn't attempt to mitigate all types of bugs. To give a simple example: Rust isn't designed to detect unintentionally infinite looping, despite the fact that this can crash a program or make it unresponsive, and that it can be quite difficult to debug.[3] One of the things a programming language can do to mitigate this type of bug is to provide separate mechanisms for short and long-running loops, and to raise a proper exception if a short loop exceeds its expected maximum number of iterations or run time. Unfortunately, Rust (and Python) followed the tradition of having a while loop keyword which can confusingly be used for both finite and infinite loops. To be fair, Python was created before I was born,[4] and Rust was created when I was only beginning to learn programming.[5]

Couldn't an existing programming language be improved instead of creating a new one?

I'm unaware of a programming language which could realistically be improved to match what I have in mind. For example, making a lot of deep changes to Python would be more difficult than starting from scratch, and the Python language as we currently know it would cease to exist in all but name if those changes were made.

When will Gato be ready to try?

I have no idea.

Can I contribute to or follow the development of this project?

Gato is of course open source and is being developed publicly on GitHub. You can watch and star the repositories, contribute to the first design document or the first compiler being written in Python, or simply follow issue #1 for infrequent updates on the project's progress. A simple message saying that you think this project is a good idea would also be helpful and appreciated at this early stage.

How is this project funded?

This project hasn't received any funding so far. You can be its first patron by donating to the Gato team account on Liberapay.

Footnotes

  1. If you don't get the puns, take a look at the meanings of the word “gato”.
  2. On the front page of the official Rust website: “Why Rust? Performance, Reliability, Productivity”.
  3. See for example the “Challenges encountered” section of the Cloudflare blog post “ROFL with a LOL: rewriting an NGINX module in Rust”.
  4. Work on Python began in the late 1980s. Source: A Brief Timeline of Python, via Wikipedia.
  5. Rust was created in 2006. Source: How Rust went from a side project to the world’s most-loved programming language, via Wikipedia. I will spare you and myself by not linking to proof that I was learning PHP at the time.