Hi John,
OxyScheme/
nanoscheme structure follows a standard
r4rs Scheme syntax. The later r5rs standard (like in TinyScheme) was introduced mainly to systematize the differences in earlier Scheme implementations and was very close to r4rs in practically everything except a somewhat more laconic notation for the description of new user-defined syntactic forms. Yet everything that's written for TinyScheme can also be described in OxyScheme/nanoscheme's r4rs syntax. And in very many cases, scripts written for TinyScheme are also runnable in OxyScheme/nanoscheme without adaptation.
OxyScheme/nanoscheme has a clear and well-defined modular structure, which makes adding new data types and corresponding functional instrumentarium a relatively straight-forward task. Currently it supports fixnums, flonums and strings only but an eager enthusiast can easily expand it to full numeric tower with exact numbers, chars, and vectors.
I'm planning to support FBSL's nanoscheme script in my spare time in the future and I will naturally be adding the corresponding features to OxyScheme as well. Still I won't mind if someone takes over OxyScheme and then I will be able to augment nanoscheme accordingly.
My only concern at the moment is that judging by the very rough benchmarks that I was able to run to date, OxyScheme appears not so fast as I expected. For example, the
doubly recursive fibonacci(35) test yields the following approximate results on my PC:
- 30 sec for nanoscheme compiled with gcc -O3
- 110 sec for same with gcc -Os
- 110 sec for DynC nanoscheme script
- 125 sec for TinyScheme
- 230 sec for OxyScheme
Currently, OxyScheme's source is a spitting image of its C language original. Hopefully someone will be able to better optimize it for OxygenBasic which was not my own primary goal. I think making such a lengthy and feature rich alien script runnable in OxygenBasic at all is already an achievement in its own right.