What is Rebol3 (Oldes’ branch)?
This site is dedicated to Rebol3 fork maintained by Oldes (Amanita Design programmer).
As Carl Sassenrath abandoned Rebol a few years after releasing its sources in year 2012, Oldes’ fork is one of the last two actively maintained versions. The second one is Hostile Fork’s Ren-C.
The main difference between these two versions is, that while Fork is focused on deep language changes, Oldes’ version is focused on bringing Rebol from its alpha state by going thru all the issues while trying to resolve these, but keeping the original without not neccessary modifications. There is still mergeable pull request.
What is Rebol
Rebol is a cross-platform data exchange language and a multi-paradigm dynamic programming language designed by Carl Sassenrath.
What is new in Oldes’ version?
To be written. Meanwhile there is list of changes available in the repository.
Rebol code examples
Simple HTTP server:
Rebol [
	Title: "HTTPD Scheme example"
]
import %httpd.reb
system/options/log/httpd: 3 ; for verbose output
; make sure that there is the directory for logs
make-dir/deep %_logs/
http-server/config/actor 8082 [
	;- Main server configuration
	
	root: %./
	server-name: "nginx"  ;= it's possible to hide real server name
	keep-alive: [15 100]  ;= [timeout max-requests] or FALSE to turn it off
	list-dir?:  #[true]   ;= allow directory listing
	log-access: %_logs/test-access.log
	log-errors: %_logs/test-errors.log
] [
	;- Server's actor functions
	On-Accept: func [info [object!]][
		; allow only connections from localhost
		; TRUE = accepted, FALSE = refuse
		find [ 127.0.0.1 ] info/remote-ip 
	]
]
Github API client:
Rebol [
	title: "Github API"
	author: "Oldes"
	license: MIT
]
My-GitHub-authorization: "token ..." ;<--- replace ...  with your API token!
github: context [
	api.github: https://api.github.com/
	owner: repository: none
	authorization: :My-GitHub-authorization
	data: #()
	response: none
	use-repo: func[o r][ owner: o repository: r] 
	get: object [
		issues: func[][
			*do 'GET [%repos/ owner %/ repository %/issues] none
		]
		issue: func[number [integer!]][
			*do 'GET [%repos/ owner %/ repository %/issues/ number] none
		]
		issue-comments: func[
			{Gets all comments of an issue by its number}
			number [integer!]
		][
			*do 'GET [%repos/ owner %/ repository %/issues/ number %/comments] none
		]
		issue-labels: func[
			{Gets all labels of an issue by its number}
			number [integer!]
		][
			*do 'GET [%repos/ owner %/ repository %/issues/ number %/labels] none
		]
		current-user: does [*do 'GET %user none]
	]
	post: object [
		issue: func[
			data [map!] {title, body, labels etc..}
		][
			unless block? data/labels [ data/labels: reduce [labels] ]
			*do 'POST [%repos/ owner %/ repository %/issues] data
		]
		issue-comment: func[
			{Adds a comment to an issue by its number}
			number  [integer!]
			body    [string!]
		][
			clear data
			data/body: body
			*do 'POST [%repos/ owner %/ repository %/issues/ number %/comments] data
		]
		issue-label: func[
			{Adds a label to an issue by its number}
			number  [integer!]
			body    [string! block!]
		][
			clear data
			append data/labels: clear [] body
			*do 'POST [%repos/ owner %/ repository %/issues/ number %/labels] data
		]
	]
	edit: object [
		issue: func[number [integer!] data [map!]][
			*do 'PATCH [%repos/ owner %/ repository %/issues/ number] data
		]
	]
	*do: func[method [word!] path data [map! none!] /local url header][
		url: join api.github path
		;?? url
		header: clear #()
		header/Authorization: authorization
		header/X-OAuth-Scopes: "repo"
		header/Accept: "Accept: application/vnd.github.v3+json"
		if map? data [header/Content-Type:  "application/json"]
		response: write url reduce [method to-block header to-json data]
		try [response: load-json to string! response]
	]
]
and or some random function:
unpack-bits: function [
	{Decompress data compressed by Apple's PackBits routine}
	c [binary!] {Data to decompress}
][
	;https://web.archive.org/web/20080705155158/http://developer.apple.com/technotes/tn/tn1023.html
	u: make binary! 4 * length? c
	i: c ;store position
	while [not tail? c][
		n: first+ c
		case [
			n < 128 [
				++ n
				append u copy/part c n
				c: skip c n
			]
			n > 128 [
				n: 257 - n
				append/dup u first+ c n
			]
			;n = 128 is ignored
		]
	]
	c: i ;restore position
	u
]