Rebol is a modern interpreted language where code is data. It isn't object oriented, but has objects. It isn't a functional language but has first class functions. There are virtually no syntax rules or immutable keywords, making it ideal for developing domain-specific "dialects".
What's Rebol about?
The Rebol programming language started from a fresh sheet. Its creators sought to capture the holistic purity of Lisp, while natively supporting the realities of our always-on, network-connected, multi-platform world. The goal was to follow a certain philosophy of software design to its logical conclusions, in order to create a uniquely sustainable tool for managing complexity.
More than a decade of careful engineering has produced an interpreter that fits in under a megabyte on Windows, Mac, and Linux. This is despite including modern network protocols, Unicode, date/currency arithmetic, and much more. Single lines of Rebol can perform feats that require importing bulky libraries in other languages (or writing hundreds of lines of custom code).
The system is so compelling that it has consistently won admiration from those who use it, including at least one key figure behind today's Internet technology:
"Rebol's a more modern language, but with some very similar ideas to Lisp, in that it's all built upon a representation of data which is then executable as programs. But it's a much richer thing syntactically.
Rebol is a brilliant language, and it's a shame it's not more popular, because it deserves to be."
—Douglas Crockford, founder of JSON, 2009 [link]
However, the language was severely held back by its proprietary nature ... up until 12-Dec-2012, when the source to the latest version (R3) was released under the Apache 2.0 License.
Rebol 3 is a ground-up rewrite of the interpreter from Rebol 2. Its cross-platform strategy is to boostrap by building necessary source files using a working Rebol interpreter on any platform, ultimately requiring only an ANSI C compiler and
make on the target. Thus it is very portable to legacy and embedded systems.
Where can I get a Rebol 3 binary?
After the open-source release, a build farm was set up on RebolSource.net which automatically generates the latest versions from the GitHub mainline. One-off builds are available for platforms like HaikuOS and Linux ARM, but currently automatic builds are for x86 on Windows, OS/X, and Linux:
What is the status of Rebol 2?
Rebol version 2 ("R2") is in maintenance mode. Legal issues of proprietary third-party code used in R2—as well as the desire to focus active development on the redesigned and community-supported Rebol 3—suggest that it is not likely that Rebol 2 will ever be open sourced.
Still, many web tutorials and pages about Rebol discuss version 2 (and especially its graphical dialect known as VID). It may be interesting to hobbyists or educators, and downloads are still available:
There is also a library for Rebol 2—called R2/Forward and bundled with the most recent R2 versions—which makes R2 behave more like Rebol 3. This bridges across some of the more superficial changes between R2 and R3, so there's a smoother curve between the versions.
What Rebol alternatives exist?
Several open-source variants to Rebol have come and gone over time, such as Freebell, R-Sharp, or ORCA. Two variants are still actively developed: Boron and Red.
Boron has been under steady development by the same author for several years now. It is LGPLv3-licensed and does not aim at any form of compatibility with Rebol, but rather maintains only superficial syntactic similarity.
Red is being spearheaded by one of the most established programmers in the Rebol community (who among other things wrote the Cheyenne Web Server). Red is BSD/Boost-licensed and still in active development, with early alpha versions available. Red aims at implementing a compiled Rebol variant; goals for compatibility to Rebol are not yet set in stone.
How can I learn Rebol?
If you've never worked with a language where code-is-data (like Lisp or Tcl), there's going to be a learning curve ... which may strangely be steeper for an experienced programmer than a very new one. Also a bit unnerving is that if you have worked with a homoiconic [wikipedia] language before, you might assume a false sense of security about "getting" Rebol's unique angle on programming ... in a Blind-Men-And-The-Elephant kind of way.
The principal architect of Rebol, Carl Sassenrath (who also wrote the Amiga Exec) wrote that Rebol is like a lake
Although we like to make Rebol look a lot like other programming languages, it is much deeper than it looks. I've said before that Rebol is like a lake. You see the surface and think that is all there is to it. But, once you step into it, you discover there is another dimension. This 2D view of a 3D concept helps beginners get started, but the 3D reality is what gives Rebol its true power.
There are in fact a number of puzzling things people say about Rebol. Like if you write:
x: 10 x: x + 20 print x
It simply prints out 30. Thus newcomers will make intuitive assumptions like "x must be a variable, colon must be the assignment operator, and print must be a keyword". But Rebol programmers reply enigmatically that "Rebol doesn't have a variable assignment operator, x: is a SET-WORD!" or "Rebol has no keywords". While these claims are (truthfully) cutting at the core of what's novel about this particular language, they can seem a bit daft to an experienced programmer. So curiosity and patience are required to grok their meaning!
Carl Sassenrath has written other things like:
A friend of mine says it's like the movie "Matrix" where you are offered either the red pill or the blue pill. Most programmers stick with the blue pill. The folks who take the Rebol red pill wake up and can never go back. I've had companies call me to complain that a few of their programmers started using Rebol and are now "ruined" because they refuse to go back. Rebol is a highly disruptive technology.
While it may be true, it frustrates experienced programmers by seeming evasive. And perhaps evoking this xkcd comic about the Matrix. ("Look, maybe you just suck at explaining.") :)
Here are some resources for getting started in grasping the language:
- Nick Antonaccio has written a good introduction to Rebol 2 which has also been turned into 10 hours of 68 YouTube videos.
- If you're more the bookish type, you can find Rebol: A Programmer's Guide on Lala, written in French by Olivier Auverlot (and translated into English by your fellow StackOverflow user Peter W. A. Wood)
StackOverflow chat room
There is a chat room on StackOverflow for Rebol-family languages.