Go to file
Lassi Kortela 311abc4d5f Rewrite tools/mkboot.scm in Perl
Now we don't have to depend on a bin/picrin-bootstrap binary.

The old mkboot.scm filtered the Scheme source code through `read` and
`write`. This step removed extra whitespace and comments, but required
mkboot to depend on Scheme. In practice, the whitespace and comments
are not a problem, but the dependency is.

Discussed with Masanori Ogino.
2024-03-01 21:08:12 +09:00
contrib library system is now implemeted in scheme 2017-04-03 00:37:37 +09:00
docs struct pic_data * -> pic_value 2016-02-19 23:30:47 +09:00
etc generate boot.c from boot.scm 2017-03-23 22:47:55 +09:00
lib Rewrite tools/mkboot.scm in Perl 2024-03-01 21:08:12 +09:00
piclib library system is now implemeted in scheme 2017-04-03 00:37:37 +09:00
src WIP: reimplement library system in scheme 2017-04-02 22:15:38 +09:00
t add test for the prev bugfix 2017-04-02 01:21:24 +09:00
tools Rewrite tools/mkboot.scm in Perl 2024-03-01 21:08:12 +09:00
.gitattributes Help GitHub to detect *.sch file 2016-02-15 16:58:45 +08:00
.gitignore bin/picrin -> picrin 2017-03-22 23:59:22 +09:00
.travis.yml run `make` before run `make test` to test the binary built for usual use 2016-03-10 10:26:41 +09:00
AUTHORS update yuichi's e-mail address 2017-03-23 22:52:55 +09:00
LICENSE wrong years in LICENSE file 2014-05-18 21:38:41 +09:00
Makefile Rewrite tools/mkboot.scm in Perl 2024-03-01 21:08:12 +09:00
README.md Add status note 2024-03-01 10:31:41 +09:00


The project is in hiatus and being archived soon...

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, useful 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


See http://picrin.readthedocs.org/


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



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).


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


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.