mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-14 08:17:35 +02:00
Revisions
This commit is contained in:
parent
80975f7ca3
commit
678d84e358
1 changed files with 11 additions and 6 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue