AltME: Announce


I added a downloadable single-user Windows .exe link on the page above.  That should make it easy for most users to check out.
Really nice software, Nick!

I added Merchants' Village POS as a project on sourceforge: .  If you get a chance to rate and/or review, the support would be greatly appreciated.
The big day has finally arrived. We just launched our Kickstarter campaign for The Future Soon, our Broadway style sci-fi musical. You can find it at
This is what has taken me away from things here so much lately. Getting the campaign up doesn't mean I'll have more time yet, but it's a step in that direction. If it succeeds, then I'll be busy mounting the show, but have made other adjustments that I hope will give me more time for Red and REBOL.

I made a 1/2 hour video introduction for the Merchants' Village Consignment software:

More improvements to the 0MQ binding for Red and Red/System, to support multi-part messages, from our Respectech project.
SEND & RECEIVE are back, as simplified Red wrappers over the more efficient send-string & receive-string Red/System ROUTINEs. 0MQ often creates multi-part messages under the hood, but they can now be handled manually when needed. There is now send/part which sends a message part. SEND sends the last (or only) part. To handle the other end of the transmission, both Red and Red/System now have a message-tail? function, which determines whether the last part of a message has been received, or whether more parts are still to follow.
To demo Red and 0MQ tomorrow for systems development and networking students, I enhanced the ventilator example for distributed supercomputing to allow the ventilator to send arbitrary Red code to the worker processes:
A Red expression can be passed on the command line. If the results from the worker processes are numbers, the sink process will total them up:
0MQ-ventilator "random 100"
I've updated my binary Red(/System) downloads for the latest 0MQ binding and examples, so that the interpreter consoles can run the examples from the source code:
As always, here's the guide to get all files with Fossil:
and here's the link to get a Zip package, where you have to wait two minutes for the server to create the package:

Endo, and all, I just put Saphirion's RebGUI fork to GitHub:
Robert, nice to have your REBOL3 version on GitHub.
I have 2 question:
1) is there an "History" text for fixes and improvements ?
2) Is REBOL3 curecore being updated in some way ?

1) We can extract this from our SVN log. The latest release on our web-site has a change log that's cleaned. And yes, I need to upload a new version and update it. I just don't find the time doing it.
2) The team might answer this better. IIRC Ladislav is quite active in maintaining CC.

I upgraded Try REBOL to Red 0.4.0:
I've updated my binary Red(/System) downloads for Red 0.4.0:
As always, here's the guide to get all files with Fossil:
and here's the link to get a Zip package, where you have to wait two minutes for the server to create the package:

More improvements to the 0MQ binding for Red and Red/System, to support binary messages, from our Respectech project.
Binary messages were already supported in the Red/System binding, of course, because Red string! messages are based on them, but now they can also be handled at the Red level when necessary. Red doesn't have a binary! type yet, so they are handled as the original 0MQ messages. Notwithstanding that, the life cycle management of a message is automated. RECEIVE creates a new message. The message can be consumed and cleaned up either by passing it to SEND to route it to another destination, or by using the new function message-to-string to handle the content yourself. To receive a string message immediately, instead of a binary message, you now need to use receive/string. The more efficient receive-string is also still available. Further, both Red and Red/System now have a function empty-message? that tests for a message of zero length. Empty messages are used by 0MQ as markers in multi-part messages. Binary messages can be combined with multi-part messages.

More improvements to the 0MQ binding for Red and Red/System, to support polling for incoming messages, from our Respectech project.
Polling was already possible, but not directly supported. There is now an interface for a simple form of polling for incoming messages, without blocking to wait for messages to arrive. RECEIVE has a new refinement receive/no-wait that returns immediately when no messages are available. In that case, it returns NONE. RECEIVE now returns FALSE on other errors. There is also a new refinement receive/into that takes the place of receive-string. Both Red and Red/System have a new function empty-socket? that can be used to test if receive/no-wait found no messages, but its use is probably only needed in Red/System. There's also a new function send-empty that creates and sends an empty message, as a marker.
The Red binding now also has an end-message function to manually clean up unused messages. These can result from receiving unexpected messages or message parts, for example with the new receive polling.
In Red, SEND NONE has the same effect as using send-empty.

I started converting some of my R2 tutorial materials for R3 Saphir. It's nowhere near done, but at this point should be enough to get absolute beginners using R3:
For anyone with some experience, the code examples at are a quicker way to get up to speed, without the extra prose.
I'll try to keep both documents updated together.

I added Nick's new R3 tutorial and Arnold's Red video tutorials to Try REBOL in the links section:

I just updated… to describe how to contribute new tests to the core-tests suite.
I've updated my binary Red downloads with the Red objects branch:
object!s are now implemented in the interpreter. You can try them with one of the */Red/red* interpreter consoles for your platform. The latest 0MQ enhancements are also in there. You can run the example programs in the interpreter:
As always, here's the guide to get all files with Fossil:
and here's the link to get a Zip package, where you have to wait two minutes for the server to create the package:

I upgraded Red on Try REBOL to the objects branch, so you can try objects there, too:

I've made numerous updates to
Thanks Nick. You've really created a helpful way to learn R3.

I have updated my latest script:
As of v.0.3.1 I have reached a good degree of compatibility but it is becoming increasingly difficult to add features and correct bugs, especially those regarding "bindological" problems. Please help me.

I made fixes to the 0MQ binding for Red(/System) to fully support 0MQ 3. In particular, handling of multi-part messages was broken. It was awkward to find and abstract the differences between 0MQ 2 and 3. The binding still uses 0MQ 2 on other platforms than Windows until common Linux distributions have upgraded:
0MQ 4 was recently released. The binding works with it, but doesn't explicitly support the new security capabilities yet.

I have updated my latest script:
and also files-renamer.r, parse-aid.r and visual-sorting.r that now work on R3 (with vid1r3.r3)

started to Add a bit of documentation to Steel applications:
you should really try out header-box it allowed me to update 30 scripts with very complete headers in a matter of hours with no possibility of errors.  usually, you try to cleanup the headers and every script has some little thing you forgot to do (like put the date, update the license text, or author)
Note that I have done a LOT of updates in my various libs in the last week, so if you are using them, now might be a good time to update.

just thought I'd share that I did 65 commits to my various Github projects in the last month a record... one I aim to beat next month  :-)

I have updated my latest script:
and also vid-build.r that now work on R3 (with vid1r3.r3).
I think I have reached a good degree of compatibility. I also think I have reached my limit in this script so do not expect many other improvements.

I am happy to announce my one release a day program (c)
yes, for a while now I have been doing many commits to several repositories, and am doing my best to do at least one commit a day.  today I did commits on liquid-libs/fluid.r and steel/fluid-tests.r

By popular request, I have upgraded Red on Try REBOL to the current development version, which now includes PARSE:
Unfortunately, this also means that objects are no longer included until they arrive in the master development branch.
Please test the new Red, in particular PARSE, for the upcoming release

simple script to detect if you've got some console functions in one or more scripts.
note that you can easily replace the words to verify in the globals.

Here's a new Red project, using PARSE:
It implements the Tagged Netstrings data format:
an extension of the original Netstrings format by Dan Bernstein:
There are two functions: to-TNetString and load-TNetString. They have several refinements to improve the conversion between the Red and TNetStrings type systems, and to be consistent with other Red functions, in particular MOLD and LOAD.
The converters are heavily optimised to minimise the number of series operations, to optimise memory use and hopefully speed.
The TNetStrings parser uses the new Red PARSE. Even though it's a very simple format, it uses many of the PARSE enhancements.
Converting the Red type system to another one gave it a good exercise. It has shaken out a series of bugs from PARSE and other parts of Red.
You can use TNetStrings instead of MOLD and LOAD to serialise some Red data using UTF-8, as long as Red's LOAD only supports ASCII.
Further, I need TNetStrings to interface Red with the Mongrel 2 web server.

I used the TNetStrings converters as templates to write a JSON implementation for Red:
It's heavily optimised for minimal memory use, over speed, because Red doesn't have garbage collection yet.
I haven't implemented string escaping yet.
You can use JSON for example to communicate with a Fossil server, in combination with the cURL binding.
Announcing Stone DB, a New commercial project I am currently starting design and implementation on, it is partially funded.
Stone will be an "enterprise level" node/graph DB.  Coded in C (no C++), it is currently planned to become Open-source within a short timeframe.  
much more is detailed in my initial project draft, some surprising capabilities,  but I wanted to keep  the list here short, just to give the main idea.
Some of the end GOALS are:
-Eventual native Integration in Rebol 3 ( & Red? ), much like Neo4j is integrated to java (as are most other graph DBs).
-terra/petabyte level capacity  (if you have access to a filesystem with such a capacity.  SAN or RAID array for example).
-100 billion nodes, 1 trillion associations are minimums I want to reach, even possible with 32 bit executables which typically use half the RAM.
-unique directional, associative and "qualified node" querying system, allows you to probe the db across all datasets, without using any pre-determined records.
-windows / linux compatible as initial targets.
If you are :
- interested in helping write code,
- interested in knowing more about Stone's planned technology and featureset
- currently using some node DB,  
- would be happy to test (even just , hey it started ;-)
- support the DB via funding
- put time on documentation
- writing generic clients (web client like neo4j would be nice)
once it starts being useful outside of my initial, pretty raw prototype phase, please let me know and I'll put you in a list of people to reach out at opportunate points in the Stone DB development.
obviously, I'll hapilly chat here if any of you have questions.
(here in altme, but in the ann-Reply group ;)

I implemented SINGLE? and OFFSET? for Red in
I've also started collecting commonly used PARSE rules in there, so far for string parsing:
non-zero ("1" - "9")
Kaj, for offset? should the function not test that the series passed in refer to the same undelying series (but a different position)?  I see that Rebol doesn't do this check either, but wouldn't it make sense to do so? What is the point of comparing positions in different underlying series?

My implementation of OFFSET? in Red is exactly the same as Kaj's. I didn't thinl about adding that check either, but I think I have used it on different series at least once in the past, tracking progress in two different queues.
By request, I added a /deep refinement on my JSON emitter for emitting nested blocks as objects. The /map refinement now only works on even sized blocks, instead of considering odd sized blocks an error:
print to-JSON/map/deep [a 9 [b 9  c 42]]
["a", 9, {"b": 9, "c": 42}]
The JSON loader now supports string escaping, except Unicode escapes, which are implemented but are waiting for Red's LOAD to support char! syntax with parens: #"^(0000)"
probe load-JSON {"Escape: \"\\\/\n\r\t\b\f"}
{Escape: "\/^/^M^-^H^L}

Very exciting stuff, Kaj!
I updated Red on Try REBOL, so it has the latest PARSE fixes:
It also includes my Tagged NetStrings converter: the to-TNetString and load-TNetString functions:

I added pretty printing to the JSON emitter:
print to-JSON/map [a 9  b [9]  c 42]
    "a": 9,
    "c": 42
There's now a /flat refinement that omits all spacing:
print to-JSON/flat/map [a 9  b [9]  c 42]
love it!

I implemented string escaping in the JSON emitter:
print to-JSON {Controls: "\/^(line)^M^(tab)^(back)^(page)^(null)}
"Controls: \"\\/\n\r\t\b\f\u0000"
The Unicode escapes \u aren't really implemented yet: they always output NULL, but they're only needed for obscure control characters.

To simplify the TNetStrings and JSON converters for Red, I implemented found?, any-word!, any-word?, series?, any-string!, any-string?, any-block! and any-block? in
I upgraded Red on Try REBOL to the new 0.4.1 release, plus the objects branch merged in:
So you can now use both objects and PARSE. Also, I included the JSON converter. Here's a nice example to try. It loads JSON from a web service API:
print headers: read ""
print to-JSON/map probe load-JSON/keys headers
   "Host": "",
   "User-Agent": "",
   "Accept": "*/*"
[Host "" User-Agent "" Accept "*/*"]
    "Host": "",
    "User-Agent": "",
    "Accept": "*/*"

I've just submited pull request toPygments codebase including lexer for Red language:
The colorized code than looks like:
Unfortunately there is still issue with recognition of REBOL source files if contain lit-words, so if you have Bitbucket account, maybe you coud vote for this issue:

The Stone DB is consuming a lot of my time but its moving forward pretty nice...  current single thread (in-RAM) imports run at 10 million nodes per second  using an average node payload of 40 bytes (which is longer than the average I'd typically use).  The majority of the time is spent verifying internal dataset  integrity and memory copying.
it takes 3 seconds to basically grab all available process RAM (2GB ) and create 30 million data nodes.    1 million nodes takes 50ms on average, I'm getting pretty flat scaling so far, which is a very good sign .  note that the data is completely memory copied into the DB .  I'm not pointing to the original import data.
all of these benchmarks, are not even using a dedicated import function... this is like the worst case scenario for import.  its a dumb FOR loop using  a fully bounds checking single insert-node() function.... if I did an import loop which only does the bounds checking and stores counters in a loop, I likely can scale the import a lot.  
I'm now starting work on the higher level interfaces, basically creating database setup on the fly and hopefully by friday I should have the file i/o started.
maybe next week I'll start to see how I can create a native Stone DB interface for R3.
nice tech you are doing there maxim. count me in for some big data tests. i never used graph DBs before but would like to give it a try
for a non scalable setup, suboptimal solved via simple key traversal stored into a nosql core currently.

I've put my old regex engine on github so anyone can improve on it.

For the Red JSON converter, I implemented TO-HEX and LOAD-HEX in
TO-HEX is like REBOL, it has a /size refinement to specify the number of hex digits:
red>> to-hex 1023
== "000003FF"
red>> to-hex/size 1023 4
== "03FF"
red>> load-hex "3ff"
== 1023

I merged 0.4.40 (64-bit R3 for linux) to community. Merry Christmas.
does this include any view code?

I made many improvements to the TNetStrings and JSON converters for Red:
- Floating point numbers are now parsed and loaded as file! types, so external data with floats can at least be loaded and the numbers can be detected, so they could be processed further by your own functions.
red>> load-JSON "6.28"
== %6.28
- char! type is now more explicitly supported, in the sense that single character strings will be loaded as char! so they are more efficient.
red>> load-JSON {["a", 9, "bc", 42]}
== [#"a" 9 "bc" 42]
- object! type is now supported, so it becomes easier to emit TNetStrings with nested dictionaries and JSON data with nested objects. The converters can still (and need to) be compiled: they use the interpreter only very sparingly for objects support.
red>> load-JSON/objects {{"a": 9, "bc": 42}}
== make object! [
    a: 9
    bc: 42
red>> print to-JSON context [a: 9 b: 42]
    "a": 9,
    "b": 42
- bitset! type is now supported in the emitter. Small bitsets that fit in bytes are emitted as character lists.
red>> print to-JSON/flat s: charset [#"0" - #"9"]
Complemented bitsets are not explicitly supported because they would be too large.
red>> print to-JSON complement s
"make bitset! [not #{000000000000FFC0}]"
Larger bitsets are emitted as integer lists.
red>> print to-JSON charset [100 1000]
- All Red data types can now be emitted. Not explicitly supported types are FORMed.
- Several new refinement options, in particular for object support.
red>> load-JSON/values {["#issue", "%file", "{string}"]}
== [#issue %file "string"]
Loading JSON objects and TNetStrings dictionaries still defaults to generating Red block!s.
red>> load-JSON {{"a": 9, "bc": 42}}
== [#"a" 9 "bc" 42]
red>> load-JSON/keys {{"a": 9, "bc": 42}}
== [a 9 bc 42]
- More efficiency optimisations. The converters use a minimum of memory.
- Unicode escapes in JSON strings are now fully supported.
red>> load-JSON {"Escapes: \"\\\/\n\r\t\b\f\u0020\u0000"}
== {Escapes: "\/^/^M^-^H^L ^@}
red>> print to-JSON {Controls: "\/^/^M^-^H^L^@}
"Controls: \"\\/\n\r\t\b\f\u0000"
red>> print to-JSON make char! 1
- The JSON converter now implements the full specification on except escaped UTF-16 surrogate pairs. There is little reason for them to occur in JSON data.
The JSON converter is still smaller than the official R2 implementation. It's now larger than the R3 implementation, but has more features. It's still an order of magnitude smaller than most JSON implementations in other languages.

StoneDB is starting to take shape.  I got the preliminary disk storage prototype finished today.  I can't give factual speed benchmarks since for now I've got no time to do extensive testing... but it seems to be able to store at least 500000 nodes a second (@about 14MB/s), which is pretty decent for a prototype using default C disk writing functions and absolutely no regards for disk i/o profiling.  this is even more acceptible considering its running on a lame notebook disk.  (I should have a SSD after the holidays, so I'll be able to compare :-)
with the current architecture, I should be able to read any cell directly from disk so query set can be larger than physical RAM.
If all goes well, I should have persistent read/write access to the DB's file data done by the time I go to bed tonight   .....   yay!
After that... cell linking which will require a different variable length dataset driver.  This new one will allow perpetual appending without any need to copy memory  :-)

I updated Red on Try REBOL with the latest Red fixes and the latest version of my JSON and TNetStrings converters:
Here's a fun example to try:
print json: read ""
print to-JSON probe load-JSON/objects json
  "ask": 637.43,
  "bid": 635.18,
  "last": 636.42,
  "timestamp": "Wed, 25 Dec 2013 03:06:15 -0000",
  "volume_btc": 32298.43,
  "volume_percent": 41.27
make object! [
    ask: %637.43
    bid: %635.18
    last: %636.42
    timestamp: "Wed, 25 Dec 2013 03:06:15 -0000"
    volume_btc: %32298.43
    volume_percent: %41.27
    "ask": "637.43",
    "bid": "635.18",
    "last": "636.42",
    "timestamp": "Wed, 25 Dec 2013 03:06:15 -0000",
    "volume_btc": "32298.43",
    "volume_percent": "41.27"

I've released new version of my Redis protocol on . Now it's R3 module, adds some functions to make life easier (see documentation) and also few small bugfixes have been done.

NickA has agreed to allow his excellent "Learn Rebol" book to be published in "installments" in ODROID Magazine.  Expect the first article to appear in the February 2014 issue which will be available at .
This will help open Rebol up to a new community of enthusiasts.

Not quite ready for announce, but I've been working on a universal data manipulator type thingy which I've tentatively named 'munge. Reason I created it is I find myself using the following idiom quite often:
    CSV file -> REBOL (do [%csv-tools.r %sqlite.r]) -> SQLite -> REBOL -> CSV file
which (for files up to about 100,000 rows) I'd like to replace with:
    CSV file -> REBOL (do %munge.r) -> CSV file
Here's the help text:
    MUNGE data size /header /where condition /part columns /delete /update action /unique /list /only /save file delimiter
     Manipulate tabular values in blocks and delimited files.
     MUNGE is a function value.
     data -- (Type: block file url)
     size -- Size of each record (Type: integer)
     /header -- Ignore first row
         condition -- Expression(s) that can reference columns as A, B, etc (Type: block)
         columns -- Offset position(s) to retrieve (Type: integer block)
     /delete -- Delete matching rows (returns original block)
         action -- Update offset value pairs (returns original block) (Type: block)
     /unique -- Returns sorted unique records
     /list -- Return new-line records
     /only -- Return after matching a single row (ignored by /delete and /update)
     /save -- Write result to a delimited file
         file -- (Type: file)
         delimiter -- (Type: char)
and an example of some of the fun things you can already do with it:
test: copy ["Name" "Age" "Bob" 33 "Joe" 55 "Joe" 55]
munge/header/where/list test 2 [B = 55]
munge/header/unique/part test 2 1 ; this does not alter the block
munge/header/unique test 2 ; this alters the block
write/string %test.csv "Name,Age^/Bob,33^/Joe,55^/Joe,55"
munge/header/where/list %test.csv 2 [B = "55"] ; file values are all string
test: munge %test.csv 2
munge/header/update test 2 [2 [to integer! B]] ; update col 2 with val / block
munge/header/delete/where test 2 [B <> 55]
munge/part/save %test.csv 2 [1 2 2] %test2.csv #"," ; save with an additional column
Beta can be found here:
Appreciate feedback on the name, scope and code.
Hi Ashley, that is kinda what I was doing with the original concept behind my first Tretbase db.  It was to allow someone to do that.  I think the scope is a great idea.  Keep up the great work!

We are between finalists on IGF 2014 with our new game we are working on (using REBOL as an important  building tool)

munge.r updated. Now supports reading from and saving to Excel*.
    munge/save ["a" 1 "b" 2] 2 %test.xml
    munge %test.xlsx
* on windows with R2 and Office installed
Split off block loading into a separate function for those requiring more options when loading from file:
        write %test.csv "Name,Age^/Bob,33^/Joe,55^/Joe,55"
        load-block %test.csv
        load-block/skip %test.csv 1                         ; ignore header row
        load-block/skip/coerce %test.csv 1 [2 integer!]     ; ignore header and coerce 2nd column to integer
        write %test.csv "Name^-Age^/Bob^-33^/Joe^-55^/Joe^-55"
        load-block/delimit %test.csv #"^-"                  ; use tab as a delimiter
        load-block %test.xlsx                               ; read 1st worksheet of an Excel spreadsheet
        load-block/sheet %test.xlsx 2                       ; read 2nd worksheet
and same for Excel options when creating workbooks / sheets:
        add-worksheet/sheet [String Number] ["Name" "Age" "Bob" 33 "Joe" 44] "My Sheet"
        add-worksheet/footer [String Number Number Number] [
            "Name" "A" "B" "Total"
            "Bob" 1 2 "=RC[-1]+RC[-2]"
            "Joe" 3 4 "=RC[-1]+RC[-2]"
        ] [none none "Grand Total" "=SUM(R[-?]C:R[-1]C)"]
        save-workbook %test.xml

Munge released (and documented) at
Notable additions include support for reading from and writing to SQL Server tables (without the need for any temporary files) and the inclusion of a flip refinement to swap columns and rows. Enjoy!

I updated Red on Try REBOL with the latest Red fixes and the latest versions of my extensions:
I upgraded my binary downloads to the current development version of Red and the latest versions of my extensions:
That means they now include Red 0.4.1, and both PARSE and objects in the interpreter. Further, I added my JSON converter.
The */Red/red-core-message interpreter for your platform should be directly usable to write application servers for the Mongrel 2 webserver, using the 0MQ binding and the TNetStrings converter.
The */Red/red-core interpreter for your platform can for example be used to communicate with JSON servers such as Fossil and the Bitcoin daemon, using the cURL binding and the JSON converter.
The MSDOS/Red/red-base.exe interpreter can be used directly on Windows, without downloading any extra dependencies.

The Red development document I started is here
It needs a lot of extra info to be added. Please join the effort to make this a valuable intro in how the internals of Red are working together so more people can join and actually produce some code.
As all these Red docs and projects get started, is there an easy way to "register" or submit it to some centralized location yourself (perhaps with tags)

Today I forked the learnXinYminutes project on Github. I started a LearnRedinYminutes document. You can find it here:
I will leave a couple of days time before I submit a pull request.
Switch to branch red to see the red.html.markdown document

Since it's rather quiet here, I thought I'd post an announcement saying that I have a prototype of the next version of my camera software up and running on my camera hardware! Now, all processing is handled on the camera itself without the need for an external server, including the advanced motion detection. The camera can automatically transfer files for long term storage to one or more fileshare locations on the network. :-)

Oh, and almost all of the camera software is now running on R3 ARM and Red/System!  I've removed most of the software that was written in other languages, like bash, except where absolutely necessary. :-)
In addition, the camera can now serve MJPEG images while simultaneously recording 1920x1080 30fps video. This allows the camera to act like a legacy IP camera so it can be used with software like iSpy, but still have even higher quality recordings to go along with the lower quality ones that legacy IP camera software can capture.
I still have some optimizations to do, but it looks very promising.

Since we had a server crash before x-mas, we had to move all our infrastructure to different services etc. Anyway, that was the cause why some documents of didn't work. The R3-GUI stuff is now fixed. Since our code is now located at beanstalkapp, and we read the docs and images directly from SVN and create the output, please give it a bit of time for long documents (especially layouts take time).
The Saphir stuff is not yet done. That's next. Expect it to be fixed in the next 24 hours.
The Red document has been accepted on !!

Again, as it is a little quiet in the Announce group, I just finished rolling out my new camera software to the first three cameras at one of my clients with an 18 camera installation.
Of course, the updater is written in Rebol 3. :-)
Not only is all the software now running on the camera, but there are still free CPU cycles left on the camera processor.

Munge 1.0.4 released with following changes:
- Added clean-path to load-dsv and worksheet
- Added /where integer! support (i.e. RowID)
- Added lookup, index funcs
- Added /merge
The /merge refinement enables you to easily "join" 2 blocks, as in:
>> staff: ["Joe" 0 "Bob" 1 "Ben" 0]
>> type: [0 "Permanent" 1 "Contractor"]
>> munge/merge staff 2 type 2 [1 4] [2 1]
== ["Joe" "Permanent" "Bob" "Contractor" "Ben" "Permanent"]
Full documentation available at
We have published a complete sourcec-code reference for Saphir. You can browse it here:

The February 2014 issue of ODROID Magazine has an article on Rebol 3 running on Android, starting on Page 28, plus an edited version of the beginning of NickA's excellent LearnRebol tutorial.  Check it out here:

My cameras (Smoothcam) now serve H264 (via SMB) and MJPEG (via HTTP port 8080) simultaneously, and can also simultaneously serve individual JPEG stills through HTTP port 80. It can serve the H264 at one resolution and frame rate and the MJPEG stream and JPEGs at a different resolution and framerate. And I still have up to 35% of the CPU idle.
I just got word from HardKernel that the ODROID Magazine PDF for January 2014 has been downloaded ~8000 times. That's pretty good readership for a new magazine, I'd say. We're expecting a larger number than that for the February issue.  The March issue is due out in three weeks. :-)

We have published our REBOL 3 View builds for Linux and Windows at There is full Linux support for graphics and the clipboard as well as a number of bug fixes in the core interpreter.
This is the result of our collaboration with Saphirion since last summer. Our source code has also been pushed to the Saphirion repository to be tested and included in their own future releases.
Please note that we are preparing REBOL 3 for commercial use later this year, so we have removed all Alpha badging, cleaned up the splash screen and pointed the upgrade and demo functions to the Atronix website. The upgrade function is the best way to check for and download the latest Atronix release.
Please send comments and bug reports to

I am becoming confused, perhaps because I am not following developments closely enough.  How is this:  different from this:  and is there documentation available?  Thank you.

Announces here are now automatically cross-posted to the SO chat group via a RSS feed.  And all web-public groups are now being mirrored on ...

Munge 1.0.5
- Minor speed improvements
- Fixed minor merge bug
- Fixed /part make block! bug
- Removed string! as a data and save option
- Added /order
- Added sqlcmd /key
- Added datestamp func
- Documentation updated

I added the new stream! socket type to the Red 0MQ binding, for 0MQ 4:
This means Red now has a TCP binding.
Thanks to Josh for initiating this.
I upgraded Red on Try REBOL to the latest version, and included HELP, WHAT and SOURCE from Ingo Hohmann:
By request, I also updated R3 on Try REBOL:
I updated my binary downloads for Red:
I added HELP, WHAT and SOURCE from Ingo Hohmann to the interpreter consoles, in */Red/red-*
I upgraded the 0MQ Windows binaries from 3.2.3 to 4.0.3. 0MQ 4 supports raw TCP (stream) sockets and a comprehensive encryption security framework. The Red binding doesn't have explicit support for it yet, but can already use the basic security features.

I upgraded Fossil on our server to 1.28:
It has a new tree view mode for the files page. Some people seem to have a problem with the timeline being the default page for my repositories, so I changed the default page for all my repositories to the files tree, such as the above Red binaries and 0MQ binding repositories, and 18 others.
Since Red now has HELP and WHAT, I changed Try REBOL to execute the "Help" and "Available Words" buttons with Red instead of R3 (by default):

Rebol Desktop: Web Viewer
View the Rebol Desktop on the web!
(first iteration)
We have published a new REBOL3 View build for Linux on ARM v7 (with hardware floating point support). Please see the new link on our download page at
This build was compiled and tested on an ODROID. Thanks, Bo, for supplying the hardware and for other technical assistance.
Our next ARM-based target is the Raspberry Pi.

Not sure if anyone noticed, but it seems that Maxim Shemanarev, the author of AGG we use for a good, has passed in an age of 47, last November. AGG is still a great vector library foundation. Pity it most probably will not see any future advancements .....

Puh... sad to hear.

I've adapted all my bindings to the new Red lexer. Note that they don't work with the current Red 0.4.1 release anymore: you currently need the Red master development branch.

I upgraded Red on Try REBOL to the latest version, with the new Unicode lexer:
I've upgraded my binary Red downloads with the new Unicode lexer:

The March 2014 issue of ODROID Magazine with Rebol and Red articles is hot off the digital presses at

"Lest" is low entropy system for templating, HTML dialect similar to Henrik's HTML dialect, but with direct support for things like Markdown, Bootstrap, different Google services, etc. It's modular design make it easy to add more plugins to support different web technologies. It's still in early phases and some things are not finished yet, but it's already usable as it is.

Rebolek has been updated with conditions. Everything can be replaced with condition now. Few examples:
either why-not? div span "content"
div either [now/time < 12:00] .am .pm "Hello"

An Update on StoneDB.  
I am FINALLY delivering the first prototype for review tomorrow.   Its taken quite some time but its improved a lot, it now even has an API layer, which is the basis for the forthcomming query functionality.   :-)
right now, I'm building it as a DLL, linking to it in R2 and am using memory buffers with parse for i/o with the DB.  almost every part of the system is aimed at maximizing resources and reducing or practically eliminating memory fragmentation.   Not all of the design is implemented, but what is done is extremely robust with a full stack error reporting mechanism, optional db function tracing log file (for very detailed support debugging, without debugger mode compilation).
Although only about 10% of the Server is implemented (in terms of having a robust multi-threaded multi-client "server") the storage and  low-level api are already at v2.  its all been re-implemented at least twice, sometimes even reviewed again.
I still can't say when I'll be opening up the source publicly.  right now, I've got no time to handle any type of request or discussions on it, so there really is no point in wasting precious time on this.
this week and the next I will be adding the set theory query engine called AQUA .  AQUA is an acronym for Accumulate & Qualify.  basically a system which scrubs the relationships and data of any item, qualified by various properties where each phase can either accumulate more data or reduce it by qualifying it against many generic properties.  
by supplying a simple chain of operations, you can traverse any dataset (in fact, several superimposed/remodeled versions of datasets) and try to find arbitrary and generic patterns within.
for people who are interested, I am building StoneDB with influence from a few mathematical models, mainly:
set theory:
order theory:
domain theory:
if you read through these you'll see that from an information system point of view they are closely related.   I am not trying to support and describe my system using all of the (relatively strict) theory and some of the rather complex math lingo involved, but I am definitely reading this stuff over and over and it is influencing the design and philosophy of the entire system.  for example, datasets are called domains, queries are perfomed using set operations,  there will be possibility for some domains to be functional, so given an node ID, instead of storing a value, it calculates it on the fly, and you'll be able to build directed graphs of information even when using these computed datasets!
in the end, most queries might look something like:
[ (product:name, product:id, company:name) related to american:company related to asian:market , except  product related to pharmaceutical:industry , only sales:year > 2010 ]
and the fun part of this is that your datasets need not be symmetric, but any sufficiently defined related sets of data will return a result.  for example, any sales without a related date are automatically rejected from the above query.   we could still get other data from those sales, if criteria is not related to dates.
for example:
[(company:name, sales:invoice_id, sales:person) from sales without year related to american:company ]  (note this qualifies client or merchant in america :-)
all of this without knowing anything of the DB or how its supposed to be setup.  If data is there, it browses it and extract datasets without requiring you to "search" thru gigabytes of information... it uses item associations directly for extremely fast navigation/extraction.
I've updated my binary downloads with the latest Red changes:
In particular, I added FreeBSD binaries. It's likely that some of the names and versions of shared libraries used by my bindings need to be adapted for FreeBSD, so I'm interested in reports of success or failure, and in updates to the names or versions of the library files on FreeBSD.
I tried to replace my simple CALL implementation by Bruno Anselme's new one, but his includes an incomplete copy of my C library binding, so they conflict and I can't use it in its current form.

little image which shows some of the inner data sets being used for storage... as you can see, its not  simple:
this one is a prototype layout of the query schematic, from a purely processing perspective

CSSR v0.1.6: Includes extended support for Border Radius, PT units, Text Indent. Thanks to @Rebolek for contributions/requests.

FYI, I have upgraded my server to a safe openssl version, so CureCode and other web apps I am operating are protected for the infamous heartbleed vulnerability.
Concerning Heartbleed:
If you are running commercial apps and have used OpenSSL for the last two years, you should force people to use new SSL certificates if the site contains sensitive information, even if you have patched your server.   the keys it contains may have already been breached and no one would know.


April 2014 issue of ODROID Magazine is now available for download (Rebol article starts on p22).

Version 0 of Rebol3 interpreter for SL4A is out courtesy of Giulio Lunati.  Once you install it from the apk, you start up SL4a and there will be a demo.reb script.  If you don't have sl4a, you'll need to install it first.

I have the StackOverflow chat client now able to grab your StackExchange cookies if you provide the credentials.  Windows only as linux/https not working it seems.  See

Excelent !  but  the page was not found on this server.
Thanks to Barry Walsh (draegtun), Github now should have significantly improved detection of Rebol code when using the .r suffix. For example, red/red is now more correctly identified to consist of ~99% Rebol code.
Further, the .reb suffix is now also supported to unambiguously identify (and thus: syntax highlight) Rebol code. For example:
Finally, some changes I pushed to Pygments a while ago seem to now be live on Github as well. That means that most Rebol files were syntax highlighting was previously somewhat broken should now be more properly highlighted. One case I can remember which was previously broken is prot-http.r from the R3 sources:


Andrea G has released his rebol3 mysql driver for testing.
If anybody has account on Bitbucket, please vote for this issue so it has some priority to be merged into next version:

Shixin Zeng has reminded us of his port of Nenad's MySQL driver to Rebol 3 :
Just as Nenad's original, this is a pure-Rebol implementation of the MySQL protocol.
Together with Andrea G's mysql binding written as a R3 extension (mentioned by Graham above), there are now have at least two MySQL drivers publically available for Rebol 3.
The send-sql function of the new R3 MySQL driver supports both the classic blocking and new non-blocking by using the /async refinement.
For example: send-sql/async db sql result.
I will be providing a link for this driver from the Atronix download page as well.
The /async refinement is very useful for GUIs because your query can return a large result set without freezing the screen.

You can be the first to try this:

Sublime's Red language package reviewed:
Any improvement requests are welcome. I will add REBOL package soon.

So REBOL is finally there as well:

Nothing specifically Rebol or Red related in this month's issue of ODROID Magazine, but it is still an interesting read as it may give some of the Rebol/Red community ideas for improving on something presented using a different language.
Next month, however, I'm publishing an article on the ODROID Show serial/USB-controlled LCD screen - I wrote a dialect for controlling it with Rebol 3.  If anyone wants the dialect before the issue comes out, PM me here.

Just thought I'd share that I've done a few releases of Glass and many of the slim libs in the last weeks. many goodie in there.

This year we did a BIL in SF, Canada, Tunisia (it was AMAZING), and now............................... Paris!

I submitted the pull request that includes serial code for Win32 and POSIX.  This is originally based on Carl's posix serial code (from ReCode) and I have extended it to Windows.   There is still a little cleanup to do, but it should work if you need to use it!

For those who are serious about it, I have a prototype of  STONE DB which I have been given the green light to share to a few people.
This release is not open source yet, its a business thing, but I have been confirmed by the company partners that later this year we will be opening up the source.  on my one year old lenovo ideapad y580 (core i7)   I am averaging 250'000 item insertion and 250'000 links per second.
basically, the db is able to run a speeds which flood the iteration rate of REBOL.
PM me for a download link.

StoneDB now has a full DB index search.  so you can search for any value in the db accross ALL non-infinite datasets.
fun fact is that the index is implemented using the db itself, its just another dataset which I am using as I would any other. (linking things to the index).  so it doesn't require ANY  extra code in the db back-end.

The June 2014 issue of ODROID Magazine is available for download!  On page 6 is an article entitled "Programming Your ODROID-Show  - Using the Rebol programming language to improve the hardware interface" by yours truly.  It outlines a dialect I wrote to handle displaying information on the discrete display device called the ODROID-Show.
The ODROID-Show is a 2.2 inch display with 320x240 resolution and 64K colors controlled via USB through an Arduino microcontroller available through Hardkernel for $25.  As the ODROID-Show works on any computer with a USB port, the Rebol dialect can also be used on any computer to display to it.

Lest - HTML templating system - has been updated with structural logic (IF, EITHER, SWITCH, FOR). It's probably not Turing complete yet, but I guess it would be soon. Other improvements are for example /save refinenment for easier usage (write %file.html lest read %file.lest can be now replace with lest/save %file.lest) and numerous bugfixes.
great news maxim -> PM

I modified my Red bindings and codecs to work with the current Red development version, meaning an upgrade to Red 0.4.2 and beyond.
I'm experiencing regressions in the compiler and interpreter, though, so be careful

I put Try REBOL behind a new, more reliable proxy server:
This should improve its availability.
I've moved our Red and REBOL repositories to a new, more performant server.
I don't know if Fossil could be any faster than it already was on our server of fifteen years old, but at least preparing a package of my binary Red downloads will take less time now:

Fossil now has caching in its web server. I enabled it on the repository for the binary Red downloads, so a full package download will now usually start immediately instead of after two minutes:

Try REBOL now has a new, shorter URL:
The old location also still works.

I wrote a dialect for GPIO, specifically for the ODROID I/O Shield, that I am outlining in the August issue of ODROID Magazine.  It handles configuring pins as input, output or PWM (pulse-width modulated).  It could be easily modified to work with other GPIO systems, like the Raspberry Pi or other systems.  Here is an example of the dialect:
gpio [
    init out [p00 p07 p12] on       ;Initializes pins p00, p07 and p12 as outputs
    wait .1     ;Waits .1 second
    off     ;Turns off pins p00, p07 and p12
    init in p16     ;Initializes pin p16 as input
    init pwm 1 .1 p01       ;Initializes pin p01 as PWM with a 1 second period and a .1 second pulse
    p12 on      ;Turns pin p12 back on
    wait .5     ;Sleeps for .5 seconds
    p07 on      ;Turns pin p07 back on
    wait 1      ;Sleeps for 1 second
    off     ;Turns pin p07 back off
    deinit p01      ;Turns off pwm and deinitializes pin p01
    init gpio in p01        ;Reinitializes pin p01 as a GPIO input
    read speed p01      ;Reads the value of pin p01 into system/gpio/vars/speed
    reset       ;Deinitializes all GPIO and PWM pins
Other than loading the dialect, nothing else has to be done first.  The dialect takes care of making sure the GPIO system is active, and activates it if it isn't already.  The dialect was designed to decrease wordiness while being very easy to understand and follow.  One way it does this is by keeping track of the context and applying any ambiguous commands to the most recent subject.

I have pushed my changes to R3 with external C function access to github: on branch ffi

I published a few updates to my minimalist "shttpd" HTTP server implementation for Rebol 3. Most notably, a workaround was added to properly send reponses >32'000 bytes (thanks to Bo and Boleslav for prodding me about this).
The full list of changes:
    Add a few select MIME types
    Switch default MIME type to application/octet-stream
    Use last "."-separated path component as extension
    Trim indentation from the error template
    Send content-length header
    Manually send body data in 32'000 byte chunks
shttpd is available at:


I upgraded Red on Try REBOL to 0.4.3 plus the latest enhancements:
(The version number in the title will update after the next maintenance restart of Cheyenne.)
I upgraded my binary test downloads to Red 0.4.3 plus the latest enhancements:
I added ARM-HF builds for Linux in the "RPi" target. folder.
Because Linux distributions with the old 0MQ 2 versions, particularly the previous Ubuntu Long Term Support, are now being phased out, I upgraded the builds for other systems than Windows to 0MQ 3/4. (0MQ 4 was already included for Windows.)

The August 2014 issue of ODROID Magazine is available at  In this issue, I have an article on how I go about writing dialects, using the example of a GPIO dialect (General Purpose Input/Output) I created for the ODROID IO Shield using Rebol 3.  It could be easily modified to work with other GPIO applications, like the Raspberry Pi.  In retrospect, I would change some of the dialect decisions I made and some of the implementation.  The entire dialect and article was designed and written in one day, so I didn't have a whole lot of testing before publication.  That's my excuse, and I'm sticking with it. :-)

The September 2014 issue of ODROID Magazine is available at  I didn't have time to submit an article for this issue.  (However, I am wondering if anyone noticed that the "Meet an ODROIDian" article last month was about me as nobody mentioned it.)  Here's the table of contents for this month's edition:
6 Playing Sega Games in HD 1080p: A Blast from the Past
7 Linux Gaming: Playing Native Games on the ODROID - Part 1
9 Building an All-In-One DIY Laptop: Take Your U3 Anywhere
10 Bash Basics: Shebangs and Shebangs
12 Installing Freedomotic: A Building Automation Framework
13 Installing WICD: A Network Connection Manager
14 3Dponics: An Open Source ODROID-Powered Gardening System
18 Wall-E: Building Your Own Robot At Home - Part 1
23 Weather Forecast on the Desktop: What Chance Is There to Catch Fish Next Weekend?
25 Digging (Into) the ODROID-SHOW: Part 2 - Making Connections
28 Headless 10-Node ODROID-U3 Cluster: The Ultimate Affordable Home Supercomputer
30 Android Development: Inside the Android APK
33 Meet an ODROIDian: Tobias Schaaf, Linux Ninja and ODROID Enthusiast

Great, Bo. I'll check out last months for that article....
Thought that some of you might want to throw in your $0.02.

The AltME feed is reportedly back up again on SO Chat.

Shixin Zeng announced the availability of an (open source) encapper for R3 on Stack Overflow chat. Here's the original text from Shixin:
"Anybody interested in bundling the REBOL script into an executable? I have worked out something that can build such an executable for both Linux and Windows. The change is at:"
From the referenced commit message:
"Add an encapper for Windows and Linux
The way it works is:
1. embedded the script into the executable file
2. the interpreter checks for the existence of the embedded script
3. if it finds it, runs it and ignores "--do" and script passed in from
the command line
4. if not, act as a regular interpreter
The encapper on linux is just a wrapper around objcopy, wihch adds a
section with the script to the executable
On Windows, the script is added as a resource, and some windows APIs are
used to retrieve the information."
I'm also happy to report, that some initial testing shows that Atronix's R3 encapper works on Linux quite nicely.
I managed to build a fully statically-linked 64-bit R3/Core binary with a "Hello, World!" script encapped that comes out at ~800K in size.
Being fully statically-linked (using the musl C library) means that it's completely standalone: no libc, libm, libdl, etc depencies (those who have encountered libstdc++ dependency troubles with R2 might appreciate that). The only dependency left is a Linux kernel (with a compatible interface). So such binaries should be able to run unaltered for many, many years to come.
On the R3 side, this binary includes a 64-bit core, HTTPS support, a full CALL with I/O redirection, the FFI (/Library), etc. Pity that the encapped "Hello, World!" script doesn't make any use of all that :)
Prebuilt R3 capable of encapping is available at as development releases. Together with the encap.r from, it can be used to encap the REBOL script into the interpreter and run as a standalone program

Not specifically Rebol-related, but we hope to promote Rebol through our new channel, . is now the official US distributor for Hardkernel's entire ODROID product line.  ODROIDs are some of the most powerful single-board computers available in the world, running primarily Linux and Android.  Check out the site and let us know what you think!

I'm happy to announce that now also provides a FreeBSD x86 build from mainline R3:
In my testing of this build so far, it has been as stable as any of the "big 3" (Linux, OSX, Windows) mainline builds. So: have fun with R3 on FreeBSD!

From Carl:
The server provider moved the server a couple days ago.
I've just updated the NS records to point to the new IP, but it may take a few hours to propagate. Just wanted to let you know.

Here's a real-world working example of my currently very limited JavaScript Interface Dialect (JSID):
Feedback appreciated!
Feedback:  WOOOO YEAH!   We need a simple way to send, receive, and visually manipulate native Rebol data series (a list and *Grid* widgets, especially).  Tab panels, accordians, and other page layout options would make this more than just cool.  I'm ridiculously excited about the potential this little thing :)  
Where can we get it?.  I'll happily donate and write examples.

Munge 1.0.6
- SQL Server 2012 fix (blank lines embedded in output)
- Refactored load-dsv based on csv-tools.r
- Added /max and /min
- Added /having
- Fixed /save to handle empty? buffer
- load-dsv now handles xls variants (e.g. xlsx, xlsm, xml, ods)
- Fixed bug with part/where/unique
- Added /compact
- Added console null print protection prior to all calls
- Added read-pdf (requires pdf2text)
- Added read-xls (requires Excel)
Full documentation at

I have updated the development version R3 at, all of them should now have a CALL with I/O redirection and be able to do async CALL. The implementation is still experimental, please give it a try and report any bugs as you see. The only difference between Linux/Windows version is that CALL in windows doesn't accept a block! or file! for its argument, it only accepts a string as the command.

Ladislav repository updated: adjustments for SCRIPT? bug in R2
I just did another update to the developement version of R3 at, mainly with some changes to the CALL. Now CALL is documented: Please report any issue you see

Not specifically Rebol-related, but interesting to Rebollers, I hope.
Hardkernel announced their new sub-$40 quad-core 1.5GHz ARM single board computer with dual-core GPU, 1GB DDR3, Gigabit Ethernet, IR Receiver, 40-pin GPIO and more.
You can read more about it at

I've added a signal scheme to R3 on Linux. dev binaries on Atronix website have been updated for this. It's documented at:

Munge 1.0.7
    Compatibility patches
        to-error        does not work in R3
        remove-each     R3 returns integer
        select          R2 /skip returns block
        unique          /skip broken
    Minor changes to work with R3
        read (R3 returns a binary)
        delete/any (not supported in R3)
        find/any (not working in R3)
        read/lines (not working in R3)
        call/show (not required or supported in R3)
        call/shell (required in R3 for *.vbs)
    Removed /unique
    Added column name support
    Added /headings
    Added /save none target to return lines
    Merged /having into /group
    worksheet changes
        Removed columns argument
        Removed /widths and /footer refinements
        Added spec argument
        Added support for date and auto cell types

If you like to be bleeding edge, you can now access our web sites, including Try REBOL and our Red and REBOL sites and Fossil repositories, through the HTTP 2 protocol, the successor to HTTP 1.1 and Google's SPDY protocol.
You may have to enable HTTP 2 in your browser or other client.


I updated my Red downloads to Red 0.5.0 and the latest versions of my extensions:
I updated Red on Try REBOL to version 0.5.0:


Initial release of RenCpp and Ren Garden
Posting this on behalf of Fork who hasn't been around here for a while and says he's lost his credentials.
"For those who weren't sure exactly what a C++ binding for Rebol or Red would be 'for', I present here an overview... with a demo of Ren Garden... a GUI console with several novel features:
Ren Garden has been built for Linux, Mac, and Windows, and variously for 32-bit and 64-bit architectures. Though it's linked up with Rebol for now, it was designed to be linked against Red also. The conditional build is set up, so it's just work that someone needs to go in and do.
Where these projects can (or will) go depends on community support and interest. So far response has been very encouraging...but to push this from demo to 'product' will require more hands and heads than just mine!"
Here are the features Ren Garden brings over that built-in Rebol REPL:
Multi-Line Editing

Input History
- This allows you to clear clutter in the REPL by undoing input and output.
Variable/Expression Watches
- A great aid for debugging, watches show the current value of words or expressions. Anything being watched can be duplicated, and frozen to help in comparing values over time. Watches can be renamed to give them memorable names.
Multiple Buffers
- Any number of buffers can be created and accessed using a tabbed interface. The tabs are nameable to make it easy to distinguish them.
Separate Contexts Across Tabs
- Right now, each tab is given its own context (essentially a new user context) when it's created so there don't need to be multiple Rebol/Red runtimes running at once to achieve a certain degree of isolation. Though the creation of a new context or complete runtime per tab is not currently configurable, it could be made so.
Shell Integration
- This feature makes it easy to interact with or automate the OS shell being used from a Rebol/Red session.
- Basic auto-completion is available.
Beginnings of Buffer "API"
- There is a demonstration of buffer cursor and selection control which could be used to provide smart snippets or to enable interactive tutorials to be created.  
Ren Garden also includes some of the Rebol language experiments that Hostilefork has been talking about to allow people to try them out and give feedback on.
The projects can currently be found at the following link. Note that Ren Garden will be pulled out of the RenCpp source tree not too far down the road.
You can log issues for both bugs and feature requests for Ren Garden at the eventual home it will have.

I did watch the video.  For those not familiar with C, I am wondering if someone could clarify the terminology, specifically, "a C++ binding for Rebol or Red."  Does that mean a way for a C program to call a REBOL program?  Or a REBOL program to call a C program?  Or something else?  Thank you.

From TGD on SO chat - R3 based surveilance camera based upon R3 and Raspberry Pi -

Munge 1.0.8
    Replaced to-error with cause-error
    Replaced func with funct
    Added execute function
    Added MS Access support to execute
    Added SQLite support to execute
    Added /only (was /unique in 1.06)
    Added spec none! support
    Added /save none! support
    Fixed /merge bug
    Fixed sqlcmd /headings/key bug
    Added cols? function
    Added rows? function
    Added sheets? function
    Fixed to work with R3 Alpha (
    Added load-dsv /blocks
    Fixed delete/where (missing implied all)
    Added unzip function
This release was tested against:   R2 R3 Alpha  R3 64-bit
R3 Alpha does not support call/output so the execute (and sqlcmd) functions will not work with it.
Documentation available here:

New version of The World Programming Language is out.
Check group #World here in REBOL4 @ AltME.


I have written a tool to generate rebol 3 binding from c header files using libclang: It includes a partial replicate of gtk3-demo for testing and demostration purpose.
To run tools in c2r3, you will need the latest development build from, because of new struct syntax.



If you are interested in Lest and want to try it without downloading, you can check it online at (work in progress).


I have upgraded Red on Try REBOL to version 0.5.2. (Red 0.5.1 was skipped because it was broken for Try REBOL.)


Munge 1.0.9
    Added call compatibility function for R3 Alpha
    Added /all support to read-xls
    Added /part to load-dsv
    Re-factored VBS calls
    Added fields? function
    Added associative array support (index, lookup, assign)
    Added unique undex support (index/direct, retrieve)
Updated documentation available here:


I have upgraded Red on Try REBOL to the current development version, meaning 0.5.3 plus important fixes.

No announcements recently, so here:
I have a number of employees/interns that want to learn Rebol 3, so I'm writing a step-by-step tutorial for them. I only have the home and intro pages done so far. Let me know what you think:
I know that the Try-It Editor allows infinite loops and other things that can crash R3. However, I have disabled all the damaging functions like 'call, 'write, etc. so at least there's that. I'll soon be adding a timer to kill the Try-It process if it runs longer than a few seconds.

I've added another section to my Rebol 3 tutorial at called "R3 Nesting Functions". I believe that this is the area that confuses most users, so I hope that this section is understandable.
Please give me any feedback for improving it!

Also added another chapter to the Rebol 3 tutorial at called "R3 Objects".
Again, all feedback appreciated!

Added three more chapters to the Rebol 3 tutorial at bringing the total to 13 chapters. Here's the current index:
R3 Home
R3 Introduction
R3 Words
R3 Help
R3 Function Help
R3 Blocks
R3 More Blocks
R3 Text Strings
R3 Nesting Functions
R3 Objects
R3 Intro to Parse
R3 Parse and Blocks
R3 Advanced Parse
Thanks to Brett Handley and John Kenyon for their permission to incorporate their excellent PARSE tutorial.
What topics do you think need to be covered next?

Not specifically Rebol/Red related, but I wanted to let you all know that is now an official distributor for Banana Pi, Banana Pro, and Raspberry Pi 2, in addition to exclusive N. American distributor for Hardkernel/ODROID. We also carry a full line of accessories and peripherals. I hope you give us a chance if you need any of the systems that we now carry!

I didn't have time to announce it, but I upgraded Red on Try REBOL to version 0.5.4 just after the release.
Also, Try REBOL is now available encrypted over HTTPS:

Munge 1.1.0
    Refactored main munge function
        removed /flip refinement
        removed %.xml, %.xlsx and none! as valid /save targets
        added /group 'avg
        removed implied Excel column names
        /update can reference column names without /where (e.g. munge/update blk 2 ['c1 [c2 * 2]])
        split /merge off into a separate function
        split rowid referencing off into separate functions (pick-cell, poke-cell, copy-row, remove-row)
        big speed improvements (about 40%-60% faster for most /where and/or /part operations)
    Added a lot of support functions
    No longer redefine 'select (new select-skip function added)
    No longer redefine 'unique (new unique-skip function added)
    No longer redefine 'call for R3 Alpha (use R2 or Atronix R3 instead)
Updated documentation available here:


A new single board computer to run Rebol3 or Red on - ODROID-XU4:
Did I do OK on the intro video?

From BrianD (HostileFork):
Ren/C is an interim fork of the open sourced Rebol codebase. It has many goals:
    To create a library form of the interpreter, which is focused on providing the full spectrum of Rebol's internals to other projects. This is to open up possibilities for linking to new IDEs, debuggers, and consoles (such as Ren Garden). It will also be the basis for language bindings like Ren/C++.
    To un-fork the divergence between the community build of Rebol based on the 12-Dec-2012 open-sourced code and the codebase built on pre-open-source code at Saphirion, later maintained by Atronix Engineering.
    To accelerate the process by which consensus features and fixes are integrated into the language. Though debates continue over features in Rebol and Red Chat, many changes are ready and agreed upon--some submitted as patches. Yet they haven't had a focal location where they can be launched and people get new builds.
    To integrate the test suite into the build, and make the bar obvious that contributions must meet by keeping it at zero errors. The Valgrind and Address Sanitizer tools are being integrated into the build and test process, with modifications to the code to prevent masking bugs.
    To provide an option for stable open-source bootstrapping to be used by the Red Language, which is currently bootstrapped from closed-source Rebol2. (Red's roadmap goal is to move directly to a self-hosting state from the Rebol2 codebase. This may be a poorer option than moving to an improved Rebol3 as an interim step.)
The Atronix/Saphirion build diverged from Rebol at a point in time prior to its release as an Apache-licensed open-source project. Their build had a graphical user interface and several other additional features, but was only available for Windows and Linux.
Ren/C split out a "Core" build from the Atronix/Saphirion branch, which runs as a console process and does not require GUI support. It was then audited to build under strict ANSI C89, C99, and C11. It also added the option to build as strict ISO C++98, C++11, and C++14. The goal is to take advantage of stronger type-checking and metaprogramming, while still retaining the ability to do a complete build on very old compilers when __cplusplus is not defined.
Consequently, Ren/C brings all the non-GUI features added by Atronix and Saphirion to core builds for other systems (Mac 32-bit and 64-bit, HaikuOS, Raspberry Pi, etc.) It also allows users who are not interested in the GUI to use lighter builds on Windows and Linux.
Besides building under these ranges of languages, Ren/C can do so under both GCC and Clang with zero warnings (with as strict warnings as reasonable). Significant changes are needed to do this, which are being given heavy thought on how to make things simpler, clearer, and better-checked. Across the board the code is more readable than what came in, with notable simplifications and improved checks.
(Note: Ultimately the goal is that Ren/C will not be something Rebol end-users will be aware of, but a library facing those building software that links to the evaluator. Hence systems like Rebol and Ren Garden would be branded as interfaces and consoles using the core interpreter, and Ren/C would contain no 'main.c'. Getting to that point will take a while, and in the meantime Ren/C produces a traditional Rebol executable as part of its build process.)
New features available in Ren/C's console builds vs. the open-sourced Rebol codebase of 12-Dec-2012 are:
    HTTPS support as a protocol written in Rebol code, empowered by underlying cryptography libraries incorporated the C code.
    An implementation of LIBRARY!, which allows Rebol to load a DLL or shared library and then directly call functions in it. This is accomplished with the "FFI" (Foreign Function Interface) and new data types for representing C-level constructs like ROUTINE! and STRUCT!.
    Note: Building Ren/C with FFI currently requires additional steps or package, installation, as the FFI library has not been extracted into code following Rebol's build process.
    UDP Network Scheme
    Ability to make use of native ("__builtin") 64-bit math, if it is available
(Additionally there is serial port support on Linux and Windows.)
As of 16-Jul-2015, Ren/C has been verified as reaching the goal of building across the standards-compliant spectrum of C or C++ without warnings on these desktop platforms:
    Linux 32-bit, libcc 2.11 (OS_ID=0.3.04)
    Linux 64-bit (OS_ID=0.4.40)
    Windows 32-bit (OS_ID=0.3.01)
    Windows 64-bit (OS_ID=0.3.02)
    OS/X 32-bit (OS_ID=0.2.05)
    OS/X 64-bit (OS_ID=0.2.40)
It has additionally been built for:
    ARM Linux on Raspberry Pi (OS_ID=0.4.21)
    OS/X PowerPC (OS_ID=0.2.04)
    HaikuOS (OS_ID=0.5.75)
    SyllableOS Desktop(OS_ID=0.14.01)

Ladislav - documentation update to describe how to revert the "Choose default program..." action effect

New version of The World Programming Language is out. This is a major alpha release with lots of new stuff.
Check group #World here in REBOL4 @ AltME.

(After much hair pulling and gnashing of teeth...) R3-View is now available for Raspberry Pi and Pi 2 at
Feel free to move the binary over to or other locations.
Thanks to Shixin Zeng for great support in getting it to build!

I created the game of Xiangqi in Red 0.5.4
Thanks to all that made this possible.

I made a video demonstrating how to use the jsLinb library and Sigma Visual Builder to quickly create UIs which connect with Rebol CGI server apps:
The tools above are an older precursor to CrossUI, but I like them because they're free and open source, really light weight, and not only the created apps, but also the entire development system run virtually anywhere - even IE6, Firefox 1.5, and in just about any mobile browser.  It's really simple to learn to use, and extremely productive, at least for the needs I've encountered.  You can package the GUIs for mobile platforms using Phonegap build (and desktop with Node Webkit - although I don't see as likely a need for that).  You can run the visual builder from any Apache install on any OS - I've done it locally on Windows, on Android with KSWeb server, on shared hosting Lunarpages accounts (which I've been able to use even on the old Android phone).  It's nice to be able to quickly and easily create full featured front ends on any device, which run on any device, and which connect easily with Rebol server scripts that run just about anywhere too, including shared hosting.  The whole system is really simple to use, and exhaustively documented.
The video is 1.3 hours long - very sorry for the length - I did it to prepare for making a written tutorial which will be more succinct.  All the files used in the video are here:
(Front end JS and Rebol CGI scripts, Rebol interpreter, jsLinb/Sigma builder distribution, Windows Uniserver distribution, etc., ~12Mb)

Here is an example of embedding C code in rebol 3 directly using FFI and libtcc:
That's a fun thing to see.  Some decades ago, when Burroughs still was a computer company, one could, in a COBOL source program for their Medium Systems line, type the declarative ENTER SYMBOLIC and then start coding assembler language.  Second-generation code embedded in a third-generation program.  Now with the C-in-REBOL example, we see third-generation code embedded in a somewhat-fourth-generation program.

Created and uploaded the video of how to compile the game of Xiangqi programmed in Red.

New written tutorial about using jsLinb/Sigma IDE with Rebol, to create Mobile/Web apps:

Renewed R3 Parse Project effort, "PARSE PROJECT II", looking for volunteers and feedback, trello available on

Munge 2.0.0
    Rewrote to be R3 specific
    R3 optimisations (20% faster than R2)
    Removed lots of R2 compatibility code
    Excel functions refactored to use Powershell/OLEDB (so MS Office is no longer required)
    load-excel function added
Updated documentation available here:
AltJSON v0.3.5 for Rebol 3 (including current Ren/C version)
- Supports easier creation of JSON objects with set-word/value pairs in blocks, get-word/path lookup.
- Uses MAP! to correspond with incoming JSON objects.
- /FLAT refinement uses blocks for incoming JSON objects to allow for case-sensitive keys, parsing and null values.

AltJSON v0.3.6 for Rebol 2
- Introduces some of the changes from the Rebol 3 releases:
- Switch to RFC 3339 formatting of dates,
- Resolves Get-Words and Get-Paths,
- Recognises Set-Word/Value pairs as JSON Objects,
- Limits the format of JSON object keys, uses ^ escaping on words that almost conform (use /Flat for more flexibility)
Due to the nature of some of the changes, this version may not be wholly compatible with previous versions--let me know if you experience any major problems.
Auto-resizing library for Rebol2 VID:

Announce Pages
Individual posts to this group will now have their own page. This page will be referenced to by the feed for this group ( Colours will be respected, links detected and full names included. Each page will link to the reflector page for this group.
Unless someone posts immediately before me, the link to this message will be:

Bo and Hardkernel (ODROID) are going to be at ARM TechCon 2015 in Santa Clara, California on November 11-12. We'll have a 10x20 foot booth just inside the main entrance.
Register here for a free Expo Hall pass so you can visit with us in person and see demos at our booth. We'll have some Rebol-powered demos running on ODROID products.

Another web site of documentation related to REBOL 2 has come into being at  This is some learning aids for a very specific and small audience, and has been put on the internet in case it is helpful to anyone else.

From renewed frontpage: is back online (checked it too) (Thank you Carl!)

We (i.e. Atronix Engineering) have published a Rebol 3 function reference on our wiki. It is specific to our build and automatically generated using the interpreter and a meta data file for things like examples, cross reference and comments. Hopefully, this level of automation will mean that it stays updated. All of the examples have been tested.
The wiki is currently read-only to the public. Feedback is welcome.
The documentation link is also on our downloads page. It is
ddharing, thanks so much. Would it be an idea to bundle the tools so people can make a local reference? Again, thanks a lot!

For any of you who would like to get your feet wet with a pretty powerful ODROID for small change, check out
Quad-core, 2GB RAM and more for $44.95 plus receive a $15 store credit coupon code with purchase.
Runs R2/Core, R3/Core and R3/View. :-)

Rebol3-controlled walking robot getting close to being ready for sale at Watch the demo video here:
Goldie, the robot, does the entire presentation herself in one take.

I'm working on Javascript Syntax Highligter for Rebol like languages... currently in pull request with detection conflict with something called *Inform 7*... anyway.. if anybody is interested for improving, here it is:
Here is demo of the current state:
changing styles in your demo doesn't change the highlighting ... using FF

Updated the Rebol/Red language Highlight.js demo so it works in FF now (with actual improvements as well)

Rebol3-controlled walking robot is now available at .
Thats so cool, Bo
I love that stuff

Munge 2.1
    updated LIKE, OLEDB?, SORT-ALL (added /reverse)
    renamed EXCEL-SHEETS? to SHEETS?
    removed LOOKUP
    replaced EXECUTE with dedicated SQLCMD and SQLITE functions
    replaced WORKSHEET with WRITE-EXCEL (about 10x faster)
    removed all dependencies on VBS and temporary file creation
    fixed minor Excel column handling limitations
    excel functions now work with accdb
    use of deline/lines to speed up line parsing
Updated documentation available here:


From giuliolunati in the SO chat:  Giulio is working on an Emscripten build of Ren/C - you can see it in action here:
Nick, I know you've been waiting for someone to take this on for quite some time. Hopefully, this will be generally useful in the not too distant future.

Arnold, all the forks of rebol/rebol are the same repository, including ren/c  they cannot delete rebol/rebol.
Github won't remove it anyways.  why would they ?

Another REBOL-related document has come into existence on the internet.  This is documentation, for a very specific audience, about how one might use REBOL for working with data outside REBOL's "natural habitat," in the land of fixed-format data files.  It tries to explain which REBOL functions are most useful in that area, and to provide some helpful code modules. The document is located at:

New version of The World Programming Language is out. This is a major alpha release with lots of new stuff incl. non-blocking networking by implementing libevent..
Check group #World here in REBOL4 @ AltME.

Enjoy! ;-)

    OLEDB error handling improved
    rewrote append-column and added /dup refinement
    added merge/default refinement
    load-dsv parse logic fix to handle utf8
    Replaced to-sql-date with to-rebol-date and to-string-date
    rows? and first-line faster
    load-dsv/delimit renamed /with
    load-dsv/split now a separate split-dsv func
    added unarchive
    can update via conditon (e.g. [all [find c2 "@" c2: first parse c2 "@"]])
    munge now accepts vector!
    alphanums?, alphas? and digits? now also accept binary!
    digits? also checks for not empty
    replaced like with like and glob
    added write-excel/filter
    added spec? function
    sqlcmd now does a SET ANSI_WARNINGS OFF
    added /string to load-excel
    added /hdr to load-excel
    added remove-column
    added to-string-time
    added binary-file?
    added spec?/as-is
    fixed obscure group bug with to-block
    handle presence of u160
    re-added formula support to write-excel, e.g.
        write-excel/filter %test.xlsx [
            "Test" ["Response" "Count" "Yes" 10 "No" 5 "" "=SUM(B2:B3)"] [20 10]
Updated documentation available here:

Enjoy reactive programming! ;-)

Red's github repo just passed 1000 stars bar, not a big deal compared to mainstream languages, but still significant enough to mention. This is the first time an open source project from Rebol's ecosystem reaches that level. This means that we are on the right track, and Red is gaining more momemtum with each new release. Hope this will motivate more people to help us continue pushing it higher and higher. ;-)
Congratulations Doc!
Approaching 300 members on the Gitter channel now too.
1000 stars is great! Hopefully half of them are ladies! 8-)


.............. just remmeber "killer app"
(and try to forget that I can't spell)


Under the 17LOC Spreadsheet section, there is this:
You can copy/paste the above code into the Red console for Windows, using the latest toolchain build (950 KB), or, better, using this prebuilt console version (247 KB).
The toolchain build gives a 404, and the prebuilt console won't launch on my Windows, for some reason. It just exits immediately after launching.
Oops - wrong group.

Happy to announce we are back up and running and making 3rd party apps again (more are coming)
This one is originally written in REBOL by Maxim, and Celeste has picked it up and is making tweaks and improving it now.
We plan to move it to Mac next.   I plan to log what this takes.
Later, I hope to move this over to RED, and then compare again.
(yeah yeah, I'm old, and like programming names in all caps)

I've moved my backup of DocBase from an unrelated repo in my personal account to a dedicated repo within the Revault group. I've been tidying it on an as-I-notice-things basis as I use it for reference. Let me know if you have any trouble using it.

For those who don't know, Pieter Hintjens, of ZeroMQ and Xitami fame, passed away last Tuesday.

Sad, I read his "protocol to die" a few weeks ago.

Grand opening today:
A new community driven BLOG about all and everything about the Red Programming Language.

Restarted this world a earlier today. Some people had trouble logging in.

Developed our first "official" product at If you look closely at the USB Ultrasonic Array picture at , you may see a familiar name on the window title. :-)

AltJSON v0.3.9 for Rebol 2
- Support for /, : and , characters in JSON object keys,
- Improved Unicode/UTF-8 handling
- Support for surrogate pairs (allows for encoding/decoding of characters higher than the BMP, e.g. emoji)
Do let me know if there's any problems.

Major rewrite:
- Same script works with both R3 and Red
- Block format has changed from flat (e.g. [a 1 b 2]) to blocked ([[a 1][b 2]])
- Single context with functions that can be selectively exported to global context
- Functions simplified and non-core options split off (e.g. munge/list -> list, munge/save -> write-dsv)
- General speed and efficiency improvements
- Munge function supports 1st column binary search
- OLEDB [Windows only] functions (e.g. load-excel) work with both 64bit R3 and 32bit Red
- Some missing Red functions (e.g. delete, delete-dir) implemented via CALL [Windows only]
This is a preview release:
- to-rebol-date and to-string-date do not work fully with Red (as it currently lacks date! support)
- some functions have not yet been enhanced to work on non-Windows systems
- write-excel requires 7-Zip to be installed and will only work on Windows
- The now* function is available when run from Red and provides many [date related] options missing from now
- Basic documentation is available at

I have claimed the name R3N on github and set it up as an organisation. The purpose of this 'organisation' is to overcome the status quo on the rebol/rebol repository this community has been put in. In r3n the github repo of the REN-C repository has been cloned.
Graham Chiu and Giulio Lunati have been added as owners of the organisation.
Work on collecting R3 stuff has begun.
Making a start on

Documenting the Red development project:
This project is to help interested developers to quickly get on speed in the codebase.
All interested are invited to add to this project,so for example programmers with Linux background can help on the GTK3 branch.

Minor fixes:
- added /preserve refinement for load-dsv
- now support added for Red
- removed dependency on 7zip
- read-pdf now works on Mac / *nix
- write-excel now works on Mac / *nix

I started a place to collect Red scripts that the community members might like to share with others, a bit like it is
Together with it comes a place to collect valuable documentation for cooperating on the yet unexplored territories like 64 bit and GC. Also there is a fork to host cooperation of community members that want to work on these things without disturbing the official branch.
All comes with a own gitter chat room

Google gives new users on their cloud service USD300 credit which is enough to run a couple of VMs for a year.  Here's a short HOWTO on how to setup CGI on a Google Compute instance.  Any errors are my own and fixes/suggestions appreciated.

AWS is free for 1 year too.
I dont know if it s the right place but i m searching after any trial of a integrated voting machine based on the blockchaine (any type of : ethereum or bitcoin).  Is there any open sourced code implemented in any version of Rebol ?
Not the right place .. this is announce.  Use announce reply to anothe channel.  and there is no blockchain code that is open for Rebol*
Thanks Graham
if anybody has the ambition to build one :)

Prot-smtp.reb is now working sufficiently to send secure email via and on port 465  See
import <smtp>
do <send>
send "Come back home, all is forgiven!"

Last message posted 5 weeks ago.