Overview

Why write another programming language?

In short, curiosity.

When I first wanted to start writing a programming language ⚔️1, I slowly became enthralled with how to implement tooling. Many language tutorials are incredible (see: Credits), however they all lacked solid foundations for implementing and incorporating end-to-end development tools. Even the most popular of today's programming languages previously treated workflow as separate to the runtime ⚔️2.

With this in mind, I began designing Talos in 2024 under the original name of Ember ⚔️3. What was initially an attempt to get any sort of programming language written, led me down a rabbit-hole of ideas, shortcomings and possibilities. The result of which taught me many differing aspects of programming and software and ultimately culminated into the current state that Talos is in today.

Goals

The core goals that Talos has from a project perspective can be split into two categories:

Modular C++ Backend:

  • Monorepo Architecture  —  A bespoke CMake monorepo design.
  • Language-Server Framework  —  A transport-agnostic LSP library.
  • Custom Testing Library  —  Builtin unit-testing for both C++ and Talos.
  • Dependency Injection  —  A simplistic DI library for runtime fixtures.
  • Green-Threads Library  —  A fast, reliable concurrency framework.

Language Runtime Design:

  • Familiar Modern Syntax  —  Rust/TypeScript inspired structure.
  • Performant Interpreter  —  A performant bytecode/jitted* virtual-machine.
  • Expressive Type System  —  Static typings to improve dynamic performance.
  • Monadic Error Handling  —  Distinct error-handling for recoverable/unrecoverable states.
  • Colorless Functions  —  Scalable concurrency without the headaches and overhead.

Status

Talos is currently an experimental language, and with that comes a few things to keep in mind. There is a working installer and upgrade command, however until these have been adequately tested, they may not work on all machines. Although the core aspects of the underlying language design have been roughly decided, they may also still change.

Strictly Speaking: There will be bugs!

Regardless, the project is now at a point where it has more substance than thought, and as such should mostly work. The project is not currently at a stage where it is taking contribution, but this will be possible in the future. See the contribution section for the current status and eventual process to do so.

For more information regarding rough estimates for the project, take a look at the working roadmap for more details.

Credits

A massive thank you to the following people/projects. Although I would love to claim everything I have done, I couldn't have undertaken this project without some clarity and help from the work of others.

Footnotes

⚔️1  —  Around 2021 I started attempting to write a programming language, but not until recently did I finally decide to release something more substantial.

⚔️2  —  Until the past few years, all-in-one runtime and toolkit programming languages were few and far between. JavaScript didn't have a full all-in-one runtime and toolkit until Deno in 2018. Although Node did come before this, it shipped npm seperately. Of any recent major language, Dart has probably been the most complete in terms of accomodating all development aspects.

⚔️3  —  Although I still think Ember could have worked as a name, it felt to similar to other large-scale projects. Because of this I ended up doing a deep dive into Greek mythology to try find an alternative spelling. This led me to the story of Talos, a man of bronze who protected Crete. I thought this was neat and so ended up using it as the name instead.

On this page