Frank MittelbachI presume this is one of several dozen bugs
that would arise over the years if anyone
were foolish enough to try allowing "_" incommand names.

Leslie Lamport

1982 TeX2

1986 LaTeX 2.09



1990 TeX3◦ 4 years later …
◦ 4 years later …
◦ 4 years later …

••

1994 LaTeX2e

1997 LuaTeX beta



2012

1991 expl3 (first attempt)
1992 LaTeX3 architecture and kernel◦ 5 years later …
◦ 5 years later …

LaTeX3 beta ???

? What happened with it ?

 Right Architecture (ideas) --- Wrong Time◦ Too radical◦ Too experimental◦ Too immature (and unexplained)◦ Far too slow and far too huge (when built on TeX)
 Burning Issues needed resolving first◦ “intermediate” version LaTeX2e was released At the end of this message I attached the .log filefor Frank's test file tparm4. This job crashes on'pool size exceeded', for which I've been afraid
since Frank sent his first proposal for the newkernel.
 The new font selection scheme, the new macronaming convention, the resource database, ... :they all eat truck-loads full of pool space!
 I *do* like the interfaces of the modules I justmentioned, but I think this project is definitely
going in the wrong direction:
it's nice but impractical!

 No consistent design model◦ A few generic support commands, e.g.,\@startsection◦ Limited flexibility, limited scope Most design changes required programming
 No (proper) management of logical or visualcontext◦ except for limited support of context for lists◦ Some hardwired context settings, e.g., footnotes inminipages

A Typesetting Example
adjusted individuallyDesign A

offer

Design B

distill
Abstract Design
provideGeneric Implementation
Underlying support language

Design A

Design B

createsValues A

selectdefine context

Values B

overwrite
values in
document

selecthas

Abstract DesignParameters Clear separation: UI, design, coding◦ Supports reuse and flexibility

 Logical and visual context dependencies

are managed◦ Needed for high-quality results

 UI supports formatting adjustments◦ Perhaps strongest point of LaTeX Comprehensive, orthogonal

programming language◦ Now why would you need this?

Nesting and sequencing of structural elements in the
document defines “context”
 Elements belong to one or more classes, e.g., “list”(generic), “itemize” (specific)
 Encountered elements update the context andapplicable rules are carried out

Notation:<list
itemize><note>!head*.
!head<liststart of environment of class “list”
end of environment of class “itemize”
completed environment of class “note“
element of class “head”
loose nestingtight nesting
sequencing

Context

Explanation!head<list

List immediately follows a heading<list*<list

List nested within list

<list*<itemize

An “itemize” nested within some list

list><itemize

An “itemize“ starts immediately after alist has ended<float*<caption>*<caption

Second “caption” environment within afloat

Live demo Nothing in this architecture really requires

TeX as a formatting engine.

 But …
 With today‘s advances in the processing

power of the underlying engine the ideas now
appear to be feasible (in “x”TeX).

Big Bang (documentation and code cleanup)significant speed improvements in the kernel

expl3 now mostly stable

GitHub mirror



work on stand-alone kernel◦ much more consistent documentation◦ clarifying which functions are expandable or not◦ restructuring code into l3kernel, l3packages, l3experimental
and l3trial◦ faster \prg_return_...: conditional code, faster seq and prop
◦ by a factor at least 3 on sample documents (e.g., siunitx)◦ for those parts that have been moved to l3kernel

modules l3str and l3regex currently written◦ possible extensions to code high-lighting

module l3fp being reimplemented◦ fast expandable IEEE-854 compliant decimal floating point arithmetic
and expression parsing

module xcoffins / l3coffins

module xgalleyinitial work on font support (xfss)◦ first task converting the highly optimized NFSS to less optimal but
more readable codereinitiate work on LDB

 Properly integrate template and LDB
 Define a mechanism to overwrite template

instance values on document level Define standard environment management
 Finish galley mechanism
 Rework output routine concepts

There is nothing more difficult to take in hand,more perilous to conduct or more uncertainin its success than to take the lead in theintroduction of a new order of things.

Machiavelli