Welcome to SubScript, a way to extend common programming languages aimed to ease event handling and concurrency. Typical application areas are GUI controllers, text processing applications and discrete event simulations. SubScript is based on a mathematical concurrency theory named Algebra of Communicating Processes (ACP).

The installation&build guidelines are here on GitHub.

ACP is a 30-year-old branch of mathematics, as solid as numeric algebra and as Boolean algebra. In fact, you can regard ACP as an extension to Boolean algebra with ‘things that can happen’. These items are glued together with operations such alternative, sequential and parallel compositions. This way ACP combines the essence of grammar specification languages and notions of parallelism.

Adding ACP to a common programming language yields a lightweight alternative for threading concurrency. It also brings the 50 year old but still magic expressiveness of languages for parser generators and compiler compilers, so that SubScript suits language processing. The nondeterministic style combined with concurrency support happens to be very useful for programming GUI controllers. Surprisingly, ACP with a few extras even enables data flow style programming, like you have with pipes in Unix shell language.

For instance, to program a GUI controller for such a search application as shown here, takes about 15 lines of code in Java or Scala, if you do threading well. In SubScript it is only 5 lines, see here.

At the moment SubScript is being implemented as an extension to the programming language Scala; other languages, such as C, C++, C#, Java and JavaScript, would be possible too. The current state of the implementation is mature enough for experimentation by language researchers, but not yet for real application development. If you have the Eclipse environment with the Scala plugin installed, it is easy to get SubScript running with the example applications from our GitHub project.

On this site you can have a look at the underlying theory, history, documentation and examples. If you want to get involved as a contributor or sponsor of this open source project, please contact us.

May events drive your math & have fun at the same time.