Category: Update

Red/System v0.2.6 released

20 August, 2012 | By Nenad Rakocevic

The need for more structured code support has arisen with the addition of bigger and more sophisticated bindings like GTK one or the (soon to be released) work on alpha version of Red compiler (which emits Red/System code). So, v0.2.6 introduces namespaces support using a very simple, but efficient model.

For example, to encapsulate some variables and functions in a local context:

b: 1
a: context [
    b: 2
    inc: func [i [integer!] return: [integer!]][
        i + b
    ]
]
a/inc 5                            ;-- will return 7

Local variables take precedence other global ones with same name. This simple rule also applies to nested contexts, the nearest one has priority, e.g.:

a: context [
    b: 123

    c: context [
        #enum colors! [red green blue]
        b: "hello"
        foo: func [][print-line b]
    ]

    print-line b                    ;-- will output 123
    c/foo                           ;-- will output hello
]

print-line a/b                     ;-- will output 123
a/c/foo                            ;-- will output hello
print-line a/c/b/2                 ;-- will output e
print-line a/c/blue                ;-- will output 2

As you can see from this example, enumerations can also be defined locally to a context, but not only. Aliases and imported functions can also be defined locally too! With that powerful new feature, you can now modularize your Red/System programs simply and efficiently.

See the namespaces documentation for more features and info.

In this release you will also find several bugfixes, mainly for floats support. Thanks to Rebolek for his aggressive floats testing. ;-)

Enjoy!

Don’t just wait for new blog entries; join us on Gitter

Chat with the team, keep up with the latest design issues, and be part of a great community
Join Us
We're on a Mission to Fight Software Complexity Join us! →