2022-08-02 07:27:44 -04:00
|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
|
|
<head>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
|
|
<title>Ikarus Scheme</title>
|
|
|
|
<link href="style.css" rel="stylesheet" type="text/css" />
|
|
|
|
</head>
|
|
|
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div id="mainPan">
|
|
|
|
<div id="topPan">
|
2022-08-02 07:44:22 -04:00
|
|
|
<div id="topcontactPan">
|
2022-08-02 07:27:44 -04:00
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="headerPan">
|
|
|
|
<ul class="leftmenu">
|
|
|
|
<li class="Solutions">Ikarus</li>
|
|
|
|
<li><a href="r6rs-libraries/index.html">psyntax</a></li>
|
|
|
|
<!--
|
|
|
|
<li><a href="#">Downloads</a></li>
|
|
|
|
<li><a href="#">Roadmap</a></li>
|
|
|
|
<li><a href="#">Development</a></li>
|
|
|
|
<li><a href="#">Changes</a></li>
|
|
|
|
<li><a href="#">License</a></li>
|
|
|
|
-->
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
<div id="bodyPan">
|
|
|
|
<div id="leftPan">
|
|
|
|
<h2>Ikarus</h2>
|
|
|
|
<ul>
|
|
|
|
<li><a href="#about"><span>About Ikarus</span></a></li>
|
|
|
|
<li><a href="#whatsnew"><span>What's New</span></a></li>
|
|
|
|
<li><a href="#requirements"><span>Requirements</span></a></li>
|
|
|
|
<li><a href="#documentation"><span>Documentation</span></a></li>
|
|
|
|
<li><a href="#downloads"><span>Downloads</span></a></li>
|
|
|
|
<!-- <li><a href="#roadmap"><span>Roadmap</span></a></li> -->
|
|
|
|
<li><a href="#development"><span>Development</span></a></li>
|
|
|
|
<li><a href="#history"><span>History</span></a></li>
|
|
|
|
<li><a href="#license"><span>License</span></a></li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div id="rightPan">
|
|
|
|
|
|
|
|
<h1 id="about">About Ikarus:</h1>
|
|
|
|
|
|
|
|
<p> Ikarus Scheme is a free optimizing incremental native-code compiler
|
|
|
|
for Scheme as specified in the <a href="http://www.r6rs.org/">Revised^6
|
|
|
|
Report on the Algorithmic Language Scheme</a>.</p>
|
|
|
|
|
|
|
|
<p> Ikarus Scheme is free to download, to distribute, to modify, and to
|
|
|
|
redistribute. The complete source is available according to the GNU
|
|
|
|
General Public License (GPL3).</p>
|
|
|
|
|
|
|
|
<p> Ikarus Scheme is an optimizing compiler, so your Scheme code will
|
|
|
|
run fast without the need to port hot spots to C "for performance".
|
|
|
|
With an incremental compiler, you don't need a separate compilation step
|
|
|
|
to make your program run fast. The best part is that the compiler
|
|
|
|
itself is fast, capable of compiling thousands of lines of code per
|
|
|
|
second.</p>
|
|
|
|
|
|
|
|
<p> Finally, Ikarus Scheme is an R6RS compiler. R6RS is the latest
|
|
|
|
revision of the Scheme standard. The current release of Ikarus supports
|
|
|
|
over 94% of the most important features R6RS, and later releases will
|
|
|
|
bring Ikarus closer to full R6RS conformance. R6RS libraries, scripts,
|
|
|
|
record types, condition system, exception handling, unicode strings,
|
|
|
|
bytevectors, hashtable, and enumerations are among the supported
|
|
|
|
features.</p>
|
|
|
|
|
|
|
|
<h1 id="whatsnew">What's new</h1>
|
|
|
|
|
|
|
|
<p>The 0.0.3 release of Ikarus brings the following improvements:</p>
|
|
|
|
|
2022-08-02 07:44:22 -04:00
|
|
|
<ul>
|
2022-08-02 07:27:44 -04:00
|
|
|
|
|
|
|
<li>System usability: When Ikarus encounters a syntactic error (either
|
|
|
|
during reading or during macro expansion), error messages now contain
|
|
|
|
the file name and character position at which the error occurred.
|
|
|
|
Previously, you got a context-free error.</li>
|
|
|
|
|
|
|
|
<li> Better Unicode support: Ikarus's ports are now properly
|
|
|
|
classified into either binary or textual ports (previously, they
|
|
|
|
supported mixed character and byte input/output). The UTF8 and Latin1
|
|
|
|
codecs are now fully supported for both input and output
|
|
|
|
directions.</li>
|
|
|
|
|
|
|
|
<li> Better R6RS conformance: The 0.0.3 release adds 28 new R6RS
|
|
|
|
primitives, bringing us to 94% of the total R6RS forms and
|
|
|
|
procedures.</li>
|
2022-08-02 07:44:22 -04:00
|
|
|
|
2022-08-02 07:27:44 -04:00
|
|
|
</ul>
|
|
|
|
|
2022-08-02 07:44:22 -04:00
|
|
|
|
2022-08-02 07:27:44 -04:00
|
|
|
<p> Additionally, many existing primitives have been improved (either on
|
|
|
|
the performance front or on generating better error messages), along
|
|
|
|
with some improvements to the compiler itself. See
|
|
|
|
<a href="https://launchpad.net/ikarus/+milestone/0.0.3">https://launchpad.net/ikarus/+milestone/0.0.3</a> for details.</p>
|
|
|
|
|
|
|
|
<p>The 0.0.2 release advances Ikarus in many directions:</p>
|
|
|
|
|
2022-08-02 07:44:22 -04:00
|
|
|
<ul>
|
|
|
|
|
2022-08-02 07:27:44 -04:00
|
|
|
<li>The Ikarus compiler is faster. Just when I thought the bootstrap
|
|
|
|
time was acceptable (11 seconds on my MacBook), this new release
|
|
|
|
bootstraps in under 7 seconds despite the many added features. The
|
|
|
|
"compiler" benchmark (11700 lines) now compiles in 3 seconds down from
|
|
|
|
10. The "slatex" benchmark (2350 lines) compiles in about 1/3 of a
|
|
|
|
second.</li>
|
|
|
|
|
|
|
|
<li>Not only is the compiler faster, it also generates faster code.
|
|
|
|
Floating-point intensive programs now get a huge performance boost
|
|
|
|
(the run-time for the "ray", "pnpoly", and "mbrot" benchmarks is
|
|
|
|
reduced by about 30%, "fibfp" and "sumfp" run at about 50% of the time
|
|
|
|
recorded in 0.0.1).</li>
|
2022-08-02 07:44:22 -04:00
|
|
|
|
2022-08-02 07:27:44 -04:00
|
|
|
<li>An infrastructure for adding user-contributed code has been added.
|
|
|
|
In 0.0.2, Ikarus distributes three R6RS libraries from the reference
|
|
|
|
implementation of SRFI-41 (streams). More libraries will be added as
|
|
|
|
they become available. Thanks to Phil Bewig for taking the initiative
|
|
|
|
in producing R6RS SRFIs.</li>
|
|
|
|
|
|
|
|
<li>Ikarus now supports 90% of R6RS, up from 80% in the 0.0.1
|
|
|
|
release. Future releases will bring it closer to full R6RS
|
|
|
|
conformance.</li>
|
|
|
|
|
|
|
|
<li>Numerous other improvements and bug fixes (thanks to all who
|
|
|
|
submitted bug reports and suggestions for improvements). The 0.0.2
|
|
|
|
milestone page lists some of the resolved issues. See
|
|
|
|
<a href="https://launchpad.net/ikarus/+milestone/0.0.2">https://launchpad.net/ikarus/+milestone/0.0.2</a> for details.</li>
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
<h1 id="requirements">System Requirements</h1>
|
|
|
|
|
|
|
|
<h3>Hardware:</h3>
|
|
|
|
|
|
|
|
<p> Ikarus runs on the IA-32 (x86) architecture
|
|
|
|
supporting SSE2 extensions. This includes the Athlon 64,
|
|
|
|
Sempron 64, and Turion 64 processors from AMD and the Pentium 4, Xeon,
|
|
|
|
Celeron, Pentium M, Core, and Core2 processors from Intel. The
|
|
|
|
system does not run on Intel Pentium III or earlier
|
|
|
|
processors.</p>
|
|
|
|
|
|
|
|
<p> The Ikarus compiler generates SSE2 instructions to handle Scheme's
|
|
|
|
IEEE floating point representation (flonums) for inexact
|
|
|
|
numbers. Note that Ikarus is a 32-bit system even on 64-bit
|
|
|
|
architecutres. On 64-bit Mac OS X or Linux, special compatibility
|
|
|
|
packages may need to be installed if they are not installed already.
|
|
|
|
Refer to the user's guide for a detailed list of requirements and
|
|
|
|
installation instructions.</p>
|
|
|
|
|
|
|
|
<h3> Operating Systems: </h3>
|
|
|
|
|
|
|
|
<p>Ikarus is tested under the following operating systems:</p>
|
|
|
|
<ul>
|
|
|
|
<li> Mac OS X version 10.4 and 10.5 </li>
|
|
|
|
<li> Linux 2.6.18 (Debian, Fedora, Gentoo, and Ubuntu).</li>
|
|
|
|
<li> FreeBSD version 6.2 </li>
|
|
|
|
<li> NetBSD version 3.1 </li>
|
|
|
|
<li> Microsoft Windows XP (using Cygwin 1.5.24).</li>
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
<h3> Additional Software: </h3>
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
<li>GMP:
|
|
|
|
Ikarus uses the GNU Multiple Precision Arithmetic
|
|
|
|
Library (GMP) for some bignum arithmetic operations. To build
|
|
|
|
Ikarus from scratch, GMP version 4.2 or better must be installed
|
|
|
|
along with the required header files. Pre-built GMP packages are
|
|
|
|
available for most operating systems. Alternatively, GMP can be
|
|
|
|
downloaded from <a href="http://gmplib.org/">http://gmplib.org/</a>.
|
|
|
|
</li>
|
2022-08-02 07:44:22 -04:00
|
|
|
<li>GCC:
|
2022-08-02 07:27:44 -04:00
|
|
|
The GNU C Compiler is required to build the Ikarus
|
|
|
|
executable (e.g. the garbage collector, loader, and OS-related
|
|
|
|
runtime). GCC versions 4.1 and 4.2 were successfully used to build
|
|
|
|
Ikarus. </li>
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
<h1 id="documentation">Documentation</h1>
|
|
|
|
|
|
|
|
<h3>Ikarus Scheme User's Guide</h3>
|
|
|
|
<p> A preliminary version of the Ikarus Scheme User's Guide is
|
|
|
|
available in PDF format. The guide contains: </p>
|
|
|
|
<ul>
|
|
|
|
<li> Hardware and software requirements </li>
|
|
|
|
<li> Installation instructions </li>
|
|
|
|
<li> An R6RS crash course </li>
|
2022-08-02 07:44:22 -04:00
|
|
|
<li> Description of some of the features provided in
|
2022-08-02 07:27:44 -04:00
|
|
|
the <tt>(ikarus)</tt> library</li>
|
|
|
|
<li> List of additional user-provided libraries (e.g., SRFIs, GUIs,
|
|
|
|
etc.) and where to obtain them from.
|
|
|
|
<li> Limitations and missing features </li>
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
<p> Download
|
|
|
|
<a href="ikarus-scheme-users-guide.pdf">ikarus-scheme-users-guide.pdf</a>
|
|
|
|
(253734 bytes) released on February 2, 2008.</p>
|
|
|
|
|
|
|
|
<h3>R6RS (local copy)</h3>
|
|
|
|
Local mirror of the R6RS documents in PDF format are available:
|
|
|
|
<ul>
|
|
|
|
<li><a href="r6rs.pdf">r6rs.pdf</a> (858815 bytes)</li>
|
|
|
|
<li><a href="r6rs-lib.pdf">r6rs-lib.pdf</a> (629868 bytes)</li>
|
|
|
|
<li><a href="r6rs-rationale.pdf">r6rs-rationale.pdf</a> (284718 bytes)</li>
|
|
|
|
<li><a href="r6rs-app.pdf">r6rs-app.pdf</a> (124571 bytes)</li>
|
|
|
|
</ul>
|
|
|
|
<h1 id="downloads">Downloads</h1>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
The official release of Ikarus is for download in
|
|
|
|
<tt>.tar.gz</tt> format. The tarball contains the following:
|
|
|
|
</p>
|
|
|
|
<ul>
|
|
|
|
<li> The complete source code of the Ikarus C runtime system
|
|
|
|
(garbage collector, boot loader, and foreign procedures).</li>
|
|
|
|
<li> The complete source code of the Ikarus Scheme runtime
|
|
|
|
system (expander, compiler, assembler, printer, and the rest
|
|
|
|
of the R6RS standard libraries), written in R6RS Scheme + Ikarus
|
|
|
|
extensions.</li>
|
|
|
|
<li> An initial boot image for bootstrapping Ikarus from
|
|
|
|
its sources.</li>
|
|
|
|
<li> The User's Guide, in PDF and Latex format.</li>
|
|
|
|
<li> Additional contributed libraries (SRFIs, etc).</li>
|
|
|
|
<li> Code for 60 R6RS benchmarks that we use periodically to monitor
|
|
|
|
the progress of Ikarus.</li>
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
<p> Download
|
|
|
|
<a href="ikarus-0.0.3.tar.gz">ikarus-0.0.3.tar.gz</a>
|
|
|
|
(3948264 bytes) released on February 2, 2008.</p>
|
|
|
|
|
|
|
|
<!--
|
|
|
|
|
|
|
|
<h3>Release Candidates for 0.0.3</h3>
|
|
|
|
|
|
|
|
<p> The release of 0.0.3 is pending completion of some missing sections
|
|
|
|
from the user's guide. The current release candidate is available for
|
|
|
|
download. Please let us know if you have any problems compiling
|
2022-08-02 07:44:22 -04:00
|
|
|
it. For more information about this release, please visit the
|
2022-08-02 07:27:44 -04:00
|
|
|
<a href="https://launchpad.net/ikarus/+milestone/0.0.3">0.0.3 milestone</a>
|
|
|
|
page.</p>
|
|
|
|
|
|
|
|
<p>
|
2022-08-02 07:44:22 -04:00
|
|
|
Download the current release candidate
|
2022-08-02 07:27:44 -04:00
|
|
|
<a href="ikarus-0.0.3-rc1.tar.gz">ikarus-0.0.3-rc1.tar.gz</a>
|
|
|
|
(3940682 bytes) released January 29, 2008.
|
|
|
|
</p>
|
|
|
|
-->
|
|
|
|
|
|
|
|
<!--
|
|
|
|
<p>
|
|
|
|
Older release candidates:
|
|
|
|
<a href="ikarus-0.0.2-rc1.tar.gz">ikarus-0.0.2-rc1.tar.gz</a>
|
|
|
|
(4242461 bytes) released November 23, 2007.
|
|
|
|
</p>
|
|
|
|
-->
|
2022-08-02 07:44:22 -04:00
|
|
|
|
2022-08-02 07:27:44 -04:00
|
|
|
<h3>Previous Releases </h3>
|
|
|
|
<ul>
|
|
|
|
<li><a href="ikarus-0.0.2.tar.gz">ikarus-0.0.2.tar.gz</a>
|
|
|
|
(3838888 bytes) released on November 29, 2007.</p>
|
|
|
|
<li><a href="ikarus-0.0.1.tar.gz">ikarus-0.0.1.tar.gz</a>
|
|
|
|
(1776182 bytes) released on October 31, 2007.</li>
|
|
|
|
</ul>
|
2022-08-02 07:44:22 -04:00
|
|
|
|
2022-08-02 07:27:44 -04:00
|
|
|
<!-- <h1 id="roadmap">Roadmap</h1> -->
|
2022-08-02 07:44:22 -04:00
|
|
|
|
2022-08-02 07:27:44 -04:00
|
|
|
<h1 id="development">Development</h1>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p> Development of Ikarus is continuing. To access the master
|
2022-08-02 07:44:22 -04:00
|
|
|
repository, you need the
|
2022-08-02 07:27:44 -04:00
|
|
|
<a href="http://bazaar-vcs.org/">Bazaar revision control system</a>.
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p> A development snapshot of the repository can be obtained by performing a
|
|
|
|
<i>lightweight checkout</i>. To do so, type:</p>
|
|
|
|
<pre>
|
|
|
|
$ bzr checkout --lightweight /ikarus.dev
|
|
|
|
</pre>
|
|
|
|
|
2022-08-02 07:44:22 -04:00
|
|
|
<p> To retreive a specific revision from the repository
|
2022-08-02 07:27:44 -04:00
|
|
|
(say revision 10), do:</p>
|
|
|
|
<pre>
|
|
|
|
$ bzr checkout --lightweight -r 10 /ikarus.dev
|
|
|
|
</pre>
|
|
|
|
|
2022-08-02 07:44:22 -04:00
|
|
|
|
2022-08-02 07:27:44 -04:00
|
|
|
<p>Note that the full repository is huge (around 560MB) and is
|
|
|
|
typically not needed for developing with Ikarus.</p>
|
|
|
|
|
2022-08-02 07:44:22 -04:00
|
|
|
<p> To checkout a copy of the entire repository,
|
2022-08-02 07:27:44 -04:00
|
|
|
type the following: </p>
|
2022-08-02 07:44:22 -04:00
|
|
|
|
2022-08-02 07:27:44 -04:00
|
|
|
<pre>
|
|
|
|
$ bzr checkout /ikarus.dev
|
|
|
|
</pre>
|
|
|
|
Or, from the mirror repository (updated every 5 hours):
|
|
|
|
<pre>
|
|
|
|
$ bzr checkout http://bazaar.launchpad.net/~aghuloum/ikarus/ikarus.dev
|
|
|
|
</pre>
|
2022-08-02 07:44:22 -04:00
|
|
|
|
|
|
|
|
2022-08-02 07:27:44 -04:00
|
|
|
<p>To submit bug reports and feature requests, please
|
|
|
|
visit: <a href="https://launchpad.net/ikarus/">Launchpad's Ikarus Scheme</a>
|
2022-08-02 07:44:22 -04:00
|
|
|
project.</p>
|
|
|
|
|
2022-08-02 07:27:44 -04:00
|
|
|
<h1 id="history">History</h1>
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
<li> Release 0.0.3 announced on February 2, 2008.</p>
|
|
|
|
<li> Release 0.0.2 announced on November 29, 2007. </li>
|
|
|
|
<li> Initial public release announced on October 31, 2007. </li>
|
|
|
|
</ul>
|
2022-08-02 07:44:22 -04:00
|
|
|
|
2022-08-02 07:27:44 -04:00
|
|
|
<h1 id="license">License</h1>
|
2022-08-02 07:44:22 -04:00
|
|
|
|
2022-08-02 07:27:44 -04:00
|
|
|
<p>The following license applies to all of ikarus and its
|
|
|
|
source files unless otherwise stated.</p>
|
|
|
|
<pre>
|
|
|
|
Ikarus Scheme -- A compiler for R6RS Scheme.
|
|
|
|
Copyright (C) 2006,2008 Abdulaziz Ghuloum
|
|
|
|
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License version 3 as
|
|
|
|
published by the Free Software Foundation.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful, but
|
|
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program. If not, see <<a class="pre" href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>>
|
|
|
|
</pre>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="footermainPan">
|
|
|
|
<div id="footerPan">
|
|
|
|
<ul>
|
|
|
|
<li><a href="#about">Ikarus</a> | </li>
|
|
|
|
<li><a href="r6rs-libraries/index.html">psyntax</a></li>
|
|
|
|
</ul>
|
|
|
|
<div id="footerPanhtml"><a href="http://validator.w3.org/check?uri=referer" target="_blank">XHTML</a></div>
|
|
|
|
<div id="footerPancss"><a href="http://jigsaw.w3.org/css-validator/check/referer" target="_blank">css</a></div>
|
|
|
|
<ul class="templateworld">
|
2022-08-02 13:10:21 -04:00
|
|
|
<li>original design by: Template World</li>
|
2022-08-02 07:27:44 -04:00
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</body>
|
2022-08-02 07:44:22 -04:00
|
|
|
</html>
|