[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[MIT-Scheme-devel] Debian plugin packages

From: Friar Puck
Subject: [MIT-Scheme-devel] Debian plugin packages
Date: Fri, 12 Jan 2018 15:04:39 -0700

Bless me, brothers, for I have Schemed.  It has been 24 months since
my last confession.

My troubles building the Debian package on recent Ubuntus, where
libdb4 had disappeared, "inspired" me.  I expect I am not the only one
who wished then for a small, core Scheme with minimal dependencies,
augmented by separate packages each dependent on a few external
libraries.  Then core could be built without libdb4-dev and so could
an mit-scheme-x11-screen plugin package.  Edwin's build would not have
been affected.

Now that I have the microcode modules (except db4!) working(?) as
"plugins" it looks like that decade old dream is a reality.  I have a
Scheme with no microcode modules, that depends only on libtinfo
(terminfo/cap, not to mention libc, libm and libdl et al).  Its
plugins can be built outside src/ by automake.  Their "dist" tarballs
are all set for dpkg-buildpackage.

I call this Scheme mit-scheme-pucked, because it forks a bit from
mit-scheme.  I think of it as a prototype of 10.0.  Given that I've
changed the project name, it could have any version number but I chose
9.2.7; I'm starting with lucky 7 on the end of the major.minor of the
mit-scheme needed to build it.

In mit-scheme-pucked, microcode modules are not deprecated; they are
GONE.  The (runtime gdbm), (runtime blowfish) and (runtime crypto)
bindings are now autoloads that import bindings from the new (gdbm),
(blowfish) and (mcrypt) packages.  Full details are in the pucked user

Another significant change detailed there: Edwin casually refers to
gdbm and blowfish.  In mit-scheme-pucked these procedures have moved
from the core into plugins.  Thus pucked Edwin wants to be built (or
at least analyzed for free variable references) after the gdbm and
blowfish plugins are installed (or at least a list of their
global bindings is somehow made available).  Just to keep it simple,
pucked Edwin is now a plugin.  IMail too.

So in this curious World of Puck there are no microcode modules and
several plugins, including two named Edwin and IMail.  The automake
"dist" tarballs for the plugins are fed directly to dpkg-buildpackage
producing Debian packages that do all the necessary dependency
checking.  When you install mit-scheme-pucked-x11-screen you also get
mit-scheme-pucked-x11, mit-scheme-pucked-edwin, mit-scheme-pucked-
gdbm, mit-scheme-pucked-blowfish and mit-scheme-pucked.  If you
execute mit-scheme-pucked with the --edit commandline option, an
otherwise normal looking MIT/GNU Scheme will start up, perhaps a bit
faster, then autoload(!) Edwin (for 2 or 4 seconds), and finally
create what looks and behaves like ye ol' Edwin X screen.

I have tested the code but lightly.  I do exercise GCs and thread
switching a LOT; I often run M-x monitor-world for a week or more
(7×24×60×60 iterations) *with* the canvas demo twirling the one ring.

You can try it out, without disturbing your mit-scheme, by apt-get'ing
mit-scheme-pucked-x11-screen from Birchwood Abbey's package
repository, or by installing a i386/x86-64/svm1-32/svm1-64 binary
tarball and the necessary plugins.  Links are on my Scheme web page.

The user-visible changes are modest and fully described in the Pucked
User Manual.

Your brother in Scheme,
Friar Puck

reply via email to

[Prev in Thread] Current Thread [Next in Thread]