From f30c90363ad6404721c0075dc85fcec7ea490047 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Tue, 19 Mar 2019 13:00:22 -0400 Subject: [PATCH] New link to Cheney on the MTA paper --- bak | 2 +- c-api/md_README.html | 2 +- docs/Garbage-Collector.md | 2 +- docs/User-Manual.md | 4 ++-- docs/Writing-the-Cyclone-Scheme-Compiler-Revised-2017.md | 4 ++-- docs/Writing-the-Cyclone-Scheme-Compiler.md | 4 ++-- index.md | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/bak b/bak index ed5f768f..d856d458 100644 --- a/bak +++ b/bak @@ -36,7 +36,7 @@
-

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, and generational garbage collection. Unlike previous Cheney on the MTA compilers, Cyclone also allows execution of multiple native threads. An on-the-fly garbage collector is used to manage the second-generation heap and perform major collections without "stopping the world".

+

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, and generational garbage collection. Unlike previous Cheney on the MTA compilers, Cyclone also allows execution of multiple native threads. An on-the-fly garbage collector is used to manage the second-generation heap and perform major collections without "stopping the world".

Getting Started

diff --git a/c-api/md_README.html b/c-api/md_README.html index fb2f80ca..46d0c845 100644 --- a/c-api/md_README.html +++ b/c-api/md_README.html @@ -83,7 +83,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

-

Cyclone is a brand-new Scheme-to-C compiler that allows practical application development using R7RS Scheme. Cheney on the MTA is used by Cyclone's runtime to implement full tail recursion, continuations, and generational garbage collection. In addition, the Cheney on the MTA concept has been extended to allow execution of multiple native threads. An on-the-fly garbage collector is used to manage the second-generation heap and perform major collections without "stopping the world".

+

Cyclone is a brand-new Scheme-to-C compiler that allows practical application development using R7RS Scheme. Cheney on the MTA is used by Cyclone's runtime to implement full tail recursion, continuations, and generational garbage collection. In addition, the Cheney on the MTA concept has been extended to allow execution of multiple native threads. An on-the-fly garbage collector is used to manage the second-generation heap and perform major collections without "stopping the world".

Cyclone is the first compiler written entirely in the latest R7RS Scheme language standard, and the intent is to support as much of that language as possible.

Features

    diff --git a/docs/Garbage-Collector.md b/docs/Garbage-Collector.md index 524cf28b..23cdfefc 100644 --- a/docs/Garbage-Collector.md +++ b/docs/Garbage-Collector.md @@ -320,7 +320,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 - [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 -- [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 - [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 diff --git a/docs/User-Manual.md b/docs/User-Manual.md index 2c20c8fe..0a306ac8 100644 --- a/docs/User-Manual.md +++ b/docs/User-Manual.md @@ -24,7 +24,7 @@ title: User Manual # 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". @@ -227,7 +227,7 @@ Cyclone is available under the [MIT license](http://www.opensource.org/licenses/ # 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/) - [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 diff --git a/docs/Writing-the-Cyclone-Scheme-Compiler-Revised-2017.md b/docs/Writing-the-Cyclone-Scheme-Compiler-Revised-2017.md index 1b5d9016..fe67f762 100644 --- a/docs/Writing-the-Cyclone-Scheme-Compiler-Revised-2017.md +++ b/docs/Writing-the-Cyclone-Scheme-Compiler-Revised-2017.md @@ -204,7 +204,7 @@ The C compiler is invoked to generate machine code for the Scheme module, and to ## Garbage Collector ### 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: @@ -463,7 +463,7 @@ Want to give Cyclone a try? Install a copy using [cyclone-bootstrap](https://git ## 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/) 3. [CHICKEN Scheme - Internals](https://wiki.call-cc.org/Internals) 4. [Chibi Scheme](https://github.com/ashinn/chibi-scheme) diff --git a/docs/Writing-the-Cyclone-Scheme-Compiler.md b/docs/Writing-the-Cyclone-Scheme-Compiler.md index 534f0c46..e945df65 100644 --- a/docs/Writing-the-Cyclone-Scheme-Compiler.md +++ b/docs/Writing-the-Cyclone-Scheme-Compiler.md @@ -77,7 +77,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. ## 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: @@ -170,7 +170,7 @@ Want to give Cyclone a try? Install a copy using [cyclone-bootstrap](https://git ## 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/) - [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 diff --git a/index.md b/index.md index 9ca9a3a7..16fd5c81 100644 --- a/index.md +++ b/index.md @@ -5,7 +5,7 @@ id: index ghproj: "http://github.com/justinethier/cyclone/tree/master/" --- -Cyclone is a brand-new Scheme-to-C compiler that allows practical development of applications using R7RS Scheme. [Cheney on the MTA](http://www.pipeline.com/~hbaker1/CheneyMTA.html) is used by the runtime to implement full tail recursion, continuations, and generational garbage collection. In addition, the Cheney on the MTA concept has been extended to allow execution of multiple native threads. An on-the-fly garbage collector is used to manage the second-generation heap and perform major collections without "stopping the world". +Cyclone is a brand-new Scheme-to-C compiler that allows practical development of applications using R7RS Scheme. [Cheney on the MTA](https://github.com/justinethier/cyclone/raw/master/docs/research-papers/CheneyMTA.pdf) is used by the runtime to implement full tail recursion, continuations, and generational garbage collection. In addition, the Cheney on the MTA concept has been extended to allow execution of multiple native threads. An on-the-fly garbage collector is used to manage the second-generation heap and perform major collections without "stopping the world". Cyclone is the first compiler written entirely in the latest R7RS Scheme language standard, and the intent is to support as much of that language as possible.