Software (co)developed by Henning Makholm

2009-07-03 Front page > software

These are software systems I have done major development work on.

Things of (possibly) general interest


Xcftools is a set of fast command-line tools for extracting information from the Gimp's native file format XCF. The tools are designed to allow efficient use of layered XCF files as sources in a build system that use 'make' and similar tools to manage automatic processing of the graphics. These tools work independently of the Gimp engine and do not require the Gimp to even be installed.

converts XCF files to ppm, pgm or pbm formats, flattening layers if necessary. If the image contains transparency, an alpha map can be written to a separate file, or a background color can be specified on the command line.
converts XCF files to PNG format, flattening layers if necessary. Transparency can either be left in the image, or a background color provided on the command line.
lists information about layers in an XCF file.

The tools can either flatten the XCF file as given, or extract specific layers named on the command line.

Licensed as GPL2. Sources at, and also in Debian starting with the "etch" release.


Mosmake is a no-nonsense recomplication manager for large multi-unit projects written in Moscow ML. It works with GNU make to give intelligent recompilation management that is sensitive to whether source file changes change the interface or just the implementation of a module.

Licenced as GPL2, but can be used with non-GPL projects.


C-Mix is an automatic partial evaluator for portable C (according to the 1989 ISO standard). Version 2 was rewritten from scratch by myself, Jens Peter Secher and Arne Glenstrup. Development is currently dormant, and there is no real support for it.

Has its own (barely free) license, and is available at There is an official Debian package.


Yante Ain't No Terminal Emulator. It is mostly the same as xterm, except that it has no pretentions of emulating a VT52/100/220 keyboard.

Leaving the paradigm of emulating a legacy keyboard has several benefits. First, it allows a simple and uniform form of keyboard escape sequences to be used. This means that Yante is less sensible to buggy client programs (such as bash or libreadline) that fail to keep track of the VT100 keyboard state. Second, it allows more precise infomation - all modifier/keysyms can be represented, and an Emacs running inside Yante gets almost as precise keypress events as Emacs running in its own window, even bizarre events like meta-hyper-kp-end. Third, the translation is well-defined, unlike in the xterm family where there are several different ways of mapping X11 keysyms to the virtual VTxxx keys. There is no risk of running into a subtly wrong terminfo description - if the one you get works with Yante at all, it almost certainly does the Right Thing.

Covered by various MIT/X/BSD licenses, Yante is available at Infrastructure to build a Debian package is included.


Kismet is a double-entry ledger program for small societies and organisations. It is written for my own use but has also seen use by other family members who kept account for various societies.

This is a Windows program written in Pascal. If somebody frames me for a murder and I end up in jail with nothing else to do, I will probably rewrite it for a real operating system. Contact me if you want the Pascal sources or an executable.

Downloadable research prototypes

Research prototypes are mostly proof-of-concept software that exists in order to show that the theory I have developed can be implemented and do interesting things in practise.

Type inference for Martini

A research prototype for my work on type systems for mixin modules and record concatenation. License status is still a bit murky, but it is available from as source as well as an on-line web interface.

Type inference for Poly*

A research prototype for my work on type systems for mobility calculi. Licenced as GPL, available from as source as well as an on-line web interface.

The RegFun prototype

A prototype implementation of the HMN region type system, presented in the PPDP'01 paper by Fritz Henglein, myself, and Henning Niss. The prototype contains a region inference implementation (done by me) and a compiler that generates C from the RegFun language (done by Henning Niss).

Available under a MIT/X-like license (though the source does not say so explicitly) from


The world's first program specializer that Jones-optimally specialized a strongly-typed self-interpreter for the entire language it worked with. Described in my SAIG paper

Available from Has no real license statement; contact me if you need one.

A region-based compiler for a tiny subset of Prolog

A prototype implementation done for my M.Sc. thesis. The subset of Prolog it compiles is too small to be practically useful, and the region inference is simple-minded (it is from before the HMN model). However, the backtracking-aware region manager in the run-time system is potentially still of interest.

Available from Has no real license statement; contact me if you need one.

Not generally available research prototypes & other obscure stuff

Of course the reader is entitled to think that all of the above is obscure, but these items are a little more obscure than the rest, I think.

XXX Prolog with regions

XXX is an experimental fork of XSB Prolog, maintained by Kostis Sagonas. For my paper with him I extended a sub-fork of XXX to optionally allocate things in regions, and added a region-inference derived from the one from RegFun. We never polished it quite enough to put it up for general download.

Commercial software

Yes, back in my distant youth I wrote programs that were sold for money1). No, you have never heard of them. They were all distributed by a small Danish company called Circuit Design (which later became Circuit Data). Listed for completeness only. There is no way these can be useful to anyone today.

1) Or at least they were for sale. But once in a train I happened to sit next to a stanger who was reading the manual for one of them.


Hand-optimized 8086 assembly routines for software sprites; an extension to the CirPasG graphics library.


A clone of a clone of Norton Commander.


Displayed a calendar with a configurable background picture and ran commands when F1-F10 were pressed.

Windows 3.x drivers for PCTALK

PCTALK was an 8-bit, 8 kHz sound card. Fine value for money for its time, but its time had mostly passed by the time I was hired to do a driver for it. Front page > software Valid HTML 4.01!