Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

C to Common Lisp compiler

tree: b60783121d

Fetching latest commit…

Cannot retrieve the latest commit at this time

README
Vacietis is a C to Common Lisp compiler inspired by the Zeta-C
compiler for Lisp Machines
(http://www.bitsavers.org/bits/TI/Explorer/zeta-c/) and TCC
(http://bellard.org/tcc/).

The goal of Vacietis is to enable loading and running C code in a
Common Lisp application. To this effect Vacietis uses the host CL
calling convention for C functions and the CL package system for
function and variable names, in essence treating the host CL runtime
as a virtual machine.

Vacietis uses the memory model of Common Lisp as is, so sizeof of the
primitive data types (char, int, float etc.) is all 1. This shouldn't
be a problem for most C code, but some C programs claim to be portable
while making assumptions that things can be cast into an array of
chars to be manipulated. These programs won't work under Vacietis.

Source code is available at https://github.com/vsedach/vacietis

Portions of the Vacietis libc may be derived from Zeta-C.

Vacietis is authored by Vladimir Sedach <vsedach@gmail.com>

There is a Vacietis mailing list on the web:
http://groups.google.com/group/vacietis

Vacietis is licensed under the LLGPL (see the file LICENSE included
with the distribution for details).

TODO:
* enums
* function pointers
* libc stdio: printf/scanf, binary streams, error codes, fread/fwrite
* libc stddef: offsetof
* libc signal
* libc stdlib: div/ldiv, srand, atof, strtod, strtol, exit cleanup
* libc string
* libc time
* libc setjmp

Things that probably won't be supported:
* trying to cast arrays of chars to other types (mmap)
* any kind of GCC extension
Something went wrong with that request. Please try again.