Red
A Rebol-inspired, homoiconic "full-stack" programming language that spans from low-level systems code to high-level DSLs and native GUIs, all from a single ~1 MB toolchain
Created by Nenad Rakočević
Red is a homoiconic, multi-paradigm programming language that sets out to be a full-stack tool: a single language and toolchain meant to handle everything from low-level systems work — operating systems, device drivers, and the kind of code usually written in C — up to high-level application logic, domain-specific languages, and native graphical user interfaces. It is closely modeled on Rebol, sharing that language’s distinctive syntax and its idea that code is data, but it was built from the start as open source with much broader ambitions than its inspiration.
History & Origins
Red was created by Nenad Rakočević, a long-time Rebol developer best known in that community as the author of the Cheyenne HTTP server. By 2010, Rebol — the elegant, compact language designed by Carl Sassenrath — was still closed source and, in Rakočević’s view, evolving too slowly. He felt the underlying approach had far more to offer than Rebol was delivering, and that frustration became the trigger to start an open-source successor with much higher ambitions and a far wider field of use.
Red was first introduced in February 2011 at the ReBorCon (Rebol & Boron) conference in the Netherlands, and the project was officially launched the following month, in March 2011, with the release of version 0.1.0. That first release was developed in roughly three months and already contained a working Red/System toolchain — a compiler and linker — in only about 60 KB of source code. Later that year, in September 2011, Red was presented to a broader audience during Software Freedom Day.
Design Philosophy
Red’s defining ambition is captured in the phrase its creators use to describe it: a “full-stack” language. The goal is for one language, with one consistent set of concepts, to cover the entire range of software development — rather than forcing developers to mix C for the low level, a scripting language for the high level, and yet another tool for the GUI.
To make this possible, Red is built in two layers:
- Red/System is a lower-level, statically-typed dialect with C-like semantics. It is used to write the runtime, the garbage collector, and anything that needs to talk directly to hardware or the operating system.
- Red proper is the high-level, dynamically-typed layer: homoiconic, garbage-collected, and rich in built-in datatypes, where most application and GUI code is written.
Beyond the two-layer architecture, Red inherits Rebol’s most influential idea — dialecting. Because Red code is itself a manipulable data structure, programmers can define embedded domain-specific languages that look like ordinary Red. The language ships with several such dialects of its own, including a Parse dialect for grammar-based parsing, a Draw dialect for 2D graphics, and a VID dialect for laying out GUIs. The project describes Red as less a fixed language than a “language construction set.”
Other stated design goals emphasize being small, fast, portable, and self-contained: the entire toolchain is distributed as a single executable of roughly 1 MB — compiler, standard library, and REPL together — with a “no install, no setup” deployment model, and it can produce dependency-free native executables.
Key Features
- Homoiconicity — code and data share the same representation, enabling powerful metaprogramming and the dialecting described above.
- A rich type system — Red provides a large set of built-in datatypes (the project cites more than 40, with documentation describing 50+), including specialized literal forms for things like dates, times, tuples, URLs, and email addresses.
- Native GUI and drawing — a cross-platform GUI engine with a declarative layout dialect (VID) and a vector drawing dialect (Draw).
- Reactive programming — introduced in 2016, allowing data and interface elements to be linked declaratively so changes propagate automatically.
- Built-in parsing — the Parse dialect provides a PEG-style parser as a first-class part of the language.
- Compilation to native code — Red programs compile down through Red/System to small, self-contained native binaries.
Red [Title: "Greeting"]
print "Hello, World!"
; A tiny taste of dialecting: the Parse dialect
digits: charset "0123456789"
parse "2026" [some digits] ; => true
According to the project’s documentation, Red targets multiple operating systems — including Windows, Linux, macOS, Android, and FreeBSD — across x86/x64 and ARM architectures, consistent with its goal of broad portability. (As with any pre-1.0 language, support for specific platforms and features matures over time, and some advertised capabilities such as full concurrency are still in progress.)
Evolution
After the 2011 launch, Red’s development concentrated for several years on building out the language’s foundations. A major milestone arrived in early 2016 with version 0.6.0, which delivered Red’s native GUI system — initially with a Windows backend — alongside a 2D drawing dialect, simple file and HTTP(S) I/O, and a set of image codecs. Version 0.6.1, released in June 2016, layered a reactive programming framework on top of the GUI system.
A long-standing gap for a high-level language was closed in December 2018 when version 0.6.4 introduced Red’s first garbage collector, the “Simple GC.” In 2022 the team published “The Road To 1.0,” an explicit accounting of what remained before a stable 1.0 release: full I/O with asynchronous support, 64-bit support, and a fully self-hosted compiler. Most recently, version 0.6.6 Beta (March 2025) overhauled the memory-management subsystems and garbage collector of both Red and Red/System, adding precise stack scanning and an external resources manager — work explicitly framed as bringing the language up to the level required for 1.0.
Current Relevance
Red remains an actively developed but pre-1.0 language, which shapes how it is used in practice: it has a small, dedicated community and a few notable real-world applications — such as the commercial diagramming tool DiaGrammar — rather than mainstream industrial adoption. Its appeal is concentrated among developers drawn to the Rebol lineage, to extremely compact toolchains, and to the dialecting style of metaprogramming. Development continues to be organized around the long march toward the 1.0 milestone, with steady releases on the 0.6.x line.
Why It Matters
Red is significant less for market share than for what it attempts: collapsing the usual stack of separate tools — a systems language, a scripting language, and a GUI toolkit — into one small, homoiconic language. In carrying forward and open-sourcing the ideas of Rebol, it keeps alive a distinctive vision of programming in which the boundary between code and data, and between a language and the dialects built on top of it, is deliberately blurred. For anyone interested in language design, dialecting, or the question of how small a self-contained, full-stack toolchain can be, Red is a compelling and unusual case study.
Timeline
Notable Uses & Legacy
DiaGrammar
A commercial diagramming application built with Red, used as a showcase of what Red's native GUI and drawing dialects can produce as a real desktop product.
Domain-specific languages (DSLs)
Red's homoiconic, dialecting design is regularly used to define small embedded languages — for layout, drawing, parsing, and configuration — that read as native Red code rather than strings.
Cross-platform GUI tools
Because a single Red script can compile to a dependency-free native executable under ~1 MB, the language is used to build small cross-platform desktop utilities and prototypes without a heavy runtime.
Education and language experimentation
Red's compact toolchain and Rebol heritage make it a practical vehicle for teaching and experimenting with metaprogramming, parsing (via its Parse dialect), and language design.