@#!*% TCP.

Unreadable network protocol implementations got you down?



An Object-Oriented Protocol Language

Prolac is a programming language designed for writing readable, modular, extensible, and efficient network protocol implementations. It was designed pragmatically, for implementation, rather than as a prescriptive specification language with interesting theoretical properties. Object-oriented languages, functional languages, C, and Yacc are the strongest influences on its design. This combination of influences -- and a focus on minimal, elegant syntax -- led to some novel features (module operators, for instance), despite a general preference for time-tested techniques.

Prolac language design is essentially complete, and we have a stable Prolac compiler. A readable, extensible Prolac TCP implementation, designed for integration with Linux 2.2, is partially complete.

The Prolac project is no longer maintained.

Source code

The Prolac distribution includes the reference manual, an Emacs mode, the compiler, and two half-working TCP implementations -- one that plugs in to Linux 2.2 as a drop-in replacement for Linux’s default TCP, and an older one that could run in a Linux 2.0 environment (but doesn’t have good kernel integration).

The Prolac compiler should work on any UNIXlike system. The TCPs probably won’t compile unless you have a Linux source tree lying around.

This is an alpha release. The compiler is stable; the TCPs are not. In fact, neither TCP fully compiles. (The Linux 2.0 TCP works in our environment, but we have not put in the effort required to make it work from the distribution.)

Prolac is distributed under the GNU General Public License.

Download prolac-0.0.5.tar.gz

Changes: Version 0.0.5 has a couple bug fixes.


[PDF]   A readable TCP in the Prolac protocol language (PDF, 128298 bytes)
This paper gives an overview of the Prolac language, but focuses mainly on our TCP specification. Discusses modularity, readability, and extensibility, with some data on efficiency and real-world use in the Linux kernel. This is probably the best place to get started. Appeared in ACM SIGCOMM ’99.
[PDF]   Prolac language reference manual (PDF, 245587 bytes)
A complete reference manual for the language.
[PDF]   Masters’ thesis: Prolac: a language for protocol compilation (PDF, 472K)
Of “historical” “interest”.

Prolac was a project at MIT LCS in the PDOS group. People: Eddie Kohler, Frans Kaashoek, David Montgomery.

  Eddie Kohler