[tex-k] Web2C 7.4.5

Olaf Weber olaf at infovore.xs4all.nl
Fri Feb 7 23:31:37 CET 2003

It looks like the web2c 7.4.5 sources have propagated to CTAN; look
for them in <CTAN:tex-archive/systems/web2c>.  These sources also
contain pdftex 1.10a, Omega 1.23.2, and e-TeX 2.1.  It is the same
source tree used in teTeX 2.0.  Unless you want to roll your own TeX
distribution, you're almost certainly better off directly using teTeX.

What is NOT in this release: as you may have heard, Knuth has sent out
an update to TeX and MF (and some smaller fry).  This isn't
incorporated in this release -- the update is not trivial for both
omega and e-TeX; we prefer to hold off Knuths new files until after
teTeX 2.0 released, so we can integrate them at our leisure.

There are already quite a few nits that can be picked at this point.


Release notes for Web2C 7.4.5 / kpathsea 3.4.5.

Important notes

* Changed defaults.

Note that some default settings of "tex, the Web2C implementation of
TeX" have changed.  We determined that some extensions were in fact in
conflict with the strict definition of TeX as laid down by Knuth.

The most notable change is that parsing of '%&' constructs in the
first line of an input file is now disabled by default -- it can be
enabled in texmf.cnf if you desire this.  In that case, tex will
announce itself as TeXk and print an additional banner line saying
that %&-line parsing is enabled.

We may encounter more places where the default behaviour is not what
it should be, and proceed to make this optional (and by default off)
in future versions of Web2C.

* New programs.

We've added ctangle and cweave to the programs bundled in the Web2C
distribution.  The sources are the Levy and Knuth sources, with
additional change files to make them fit in with the other Web2C

* Building libkpathsea as a shared library.

On some platforms libkpathsea can be built as a shared library, though
I cannot at present recommend that you do so.  But if you did so in
the past, note that a program linked against a 3.3.x version of
libkpathsea cannot use the 3.4.x version.  If you need to keep both
3.3.x and 3.4.x versions around, you're on your own as to how to get
this to work.

Getting and compiling the sources

* TeX, METAFONT, MetaPost, supporting programs.

To compile the basic programs, you need the WEB sources and the Web2C
Both of these must be unpacked in the same directory, as they
complement each other.

  * Note that due to a problem in the top-level configure script, running
  * make in the top-level directory will fail due to unmet dependencies
  * on pdftex.  Go one level deeper.

To get a working system you also need a texmf tree.  A barebones
version sufficient for compilating can be found here
You're strongly encouraged to obtain a pre-prepared tree that is more
full-featured, for example the texmf tree used by the teTeX
distribution.  The texmf tree must be unpacked in a location where
you'd store shared program data files, like /usr/local/share.

Note that installation will want to write files in the "web2c"
directory of the texmf tree.

Out of the box, the sources will work well with a texmf tree but not
with the older style of storing the data files which didn't bundle
directories like that.  In such a case edit texk/kpathsea/texmf.in to
be correct for your site before building.

* Adding e-TeX

To add e-TeX, you need to add the following to the sources
It adds the e-TeX sources to the web2c source tree.  Unpack it in the
same directory in which you unpacked web.tar.gz and web2c.tar.gz.
This must be done before you run configure.

Also add the following to the texmf tree:

This tarball adds e-TeX documentation the texmf tree:

* Adding Omega

To add Omega, you need to add the following to the sources
It adds the Omega sources to the web2c source tree.  Unpack it in the
same directory in which you unpacked web.tar.gz and web2c.tar.gz.
This must be done before you run configure.

Also add the following to the texmf tree:
  * Beware: this set of files is outdated.

This tarball adds Omega documentation the texmf tree:
  * Beware: this set of files is outdated.

* Adding pdfTeX

To add pdfTeX, you need to add the following to the sources
The first tarball adds the pdfTeX sources, the second adds the sources
for libraries that pdfTeX requires, including a version of xpdf set up
to compile into a library.  Unpack them in the same directory in which
you unpacked web.tar.gz and web2c.tar.gz.  This must be done before
you run configure.

Also add the following to the texmf tree:
  * Beware: this set of files is outdated.

Why the sources are organized this way.

* Why so many tarballs?

This is partly for historical reasons, partly due to the way the
various pieces came together.  Web2C, e-TeX, Omega, and pdfTeX all
have different groups of maintainers, and change at different speeds.
This setup made it easier to replace one version of a program with
another when doing development.

In a similar vein, the texmf tree parts for the different programs
have different maintainers and should be updated by different groups.

That, at least, is the theory.  This has by now largely broken down,
as should be evident from the fact that some of the library tarballs
are badly outdated.

* Why not a single tarball?

Combining the sources above into a single tarball was done for a
while.  To this were also added kpathsea-enabled versions of dvilj,
dvips and xdvi.  These add three more packages that have yet more
maintainers.  A reason to want to put them all together into a single
tarball is that libkpathsea is needed by all of them, and doesn't work
all that gracefully as a separately-installed library.

The pattern was that the texk distribution acquired even more programs
over time.  In this it began to approach a considerable subset of the
teTeX distribution.  This was a considerable waste of effort, so I
briefly tried to make it a genuine subset of teTeX.  But in that case,
what's the point anyway?  So I decided to stop with texk as a separate
distribution, and instead concentrate on just the core Web2C parts,
plus helping with the integration of e-TeX, Omega, and pdfTeX into

* The current situation.

Currently web2c with its extensions and kpathsea are embedded in
teTeX.  The teTeX distribution is itself embedded in TeX Live.  I do
Web2C development on my own machine, with my own CVS repository, and
make updates available to Thomas Esser (teTeX), Sebastian Rahtz (TeX
Live), Fabrice Popineau (fpTeX), and whoever else happens to be
interested and willing to endure the hassle (the Omega developers
spring to mind).  Usually, Thomas updates teTeX with my release, and
then pushes the new teTeX into TeX Live.  If changes had to be made by
him one of the others, they are often copied into Web2C from TeX Live,
completing the circle.

* There's a huge jump in version numbers, what happened?

For me, the main reason to use version numbers is that when I get a
bug report, I can tell which version of the sources it belongs to.

For a while I used version numbers of the form X.Y.ZbetaN to indicate
releases that for one reason or another I did not consider ready for
prime time.  But this is too much of a bother if you're only doing it
to keep version numbers from changing too fast.

So I've switched back to the X.Y.Z numbering scheme.  The "missing"
numbers belong largely to versions that went out with teTeX beta
releases.  And a number of X.Y.Z versions were released as part of TeX
Live released, but sometimes with a little appended x to indicate that
the TeX Live sources were based on but not identical to that version.

* Future directions: short term.

Don Knuth has made some (small) updates to several WEB source files.
We're already working on integrating them, but knew that work couldn't
be finished in time for this release.

The Omega sources are currently nested inside the Web2C source tree.
In future versions they will be a separate source tree, though one
that still uses the build infrastructure provided by the Web2C
sources.  This tree would typically be a sibling of the web2c tree.

* Future directions: long term.

As I've noted above, kpathsea is not exactly graceful as a library.
I'm working on changing it to a well-behaved (shared) library.  This
does have consequences for the programming interface (API) as well as
the binary interface (ABI).

The configuration scripts and other parts of the build infrastructure
are old -- they work well enough that we've never been forced to
upgrade, but we're getting to the point where it makes sense to do so
nevertheless.  The "new" kpathsea (when it is ready) will prompt that

Olaf Weber

               (This space left blank for technical reasons.)

More information about the tex-k mailing list