mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-24 04:25:06 +02:00
Sync latest readme changes
This commit is contained in:
parent
309a20835f
commit
ceea476dbc
1 changed files with 74 additions and 50 deletions
76
index.md
76
index.md
|
@ -9,8 +9,7 @@ Cyclone is a brand-new Scheme-to-C compiler that allows practical application de
|
||||||
|
|
||||||
Cyclone is the first compiler written entirely in the latest R<sup>7</sup>RS Scheme language standard, and the intent is to support as much of that language as possible.
|
Cyclone is the first compiler written entirely in the latest R<sup>7</sup>RS Scheme language standard, and the intent is to support as much of that language as possible.
|
||||||
|
|
||||||
Features
|
# Features
|
||||||
--------
|
|
||||||
|
|
||||||
- Support for the majority of the Scheme language as specified by the latest [R<sup>7</sup>RS standard](docs/Scheme-Language-Compliance.md).
|
- Support for the majority of the Scheme language as specified by the latest [R<sup>7</sup>RS standard](docs/Scheme-Language-Compliance.md).
|
||||||
- New features from R<sup>7</sup>RS including libraries, exceptions, and record types.
|
- New features from R<sup>7</sup>RS including libraries, exceptions, and record types.
|
||||||
|
@ -28,25 +27,48 @@ Features
|
||||||
- Support for Linux, Windows, FreeBSD, and Mac platforms.
|
- Support for Linux, Windows, FreeBSD, and Mac platforms.
|
||||||
- Known to run on x86-64, x86, and Arm (Raspberry Pi) architectures.
|
- Known to run on x86-64, x86, and Arm (Raspberry Pi) architectures.
|
||||||
|
|
||||||
Getting Started
|
# Installation
|
||||||
---------------
|
|
||||||
|
|
||||||
1. To install Cyclone on your machine for the first time on Linux and Windows, and for Mac users wanting to install without using Homebrew, use [**cyclone-bootstrap**](https://github.com/justinethier/cyclone-bootstrap) to build a set of binaries. Instructions are provided for Linux, Mac, and Windows (via MSYS).
|
There are several options available for installing Cyclone:
|
||||||
|
|
||||||
Mac users wanting to use Homebrew can do the following:
|
## Docker
|
||||||
- If Homebrew is not already installed: follow the instructions at [https://brew.sh/](https://brew.sh/) to install the homebrew package manager.
|

|
||||||
- `brew tap cyclone-scheme/cyclone`
|
|
||||||
- `brew install cyclone-scheme/cyclone/cyclone-bootstrap`
|
|
||||||
|
|
||||||
Arch Linux users can install using the [AUR](https://aur.archlinux.org/packages/cyclone-scheme/).
|
Cyclone can be run from a [Docker Image](https://hub.docker.com/r/cyclonescm/cyclone):
|
||||||
|
|
||||||
2. After installing you can run the `cyclone` command to compile a single Scheme file:
|
docker run -it cyclonescm/cyclone bash
|
||||||
|
|
||||||
|
## Homebrew
|
||||||
|

|
||||||
|
|
||||||
|
Mac (and Linux!) users wanting to use Homebrew can do the following.
|
||||||
|
|
||||||
|
Note if Homebrew is not already installed: follow the instructions at [https://brew.sh/](https://brew.sh/) to install the homebrew package manager.
|
||||||
|
|
||||||
|
brew tap cyclone-scheme/cyclone
|
||||||
|
brew install cyclone-scheme/cyclone/cyclone-bootstrap
|
||||||
|
|
||||||
|
## Arch Linux
|
||||||
|

|
||||||
|
|
||||||
|
Arch Linux users can install using the [AUR](https://aur.archlinux.org/packages/cyclone-scheme/):
|
||||||
|
|
||||||
|
git clone https://aur.archlinux.org/cyclone-scheme.git
|
||||||
|
cd cyclone-scheme
|
||||||
|
makepkg -si
|
||||||
|
|
||||||
|
## Build from Source
|
||||||
|
To install Cyclone on your machine for the first time on Linux, Windows, FreeBSD, and for Mac users wanting to install without using Homebrew, use [**cyclone-bootstrap**](https://github.com/justinethier/cyclone-bootstrap) to build a set of binaries. Instructions are provided for Linux, Mac, Windows (via MSYS), and FreeBSD 12.
|
||||||
|
|
||||||
|
# Getting Started
|
||||||
|
|
||||||
|
After installing you can run the `cyclone` command to compile a single Scheme file:
|
||||||
|
|
||||||
$ cyclone examples/fac.scm
|
$ cyclone examples/fac.scm
|
||||||
$ examples/fac
|
$ examples/fac
|
||||||
3628800
|
3628800
|
||||||
|
|
||||||
And the `icyc` command to start an interactive interpreter:
|
And the `icyc` command to start an interactive interpreter. Note you can use [`rlwrap`](http://linux.die.net/man/1/rlwrap) to make the interpreter more friendly, EG: `rlwrap icyc`:
|
||||||
|
|
||||||
$ icyc
|
$ icyc
|
||||||
|
|
||||||
|
@ -69,12 +91,9 @@ Getting Started
|
||||||
cyclone> (write 'hello-world)
|
cyclone> (write 'hello-world)
|
||||||
hello-world
|
hello-world
|
||||||
|
|
||||||
You can use [`rlwrap`](http://linux.die.net/man/1/rlwrap) to make the interpreter more friendly, EG: `rlwrap icyc`.
|
Read the documentation below for more information on how to use Cyclone.
|
||||||
|
|
||||||
3. Read the documentation below for more information on how to use Cyclone.
|
# Documentation
|
||||||
|
|
||||||
Documentation
|
|
||||||
-------------
|
|
||||||
|
|
||||||
- The [User Manual](docs/User-Manual) covers in detail how to use Cyclone and provides information on the Scheme language features implemented by Cyclone.
|
- The [User Manual](docs/User-Manual) covers in detail how to use Cyclone and provides information on the Scheme language features implemented by Cyclone.
|
||||||
|
|
||||||
|
@ -84,23 +103,21 @@ Documentation
|
||||||
|
|
||||||
- Finally, this [benchmarks](http://ecraven.github.io/r7rs-benchmarks/benchmark.html) page by [ecraven](https://github.com/ecraven) compares the performance of Cyclone with other Schemes.
|
- Finally, this [benchmarks](http://ecraven.github.io/r7rs-benchmarks/benchmark.html) page by [ecraven](https://github.com/ecraven) compares the performance of Cyclone with other Schemes.
|
||||||
|
|
||||||
Example Programs
|
# Example Programs
|
||||||
----------------
|
|
||||||
|
|
||||||
Cyclone provides several example programs, including:
|
Cyclone provides several example programs, including:
|
||||||
|
|
||||||
- [Tail Call Optimization]({{ page.ghproj }}examples/tail-call-optimization.scm) - A simple example of Scheme tail call optimization; this program runs forever, calling into two mutually recursive functions.
|
- [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.
|
||||||
|
|
||||||
- [Threading]({{ page.ghproj }}examples/threading) - Various examples of multi-threaded programs.
|
- [Threading](examples/threading) - Various examples of multi-threaded programs.
|
||||||
|
|
||||||
- [Game of Life]({{ page.ghproj }}examples/game-of-life) - The [Conway's game of life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) example program and libraries from R<sup>7</sup>RS.
|
- [Game of Life](examples/game-of-life) - The [Conway's game of life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) example program and libraries from R<sup>7</sup>RS.
|
||||||
|
|
||||||
- [Game of Life PNG Image Generator]({{ page.ghproj }}examples/game-of-life-png) - A modified version of game of life that uses libpng to create an image of each iteration instead of writing it to console. This example also demonstrates basic usage of the C Foreign Function Interface (FFI).
|
- [Game of Life PNG Image Generator](examples/game-of-life-png) - A modified version of game of life that uses libpng to create an image of each iteration instead of writing it to console. This example also demonstrates basic usage of the C Foreign Function Interface (FFI).
|
||||||
|
|
||||||
- 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`]({{ page.ghproj }}cyclone.scm) and [`icyc.scm`]({{ page.ghproj }}icyc.scm) to create executables for Cyclone's compiler and interpreter.
|
- 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.
|
||||||
|
|
||||||
Compiler Internals
|
# Compiler Internals
|
||||||
------------------
|
|
||||||
|
|
||||||
- [Writing the Cyclone Scheme Compiler](docs/Writing-the-Cyclone-Scheme-Compiler-Revised-2017) provides high-level details on how the compiler was written and how it works.
|
- [Writing the Cyclone Scheme Compiler](docs/Writing-the-Cyclone-Scheme-Compiler-Revised-2017) provides high-level details on how the compiler was written and how it works.
|
||||||
|
|
||||||
|
@ -108,3 +125,10 @@ Compiler Internals
|
||||||
|
|
||||||
- Cyclone's [Garbage Collector](docs/Garbage-Collector) 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.
|
- Cyclone's [Garbage Collector](docs/Garbage-Collector) 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.
|
||||||
|
|
||||||
|
- The garbage collector was subsequently enhanced to support [Lazy Sweeping](https://github.com/justinethier/cyclone/blob/master/docs/Garbage-Collection-Using-Lazy-Sweeping) which improves performance for a wide range of applications.
|
||||||
|
|
||||||
|
# License
|
||||||
|
|
||||||
|
Copyright (C) 2014 [Justin Ethier](http://github.com/justinethier).
|
||||||
|
|
||||||
|
Cyclone is available under the [MIT license](http://www.opensource.org/licenses/mit-license.php).
|
||||||
|
|
Loading…
Add table
Reference in a new issue