Ikarus (Scheme implementation)

{{Short description|R6RS Scheme compiler}}

{{Infobox programming language

| name = Ikarus Scheme

| logo = Ikarus Scheme Logo.png

| logo caption = Ikarus Scheme logo showing the mythic character Icarus flying across the sun.

| screenshot =

| screenshot caption =

| paradigms = Multi-paradigm: functional, imperative, meta

| family = Lisp

| designer = Abdulaziz Ghuloum

| developer = Abdulaziz Ghuloum

| released = {{Start date and age|2007|10|31}}

| latest release version = 0.0.3

| latest release date = {{Start date and age|2008|02|02}}

| latest preview version = 0.0.3

| latest preview date = {{Start date and age|2008|02|02}}

| typing = Dynamic, latent, strong

| scope = Lexical

| programming language = Scheme, C

| discontinued = Yes

| platform = IA-32

| operating system = Cross-platform: macOS, Linux, FreeBSD, NetBSD, Windows XP

| license = GPL

| file ext =

| file format =

| website =

| implementations =

| dialects =

| influenced by = Lisp, Scheme

| influenced =

}}

Ikarus Scheme is a free software optimizing incremental compiler for R6RS Scheme that compiles directly to the x86 IA-32 architecture. Ikarus is the first public implementation of a large part of the R6RS Scheme standard.{{cite newsgroup

|title=Initial release of Ikarus – the compiler of choice for R6RS hackers

|last=Ghuloum |first=Abdulaziz

|date=2007-10-31

|newsgroup=comp.lang.scheme

|message-id=fg9mbr$22g$1@aioe.org

|url=https://groups.google.com/group/comp.lang.scheme/msg/ef5625d40cd849b2

|access-date=2007-11-28}}

Version 0.0.3 has 94% of the total R6RS forms and procedures.{{cite web

|url=http://ikarus-scheme.org/

|title=Ikarus Scheme: History

|last=Ghuloum

|first=Abdulaziz

|date=2008-02-02

|website=Internet Archive

|access-date=2024-09-01

|archive-date=2009-06-06

|archive-url=https://web.archive.org/web/20090606055225/http://ikarus-scheme.org/

|url-status=bot: unknown

}}

Development stopped in 2008.

Design

The compiler developer, Abdulaziz Ghuloum, was a Ph.D. student at Indiana University under R. Kent Dybvig, the developer of Chez Scheme, who has influenced the development of Ikarus.

Some of the ideas behind the design of Ikarus Scheme are detailed in "An Incremental Approach to Compiler Construction" by the developer.

{{cite conference

|last=Ghuloum |first=Abdulaziz

|title=An Incremental Approach to Compiler Construction

|book-title=Scheme and Functional Programming, 2006

|pages=27–37

|date=September 17, 2006

|location=Portland, Oregon

|url=http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf

|access-date=2007-11-28}} Ikarus is self-hosting with most of the compiler and primitives written in Scheme and only a few parts of the runtime system written in C. Also, rather than using an external intermediate language like C, LLVM, or C--, it compiles directly to machine code to better exploit the underlying machine architecture.

Ikarus uses the portable R6RS library and syntax-case system which is also developed by Abdulaziz Ghuloum and is described in a paper, "Implicit phasing for R6RS libraries".

{{cite conference

|last=Ghuloum |first=Abdulaziz

|last2=Dybvig |first2=R. Kent |author-link=R. Kent Dybvig

|title=Implicit phasing for R6RS libraries

|book-title=Proc. of the 2007 ACM SIGPLAN International Conference on Functional Programming

|pages=303–314

|year=2007

|location=Freiburg, Germany

|url=http://portal.acm.org/citation.cfm?id=1291151.1291197

|access-date=2007-12-01}} Finally, the paper "Generation-Friendly Eq Hash Tables" covers the hash table implementation in Ikarus.

{{cite conference

|last=Ghuloum |first=Abdulaziz

|last2=Dybvig |first2=R. Kent |author-link=R. Kent Dybvig

|title=Generation-Friendly Eq Hash Tables

|book-title=Proc. of the 2007 Workshop on Scheme and Functional Programming

|pages=27–36

|date=September 30, 2007

|location=Freiburg, Germany

|url=http://www.schemeworkshop.org/2007/procPaper3.pdf

|access-date=2007-12-01}}

System requirements

Ikarus runs on x86 but requires SSE2 support to handle floating-point arithmetic (FP) computations so it will not produce code for Intel chips earlier than Pentium 4 or for Advanced Micro Devices (AMD) chips before Athlon 64.

Release 0.0.3 has been tested and runs on:

References

{{Reflist}}