|
Index of /spells/darcs/s42
|
Name Last modified Size Description
Parent Directory 21-Feb-2007 20:03 -
COPYING 24-Apr-2006 14:41 18k
HACKING 17-May-2006 13:31 1k
SConstruct 24-Mar-2007 15:49 11k
TODO 24-Apr-2006 14:41 1k
_darcs/ 24-Mar-2007 15:49 -
bin/ 01-May-2006 17:42 -
build.exec 01-Dec-2006 15:33 1k
build.scm 24-Mar-2007 15:49 12k
build.sh 09-Feb-2007 15:43 1k
c/ 23-Oct-2006 14:05 -
configs/ 24-Apr-2006 14:41 -
doc/ 24-Apr-2006 14:41 -
examples/ 02-Jun-2006 15:16 -
lib42/ 24-Mar-2007 15:49 -
rcs42/ 19-Jun-2006 11:35 -
scheme/ 24-Mar-2007 15:49 -
scheme42.scm 24-Apr-2006 14:41 1k
scripts/ 28-May-2006 14:09 -
s42 -- A set of extensions and libraries for Scheme 48
===========================================================
Features
========
Scheme 42 adds the following features to Scheme 48:
* Automatically download and install software components from the web,
comparable to systems like PLaneT (PLT Scheme) or CPAN (Perl),
based on a model similiar to ASDF (Common Lisp).
* An improved networking interface, which adds the following over the
networking capabilities in the SOCKETS structure in Scheme 48 1.3:
+ IPv6 support
+ Proper condition objects, so network failures can be handled
gracefully
+ Allows to specify local interface address and port number to
bind to.
+ Allows retrieval of remote and local network addresses by
introducing a connection disjoint type.
+ Allows plug-in of alternate host name resolvers; like the old interface, the
default resolver uses gethostbyname(), which block all threads. It is now
however possible to use a more sophisticated thread-respecting resolver,
like the one in SUNet.
The new network interface follows my proposal[0] for a
cross-implementation Scheme network API.
* A (incomplete) implementation of the pure-scheme FFI of PLT Scheme,
which is described in a paper by Eli Barzilay[1]. This is only
available when libffi is installed (see below).
Status
======
Scheme 42 is currently developing towards a first release, which is
expected in the first quarter of 2006. See TODO for information what
features still need to be implemented.
Installation
============
Prerequisites
-------------
* Scheme 48 1.3, http://www.s48.org/
* SCons, http://www.scons.org/
* libffi, optional, see [2]
SCons will eventually be replaced by conjure, a Scheme-based "make"
replacement.
Building from a tarball
-----------------------
Run "scons". "scons test" will run the test suites, but you need a
development version of scons for that to work; if you are using an
scons older than 0.96.91, use the following to run the testsuites:
./bin/scheme42 --introduce-systems spells/sys-def.scm,testeez/sys-def.scm --load-system testeez --open testeez.run --do-script spells/tests/tests.scm
Building from darcs
-------------------
The "s42" darcs repo this README resides in does not contain all code
needed to build Scheme 42, as parts of it are developed as separate
projects. Run this command to download the required library code:
./scripts/fetch
Then you can proceed as described in "Building from a tarball"
Running
=======
Either run the "scheme42" binary from the build directory or symlink
it somewhere in your path:
ln -s `pwd`/scheme42 /usr/local/bin/
Installing software from the Net
--------------------------------
There is currently an experimental packages repository online that can
be used to test if installing from the Internet works for you. Put
this in your ~/.scheme42.scm:
----<snip>----
(world-append "/some/path" '(experimental "http://download.gna.org/spells/bundles"))
----<snap>----
Replace "/some/path" with an existing, empty directory you have write
access to; the bundles will be downloaded and installed below that
directory. To enable bundle download in scheme42, use ,LOAD-SYSTEM
UNIVERSE.
You can list the system database with ,LIST-SYSTEMS. A system listed
with a state of "available" or "installed" can be loaded with
,LOAD-SYSTEM SYSTEM-NAME. Loading a system causes the config files
that define the interfaces and structures of the system, hence making
them available for ,OPEN-ing.
To update the list of available systems, use ,UPDATE-WORLDS, which
will fetch a list of available bundles and the systems they contain
from the configured bundle repositories, provided you have the
UNIVERSE package, which is comes pre-installed with s42.
You can deinstall bundles by simply removing their subdirectory below
the path specified to WORLD-APPEND and running ,UPDATE-WORLDS.
For development, you can symlink the directory of your project into
the configured path; if it contains a sys-def.scm file with system
definition(s), these systems will be available automatically.
Footnotes
=========
[0] http://yi.org/rotty/SchemeNetworkAPI.html
[1] http://repository.readscheme.org/ftp/papers/sw2004/barzilay.pdf
[2] Unfortunatly, libffi is part of GCC, and there is no official
stand-alone source distribution available; but your
distribution probably provides packages, otherwise,
you can try the libffi snapshots of sablevm, available from
http://sablevm.org/download/snapshot/
Plans are to either libffi in the Scheme 42 source.
Please report success/failure using these snapshots to
a.rottmann@gmx.at.
--
Andreas Rottmann <a.rottmann@gmx.at>, 2005-12-08 (last change: 2005-12-23)