Hi ports --

Attached is a new port, lang/cyclone. Cyclone is an R7RS Scheme to C compiler.

---
pkg/DESCR:
Cyclone is an experimental Scheme-to-C compiler that uses a variant of
the Cheney on the MTA technique to implement full tail recursion,
continuations, generational garbage collection, and native threads.

Cyclone works by converting a Scheme program to continuation passing
style and compiling each continuation to a C function. At runtime these
functions never return and are allowed to fill up the stack until they
trigger a minor garbage collection. Live stack objects are then copied
to the heap and longjmp is used to return to the beginning of the stack.
This is the same technique proposed by Henry Baker (Cheney on the MTA)
and implemented first by CHICKEN Scheme. The difference is that our
compiler allows multiple native threads, each with their own stack. A
tracing garbage collector is used to manage the second-generation heap
and perform major collections without "stopping the world".
---

Cyclone requires the devel/ck library sent previously.

A little commentary: Cyclone is self-hosting. But since it compilers scheme to C, upstream maintains a synced repo of the C sources created by running each cyclone release on itself. That is what I am using for the port; it allows us to not have to worry about keeping bootstrap binaries for each platform. Upstream says there is no difference between the bootstrapped compiler and the self-hosting compiler, and indeed others are using the bootstraped compiler for their cyclone package.

All tests pass on amd64. There are also more tests in the main cyclone repo. All those tests pass as well.

OK?

~Brian

Attachment: cyclone.tgz
Description: Binary data

Reply via email to