@dircategory Programming Languages
@direntry
* User: (mit-scheme-pucked/user).
- User Manual
+ User's Manual
@end direntry
@titlepage
can handle legacy @emph{or} Unicode strings, but new procedures may
only handle Unicode strings, and several old procedures are marked
deprecated.
+
+@item
+The microcode no longer has ``modules''. Systems like @code{(runtime
+crypto)} now autoload ``plugins'' that are much like the microcode
+modules except they use the C/FFI and can be built outside the
+microcode source tree.
+
+@item
+The @code{(runtime blowfish)}, @code{(runtime gdbm)} and
+@code{(runtime x-graphics)} packages now autoload plugins and are
+deprecated. Work-alike replacements @code{(blowfish)}, @code{(gdbm)}
+and @code{(x11 graphics)} should be used instead. Thus @code{(runtime
+blowfish)} should be replaced with @code{(blowfish)} in package
+descriptions, and a @code{(global-definitions blowfish/)} expression
+added.
+
+@item
+The @code{(runtime crypto)} package is similarly deprecated. Its
+bindings are unassigned until the corresponding plugin is loaded.
+When a band is restored these bindings are unassigned again. Thus a
+restored thread using them will quickly signal an error and can be
+aborted or restarted as appropriate. An @code{mcrypt-available?}
+binding is assigned a procedure that autoloads the mcrypt option. A
+restarted thread is assumed to begin again with a call to
+@code{mcrypt-available?} (or @code{load-option}).
@end itemize
The proposed changes to the core system are intended to produce a new
@section Experimental Changes
The experimental code in this ``pucked'' version is almost entirely
-contained in the plugins. The core was changed only to replace the
-microcode modules and hook the Gtk screen into Edwin. Neither change
-should be apparent to the casual user.
+contained in the plugins. The core was changed only to hook the Gtk
+screen into Edwin. This change should not be apparent to the casual
+user.
If your code does not hack Edwin and you previously said
you will probably need to load a screen plugin first, e.g.@:
@code{x11-screen}.
-@item
-The @code{(runtime blowfish)}, @code{(runtime gdbm)} and
-@code{(runtime x-graphics)} packages were removed. All of their
-bindings can now be found in the @code{(blowfish)}, @code{(gdbm)} and
-@code{(x11 graphics)} packages. Thus @code{(runtime blowfish)} should
-be replaced with @code{(blowfish)} in package descriptions, and a
-@code{(global-definitions blowfish/)} line added. Similar changes are
-needed if you are using @code{(runtime gdbm)} or @code{(runtime
-x-graphics)}.
-
-Two original bindings cannot be found in the new packages:
-@code{blowfish-available?} and @code{gdbm-available?}.
-Generally, @code{-available?} procedures are
-not supported. Plugins are unknown (cannot provide such procedures)
-until @emph{after} they successfully load (at which point such
-procedures are moot). Thus something like
-@code{(blowfish-available?)} should be replaced with
-@code{(plugin-available? "blowfish")}.
-
-@item
-The @code{(runtime crypto)} package is provided but deprecated. Its
-bindings are unassigned until the corresponding plugin is loaded.
-When a band is restored these bindings are unassigned again. Thus a
-restored thread using them will quickly signal an error and can be
-aborted or restarted as appropriate. An @code{mcrypt-available?}
-binding is assigned a procedure that autoloads the mcrypt option. A
-restarted thread is assumed to begin again with a call to
-@code{mcrypt-available?} (or @code{load-option}).
-
@item
Edwin has had a number of screen procedures turned into SOS generic
procedures, to support the experimental Gtk screen type. Such changes
versions of Ubuntu. (Normally you would upgrade to new versions of
Ubuntu to get new versions of Scheme.) However this means there may
be @emph{three} packages named @code{mit-scheme-pucked} with the
-@emph{same} version, each compiled for Ubuntu 16.04, 17.10 or 18.04.
+@emph{same} version, each compiled for Ubuntu 16.04, 18.04 or 18.10.
When you upgrade to a new version of Ubuntu you should first remove
the @code{mit-scheme-pucked} package (which will remove all of its
plugins), then re-install them after changing the source URL (e.g. to
@url{http://birchwood-abbey.net/ubuntu/18.04/}).
+@example
+sudo apt-get remove mit-scheme-pucked
+sudo add-apt-repository -r \
+ "deb http://birchwood-abbey.net/ubuntu/18.04/ birchwood main"
+sudo add-apt-repository \
+ "deb http://birchwood-abbey.net/ubuntu/18.10/ birchwood main"
+sudo apt-get update
+sudo apt-get install mit-scheme-pucked-x11-screen
+@end example
+
You can also download the package files and install them by hand.
Links to the available package files are listed on the project home
page.
@uref{https://birchwood-abbey.net/~puck/Scheme/}
@end example
-You will need to know your Ubuntu version (e.g. 16.10) and Debian
+You will need to know your Ubuntu version (e.g. 18.10) and Debian
machine architecture (e.g. amd64), then click on the corresponding
link. You will need to do this for your chosen plugin, all of the
plugins it requires, and Scheme itself (the @code{mit-scheme-pucked}