From Mesham
Jump to navigationJump to search


Oubliette is the Mesham compiler line from version 1.0 onwards. This line is completely rewritten from the previous Arjuna, using lessons learned and the fact that the language has reached a stable state in terms of definition and the type oriented approach.


You can download the latest compiler and supporting libraries here.


Oubliette is written in C++ and uses Flex for tokenisation and Bison for parsing. The type library is entirely separate and it is intended in the future to support extra libraries via dynamic libraries. Unline Arjuna, which has the standard function library hard coded in the compiler, Oubliette just considers these to be normal Mesham source code files which are included by the programmer. This approach gives increased flexibility and a cleaner compiler.

All the types have been entirely rewritten and an API (documentation to follow) has been created to allow for third party extensions.


To support this new version of the compiler, the runtime library has been reengineered and released under the name Idaho. This version supports the functionality required by Mesham, the standard library and some internal housekeeping work.

Update history

Latest (to be released)

Build 411 (August 2013)

  • Based on specification 1a6
  • Updated proc, par and group semantics to be none blocking on entry to the blocks
  • Sleep system function added
  • Abstracted all communications into a lower level communications layer
  • Additional version and requirements reporting in the resulting executable
  • Heap default bug fix for reference records
  • Threading support added which allows for virtual processors to be lightweight threads rather than processes

Build 356 (May 2013)

  • Based on specification 1a5
  • Reworked expression grammar for improved parsing
  • Extended string function library to include more advanced handling functions
  • Inline if operator supported
  • Texas range in group parallel statement
  • Primitive collective communication types accept arrays of data sizes and displacements
  • Additional assignment operators involving plus, subtraction, multiplication, division and modulus assignments
  • Array distribution type added
  • Support dynamic partitioning and distribution of data
  • Improved support for cycling and distinct number of multiple partitions per process
  • Remote reading and writing depending on global or per block coordinates supported for partitions
  • Local partition block copying on assignment
  • Eager one sided communication type, which completes as soon as issued, added to library

Build 299 (March 2013)

  • Based on specification 1a4
  • Support for dynamic number of processes above minimum value
  • Primitive communication and modes support dynamic (decided at runtime) PID, size and operation arguments
  • -p flag added to all Mesham executables which reports the minimum number of processes needed
  • Functions can be in any order even if we are using the return type to declare a variable
  • Support for dynamically loading type libraries which are provided as extension .so libraries
  • Support for external runtime libraries to be linked in during compilation
  • Environment arguments provided to underlying C compiler for optimisation
  • Improvements to dynamic partitioning runtime support

Build 241 (January 2013)