Revisions

This commit is contained in:
Justin Ethier 2016-01-13 22:25:36 -05:00
parent 80975f7ca3
commit 678d84e358

View file

@ -12,11 +12,6 @@
- [Generated Files](#generated-files)
- [Interpreter](#interpreter)
- [Language Details](#language-details)
- explain how programs are setup
- outline scheme language based on r7rs, link to it.
explain differences between cyclone implementation and r7rs, or again at least link to them
- provide API, or at least links to the API
- what else?
- [Foreign Function Interface](#foreign-function-interface)
- Debugging
include profiling instructions?
@ -28,7 +23,7 @@
# Introduction
Cyclone is an experimental Scheme-to-C compiler that uses a variant of the [Cheney on the MTA](http://www.pipeline.com/~hbaker1/CheneyMTA.html) 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 here is that multiple native threads are allowed, each with their own stack. A tracing garbage collector is used to manage the second-generation heap and performs major collections without "stopping the world".
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 in our compiler is that multiple native threads are allowed, 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 is developed by [Justin Ethier](https://github.com/justinethier).
@ -125,6 +120,16 @@ Scheme code can be evaluated interactively using the `icyc` command:
# Language Details
[R<sup>7</sup>RS Scheme Specification](r7rs.pdf):
[R<sup>7</sup>RS Compliance](Scheme-Language-Compliance.md)
[API Documentation](API.md)
- explain how programs are setup
- outline scheme language based on r7rs, link to it.
explain differences between cyclone implementation and r7rs, or again at least link to them
- provide API, or at least links to the API
- what else?
TODO
# Foreign Function Interface