QScheme - Introdution

The fastest scheme interpreter I know...

QScheme is distributed under the GNU General Public Licence

Introduction

Qscheme
News
Introduction
Whatis
Why
Features
Missing
Future
Download
Documentation
FAQ

 What's QScheme

QScheme is a small and fast Scheme interpreter. It's mostly R5RS conformant.

 Why another Scheme

I started to write QScheme because I wanted to use Scheme as extension language for a Midi Sequencer project. The sequencer itself was written in C and I planned to use Scheme to build the whole GUI.

I first started to code a prototype with SIOD and Tk. It was too slow. Impossible to display all notes of a simple song without waiting something like 20 seconds. To make it run, I should have to code most of the GUI in C and that was precisely what I wanted to avoid.

 QScheme features

QScheme has following features:

  • Speed: between 2 and 70 times faster than other Scheme interpreters. QScheme also beats some Scheme compiler. QScheme is faster than Perl, Pike, Tcl/Tk and Python. It's more or less as fast as Java.

  • Size: the interpreter size is something like 160k

  • Easy to interface with dynamic libraries. Most of the external functions and variable can be declared directly in Scheme, without any glue or interface code. (No special C coding).

  • Efficient error and exception handling with catch/throw.

  • Easy to extend. New type of Scheme objects may be added with minimal efforts.

  • Support for unix scripting.

  • Includes modular programming support.

  • Support Perl like regex. For example one can write:
    	(if (match #/^(\d+)/ line) (print (regex::$0))
    

  • More or less complete Gtk+ / GNOME / libglade bindings.

  • Process forking and piping.

  • Online documentation for builtin variables and functions.

  • Experimental prototype base object orientation.

  • New Native multithreading support (uses Posix threads).

  • New Socket interface. It's now easy to build a simple client / server on TCP/IP.

 Missing stuffs (sorry, but it's not perfect)

QScheme is unfortunately missing some features, mainly:

  • The call/cc is only partially implemented.

  • Not the full number stack. Only integer, bignum and float are implemented.

 Future of QScheme

First:

  • Write a real application and enriched QScheme with everything that is currently missing.

After that:

  • Implement the full numeric tower.

  • Try to achieve full compatibility with R5RS

  • Change compiler to directly generate compilable C source. Preliminary test shows that this type of code should run more or less 4 times faster than interpreted code.


D. Crettol dan@sof.ch Modifie le 13/06/2000 00:09:52.