Global Script

Global Script is a typesetting system based on the principles of strict separation between logical and physical markup and excellent programmability. Programmability is acheived using the Global Script Program Calculus, a purely functional, machine-independent language which is used to write both macros for source documents and style sheets for conversion to printed output or to HTML. Global Script emphasizes macros that expand to parsable data structures, which preserves the separation between logical and physical markup and makes it easier to write style-sheets for different output formats. At the same time, macros are still available to capture repeated patterns in source documents.

Purely-functional languages are a particularly good fit for typesetting. Side-effectful macros frequently interact in undesirable ways; these interactions can make composing documents in LaTeX or troff rather frustrating. Global Script eliminates side effects from macro expansion and from typesetting. Instead, both marked-up and typeset text are represented as first-class, parsable values. This makes it smoother to combine macros and to use different stylesheet components together.

In addition, the Global Script Program Calculus, because it is purely functional and machine-independent, represents a ‘real programming language’ to use in typesetting (including user-written code) which nevertheless eschews file I/O and other typesetting system features that were useful 20-30 years ago, but today are rightly regarded as security holes.

Other Languages

The Global Script Program Calculus, as a ‘real programming language’ that is machine-independent and designed for extension, can also be used as a basis for proper programming languages; examples of this include:

  • The IBIO Language Lattice is a family of four languages for Plan 9 based around a concurrent stream I/O system.
  • The CORD language is an object/relational database language.

The IBIO languages are used internally by the Global Script implementation and share an implementation of the calculus with the Global Script typesetting system implementation, in preparation.

Other sites

Facebook Google+ Patreon

Clone with darcs

  • C Implementation (Crashy): darcs get --lazy
  • New Haskell Implementation: darcs get