Introduction

What is R2ND?

R2ND (Road to No Dependencies) is an open ecosystem rebuilding the software stack from scratch — with zero external dependencies.

Most software stacks depend on hundreds of third-party packages, hidden runtimes, and frameworks built on top of other frameworks. R2ND is a bet that this doesn't have to be the case. Starting from a new programming language — M++ — the project builds every layer of the stack: language, standard library, UI framework, 3D renderer, networking stack, and desktop environment.

The goal is a complete, self-hosted software ecosystem where every line of code is readable, auditable, and under your control.

The Stack

Each layer is built on top of the one below it — and nothing else.

Applications
User-facing programs built entirely on the R2ND stack
R2ND Desktop
Window management and OS integration layer
UI · Renderer · Networking
Interface framework, 3D graphics engine, and communication stack
Core Libraries
Standard library: data structures, I/O, math, file system, and utilities
M++ Language
Statically-typed, LLVM-compiled systems language — the foundation of everything

Project Status

R2ND is under active development. Here's where each component stands.

M++Active
Core LibrariesActive
R2ND UIIn Progress
3D RendererIn Progress
R2ND NetworkingPlanning
R2ND DesktopPlanning
R2ND ToolsPlanning

Philosophy

Five principles guide every design decision in R2ND.

01

No Unnecessary Dependencies

Every component in R2ND is built from scratch or relies only on other R2ND components. External dependencies are treated as a design failure.

02

Full Transparency

All source code is open. You can read, audit, and understand every line of code that runs on your machine.

03

Open Ecosystem

R2ND is not a product — it's a platform. Anyone can build on it, extend it, or replace parts of it.

04

Developer Freedom

No magic, no hidden runtime, no opaque framework. You control your memory, your types, and your execution.

05

Long-term Maintainability

A codebase with zero external dependencies never breaks because a package was deprecated or silently changed its API.

M++ at a Glance

Here's what M++ code looks like:

// A simple M++ program

fn greet(name: string) -> string {
    return "Hello, " + name + "!";
}

struct Point {
    x: float,
    y: float,
}

fn Point.length(self: Point) -> float {
    return sqrt(self.x * self.x + self.y * self.y);
}

fn main() {
    let msg = greet("R2ND");
    print(msg);               // Hello, R2ND!

    let p = Point { x: 3.0, y: 4.0 };
    print(p.length());        // 5.0
}