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 manual. https://birchwood-abbey.net/~puck/Scheme/htmldir/user.html 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. https://birchwood-abbey.net/~puck/Scheme/ The user-visible changes are modest and fully described in the Pucked User Manual. Your brother in Scheme, Friar Puck _______________________________________________ MIT-Scheme-devel mailing list MIT-Scheme-devel@gnu.org https://lists.gnu.org/mailman/listinfo/mit-scheme-devel