Schemik - data-parallel Scheme
******************************

Schemik is a high-level lexically-scoped implicitly-parallel dialect of R5RS Scheme and Common LISP, this means the parallel execution of programs is done independently of the programmer and each program written in Schemik always produces the same results no matter which parts of the program are executed simultaneously.

1. Features
===========
+ implicitly parallel evaluation (including side effects, mutations and continuations)
+ first-class macros and continuations
+ (experimental) support for software transactional memory (STM)
+ REPL with history and completion

2. Quick start
==============

2.1. Download
-------------
You can get the latest version of Schemik from the SourceForge: http://sourceforge.net/project/platformdownload.php?group_id=254130

To compile and run Schemik you will need the following libraries and tools:

+ The Boehm-Demers-Weiser conservative garbage collector (http://www.hpl.hp.com/personal/Hans_Boehm/gc/)
+ GLib 2.0 or higher
+ (optionally) Readline library (http://tiswww.case.edu/php/chet/readline/rltop.html)
+ Scons (http://www.scons.org/)

2.2. Installation
-----------------
The most preferable way to build Schemik is to use Scons (http://www.scons.org). To build it use scons without any argument, i.e., type in your shell: scons

To install Schemik use: scons install (optinally, you may use scons install prefix=/foo/bar).

To uninstall Schemik use: scons -c install.

Optionally, you can build Schemik using traditional makefile but it may be necessary to adjust configuration settings in the config.h

2.3. Running Schemik
--------------------
./schemik -t 0 -- starts Schemik in a sequential mode, i.e., using only one CPU core
./schemik -t 5 -- starts Schemik running in 5 threads
./schemik -t 10 -s scm/fib30.scm -- computes 30th fibonacci number using 10 threads and quits
./schemik -t 10 -c "(define (fib x) (if (< x 3) 1 (+ (fib (- x 1)) (fib (- x 2))))) (display (fib 33))" -- computes 33th fibonacci number using 10 threads and quits


3. License
==========
Schemik is distributed under the terms of GNU General Public License version 3, or (at your option) any later version (see COPYING).

Users in academia are kindly asked to cite the following resources if the software is used to pursue any research activities which may result in publications:

[1] Petr Krajca, Vilem Vychodil. Data Parallel Dialect of Scheme. In Proc. 24th Annual ACM Symposium on Applied Computing (ACM SAC '09), pp. 1938--1940. DOI: 10.1145/1529282.1529713

Remark: Despite the fact that Schemik is available under the terms of open source license, its development is closed. This means, publicly available release may not entirely conform to software as described in published papers. For certain reasons it may lack some features or some features may be implemented differently. If you have any questions or comments in regard to Schemik, feel free to contact me. (krajcap (at) inf.upol.cz)
