Release: Similix 5.0 Scheme partial evaluator (Anders Bondorf)
Tue, 18 May 1993 09:01:09 GMT

          From comp.compilers

Related articles
Release: Similix 5.0 Scheme partial evaluator (1993-05-18)
| List of all articles for this month |

Newsgroups: comp.compilers
From: (Anders Bondorf)
Keywords: Scheme, available, FTP
Organization: Department of Computer Science, U of Copenhagen
Date: Tue, 18 May 1993 09:01:09 GMT


                Self-applicable partial evaluator for a Scheme subset

                                                      Similix 5.0

                                        available via anonymous ftp

        How to get Similix by ftp is described in the end of this mail


                                        General Description of Similix

Similix is an autoprojector (self-applicable partial evaluator) for a
large higher-order subset of the strict functional language Scheme.
Similix treats source programs that use a limited class of side-effects,
for instance input/output operations. Similix handles partially static
data structures.

Similix is automatic: in general, no user annotations (such as unfolding
information) are required; user assistance may in some cases be required
to avoid looping, however. Similix gives certain guarantees concerning the
residual programs it generates: computations are never discarded (partial
evaluation thus preserves termination properties) and never duplicated.

Similix is well-suited for partially evaluating for instance interpreters
that use environments represented as functions and interpreters written in
continuation passing style. Since Similix is self-applicable, stand-alone
compilers can be generated from interpreters.

Similix is highly portable. It conforms to the IEEE and R4RS Scheme
standards, but it also runs under R3RS Scheme. This distribution should
immediately enable you to run Similix on Scm and on Chez Scheme. We have
tested this version of Similix on Scm version 4c0 and on Chez Scheme
version 3.2.

Similix 5.0 is based on the former Similix 4.0 (by Anders Bondorf and
Olivier Danvy). A part of Similix 5.0 has been written jointly by Anders
Bondorf and Jesper J{\o}rgensen.

The manual contains a section that summarizes some often used binding-time
improvements. These are needed in order to obtain good results of partial
evaluation. The section is partly Similix-specific, but parts of it are of
more general interest.


                              Main improvements from Similix 4.0

-- Similix 5.0 is highly portable.

-- A larger Scheme subset is handled, in particular internal
      definitions, letrec, and named (recursive) let.

-- Partially static data structures are now available.

-- User-defined constructors are now available (extension to Scheme).

-- Pattern-matching facilities are now available (extension to

-- The preprocessing phase is much faster (e.g. binding-time

-- A trace facility for tracking infinite specialization is now

-- For binding-time debugging: the show-facility for inspecting
      preprocessed programs has been improved.

-- User-control of specialization/memoization point insertion is now
      possible; this enables dynamic choice of static values.

-- The file scheme.adt is now always automatically loaded, so
      user-programs need no longer contain the corresponding

-- The manual has been improved in different ways; it now contains an


                                                Mailing Address

                Anders Bondorf
                DIKU, Department of Computer Science
                University of Copenhagen
                Universitetsparken 1
                DK-2100 Copenhagen \O



                                Obtaining Similix via anonymous ftp:


login: anonymous
password: <your username, full e-mail address>
                    cd pub/diku/dists
                    get Similix.tar.Z

To decode the file Similix.tar.Z, run

                uncompress < Similix.tar.Z | tar xvpf -

A directory named


then appears. Now read the file Similix/README.

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.