mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-23 20:15:05 +02:00
6 lines
No EOL
4 KiB
JSON
6 lines
No EOL
4 KiB
JSON
{
|
|
"name": "Cyclone",
|
|
"tagline": "Cyclone Scheme - Cheney on the M.T.A. with native threads.",
|
|
"body": "[<img src=\"docs/images/cyclone-logo-04-header.png\" alt=\"cyclone-scheme\">](http://github.com/justinethier/cyclone)\r\n\r\nCyclone 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, 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\".\r\n\r\nGetting Started\r\n---------------\r\n\r\n1. To install Cyclone on your machine for the first time use [**cyclone-bootstrap**](https://github.com/justinethier/cyclone-bootstrap) to build a set of binaries. \r\n\r\n2. After installing you can run the `cyclone` command to compile a single Scheme file:\r\n\r\n $ cyclone examples/fac.scm\r\n $ examples/fac\r\n 3628800\r\n \r\n And the `icyc` command to start an interactive interpreter:\r\n \r\n $ icyc\r\n \r\n :@\r\n @@@\r\n @@@@:\r\n `@@@@@+\r\n .@@@+@@@ Cyclone\r\n @@ @@ An experimental Scheme compiler\r\n ,@ https://github.com/justinethier/cyclone\r\n '@\r\n .@\r\n @@ #@ (c) 2014 Justin Ethier\r\n `@@@#@@@. Version 0.0.1 (Pre-release)\r\n #@@@@@\r\n +@@@+\r\n @@#\r\n `@.\r\n \r\n cyclone> (write 'hello-world)\r\n hello-world\r\n\r\n You can use [`rlwrap`](http://linux.die.net/man/1/rlwrap) to make the interpreter more friendly, EG: `rlwrap icyc`.\r\n\r\n3. Read the documentation below for more information on how to use Cyclone.\r\n\r\nDocumentation\r\n-------------\r\n\r\n- The [User Manual](docs/User-Manual.md) covers in detail how to use Cyclone, and provides information and API documentation on the Scheme language features implemented by Cyclone.\r\n\r\n- Cyclone's [Garbage Collector](docs/Garbage-Collector.md) is documented at a high-level. This document includes details on extending Cheney on the MTA to support multiple stacks and fusing that approach with a tri-color marking collector.\r\n\r\n- The [Benchmarks](docs/Benchmarks.md) page compares the performance of Cyclone with other R<sup>7</sup>RS Schemes using a common set of benchmarks.\r\n\r\n- [Writing the Cyclone Scheme Compiler](docs/Writing-the-Cyclone-Scheme-Compiler.md) provides high-level details on how the compiler was written and how it works.\r\n\r\n- Finally, if you need another resource to start learning the Scheme language you may want to try a classic textbook such as [Structure and Interpretation of Computer Programs](https://mitpress.mit.edu/sicp/full-text/book/book.html).\r\n\r\nExample Programs\r\n----------------\r\n\r\nCyclone provides several example programs, including:\r\n\r\n- [Game of Life](examples/game-of-life) - The game of life example program and libraries from R<sup>7</sup>RS.\r\n\r\n- [Threading](examples/threading) - Various examples of multi-threaded programs.\r\n\r\n- [Tail Call Optimization](examples/tail-call-optimization.scm) - A simple example of Scheme tail call optimization; this program runs forever, calling into two mutually recursive functions.\r\n\r\n- Finally, the largest program is the compiler itself. Most of the code is contained in a series of libraries which are used by [`cyclone.scm`](cyclone.scm) and [`icyc.scm`](icyc.scm) to create executables for Cyclone's compiler and interpreter.\r\n\r\nLicense\r\n-------\r\nCopyright (C) 2014 [Justin Ethier](http://github.com/justinethier).\r\n\r\nCyclone is available under the [MIT license](http://www.opensource.org/licenses/mit-license.php).\r\n",
|
|
"note": "Don't delete this file! It's used internally to help with page regeneration."
|
|
} |