Yarn

What is yarn?

The current release of yarn is very bare bones.  It features implicit parallelism exploiting 'and' but not 'or'.  The implicit parallelism uses transaction logs and rollback/commit in order to serialize thread interactions using what is sometimes called "transactional memory".  This  guarantees a partial ordering of the operations giving the appearance of the left recursive execution order of Prolog.

What will yarn be?


I'm planning on introducing persistence, tabeling, persistent tabeling, quantifiers, or-parallelism, aggregation, and have been recently thinking about 'retry' as described in [1], and something which I have been calling "Strategies".  Also a notable ommision from yarn currently that may be introduced later is general unification.

I'm currently working on persistence and working on a theory of tabeling.  In the purely left-recursive version of the language it is not difficult to ensure serialized schedules using optimistic concurrency  and rollback/commit.  However when tabeling is introduced, which is desirable as it guarantees termination of Datalog [2] programs, the naive scheduling algorithm is insuffecient.

"Strategies" is a concept of seperating semantics from implementation in programming languages. In the case of most databases, interfaces are represented abstractly such that the user of the table need not concern themselves* with the actual physical memory represention that is used.  Yarn will use a similar idea.  In order to facilitate the seperation of code-correctness from implemenation, the user will program in the core yarn language and will suplement with directives describing the desired representations in the cases where greater effiecency is desired.

* This use of the third-person-plural as gender-neutral-singular is intentional.

Download

Latest version: Yarn version 0.03 "spool"

Wiki

You can check out the Yarn wiki at yarn.pbwiki.com.  Make sure you use the password "yarn" with no username.

References

[1] Tim Harris, Simon Marlow, Simon Peyton Jones, Maurice Herlihy , "Composable Memory Transactions", Microsoft Research

[2] Datalog, http://en.wikipedia.com/Datalog