mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-23 20:15:05 +02:00
114 lines
6.1 KiB
HTML
114 lines
6.1 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta http-equiv="X-UA-Compatible" content="chrome=1">
|
|
<title>Cyclone by justinethier</title>
|
|
|
|
<link rel="stylesheet" href="stylesheets/styles.css">
|
|
<link rel="stylesheet" href="stylesheets/github-dark.css">
|
|
<script src="javascripts/scale.fix.js"></script>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
|
|
|
|
<!--[if lt IE 9]>
|
|
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
|
<![endif]-->
|
|
</head>
|
|
<body>
|
|
<div class="wrapper">
|
|
<header>
|
|
<h1>Cyclone</h1>
|
|
<p>Cyclone Scheme - Cheney on the M.T.A. with native threads.</p>
|
|
<p class="view"><a href="https://github.com/justinethier/cyclone">View the Project on GitHub <small>justinethier/cyclone</small></a></p>
|
|
<ul>
|
|
<li><a href="https://github.com/justinethier/cyclone/zipball/master">Download <strong>ZIP File</strong></a></li>
|
|
<li><a href="https://github.com/justinethier/cyclone/tarball/master">Download <strong>TAR Ball</strong></a></li>
|
|
<li><a href="https://github.com/justinethier/cyclone">View On <strong>GitHub</strong></a></li>
|
|
</ul>
|
|
</header>
|
|
<section>
|
|
<p><a href="http://github.com/justinethier/cyclone"><img src="docs/images/cyclone-logo-04-header.png" alt="cyclone-scheme"></a></p>
|
|
|
|
<p>Cyclone is an experimental Scheme-to-C compiler that uses a variant of the <a href="http://www.pipeline.com/%7Ehbaker1/CheneyMTA.html">Cheney on the MTA</a> 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".</p>
|
|
|
|
<h2>
|
|
<a id="getting-started" class="anchor" href="#getting-started" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Getting Started</h2>
|
|
|
|
<ol>
|
|
<li><p>To install Cyclone on your machine for the first time use <a href="https://github.com/justinethier/cyclone-bootstrap"><strong>cyclone-bootstrap</strong></a> to build a set of binaries. </p></li>
|
|
<li>
|
|
<p>After installing you can run the <code>cyclone</code> command to compile a single Scheme file:</p>
|
|
|
|
<pre><code>$ cyclone examples/fac.scm
|
|
$ examples/fac
|
|
3628800
|
|
</code></pre>
|
|
|
|
<p>And the <code>icyc</code> command to start an interactive interpreter:</p>
|
|
|
|
<pre><code>$ icyc
|
|
|
|
:@
|
|
@@@
|
|
@@@@:
|
|
`@@@@@+
|
|
.@@@+@@@ Cyclone
|
|
@@ @@ An experimental Scheme compiler
|
|
,@ https://github.com/justinethier/cyclone
|
|
'@
|
|
.@
|
|
@@ #@ (c) 2014 Justin Ethier
|
|
`@@@#@@@. Version 0.0.1 (Pre-release)
|
|
#@@@@@
|
|
+@@@+
|
|
@@#
|
|
`@.
|
|
|
|
cyclone> (write 'hello-world)
|
|
hello-world
|
|
</code></pre>
|
|
|
|
<p>You can use <a href="http://linux.die.net/man/1/rlwrap"><code>rlwrap</code></a> to make the interpreter more friendly, EG: <code>rlwrap icyc</code>.</p>
|
|
</li>
|
|
<li><p>Read the documentation below for more information on how to use Cyclone.</p></li>
|
|
</ol>
|
|
|
|
<h2>
|
|
<a id="documentation" class="anchor" href="#documentation" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Documentation</h2>
|
|
|
|
<ul>
|
|
<li><p>The <a href="docs/User-Manual.md">User Manual</a> covers in detail how to use Cyclone, and provides information and API documentation on the Scheme language features implemented by Cyclone.</p></li>
|
|
<li><p>Cyclone's <a href="docs/Garbage-Collector.md">Garbage Collector</a> 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.</p></li>
|
|
<li><p>The <a href="docs/Benchmarks.md">Benchmarks</a> page compares the performance of Cyclone with other R<sup>7</sup>RS Schemes using a common set of benchmarks.</p></li>
|
|
<li><p><a href="docs/Writing-the-Cyclone-Scheme-Compiler.md">Writing the Cyclone Scheme Compiler</a> provides high-level details on how the compiler was written and how it works.</p></li>
|
|
<li><p>Finally, if you need another resource to start learning the Scheme language you may want to try a classic textbook such as <a href="https://mitpress.mit.edu/sicp/full-text/book/book.html">Structure and Interpretation of Computer Programs</a>.</p></li>
|
|
</ul>
|
|
|
|
<h2>
|
|
<a id="example-programs" class="anchor" href="#example-programs" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Example Programs</h2>
|
|
|
|
<p>Cyclone provides several example programs, including:</p>
|
|
|
|
<ul>
|
|
<li><p><a href="examples/game-of-life">Game of Life</a> - The game of life example program and libraries from R<sup>7</sup>RS.</p></li>
|
|
<li><p><a href="examples/threading">Threading</a> - Various examples of multi-threaded programs.</p></li>
|
|
<li><p><a href="examples/tail-call-optimization.scm">Tail Call Optimization</a> - A simple example of Scheme tail call optimization; this program runs forever, calling into two mutually recursive functions.</p></li>
|
|
<li><p>Finally, the largest program is the compiler itself. Most of the code is contained in a series of libraries which are used by <a href="cyclone.scm"><code>cyclone.scm</code></a> and <a href="icyc.scm"><code>icyc.scm</code></a> to create executables for Cyclone's compiler and interpreter.</p></li>
|
|
</ul>
|
|
|
|
<h2>
|
|
<a id="license" class="anchor" href="#license" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>License</h2>
|
|
|
|
<p>Copyright (C) 2014 <a href="http://github.com/justinethier">Justin Ethier</a>.</p>
|
|
|
|
<p>Cyclone is available under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.</p>
|
|
</section>
|
|
</div>
|
|
<footer>
|
|
<p>Project maintained by <a href="https://github.com/justinethier">justinethier</a></p>
|
|
<p>Hosted on GitHub Pages — Theme by <a href="https://github.com/orderedlist">orderedlist</a></p>
|
|
</footer>
|
|
<!--[if !IE]><script>fixScale(document);</script><![endif]-->
|
|
|
|
</body>
|
|
</html>
|