Oubliette

From Mesham
Revision as of 16:22, 11 May 2013 by Polas (talk | contribs) (Latest (to be released))
Jump to navigationJump to search
Oubliette.png

Introduction

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.

Download

You can download the latest compiler and supporting libraries here.

Implementation

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.

Idaho

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)

  • 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)

  • 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)

  • First alpha release of the oubliette compliler