Skip to content
uimPublic

About

A R5RS Scheme interpreter for embedded use

Resources

Stars

35 stars

Watchers

11 watching

Forks

Latest commit

 

History

2,203 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

What's SigScheme
----------------

SigScheme is a R5RS Scheme interpreter for embedded use.

  Homepage:
    http://code.google.com/p/sigscheme/

  Git repository:
    git clone https://github.com/uim/sigscheme.git


See following files for further information.

  - doc/spec.txt: specifications of SigScheme
  - QALog:        quality assurance state

Please report us if you find a problem. And if you have a time, run
'make-report.sh' and send us the result regardless of PASSed or FAILed. It
greatly helps the development, especially for non-PC platforms.

Mailinglist: sigscheme-ja@googlegroups.com


Features
--------

- Conforms to R5RS basically (not fully)
- R5RS hygienic macros
- Supports Following SRFIs
  - SRFI-0  : Feature-based conditional expansion construct
  - SRFI-1  : List Library
  - SRFI-2  : AND-LET*: an AND with local bindings, a guarded LET* special form
  - SRFI-6  : Basic String Ports
  - SRFI-8  : receive: Binding to multiple values
  - SRFI-9  : Defining Record Types
  - SRFI-22 : Running Scheme Scripts on Unix (partial)
  - SRFI-23 : Error Reporting Mechanism
  - SRFI-28 : Basic Format Strings
  - SRFI-34 : Exception Handling for Programs
  - SRFI-38 : External Representation for Data with Shared Structure (partial)
  - SRFI-43 : Vector library
  - SRFI-48 : Intermediate Format Strings
  - SRFI-55 : require-extension
  - SRFI-60 : Integer as Bits (partial)
  - SRFI-69 : Basic hash tables
  - SRFI-95 : Sorting and Merging
- R6RS: R6RS characters (partial and preliminary)
- Multibyte character encodings support
- define-macro
- let-optionals* for optional argument processing

See doc/spec.txt and doc/design.txt for furtuer information.


How to build
------------

SigScheme can be built with Meson or GNU Autotools. Meson is
recommended. GNU Autotools is still supported for compatibility but
it will be removed in the future.

Meson 0.63.0 or later and Ninja are required to build with Meson.

Run 'meson setup' with some options at the top directory.

  $ meson setup [-Dconf=CONF] [-Ddefault_encoding=ENCODING] build

(1) -Dconf=CONF

  This specifies a base configuration set. Select one from the list below
  suitable for your purpose.

    - full:    compile with full features but broken ones
    - regular: (default) compile with typically needed features
    - r5rs:    compile with strict R5RS conformances
    - r7rs:    compile with R7RS features
    - dev:     developer-friendly configuration
    - uim:     configure for uim

(2) -Ddefault_encoding=ENCODING

  SigScheme normally selects UTF-8 as default encoding. You can change it by
  this option as follows.

    $ meson setup -Ddefault_encoding=eucjp build

  Following encodings can be specified.

    - utf8
    - euccn
    - eucjp
    - euckr
    - sjis

(3) -DENCODING=true

  In addition to (2), you can enable other optional and switchable character
  encodings.

    $ meson setup -Ddefault_encoding=eucjp -Deucjp=true -Dsjis=true build

(4) -Dgc=GC

  SigScheme uses BDWGC (8.3.0 or later) or libgcroots to find GC roots. By
  default (-Dgc=auto), system BDWGC is used if it exists. Otherwise
  system libgcroots is used if it exists. Otherwise the bundled
  libgcroots is used. You can choose one explicitly as follows.

    - bdwgc:      use system BDWGC
    - gcroots:    use system libgcroots or the bundled libgcroots
    - tiny-subst: use tiny substitution in src/gcroots

  Use --force-fallback-for=gcroots to always use the bundled libgcroots.

    $ meson setup -Dgc=gcroots --force-fallback-for=gcroots build

Meson's built-in options are also available. For example, use
--buildtype=release for an optimized build and -Db_ndebug=true to
disable assertions.

See meson_options.txt or 'meson configure build' for all options. Each
--enable-FEATURE/--disable-FEATURE option of configure is available as
-DFEATURE=true/-DFEATURE=false. Note that '-' in FEATURE is replaced
with '_' and --enable-debug is -Ddebug_mode=true.

Then run 'meson compile'.

  $ meson compile -C build


With GNU Autotools
~~~~~~~~~~~~~~~~~~

GNU make is requied to build.

Run ./configure with some options at the top directory.

  $ ./configure [--enable-conf=CONF] [--enable-default-encoding=ENCODING]

Options are the same as Meson's ones: --enable-conf=CONF,
--enable-default-encoding=ENCODING, --enable-ENCODING and so on.

Then type 'make' at the top directory.

  $ make


Test
----

  $ meson test -C build

or

  $ make check


Installation
------------

  $ meson install -C build

or

  $ make install


How to use
----------

To run SigScheme in interactive mode, type as follows.

  $ sscm

To execute a Scheme script, specify it as argument.

  $ sscm <filename>


How to build unreleased version
-------------------------------

  $ git clone --recursive https://github.com/uim/sigscheme.git
  $ cd sigscheme
  $ ./setup.sh
  $ meson setup <YOUR_BUILD_OPTIONS> build
  $ meson compile -C build

or

  $ git clone --recursive https://github.com/uim/sigscheme.git
  $ cd sigscheme
  $ ./setup.sh
  $ ./autogen.sh
  $ ./configure --enable-maintainer-mode <YOUR_BUILD_OPTIONS>
  $ make -j$(nproc)

Acknowledgements
----------------

Some parts of this software had been funded by IPA (http://www.ipa.go.jp/)

About

A R5RS Scheme interpreter for embedded use

Resources

Stars

35 stars

Watchers

11 watching

Forks

Releases

Packages

Used by

Contributors

Languages