
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