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.
|
||||
|
||||
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).
|
||||
- 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.
|
||||
- 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:
|
||||
- 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`
|
||||
## Docker
|
||||

|
||||
|
||||
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
|
||||
$ examples/fac
|
||||
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
|
||||
|
||||
|
@ -69,12 +91,9 @@ Getting Started
|
|||
cyclone> (write '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.
|
||||
|
||||
|
@ -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.
|
||||
|
||||
Example Programs
|
||||
----------------
|
||||
# Example Programs
|
||||
|
||||
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.
|
||||
|
||||
|
@ -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.
|
||||
|
||||
- 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