04 March 2017


I came across recently a 30 day trial version of the XESS-4.0 spreadsheet, © 1990-1998 Applied Information Systems and others, from the now dissolved Chapel Hill, N.C., based company

This was prior to Sun Microsystems having with StarOffice 6.0 converted their calc program's
file format to use XML, and the Microsoft® Excel 2002 conversion of .xls to .xlsx.

XESS .xs4 files did not use XML, and the spreadsheet had itself some innovative features.

Possibly XESS was an acronym for X Engineering Software Systems.

I have been somewhat curious of StarOffice's interface to unixODBC, but never have allocated
the time to examine that interface.

29 January 2017

patching sexpr

System: Slackware Linux (version 14.0)
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz
Deps: ghc-7.8.4-i386-unknown-linux-deb7.tar.xz

This entry is not finished yet.

Looking at /sexpr-0.2.1/Codec/Sexpr/Internal.hs it appears feasible to patch
sexpr-0.2.1.tar.gz to use QuickCheck2, to run on a bootstrapped ghc and/or
on HaskellPlatform.




With the QuckCheck version I have installed being 2.7.6,
running a SlackBuild script I authored for the above sexpr
version outputs the following, owing to the sexpr version
being written for QuickCheck <2.1.

bash-4.2# ./haskell-sexpr.SlackBuild
Configuring sexpr-0.2.1...
Building sexpr-0.2.1...
Preprocessing library sexpr-0.2.1...
[1 of 4] Compiling Codec.Sexpr.Internal ( Codec/Sexpr/Internal.hs, dist/build/Codec/Sexpr/Internal.o )

    `coarbitrary' is not a (visible) method of class `Arbitrary'

The file /sexpr-0.2.1/Codec/Sexpr/Tests.hs also imports Test.QuickCheck.

See also:

12 January 2017

patching ESS

System: Slackware Linux (version 14.0)
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz
Deps: ess-16.10.zip, cl-lib-0.6.1.el,

The development version with the below patches and
others committed is available as a github clone and/
or download, the latter as ESS-master.zip. 

Looking at the release notes for emacs-24.3 it appears feasible to patch ess-16.10 to
run on Slackware 14.0 (or other Un*x distros) with emacs-24.2.


" ...An update for the Common Lisp emulation library."
" ...the changes in Emacs 24.3 are relatively minor."


Read about the update.

bash-4.2# cd /tmp
bash-4.2# tar xf emacs-24.3.tar.gz
bash-4.2# grep -n "Common Lisp emulation" emacs-24.3/etc/NEWS
247:** Common Lisp emulation (CL)

bash-4.2# head -n 258 emacs-24.3/etc/NEWS | tail -12
** Common Lisp emulation (CL)

*** CL's main entry is now (require 'cl-lib).
`cl-lib' is like the old `cl' except that it uses the namespace cleanly;
i.e., all its definitions have the "cl-" prefix (and internal definitions
use the "cl--" prefix).

If `cl' provided a feature under the name `foo', then `cl-lib'
provides it under the name `cl-foo' instead; with the exceptions of the
few `cl' definitions that had to use `foo*' to avoid conflicts with
pre-existing Elisp entities.  These have been renamed to `cl-foo'
rather than `cl-foo*'.

Check for any new macros.

bash-4.2# grep "New macros" emacs-24.3/etc/NEWS
** New macros `setq-local' and `defvar-local'.


Download ess-16.10.zip, extract it, and move the directory.

bash-4.2# unzip ess-16.10.zip


bash-4.2# mv ess-16.10 /usr/share/emacs/site-lisp/ess

Check if ess-16.10 used cl-lib and the new macros.

bash-4.2# grep -r cl-lib /usr/share/emacs/site-lisp/ess/lisp
lisp/ess-r-syntax.el:(require 'cl-lib)

bash-4.2# grep -r defvar-local /usr/share/emacs/site-lisp/ess/lisp
lisp/ess-generics.el:      (defvar-local ,funname nil ,(format "When defined this function
 is called by `%s'." name))
lisp/ess-r-d.el:(defvar-local ess-r-evaluation-env nil
lisp/ess-r-d.el:(defvar-local ess-r--evaluation-env-mode-line
lisp/ess-r-package.el:(defvar-local ess-r-package-info nil
lisp/ess-tracebug.el:(defvar-local ess--dbg-mode-line-debug
lisp/ess-tracebug.el:(defvar-local ess--dbg-mode-line-error-action
lisp/ess-utils.el:(defvar-local ess-buffer-has-chunks nil

bash-4.2# grep -r setq-local /usr/share/emacs/site-lisp/ess/lisp
lisp/ess-help.el:  (if ess-mode-syntax-table ;;set in advance by ess-setq-local
lisp/ess-help.el:  (setq-local show-trailing-whitespace nil)
lisp/ess-inf.el:      (setq-local jit-lock-chunk-size inferior-ess-jit-lock-chunk-size))
lisp/ess-roxy.el:          (setq-local ess-buffer-has-chunks t)
lisp/ess-roxy.el:          (setq-local syntax-propertize-function #'ess-roxy-syntax-propertize)
lisp/ess-roxy.el:          (setq-local font-lock-fontify-region-function #'ess-roxy-fontify-region)
lisp/ess-roxy.el:          (setq-local font-lock-unfontify-region-function #'ess-roxy-unfontify-region)))
lisp/ess-roxy.el:    (setq-local syntax-propertize-function nil)
lisp/ess-roxy.el:    (setq-local font-lock-fontify-region-function nil)
lisp/ess-roxy.el:    (setq-local font-lock-unfontify-region-function nil)
lisp/ess-roxy.el:  (setq-local paragraph-start (concat "\\(" ess-roxy-re "\\)*"paragraph-start))
lisp/ess-roxy.el:  (setq-local paragraph-separate (concat "\\(" ess-roxy-re "\\)*" paragraph-separate))
lisp/ess-roxy.el:  (setq-local adaptive-fill-function 'ess-roxy-adaptive-fill-function))

bash-4.2# grep -r setq-local /usr/share/emacs/site-lisp/ess/test
test/ess-literate-tests.el:      (setq-local file-local-variables-alist (copy-alist local-variables))
test/literate/code-fill.R:##! (setq-local fill-column 40)
test/literate/code-fill.R:##! (setq-local fill-column 40)
test/literate/code-fill.R:##! (setq-local fill-column 42)


Download cl-lib-0.6.1.el, rename it to cl-lib.el, create a byte-compiled version,
gzip cl-lib.el, and move the two files to /usr/share/emacs/24.2/lisp/emacs-lisp.

bash-4.2# mv cl-lib-0.6.1.el cl-lib.el
bash-4.2# emacs -batch -f batch-byte-compile cl-lib.el

In toplevel form:
cl-lib.el:74:1:Warning: cl package required at runtime
Wrote /tmp/cl-lib.elc
bash-4.2# gzip -n -9 cl-lib.el
bash-4.2# file cl-lib.el.gz
cl-lib.el.gz: gzip compressed data, from Unix, max compression
bash-4.2# mv cl-lib.el.gz /usr/share/emacs/24.2/lisp/emacs-lisp
bash-4.2# mv cl-lib.elc /usr/share/emacs/24.2/lisp/emacs-lisp


Download julia-emacs-master.zip, extract it, and move
julia-mode.el to /usr/share/emacs/site-lisp/ess/lisp.

bash-4.2# unzip julia-emacs-master.zip


bash-4.2# mv julia-emacs-master/julia-mode.el \
> /usr/share/emacs/site-lisp/ess/lisp

Patches committed on 10, 14, and 18 January 2017, respectively for a backwards
compatibility definition for defvar-local, allocation for pcase.el (emacs-24.2/24.1)
specifications, and a backward compatibility definition for setq-local; the macro
defines based on those found in the file emacs-24.3/lisp/subr.el.

10. jan. 2017 09.57 CET

diff --git a/lisp/ess-compat.el b/lisp/ess-compat.el
index 6910877..d706a34 100644
--- a/lisp/ess-compat.el
+++ b/lisp/ess-compat.el
@@ -1,6 +1,6 @@
 ;;; ess-compat.el --- simple determination of Emacs/XEmacs and version #.

-;; Copyright (C) 2000--2005 A.J. Rossini, Richard M. Heiberger, Martin
+;; Copyright (C) 2000--2017 A.J. Rossini, Richard M. Heiberger, Martin
 ;;      Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen.

 ;; Author: A.J. Rossini <rossini@biostat.washington.edu>
 @@ -278,6 +278,18 @@ mode is enabled.  Usually, such commands should use
 also checks the value of `use-empty-active-region'."
     (and transient-mark-mode mark-active)))

+;; for emacs <= 24.2 :
+(unless (fboundp 'defvar-local)
+  (defmacro defvar-local (var val &optional docstring)
+    "Define VAR as a buffer-local variable with default value VAL.
+Like `defvar' but additionally marks the variable as being automatically
+buffer-local wherever it is set."
+    (declare (debug defvar) (doc-string 3))
+    ;; Can't use backquote here, it's too early in the bootstrap.
+    (list 'progn (list 'defvar var val docstring)
+          (list 'make-variable-buffer-local (list 'quote var)))))
 (provide 'ess-compat)

   ; Local variables section

14. jan. 2017 20.37 CET

diff --git a/lisp/ess-r-syntax.el b/lisp/ess-r-syntax.el
index 4ac34f30..26ff7d18 100644
--- a/lisp/ess-r-syntax.el
+++ b/lisp/ess-r-syntax.el
@@ -189,7 +189,7 @@ Cons cell containing the token type and string representation."
 ;; backward
 (defun ess-climb-token--operator ()
   (when (pcase (char-before)
-          ((or ?+ ?/ ?^ ?~ ?? ?!)
+          ((or `?+ `?/ `?^ `?~ `?? `?!)
            (prog1 (ess-backward-char)
 @@ -198,7 +198,7 @@ Cons cell containing the token type and string representation."
                  (ess-climb-token--char ?:)
                  (ess-climb-token--char ?>)
                  (ess-climb-token--char ?<))))
-          ((or ?& ?| ?* ?@ ?$)
+          ((or `?& `?| `?* `?@ `?$)
            (prog1 (ess-backward-char)
              (ess-climb-token--char (char-after))))
 @@ -364,7 +364,7 @@ reached."
   (let ((refined-type
          (pcase (ess-token-type token)
            ;; Parameter assignment
-           ("="
+           (`"="
               (goto-char (ess-token-start token))
               (let ((containing-sexp (ess-containing-sexp-position)))
 @@ -377,14 +377,14 @@ reached."
                                   (ess-token-before= '("," "(")))))
            ;; Quoted identifiers
-           ("string"
+           (`"string"
             (when (or
                    ;; Quoted parameter names
                    (ess-refined-token= (ess-token-after) "param-assign")
                    ;; Quoted call names
                    (ess-token-after= "("))
-           ((or "(" ")")
+           ((or `"(" `")")
             (or (save-excursion
                   (if (ess-token-close-delimiter-p token)
                       (ess-climb-paired-delims nil token)
 @@ -397,7 +397,7 @@ reached."
                     (ess-climb-paired-delims ")" token)
                     (when (ess-token-before= '("identifier" "string" ")" "]" "]]" "}"))
-           ((or "{" "}")
+           ((or `"{" `"}")
               (unless (ess-climb-paired-delims "}" token)
                 (goto-char (ess-token-start token)))

18. jan. 2017 11.32 CET

diff --git a/lisp/ess-compat.el b/lisp/ess-compat.el
index d706a34..175f8f2 100644
--- a/lisp/ess-compat.el
+++ b/lisp/ess-compat.el
@@ -289,6 +289,12 @@ buffer-local wherever it is set."
     (list 'progn (list 'defvar var val docstring)
           (list 'make-variable-buffer-local (list 'quote var)))))

+(unless (fboundp 'setq-local)
+  (defmacro setq-local (var val)
+    "Set variable VAR to value VAL in current buffer."
+    ;; Can't use backquote here, it's too early in the bootstrap.
+    (list 'set (list 'make-local-variable (list 'quote var)) val)))

 (provide 'ess-compat)

Cd'ing to the ess directory and running 'make' byte-compiled on the
patched ess-16.10 all relevent .el files, and 'make test' passed the 17

bash-4.2# cd /usr/share/emacs
bash-4.2# CWD=$(pwd)
bash-4.2# mkdir logs
bash-4.2# cd site-lisp/ess
bash-4.2# make >$CWD/logs/make_2017-01-19.log 2>&1
bash-4.2# make test>$CWD/logs/make_test_2017-01-19.log 2>&1
bash-4.2# tail -n3 $CWD/logs/make_test_2017-01-19.log

Ran 17 tests, 17 results as expected (2017-01-19 02:42:38+0100)

bash-4.2# exit

NB: If you have a network connection julia-mode.el will be automatically downloaded.

06 January 2017


System: Microsoft Windows 2K, XP, Vista, 7, 8.0
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz.

Installation of es-0.9.1 in SFU/SUA Interix.


In the SUA Interix 6.0 download for MS® Vista (Ultimate and Enterprise Editions) there's a file
'gcc_fullbuild' - found after extracting gcc4.2.tgz - which contains these prerequisite programs
with version numbers, for compiling gcc-4.2.0; this file is available in the sidebar as the down-
load is 473 MB; I've added indent (a flex dependency) and omitted gettext-0.16 in the below.


These compile favourably utilising CFLAGS="-O2 -march=i586", and the configure script
arguments as '--prefix=/usr --build=i586-pc-interix3 --host=i586-pc-interix3'.

The following command run in the source directories - if one builds within the source tree -
will strip to external PDB the compiled executables and libraries.

$ find . | xargs file | grep "executable" | grep PE | cut -f 1 -d : | \
> xargs strip --strip-unneeded 2> /dev/null

Remove or rename /bin/make and move GNU make to /bin, then add a symbolic link as
gmake, remove or rename /bin/m4 and move GNU m4 to /bin, remove or rename /bin/sed
and move GNU sed to /bin, before running 'gmake install' on bison-2.3 rename or remove
/bin/yacc and rename or remove /usr/lib/liby.a, which can be replaced by the bison version,
and before running 'gmake install' on flex rename or remove /bin/lex; the file /usr/lib/libl.a
(the lex library) can likewise be removed or renamed.

The shell es-0.9.1.tar.gz will then compile on gcc-3.3 after deleting
the '-Wno-missing-field-initializers' and '-Wno-clobbered' CFLAGS
from the configure script's generated Makefile.

$ echo $CC
$ cd es-0.9.1
$ CFLAGS="-O2 -march=i586" \
> ./configure --prefix=/usr \
> --build=i586-pc-interix3 \
> --host=i586-pc-interix3



Edit your Makefile (as above).

$ gmake


$ find . | xargs file | grep "executable" | grep PE | cut -f 1 -d : | \
> xargs strip --strip-unneeded 2> /dev/null

$ mv es /bin
$ exit

NB: These installation instructions don't allocate for a line-editing library;
for some reason compiling with readline-6.1 results in dead Æ, Ø and Å
keys. Haahr's .esrc in the examples directory in part pertains to a NeXT
machine, and Jamesh's .esrc file likely won't work without a line-editing
library. However, starting SFU/SUA's Korn shell inside GNU emacs and
then switching to es is satisfactory.

(setq explicit-shell-file-name "C:\\WINDOWS\\system32\\posix.exe")
(setq explicit-posix.exe-args '("/u" "/c" "/bin/ksh" "-l"))

The es(1) and xs(1) man pages are similar.

09 April 2016


System: Microsoft Windows XP Home Edition
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz
Deps: makebootfat-1.4-windows-pentium.zip,

This post is about creating a bootable flash stick
with a Plan 9 distribution.

A Danish (dk) keyboard map has been added in
release 9front-5321.f8c704dc01c.iso.bz2.

The updated Estonian (ee) keyboard map which
I submitted (9front-5321.f8c704dc01c.iso.bz2)
by mistake had two mode 4 lines near the end,
those should not be there.

that link's description should read however

remove Š and Ž from estonian keymap

It is premature at this point of time but a second
revision of the Estonian kbmap may be possible
enabling Shift + AltGr to be utilised for rendering
the uppercase Š and Ž in a future 9front release.

One of the developers mentioned this option, which
however I'm not familiar with.

you know, there's also a compose sequence see /lib/keyboard.

[alt] vs -> š


[alt] vS -> Š

A Finnish (fi) keyboard map accompanies the
distribution; I presume that map also works for

A Norwegian (no) keyboard map accompanies
the distribution.

Untested Arabic (ara), Belarusian (by), and Icelandic
(is) keyboard maps are also available.

The /sys/lib/kbmap/ua files accompanying Plan 9
distributions have a perhaps outdated mapping of
ґ and Ґ to key 41; on current peripherials ё and Ё
are mapped to 41.

map ґ and Ґ as follows

0       86       'ґ
1       86       'Ґ
3       22       'ґ

Using Shift + AltGr for rendering the
uppercase Ґ is not yet supported.



Unpack the .zip file and copy the .exe to the root of your directory tree,
and extract the .bz2 file (e.g., with 7-Zip), and then the resultant .iso.

Create a directory to temporarily store the files to be included on a usb stick.

C:\>MKDIR source


From the extracted 9front \386 directory copy the files 9bootfat, 9pcf, mbr, and
pbs, placing these along with the .iso file in C:\source, and create in C:\source
a UNIX format (with an ending newline) plan9.ini file with the following content:


Run the following command to create a usb stick from which one can boot 9front.

C:\>makebootfat.exe -m source\mbr -b source\pbs -o usb source


The vgasize on my Netbook monitor (1024x600) isn't supported so I'm not providing
instructions here for an installation. For further information, e.g., if one has an extra
desktop and wants to install 9front (as a stand-alone machine), see the following link:


NB: Without an installation one does not have write permissions. To run with an
alternative keymap type at a prompt 'kbmap' which should then display a table of
available keymaps, use mouse button 3 to click on the desired map, and then when
opening a new terminal this should be in the desired keymap. Typing an argument
for kbmap didn't seem to work for me (a single entry in the table when clicked on
didn't effectuate a change in new terminals). One of the developers has suggested
copying your preferred kbmap file to /dev/kbmap; I presume at that location that it
is sourced as your default kbmap. The source distribution makebootfat-1.4.tar.gz
compiles on GNU/Linux, but did not seem to set the flag as bootable on the flash

*e820=1 0x0000000000000000 0x000000000009f800 2 0x000000000009f800 0x00000000000
a0000 2 0x00000000000dc000 0x0000000000100000 1 0x0000000000100000 0x000000003f6
d0000 2 0x000000003f6d0000 0x000000003f6e2000 4 0x000000003f6e2000 0x000000003f6
e3000 2 0x000000003f6e3000 0x000000003f700000 2 0x000000003f700000 0x000000003f8
00000 2 0x000000003f800000 0x0000000040000000 2 0x00000000e0000000 0x00000000f00
00000 2 0x00000000fec00000 0x00000000fec10000 2 0x00000000fed00000 0x00000000fed
00400 2 0x00000000fed14000 0x00000000fed18000 2 0x00000000fed18000 0x00000000fed
19000 2 0x00000000fed19000 0x00000000fed1a000 2 0x00000000fed1c000 0x00000000fed
20000 2 0x00000000fed20000 0x00000000fed90000 2 0x00000000fee00000 0x00000000fee
01000 2 0x00000000ff000000 0x0000000100000000

Plan 9

starting /bin/rc
126 holes free
0x0001a000 0x0009f000 544768
0x004d3000 0x0ffff000 263372800
263917568 bytes free
cpu: 1596MHz GenuineIntel Atom (AX 000106C2 CX 0040C390 DX BFE9FBFF)
LAPIC: fee00000 0xe0000000
ELCR: 0C20
cpu0: lapic clock at 133MHz
#I0: yuk: 1000Mbps port 0xF0200000 irq 5: 002454034864
#A0: hda mem e006000 irq 5
#A0: codec #0, vendor 10ec0272, rev 00100001
1015M memory: 256 M kernel data, 758M user, 1383M swap

/dev/sdC0: WDC WD1600BEVT-222CT0
/dev/sdU98d33: SanDisk Cruzer Fit 1.27
/dev/sdU98d33/dos dos
/shr/sdU98d33/9front-5126.47bef620b3a3.iso 9660
bootargs is (tcp, il, local!device)[local!/shr/sdU98d33/9front-5126.47bef620b3a3.iso]

init: starting /bin/rc
cirno Apr 5 07:22:42 starting dos resolver on /net
vgasize is (text, 640x480x8, 1024x768x16, ...) [1024x768x16] 800x600x32
monitor is (vesa, xga, lcd, ...) [vesa]

On standalone machines, e.g., running off a flash stick, it is impossible to do anything after
invoking bare 'fshalt'; using the command with the -r argument will reboot the computer and
before an OS is loaded one can remove the flash stick, so as to boot the hard drive's OS.

term% fshalt -r

done halting


NB: I noticed the Caps Lock key doesn't work after posting this.

16 March 2016


System: Slackware Linux (version 14.0)
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz
Deps: weirdx-1.0.32.tar.gz

This entry is about running plan9port's rio window manager logged in
as one user, then opening a Java window into which will be loaded an
X terminal, switching in that xterm to another user and running GUI
applications inside the Java window.


One needs a JDK installation, instructions for which are located
in the /extra directory of Slackware distributions. I've used early
as J2SE 1.5.0_01 from Slackware version 10.1. JRE will work,
excepting you can't compile files for other keyboard layouts than
those (gb, de, and jp106) which ship with 1990's circa software.

Boot into the default runlevel 3.

Welcome to Linux 3.2.29-smp (tty1)
darkstar login: glen
Linux 3.2.29-smp
glen@darkstar:~$ startx -- :1 vt8

Use mouse button 3 to access the menu, select New,
then use mouse button 3 to draw a window.

Check if you're on a non-English keyboard.

sh-4.2$ setxkbmap -query

If you're on an unsupported keyboard run this command.

sh-4.2$ setxkbmap --layout us

Start WeirdX in the background
and xterm on DISPLAY :2.0.

sh-4.2$ cd /tmp/weirdx/misc
sh-4.2$ java -jar weirdx.jar &
[1] 2121
sh-4.2$ xterm -display :2.0 -geometry 80x20-1-1 &
[2] 2135

In xterm switch to another user as a login shell,
which will add the variables from /etc/profile.d,
into your shell. If that user is already logged in,
e.g., on another tty, omit the '--login' argument; the
shell within which one runs the su command will
retain a non-login status, but additional terminals
started from twm's mouse accessed menu will
appear as login shells.

sh-4.2$ su felix --login

Start a tab window manager (twm).

felix@darkstar:~$ twm -f /tmp/weirdx/misc/twmrc &
[1] 2166
felix@darkstar:~$ cd $HOME

Qt applications will miss the Xlib extension SYNC in WeirdX.

The GTK+ applications wanting access & write permissions to
freedesktop's ~/.local/share/recently-used.xbel won't complain
(issue warnings) when started under a twm. However owing to
the limitations of RANDR to run only one window manager per
screen, having rio running on DISPLAY :1, DISPLAY :2.0 will
lack support for the Xlib extension for a running twm.

Tk applications and athena widgets render favourably.

When finished with the session, use the mouse accessible
menu to Exit; clicking the mouse again in xterm and typing
'exit' returns the shell to the user glen.

Kill the xterm PID from 9term
and then the WeirdX PID.

I first used JCraft's software with a Microsoft® XP
installation of SFU 3.5 Interix. That platform does
not exhibit the above issue with RANDR though I
occasionally have seen a "blacked out" effect on a
widget's dropdown menu entry after having clicked
on it; gvim compiled with the athena toolkit.

I might create Scandinavian languages' keymap and
key modifier files; uncommenting the following line in
C:\weirdx\misc\config\props.and starting WeirdX on
my Netbook I note though that AltGr does not work -
having set the Windows keyboard to DE - and with
CapsLock pressed the typing of numbers results in
the equivalent of Shift + number having been typed.


X clients can also be started from remote Un*x
machines, the client applications appearing in
the running X Window System server's display.

I have neither tried Java GUIs nor XForms Toolkit
applications with WeirdX; in the sidebar there are
for example two Java programs as RAnalyticFlow
and SQuirreL SQL Client.

Rudimentary GUI design is an interesting skill.

On Linux from plan9ports's event.c [line 197] is
output "rio: bad mapreq c %p w %x, rescanning\n"
when attempting to run p9p's rio inside WeirdX.

In terms of the differences in ELF versus PE32
interaction between an MS® machine with Interix
and a Un*x network might be possible utilising
multiple Tcl interpreters.

05 March 2016


System: Slackware Linux (version 14.0)
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz
Deps: es-0.9.tar.gz

This post will be about compiling the extensible shell (es).



There are two options for line editing, GNU readline (default), and the UNIX port
of the NetBSD libedit library. The latter - even with '--enable-widec' added to the
configure arguments - appears to create dead keys on Scandinvian keyboards.

If the libedit library is chosen, e.g., for UK/US only keyboards, run the configure script
without any arguments for 'Optional Packages', and hand edit afterwords the config.h
and Makefile.


- /*#undef HAVE_LIBEDITLINE */


- LIBS = $(ADDLIBS) -lreadline -ltermcap
+ LIBS = $(ADDLIBS) -ledit -ltermcap

Then run 'make'.

Based on es-0.9beta is also (albeit with some language changes) a C++ version
where the following line (using automake < 1.12) will create a configure script.

bash-4.2# autoreconf -i




Add '--enable-cplusplus' to the configure arguments in
the gc.SlackBuild.

Slackware current (i.e., automake >=1.12) would use the
newer frytvm-XS-c9a0b29.tar.gz.

The XS configure script includes an option as '--enable-lisptrees'; sexprs
along with [Plan 9] ndb(6)-like data structures are among the alternatives
to the use of XML.

The es(1) and xs(1) man pages are similar.