Go to file
OGINO Masanori 7685b84ad6 Rename initialize funtions of SRFIs to srfi_<n>.
To avoid conflictions of inits between SRFIs and others, inits in the
srfi nitro should be prefixed with srfi_. Without the convention, we may
need to use generic words such as string, vector, random, array, etc.

Moreover, there are SRFIs those subject is same (e.g. array may be used
by SRFI 25, 47, 58 and 63). Thus, we need a clear and conflict-free
naming convention.

Signed-off-by: OGINO Masanori <masanori.ogino@gmail.com>
2015-06-29 19:32:31 +09:00
bin don't track bin/picrin 2015-05-30 17:59:23 +09:00
contrib Rename initialize funtions of SRFIs to srfi_<n>. 2015-06-29 19:32:31 +09:00
docs update C API doc 2015-06-13 05:33:49 +09:00
etc emit more friendly error message on error from piclib loader 2015-06-26 13:20:49 +09:00
extlib/benz add symbol macro 2015-06-29 18:26:12 +09:00
lib abandon cmake 2015-05-29 20:42:26 +09:00
piclib/picrin [bugfix] remove import in (picrin experimental lambda) 2015-06-26 13:19:38 +09:00
src emit more friendly error message on error from piclib loader 2015-06-26 13:20:49 +09:00
t Refactor t/parameterize.scm with (picrin test). 2015-06-25 16:42:51 +09:00
.gitignore abandon cmake 2015-05-29 20:42:26 +09:00
.travis.yml abandon cmake 2015-05-29 20:42:26 +09:00
AUTHORS My name was changed 2015-01-04 05:20:33 +00:00
LICENSE wrong years in LICENSE file 2014-05-18 21:38:41 +09:00
Makefile don't define (picrin control escape) in callcc.c 2015-06-26 13:19:32 +09:00
README.md Refer `master` branch's build status badge. 2015-06-04 15:42:08 +09:00

README.md

Build Status Docs Status

Picrin is a lightweight R7RS scheme implementation written in pure C89. It contains a reasonably fast VM, an improved hygienic macro system, usuful contribution libraries, and simple but powerful C interface.

  • R7RS compatible
  • Reentrant design (all VM states are stored in single global state object)
  • Bytecode interpreter
  • Direct threaded VM
  • Internal representation by nan-boxing (available only on x64)
  • Conservative call/cc implementation (VM stack and native c stack can interleave)
  • Exact GC (simple mark and sweep, partially reference count)
  • String representation by rope
  • Hygienic macro transformers (syntactic closures, explicit and implicit renaming macros)
  • Extended library syntax

Documentation

See http://picrin.readthedocs.org/

Homepage

Currently picrin is hosted on Github. You can freely send a bug report or pull-request, and fork the repository.

https://github.com/picrin-scheme/picrin

IRC

Our chat room is at #picrin channel, chat.freenode.org. IRC logs here: https://botbot.me/freenode/picrin/

Build

Just type make in the project root directory. You will find an executable binary newly created at bin/ directory.

$ make

When you are building picrin on x86_64 system, PIC_NAN_BOXING flag is automatically turned on (see include/picrin/config.h for detail).

Install

make install target is provided. By default it installs picrin binary into /usr/local/bin/.

$ make install

Since picrin does not use autoconf, if you want to specify the install directory, pass the custom path to make via command line argument.

$ make install prefix=/path/to/dir

Requirement

To build Picrin Scheme from source code, some external libraries are required:

  • perl
  • regex.h of POSIX.1
  • libedit (optional)

Make command automatically turns on optional libraries if available. Picrin is mainly developed on Mac OS X and only tested on OS X or Ubuntu 14.04+. When you tried to run picrin on other platforms and found something was wrong with it, please send us an issue.

Authors

See AUTHORS