Here, we announce Cuneiform releases and change notes.

Release Cuneiform 3.0.4


I have released Cuneiform 3.0.4. This release brings performance improvements to the Cuneiform interpreter. This means that much larger programs can be evaluated. Also, more type annotations have been added to the language, making more explicit the in-going and out-going types of iteration expressions. Moreover, it adds Elixir foreign language support.


  • All Cuneiform components are now compatible with OTP-21.x

Language Syntax

  • In a for-iteration the list(s) iterated over must now have a type annotation.

  • In a fold-iteration both the accumulator and the list iterated over must now have a type annotation.

Foreign Language Support

  • Elixir foreign language support added.

Syntax and Type Checking

  • The type checker now checks the type of the first argument of a fixpointed function.

  • Binding the same name twice in a for-iteration now results in a parse error.


  • A bug has been fixed which caused the interpreter to apply an operation although one of its operands is a user-error.

  • A bug has been fixed which caused the interpreter to ignore a user-error if it was the cons-head of a list.

  • The interpreter now runs a machine similar to a CEK-machine. This has the effect that interpreter substitutes variables as late as possible and that it sends foreign function applications to the CRE in bulk. These changes improve performance.

  • Each time the interpreter receives a foreign function application result it now waits 250 ms for more results to come in. This way, it can substitute futures for results in bulk instead of one at a time. This change improves performance.

Execution Environment

  • Killing the CRE now also kills the Cuneiform client instead of leaving it a zombie process.


  • The common runtime environment now serves the foreign function application history under /history.json (instead of /cache.json).

  • In the application history, the root field is now called history (instead of cache).

  • In the application history, the stat field is now a child of the result field (instead of the delta field).

Release Cuneiform 3.0.3


I have released Cuneiform 3.0.3. This release introduces a web-server hosted by the CRE that provides status information and a history of all foreign function applications. Moreover, it adds Erlang and Java foreign language support.


  • We seize support for OTP-18.x. From now on, Cuneiform releases are compatible to OTP-19.0 upward.

Foreign Language Support

  • Erlang foreign language support added.

  • Java foreign language support added.

Execution Environment

  • The CRE now serves status information and history information in a web-interface. It is reachable under port 4142 on the machine hosting the CRE. The web-server supports the GET methods for the resources /status.json and cache.json.

Release Cuneiform 3.0.2


I have released Cuneiform 3.0.2.

  • Fix a bug in the Cuneiform worker application that made it crash if output files were located in a subdirectory of the current working directory

Release Cuneiform 3.0.1


I have released Cuneiform 3.0.1.

  • Fix a bug in the Cuneiform client that will crash the language interpreter in certain list appending variants

Release Cuneiform 3.0.0


I have released Cuneiform 3.0.0.

  • Introduce new surface syntax

  • Introduce new language semantics

  • Introduce simple type system

  • Introduce CRE and distributed Erlang as execution environment

  • Fix bugs in the interpreter making it more stable when large chunks of source code is pasted in

Release Cuneiform 2.2.1


I have released Cuneiform 2.2.1.

We have performed some maintainance updates and improved overall usability.

Release Cuneiform 2.2.0


I have released Cuneiform 2.2.0. This is the first release of Cuneiform’s Erlang implementation.

Cuneiform on Erlang comes with an overhauled interactive shell and HTCondor support. Currently only Bash, Perl, Python, and R are supported foreign languages. More languages will be supported in upcoming releases.

Release Cuneiform 2.0.4


I have switched Cuneiform to Erlang, which means that the Java implementation is about to be discontinued. The latest changes in the Java branch of Cuneiform have been subsumed in a final version tagged 2.0.4. It can also be obtained from the Download page.

Additionally, an implementation of only the core semantics in Java is now available on GitHub. It is used by Hi-WAY to interpret Cuneiform workflows and may be the basis for independently maintained Cuneiform interpreters in the Java ecosystem.

Release Cuneiform 2.0.3


I have released Cuneiform 2.0.3.

It is now possible to launch Cuneiform as a simple java -jar … call.

Release Cuneiform 2.0.2


I have released Cuneiform 2.0.2.

Release Cuneiform 2.0.0


I have released Cuneiform 2.0.0.