mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-19 05:39:17 +02:00
Issue #309 - Link to local copy of the MTA paper
This commit is contained in:
parent
2704ac1ed2
commit
483cdd2758
4 changed files with 7 additions and 7 deletions
|
@ -317,7 +317,7 @@ Ultimately, a garbage collector is tricky to implement and the focus must primar
|
||||||
- [Baby's First Garbage Collector](http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/), by Bob Nystrom
|
- [Baby's First Garbage Collector](http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/), by Bob Nystrom
|
||||||
- [Chibi-Scheme](https://github.com/ashinn/chibi-scheme)
|
- [Chibi-Scheme](https://github.com/ashinn/chibi-scheme)
|
||||||
- [CHICKEN internals: the garbage collector](http://www.more-magic.net/posts/internals-gc.html), by Peter Bex
|
- [CHICKEN internals: the garbage collector](http://www.more-magic.net/posts/internals-gc.html), by Peter Bex
|
||||||
- [CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A.](http://www.pipeline.com/~hbaker1/CheneyMTA.html), by Henry Baker
|
- [CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A.](https://github.com/justinethier/cyclone/raw/master/docs/research-papers/CheneyMTA.pdf), by Henry Baker
|
||||||
- Fragmentation Tolerant Real Time Garbage Collection (PhD Dissertation), by Filip Pizlo
|
- Fragmentation Tolerant Real Time Garbage Collection (PhD Dissertation), by Filip Pizlo
|
||||||
- [The Garbage Collection Handbook: The Art of Automatic Memory Management](http://gchandbook.org/), by Antony Hosking, Eliot Moss, and Richard Jones
|
- [The Garbage Collection Handbook: The Art of Automatic Memory Management](http://gchandbook.org/), by Antony Hosking, Eliot Moss, and Richard Jones
|
||||||
- Implementing an on-the-fly garbage collector for Java, by Domani et al
|
- Implementing an on-the-fly garbage collector for Java, by Domani et al
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
|
|
||||||
# Introduction
|
# 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 is an experimental Scheme-to-C compiler that uses a variant of the [Cheney on the MTA](https://github.com/justinethier/cyclone/raw/master/docs/research-papers/CheneyMTA.pdf) 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 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".
|
||||||
|
|
||||||
|
@ -224,7 +224,7 @@ Cyclone is available under the [MIT license](http://www.opensource.org/licenses/
|
||||||
|
|
||||||
# References and Further Reading
|
# References and Further Reading
|
||||||
|
|
||||||
- [CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A.](http://www.pipeline.com/~hbaker1/CheneyMTA.html), by Henry Baker
|
- [CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A.](https://github.com/justinethier/cyclone/raw/master/docs/research-papers/CheneyMTA.pdf), by Henry Baker
|
||||||
- [CHICKEN Scheme](http://www.call-cc.org/)
|
- [CHICKEN Scheme](http://www.call-cc.org/)
|
||||||
- [Chibi Scheme](https://github.com/ashinn/chibi-scheme)
|
- [Chibi Scheme](https://github.com/ashinn/chibi-scheme)
|
||||||
- [Compiling Scheme to C with closure conversion](http://matt.might.net/articles/compiling-scheme-to-c/), by Matt Might
|
- [Compiling Scheme to C with closure conversion](http://matt.might.net/articles/compiling-scheme-to-c/), by Matt Might
|
||||||
|
|
|
@ -201,7 +201,7 @@ The C compiler is invoked to generate machine code for the Scheme module, and to
|
||||||
## Garbage Collector
|
## Garbage Collector
|
||||||
|
|
||||||
### Background: Cheney on the MTA
|
### Background: Cheney on the MTA
|
||||||
A runtime based on Henry Baker's paper [CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A.](http://www.pipeline.com/~hbaker1/CheneyMTA.html) was used as it allows for fast code that meets all of the fundamental requirements for a Scheme runtime: tail calls, garbage collection, and continuations.
|
A runtime based on Henry Baker's paper [CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A.](https://github.com/justinethier/cyclone/raw/master/docs/research-papers/CheneyMTA.pdf) was used as it allows for fast code that meets all of the fundamental requirements for a Scheme runtime: tail calls, garbage collection, and continuations.
|
||||||
|
|
||||||
Baker explains how it works:
|
Baker explains how it works:
|
||||||
|
|
||||||
|
@ -460,7 +460,7 @@ Want to give Cyclone a try? Install a copy using [cyclone-bootstrap](https://git
|
||||||
|
|
||||||
## References
|
## References
|
||||||
|
|
||||||
1. [CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A.](http://www.pipeline.com/~hbaker1/CheneyMTA.html), by Henry Baker
|
1. [CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A.](https://github.com/justinethier/cyclone/raw/master/docs/research-papers/CheneyMTA.pdf), by Henry Baker
|
||||||
2. [CHICKEN Scheme](http://www.call-cc.org/)
|
2. [CHICKEN Scheme](http://www.call-cc.org/)
|
||||||
3. [CHICKEN Scheme - Internals](https://wiki.call-cc.org/Internals)
|
3. [CHICKEN Scheme - Internals](https://wiki.call-cc.org/Internals)
|
||||||
4. [Chibi Scheme](https://github.com/ashinn/chibi-scheme)
|
4. [Chibi Scheme](https://github.com/ashinn/chibi-scheme)
|
||||||
|
|
|
@ -72,7 +72,7 @@ During this phase C code is sometimes returned for later use instead of being ou
|
||||||
The C code is carefully generated so that a Scheme library (`.sld` file) is compiled into a C module. Functions and variables exported from the library become C globals in the generated code.
|
The C code is carefully generated so that a Scheme library (`.sld` file) is compiled into a C module. Functions and variables exported from the library become C globals in the generated code.
|
||||||
|
|
||||||
## C Runtime
|
## C Runtime
|
||||||
A runtime based on Henry Baker's paper [CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A.](http://www.pipeline.com/~hbaker1/CheneyMTA.html) was used as it allows for fast code that meets all of the fundamental requirements for a Scheme runtime: tail calls, garbage collection, and continuations.
|
A runtime based on Henry Baker's paper [CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A.](https://github.com/justinethier/cyclone/raw/master/docs/research-papers/CheneyMTA.pdf) was used as it allows for fast code that meets all of the fundamental requirements for a Scheme runtime: tail calls, garbage collection, and continuations.
|
||||||
|
|
||||||
Baker explains how it works:
|
Baker explains how it works:
|
||||||
|
|
||||||
|
@ -165,7 +165,7 @@ Want to give Cyclone a try? Install a copy using [cyclone-bootstrap](https://git
|
||||||
|
|
||||||
## References
|
## References
|
||||||
|
|
||||||
- [CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A.](http://www.pipeline.com/~hbaker1/CheneyMTA.html), by Henry Baker
|
- [CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A.](https://github.com/justinethier/cyclone/raw/master/docs/research-papers/CheneyMTA.pdf), by Henry Baker
|
||||||
- [CHICKEN Scheme](http://www.call-cc.org/)
|
- [CHICKEN Scheme](http://www.call-cc.org/)
|
||||||
- [Chibi Scheme](https://github.com/ashinn/chibi-scheme)
|
- [Chibi Scheme](https://github.com/ashinn/chibi-scheme)
|
||||||
- [Compiling Scheme to C with closure conversion](http://matt.might.net/articles/compiling-scheme-to-c/), by Matt Might
|
- [Compiling Scheme to C with closure conversion](http://matt.might.net/articles/compiling-scheme-to-c/), by Matt Might
|
||||||
|
|
Loading…
Add table
Reference in a new issue