treetrie-2015/TODO.md

141 lines
4.3 KiB
Markdown
Raw Permalink Normal View History

2015-06-30 03:19:44 +00:00
Consider whether a stack or a queue makes most sense for the freelist.
2015-07-13 19:56:39 +00:00
Consider a naming convention to indicate grab'd vs ungrab'd results.
2015-07-13 19:56:39 +00:00
Needed by prospect:
- `pattern->matcher` with `#t`
- `matcher-project`
- `matcher-project/set`
- `matcher-project/set/single`
- many userland uses
- one interesting use in `drop-interests` / `drop-patch`, used in `mux-update-stream`
- perhaps this can be replaced with a `matcher-step` combination?
- no, it'd be a little awkward, because of the trailing close-paren.
- `matcher-match-value`
- used to route messages
- once to check that noone has asserted the message in the routing table
- and once to actually route it
- `matcher-match-matcher`
- used in `compute-affected-pids` to project out PIDs on the
right (after a step to get past the struct:observe)
- used with a combiner that unions in the PIDs on the right
- used with a left-short that steps over the close-paren from the struct:observe
- `matcher-union` with default and with `\vw.#t`
- used to create cross-level observations in `observe-at-meta` in core
- to compute the "cover" of a patch in compute-affected-pids -
union of added & removed
- used in `apply-patch` and `patch-union` with default combiner
- used in `update-interests` and `compose-patch` with a combiner
that ignores the structure of the ok() value
- (used in `unapply-patch`, which is not used)
- `matcher-step` (for removing open-paren and observation marks and
skipping the corresponding close-paren)
- used in `biased-intersection` and `compute-affected-pids` to
skip struct:observe
- `matcher-relabel`
- used throughout to replace ok() leaf values.
- `matcher-subtract` with default, `\vw.#f`, `add-combiner` and `rem-combiner`
- used with always-false in `limit-patch`, `compose-patch` and
`update-interests`, ignoring the ok() values
- used with default in `compute-patch` (and in `limit-patch/routing-table`, which is not used)
- used with both `add-combiner` and `rem-combiner` in `compute-aggregate-patch`
- used with default in `apply-patch`
- (used in `unapply-patch`, which is not used)
- `matcher-intersect` with `\vw.v`, `\vw.v∩w`, and `\vw.#t` with a left-short argument.
- used in `limit-patch` in a way that's tantamount to an explicit simultaneous relabelling
- used with an always-true combiner in `biased-intersection`
- (used in `limit-patch/routing-table`, which is unused)
digraph Dependencies {
graph [rankdir=LR];
// matcher
subgraph xcluster_union {
unionUnit;
unionPIDs;
}
project;
matchValue;
matchMatcher;
step;
relabel;
subgraph xcluster_subtract {
subtractUnit;
subtractPIDs;
subtractCustom;
}
subgraph xcluster_intersect {
intersectAsymmetric;
intersectUnit;
}
// patch
// computePatch -> subtractUnit; // I guess?
// stripInterests -> relabel;
// stripPatch -> stripInterests;
applyPatch -> subtractPIDs;
applyPatch -> unionPIDs;
biasedIntersection -> intersectUnit;
biasedIntersection -> step;
composePatch -> subtractUnit;
composePatch -> unionUnit;
2015-07-13 19:56:39 +00:00
computeAggregatePatch -> subtractCustom;
labelInterests -> relabel;
limitPatch -> intersectAsymmetric;
limitPatch -> subtractUnit;
patchUnion -> unionUnit;
updateInterests -> subtractUnit;
updateInterests -> unionUnit;
dropInterests -> project;
labelPatch -> labelInterests;
patchSeq -> composePatch;
2015-07-13 19:56:39 +00:00
// mux
computeAffectedPIDs -> matchMatcher;
computeAffectedPIDs -> step;
computeAffectedPIDs -> unionUnit;
messageRouting -> matchValue;
muxUpdateStream -> applyPatch;
muxUpdateStream -> biasedIntersection;
muxUpdateStream -> computeAffectedPIDs;
muxUpdateStream -> computeAggregatePatch;
muxUpdateStream -> dropInterests;
muxUpdateStream -> labelPatch;
muxUpdateStream -> limitPatch;
muxUpdateStream -> patchUnion;
// core
observeAtMeta -> unionUnit;
2015-07-13 19:56:39 +00:00
// user code
userCode -> project;
userCode -> observeAtMeta;
userCode -> patchSeq;
2015-07-13 19:56:39 +00:00
// semantics
semantics -> muxUpdateStream;
semantics -> messageRouting;
groundVM -> applyPatch;
groundVM -> labelPatch;
demandMatcher -> updateInterests;
}