Red is a new programming language, strongly inspired by REBOL, but with a broader field of usage thanks to its native-code compiler, from system programming to high-level scripting, while providing modern support for concurrency and multi-core CPUs.
Main characteristics are:
- Functional, imperative and symbolic
- Prototype-based object support
- Homoiconic (Red is its own meta-language)
- Optionally typed, rich set of datatypes (50+)
- Both statically and JIT-compiled to native code
- Concurrency and parallelism strong support (actors, parallel collections)
- Low-level system programming abilities through the built-in Red/System DSL
- High-level scripting and REPL console support
- Highly embeddable
- Low memory footprint, garbage collected
- Low disk footprint (1MB)
Making a Red "Hello World"
The Red toolchain comes as a single executable file that you can download from here for the big-3 platforms.
Put the downloaded red binary in the working folder.
In a code or text editor, write the following Hello World program:
Title: "Simple hello world script"
print "Hello World!"
Save it under the name: hello.red
From a terminal (or CMD on Windows), run it with:
$ ./red hello.red
You should see the Hello World! output.
Want to generate a compiled executable from that program?
$ ./red -c hello.red
Want to cross-compile to another supported platform?
$ ./red -t Windows hello.red
$ ./red -t Darwin hello.red
$ ./red -t Linux-ARM hello.red
Last stable (v0.6.3)
↓ Mac OS X
Automated builds, master branch
↓ Mac OS X
Note for Linux
For Linux 64-bit distros, you need to install 32-bit supporting libraries. So, for Debian-based distros, install them using:
$ sudo apt-get install ia32-libs libc6-i386 libcurl3-i386
If you are using a Debian 7+ or Ubuntu 13.10+ version, you should use the multiarch way:
$ dpkg --add-architecture i386
$ apt-get update
$ apt-get install libc6:i386 libcurl3:i386
for CentOS distros, install them using:
$ sudo yum install glibc.i686
$ sudo yum install libcurl.i686
There is a lot to do on a project like this, so all people willing to help are welcome. The project is at its Alpha stage of development, there may be breaking changes.
If you want to contribute at the source code level:
- We are at the bootstrapping phase, the whole compilation tool-chain is written in Rebol v2, so knowing this language is mandatory to make contribution to the compiler or linker. The good thing is: as Red will be very close to Rebol's syntax, your newly acquired knowledge will not be lost...and will help you be operational on Red as soon as it will be available.
- The low-level Red/System DSL is at beta stage, but we still need:
- testing: writing small apps, reporting issues, writing more unit tests,...
- bindings to useful low-level libraries
- larger applications (to help improve Red/System's programming-in-the-large abilities)
- Install Git, learn how to use it (we can help for that), and open a Github account, then fork the Red project repository. When you are ready to propose some new source code or patches, send a pull request.
If you want to contribute, contact us through one of the preferred ways listed above.