Project Planning

Blocking tasks (TODOs)

Link to todos? (For now, just search or look for red text).

After initial draft of language kernel specifcation

Project design

Partial evaluation, reification, reflection and compilation

We are creating a pure language inspired by the Kernel language and on the work described in the Collapsing Towers of Interpreters paper. There is remaing specification and verification work. This section document work remaining.

Communication and concurrency extension

We should standardize how we represent communication within one platform process. Preferably also how we represent communication and concurrency between platform processes. This is tricky because we do not want to be rigid and tightly coupled to the platform, but we will need to have details availiable. Some users of this extensions will want an abstraction of a domain specifc address. Send message 'm to process 'p. While others will need something less general and less safe, such as Send systemcall 'c to local kernel. We want to model such communication and the crossing of component boundraries. Category theory? Session types? How do we encode it in the language? Do we preserve purity? Do we go with structured concurrency only? Which errors do we report?

Address space, memory, locality and array extension

We need a way to describe in place manipulation of memory locations. This is needed for constructing efficent but safe algorithms.

Parallelism extension

We need some way to request explicit pure parallelism. Do these things at the same time if possible, etc. This extensions hould not depend on the availability of Communication and concurrency or Address space and memory management. It should not depend on them because it does not allow observing any such details. An example of what this extensions should make possible is parallel variants of map and filter over lists.