AUIS revival

Artifact [0f781f4f9b]
Login

Artifact 0f781f4f9b6b0d84c4f6bd379e208a3e1cc050f8daf1ae67917e261e5c1386b9:


AUIS Version Comparison: 6.3.1 (C) vs 7.4/8.0 (C++)

An analysis of what the C++ versions added beyond the last public C release, to inform the decision of which codeline to revive.

Release timeline

New features in the C++ versions (7.4 / 8.0)

Direct-to-PostScript printing

The entire print pipeline was replaced. No more dependency on troff/psdit. Faster formatting, smaller output files. The preview/ directory was removed from ATK, presumably folded into the new printing path.

Color manager

Dynamic color allocation and dithering for images. Replaces the crude 5x5x5 color cube from v6.x. Colors are reallocated across all Andrew windows as images are added. Dithering option for better appearance on limited-color displays.

Recursive search (recsearch)

Searching across ALL content including text inside embedded insets. In 6.3.1, search only finds text in the top-level text object.

ATK base class

All objects now derive from a common ATK class, enabling runtime type testing and dynamic code loading by type. A fundamental object-model change.

Widgets framework

New awidgetview and attribute-driven dataobject system for building UI controls (buttons, checkboxes, radio buttons). The widgets/ directory in v8.0 has no counterpart in v6.3.

Web browser / improved HTML

htmltext substantially rewritten. HTML forms support via the new widgets. ez2html converter can convert arbitrary insets to GIFs for web publishing.

Improved srctext

New language modes: IDL, Perl, REXX, Scribe (added to the existing set of assembler, C++, C, Lisp, Modula-2, Modula-3, Pascal, man pages, HTML).

gofig

Specialized inset for Go game diagrams (Fred Hansen's example of rapid inset development in C++).

Bug fixes

The v7.4 announcement says "literally thousands" of bug fixes. The C++ port likely caught many latent bugs through stronger type checking.

Directory structure changes (6.3 vs 8.0)

ATK directories added in v8.0

ATK directories removed in v8.0

Overhead directories added in v8.0

Overhead directories removed in v8.0

Key improvements already present in 6.3.1

These were accomplished in the 5.2 → 6.2 → 6.3 cycle, before the C++ port:

Assessment for revival

Most features added in the C++ versions either:

  1. Solve problems that no longer exist — The color manager dealt with 8-bit displays and limited colormaps. Modern systems use 24-bit TrueColor. The PostScript printing pipeline replaced troff, but a modern revival would target PDF output anyway.

  2. Would be done differently today — The ATK base class and widgets framework are tightly coupled to C++ idioms. A C revival could achieve similar goals through the existing Class system.

  3. Are irrelevant in a modern context — 1996 HTML/web support is not useful in 2026.

The 6.3.1 codebase has significant advantages for a C-based revival:

The main loss from choosing 6.3.1 over 8.0 is the "thousands of bug fixes." However, many of those were likely related to the C++ conversion itself rather than fixes to pre-existing C bugs. Bugs discovered during the port can be selectively examined and backported as concepts to the C codebase if the original source is available.

Recommendation: Revive the 6.3.1 codeline. Selectively backport concepts (not code) from the C++ versions where valuable. The modern dlopen() API is a natural replacement for the old dynamic loader, and the POSIX foundation is already in place.

Sources