[tex-k] Untouch CWEB sources

Andreas Scherer andreas_tex at freenet.de
Wed Oct 31 10:47:14 CET 2018

> changing anything about cweb in TL
Here's a more indepth analysis of the current state of affairs:

* Both TeXLive and CWEBBIN use DEK's unmodified CWEB tarball and apply their respective adaptions through
changefiles, TL through the monolithic *-w2c.ch, CB through a smallish set of stacked (and tie'd) changefiles.

* TL does not use the original Makefile, but its own build mechanism; CB uses its own Makefile.unix and some
prior adaptions in the specfile for rpm/deb packaging. Integrating CB in TL most likely will have to use the
former build mechanism. That's what I'll study next.

* Both TL and CB go to great lengths to adapt the CWEB sources to "ANSI C" conventions. One of the
first steps of integrating CB in TL will be to use CB's *-ansi.ch change files and remove these changes from
*-w2c.ch. 'tie' is the obvious tool of choice here.

* TL has a nicer banner line plus a really nice '--help' info; I'd like to use these in CB's *-patch.ch
instead of the current settings. If all goes as planned, TL will get its own small set of *-patch.ch files for
version info setting.

* CB's *-extension.ch contains at least three major modifications: (a) extended CWEBINPUTS setting and usage
based on Unix conventions, (b) option '-i' for CWEAVE to "indent function parameter declarations",
(c) option '-o' for CWEAVE to put extra vertical space between function parameter declarations and the first
function statement. In contrast, TL uses an extended CWEBINPUTS mechanism based on kpathsea for @include file
lookup; probably that will remain as the main body of the *-w2c.ch files.

* CB's *-output.ch permits CWEB output to be preserved if no changes occur, i.e., 'make' will only recompile
those tangled files that are newer than those from earlier runs. This has been separated years ago and will be
promoted in CB as a major feature (currently its applied last and requires other changes). Work on this has
already started.

* CB's *-memory.ch stuff will most likely be removed. This was an idea from a quarter century ago, when I
started to learn to program in C. It was somewhat necessary on the Amiga to make the programs work well with
the editor and debugger, but with current systems with gigabyte memory its no longer really useful. Moreover,
looking at this stuff after so many years reveals the horrible deficiencies with respect to software quality.
CB's memory settings (buffer sizes) will be adapted to TL's settings to simplify exchange and integration.

* CB's *-translation.ch stuff might be useful for i18n, because all text strings are available in external
header files for
English, German, and Italian.

* Extra stuff like new C++ @include files can be added in TL. Of course, this requires documentation updates.

I'll report ASAP.


Schon gewusst?! Neben dem E-Mail-Postfach bietet freenet.de auch eine
integrierte Cloud-Lösung mit 2 GB Speicher und das alles komplett
kostenfrei. https://email.freenet.de/index.html

More information about the tex-k mailing list