Note: text is very much a draft
A plattform is ... essentially a (virtual) machine _or_ scheme
implementaion.
A port is the minimal set of compatible modifications required to run
the code on the platform.
A port is minimal, if the kernel produces the same results as the
original and the port supports at least one (network) access protocol
supported by another plattform. (This means it can't exist on just
one platform and refuse to communicate to other plattforms.)
A port is complete, if it's minimal and supports at least one storage
adaptor.
Notes on possible targets
Other Scheme Implementations
- Chicken http://www.call-with-current-continuation.org :
the port almost works
- Guile http://www.gnu.org/software/guile/guile.html :
has gotten momentum since Askemos was implemented.
Port to the implementation strategy
"libxml2 + libxslt + guile" should be easy with the
existing chicken code.
- bigloo: my beloved, fast bigloo:
too many global variables --> no preemptive threads,
C stack used --> partial call/cc.
Update: new version seems to support pthreads and asynch i/o.
Port to bigloo schould be retried.
- DrScheme?: due to C++ interface in DrScheme? there's some chance that
the texas persistant store might work there. In the latter case a
complete port should be simple.
Virtual Machines
A loose collection of different concepts of virtual machines.
Every ProgrammingLanguageScheme has one, somehow.
Idel is a virtual machine to run and restrict code in a sadbox
similar to Java, just better.
http://nekovm.org/
Neko has a compiler and virtual machine. The Virtual Machine is both very lightweight and extremely well optimised so that it can run very quickly. The VM can be easily embedded into any application and your libraries are directly accessable using the C foreign function interface.
The llvm is a Low Level Virtual Machine
forth
http://www.parrotcode.org/parrot
is a continuation (rather than stack) based virtual machine,
originally intented for perl6,
which comes with a variety of language implementations
plex86.org
ivm.
java: minimal port probably simple because of kawa.
I need details about persistancy.
kissme : GPL java vm.
TODO look at artyomr.narod.ru,
LGPL persistense layer for java
msil microsofts answer to java.
The more I read about C#
(which is rarly rocket since but just different)
the more I'm skeptic on the actual advantages.
Anyway it backs up the choice of (R)Scheme (which already compiles
into bytecode and C). Adding another byte code back end won't be a
seroius problem.
TODO:there should be a .net strategy paper laying out the facts.