Introduction

This is a port of the Stalin to CHICKEN, that is, Stalin hosted on the CHICKEN Scheme system. Stalin compiles a subset of R4RS Scheme to C code, which can subsequently be compiled to highly efficient self-contained executables.

Requirements

libgc, the Boehm garbage collector must be installed and available in your linker path.

Usage

 chicken-stalin [OPTION ...] FILENAME

See the Stalin manual for information about the available command line options and general usage information.

Interfacing to CHICKEN code

A preliminary and rather clunky way of interfacing Stalin code with chicken-compiled code is provided. The extension stalin-externals provides a macro named define-stalin-external that allows defining entry-points which Stalin code can call in an embedded CHICKEN-compiled library.

Consider the file mixed.scm:

 ; mixed.scm - CHICKEN code
 
 (require-extension stalin-externals)
 
 (define-stalin-external (foo (int x) (c-string y)) c-string
   (print "got: " x " and " y)
   "hello")
 
 (return-to-host)

A Stalin application uses this interface:

 ; mixed-stalin.scm
 (include "mixed-externals.scm")
 
 (display "starting...\n")
 (define x (foo 33 "test"))
 (display x)
 (newline)

Compiling mixed.scm will generate two files named mixed-externals.scm and mixed-externals.h. The C header file is used by the Stalin foreign-procedure interface and mixed-externals.scm defines the calling procedures for the CHICKEN entry points. Now we compiled mixed.scm as an embedded (that is without a main function) program:

 % csc -ce mixed.scm -X stalin-externals.scm
 % chicken-stalin -On -c mixed-stalin.scm
 % csc mixed.o mixed-stalin.c -C -I. -o mixed
 % ./mixed

Notes

Extensions

The following extensions have been added to this version of stalin:

Platforms

The compiler has been tested on Mac OS X 10.4 (ppc), and Linux (x86, amd64)

Limitations

Authors

Jeffrey Mark Siskind, port to CHICKEN by felix winkelmann

Version

0.11.1
Initial version

License

Copyright 1993, 1994, and 1995 University of Toronto. All rights reserved.
Copyright 1996 Technion. All rights reserved.
Copyright 1996 and 1997 University of Vermont. All rights reserved.
Copyright 1997, 1998, 1999, 2000, and 2001 NEC Research Institute, Inc. All
rights reserved.
Copyright 2002, 2003, 2004, 2005, and 2006 Purdue University. All rights
reserved.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
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, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.