The Tunes Migration Subproject


Design Overview

Modules are migrated according to heuristics. These heuristics are computed according to static and dynamic feedback.


Modules are the units of migration.

See the HLL page and the LLL page.

Concerns about modules:

The solutions for module issues should be a derived generalization of those for garbage collection.


Context Networks

Generally, the model builds from that of networking, although taken at a higher level. There are nodes and channels of communication between them, using some common medium. Communications media may be layered, which is a sort of interpretation. These layerings could conceivably be compiled away (partially-evaluated) among all memebers, allowing for specialization of standards for performance.

Communications would also naturally be transitive, and sites may include meta-level strategies for routing, with varying-levels of the equivalent of routing tables for contexts.

Relevant Context Types

Certain context types are more relevant in the modern state-of-the-art equivalents of Migration than others, although Migration should be understood as a very general concept, applying to context-switches of all types in principle.

The field of multi-processing in its various forms also applies. Active objects may be distributed or switched among processors. In any case, a processor is a computational host for activity, and each has its own type and capacities for various tasks.
Physical Sites
This carries over from networking principles, but also takes into account discrete media such as hard-copy or disks of various kinds, which are always applicable in a bootstrapping process where continuous connections aren't independently provided.
Persistent Stores
Persistent Stores are considered hosts for data where space is cheap compared to performance.
The more meta-, the more frequently used; meta-data must always be digested before data is even considered. Meta-data may need to be checked and modified by major GCs, so meta-data should always be separated/duplicated from data, with extra fast access.
I/O terminals are hosts for printing and parsing data for humans. Terminal devices themselves have certain capacities for input and output, and the manner in which they are entered also interacts with the human's capacity (and ability to interpret) to provide another set of limitations in communication.
Perhaps so obvious it is invisible, the encoding of an object and its attributes and the translations possible from it to other encodings also forms another type of site for migration. These include both existing standards, and specialized ones for a particular use, coupling, or hardware architecture or transmission medium.



Heuristics are combinations of rules and decision-making strategies to satisfy or maximize the solution to those rules. Tunes, being a very dynamic system, will naturally tackle more issues than the average network routing stack or process scheduler alone. So often these decision-making strategies will have to be dynamically tested, and will have some element of trial-and-error or quick-and-dirty solutions in the face of unclear feedback.

Some examples of issues to confront and metrics to satisfy or regulate:


The artificial intelligence research community has amassed a great deal of planning algorithms and schemes.

There is also the possibility of the simpler logic/computational approach of Maude's meta-level strategies and means of specializing those strategies dynamically.

The solutions may take on many different forms in different situations. On a same site, contexts within it may be best served by a central manager. When latency is high, however, some coordination may be necessary but expensive, so the solution must be adapted to that.


In order for heuristics to apply, some measured data fed back from the actual system has to validate their applicability. Various performance and quality measurements have to be made, in addition to logical configuration records:

Partial evaluation applies to allow some measurements to be taken for granted in order to remove measurement and dynamic re-compilation overhead; in the simplest sense, this can help avoid "deadlocks" of continually re-compiling when a slightly lesser solution performs better if left on its own.



To Do:

Annotate this on the CLiki.