diff --git a/examples/netstack/main.rkt b/examples/netstack/main.rkt index bd45c8b..980f106 100644 --- a/examples/netstack/main.rkt +++ b/examples/netstack/main.rkt @@ -60,7 +60,7 @@ (advertisement (tcp-channel us them ?) #:meta-level 1) ;; we will write to remote client )))) - (spawn-network + (spawn-dataspace (spawn-demand-matcher (advertise (tcp-channel (?!) (?! (tcp-listener 5999)) ?)) (observe (tcp-channel (?!) (?! (tcp-listener 5999)) ?)) #:meta-level 1 @@ -105,7 +105,7 @@ (subscription (advertise (tcp-channel them us ?)) #:meta-level 1) (advertisement (tcp-channel us them ?) #:meta-level 1))))) - (spawn-network + (spawn-dataspace (spawn (lambda (e counter) (match e [(message 'bump) diff --git a/examples/platformer/main.rkt b/examples/platformer/main.rkt index 7836459..c895264 100644 --- a/examples/platformer/main.rkt +++ b/examples/platformer/main.rkt @@ -896,18 +896,18 @@ ;; LevelTerminationMonitor ;; ;; When the player vanishes from the board, or LevelCompleted is seen, -;; kills the network. +;; kills the dataspace. (define (spawn-level-termination-monitor) (spawn (lambda (e s) (match e [(? patch/removed?) (log-info "Player died! Terminating level.") - (transition s (quit-network))] + (transition s (quit-dataspace))] [(message (at-meta (level-completed))) (log-info "Level completed! Terminating level.") (transition s (list (message (at-meta (add-to-score 100))) - (quit-network)))] + (quit-dataspace)))] [_ #f])) (void) (patch-seq (sub (game-piece-configuration player-id ? ? ?)) @@ -946,7 +946,7 @@ #:level-size [level-size-vec (vector 4000 2000)] #:scene [scene grassland-backdrop] . actions) - (spawn-network + (spawn-dataspace (and scene (spawn-background-image level-size-vec scene)) (spawn-display-controller level-size-vec) (spawn-physics-engine) @@ -1028,10 +1028,10 @@ (define game-level 3) ;; used to specify meta-level to reach external I/O -(2d-network #:width 600 #:height 400 - (spawn-keyboard-integrator) - (spawn-scene-manager) - (spawn-network (spawn-score-keeper) - (spawn-level-spawner 0) - ) - ) +(2d-dataspace #:width 600 #:height 400 + (spawn-keyboard-integrator) + (spawn-scene-manager) + (spawn-dataspace (spawn-score-keeper) + (spawn-level-spawner 0) + ) + ) diff --git a/js/README.md b/js/README.md index 581c7ca..b771f84 100644 --- a/js/README.md +++ b/js/README.md @@ -11,8 +11,8 @@ Source files in `src/`, from most general to most specific: - `route.js`: Implementation of dataspace trie structure. - `patch.js`: Implementation of patches over dataspace tries. - `mux.js`: Use of tries plus patches to build a (de)multiplexing routing structure. - - `network.js`: Implementation of core leaf actors and networks. - - `ground.js`: Pseudo-network acting as the global outermost context for Syndicate actors. + - `dataspace.js`: Implementation of core leaf actors and dataspaces. + - `ground.js`: Pseudo-dataspace acting as the global outermost context for Syndicate actors. - `ack.js`: Utility for detecting when a previous state change has taken effect. - `seal.js`: Immutable container for data, used to hide structure from dataspace tries. diff --git a/js/compiler/compiler.js b/js/compiler/compiler.js index 2292d81..3d507bf 100644 --- a/js/compiler/compiler.js +++ b/js/compiler/compiler.js @@ -86,7 +86,7 @@ var modifiedSourceActions = { return buildActor(ctorExp.asES5, block); }, - NetworkStatement_ground: function(_ground, _network, maybeId, block) { + DataspaceStatement_ground: function(_ground, _dataspace, maybeId, block) { var code = 'new Syndicate.Ground(function () ' + block.asES5 + ').startStepping();'; if (maybeId.numChildren === 1) { return 'var ' + maybeId.children[0].interval.contents + ' = ' + code; @@ -94,8 +94,8 @@ var modifiedSourceActions = { return code; } }, - NetworkStatement_normal: function(_network, block) { - return 'Syndicate.Network.spawn(new Network(function () ' + block.asES5 + '));'; + DataspaceStatement_normal: function(_dataspace, block) { + return 'Syndicate.Dataspace.spawn(new Dataspace(function () ' + block.asES5 + '));'; }, ActorFacetStatement_state: function(_state, facetBlock, _until, transitionBlock) { @@ -143,7 +143,7 @@ var modifiedSourceActions = { }, SendMessageStatement: function(_colons, expr, sc) { - return 'Syndicate.Network.send(' + expr.asES5 + ')' + sc.interval.contents; + return 'Syndicate.Dataspace.send(' + expr.asES5 + ')' + sc.interval.contents; }, FacetBlock: function(_leftParen, init, situations, done, _rightParen) { diff --git a/js/compiler/demo-bankaccount.js b/js/compiler/demo-bankaccount.js index aa70f37..83c3cc2 100644 --- a/js/compiler/demo-bankaccount.js +++ b/js/compiler/demo-bankaccount.js @@ -5,7 +5,7 @@ var Syndicate = require('./src/main.js'); assertion type account(balance); assertion type deposit(amount); -ground network { +ground dataspace { actor { this.balance = 0; diff --git a/js/compiler/demo-filesystem.js b/js/compiler/demo-filesystem.js index 1542209..4cd54ab 100644 --- a/js/compiler/demo-filesystem.js +++ b/js/compiler/demo-filesystem.js @@ -6,7 +6,7 @@ assertion type file(name, content) = "file"; assertion type saveFile(name, content) = "save"; assertion type deleteFile(name) = "delete"; -ground network { +ground dataspace { /////////////////////////////////////////////////////////////////////////// // The file system actor diff --git a/js/compiler/syndicate.ohm b/js/compiler/syndicate.ohm index f6e1106..5fb2da7 100644 --- a/js/compiler/syndicate.ohm +++ b/js/compiler/syndicate.ohm @@ -8,7 +8,7 @@ Syndicate <: ES5 { Statement += ActorStatement - | NetworkStatement + | DataspaceStatement | ActorFacetStatement | AssertionTypeDeclarationStatement | SendMessageStatement @@ -17,9 +17,9 @@ Syndicate <: ES5 { = actor CallExpression Block -- withConstructor | actor Block -- noConstructor - NetworkStatement - = ground network identifier? Block -- ground - | network Block -- normal + DataspaceStatement + = ground dataspace identifier? Block -- ground + | dataspace Block -- normal ActorFacetStatement = state FacetBlock until FacetStateTransitionBlock -- state @@ -71,6 +71,7 @@ Syndicate <: ES5 { assert = "assert" ~identifierPart asserted = "asserted" ~identifierPart assertion = "assertion" ~identifierPart + dataspace = "dataspace" ~identifierPart done = "done" ~identifierPart during = "during" ~identifierPart forever = "forever" ~identifierPart @@ -78,7 +79,6 @@ Syndicate <: ES5 { init = "init" ~identifierPart message = "message" ~identifierPart metalevel = "metalevel" ~identifierPart - network = "network" ~identifierPart on = "on" ~identifierPart retracted = "retracted" ~identifierPart state = "state" ~identifierPart diff --git a/js/examples/button/index.js b/js/examples/button/index.js index b4bda3c..fc85acf 100644 --- a/js/examples/button/index.js +++ b/js/examples/button/index.js @@ -2,7 +2,7 @@ assertion type DOM(containerSelector, fragmentClass, spec); assertion type jQuery(selector, eventType, event); $(document).ready(function() { - ground network { + ground dataspace { Syndicate.DOM.spawnDOMDriver(); Syndicate.JQuery.spawnJQueryDriver(); diff --git a/js/examples/dom/index.js b/js/examples/dom/index.js index de51c5f..9f9122c 100644 --- a/js/examples/dom/index.js +++ b/js/examples/dom/index.js @@ -1,6 +1,6 @@ var G; $(document).ready(function () { - var Network = Syndicate.Network; + var Dataspace = Syndicate.Dataspace; var sub = Syndicate.sub; var assert = Syndicate.assert; var retract = Syndicate.retract; @@ -13,7 +13,7 @@ $(document).ready(function () { Syndicate.DOM.spawnDOMDriver(); - Network.spawn({ + Dataspace.spawn({ boot: function () { return assert(["DOM", "#clicker-holder", "clicker", seal(["button", ["span", [["style", "font-style: italic"]], "Click me!"]])]) @@ -21,23 +21,23 @@ $(document).ready(function () { }, handleEvent: function (e) { if (e.type === "message" && e.message[0] === "jQuery") { - Network.send("bump_count"); + Dataspace.send("bump_count"); } } }); - Network.spawn({ + Dataspace.spawn({ counter: 0, boot: function () { this.updateState(); return sub("bump_count"); }, updateState: function () { - Network.stateChange(retract(["DOM", __, __, __]) - .andThen(assert(["DOM", "#counter-holder", "counter", - seal(["div", - ["p", "The current count is: ", - this.counter]])]))); + Dataspace.stateChange(retract(["DOM", __, __, __]) + .andThen(assert(["DOM", "#counter-holder", "counter", + seal(["div", + ["p", "The current count is: ", + this.counter]])]))); }, handleEvent: function (e) { if (e.type === "message" && e.message === "bump_count") { @@ -48,7 +48,7 @@ $(document).ready(function () { }); }); - G.network.onStateChange = function (mux, patch) { + G.dataspace.onStateChange = function (mux, patch) { $("#spy-holder").text(Syndicate.prettyTrie(mux.routingTable)); }; diff --git a/js/examples/jquery/index.js b/js/examples/jquery/index.js index 1377c27..f9436b7 100644 --- a/js/examples/jquery/index.js +++ b/js/examples/jquery/index.js @@ -2,7 +2,7 @@ var G; $(document).ready(function () { - var Network = Syndicate.Network; + var Dataspace = Syndicate.Dataspace; var sub = Syndicate.sub; var __ = Syndicate.__; var _$ = Syndicate._$; @@ -12,7 +12,7 @@ $(document).ready(function () { Syndicate.JQuery.spawnJQueryDriver(); - Network.spawn({ + Dataspace.spawn({ boot: function () { return sub(['jQuery', '#clicker', 'click', __]); }, @@ -24,7 +24,7 @@ $(document).ready(function () { } }); }); - G.network.onStateChange = function (mux, patch) { + G.dataspace.onStateChange = function (mux, patch) { $("#spy-holder").text(Syndicate.prettyTrie(mux.routingTable)); }; G.startStepping(); diff --git a/js/examples/smoketest-dsl/index.js b/js/examples/smoketest-dsl/index.js index 3f16981..221f226 100644 --- a/js/examples/smoketest-dsl/index.js +++ b/js/examples/smoketest-dsl/index.js @@ -1,6 +1,6 @@ assertion type beep(counter); -ground network { +ground dataspace { console.log('starting ground boot'); actor { diff --git a/js/examples/smoketest/index.js b/js/examples/smoketest/index.js index f4f90e4..fa688d8 100644 --- a/js/examples/smoketest/index.js +++ b/js/examples/smoketest/index.js @@ -2,7 +2,7 @@ var G; $(document).ready(function () { - var Network = Syndicate.Network; + var Dataspace = Syndicate.Dataspace; var sub = Syndicate.sub; var __ = Syndicate.__; var _$ = Syndicate._$; @@ -10,17 +10,17 @@ $(document).ready(function () { G = new Syndicate.Ground(function () { console.log('starting ground boot'); - Network.spawn({ + Dataspace.spawn({ counter: 0, boot: function () {}, handleEvent: function (e) {}, step: function () { - Network.send(["beep", this.counter++]); + Dataspace.send(["beep", this.counter++]); return this.counter <= 10; } }); - Network.spawn({ + Dataspace.spawn({ boot: function () { return sub(["beep", __]); }, handleEvent: function (e) { if (e.type === 'message') { diff --git a/js/examples/textfield-dsl/index.js b/js/examples/textfield-dsl/index.js index 5f33832..52c5f07 100644 --- a/js/examples/textfield-dsl/index.js +++ b/js/examples/textfield-dsl/index.js @@ -154,7 +154,7 @@ function spawnSearch() { // Main $(document).ready(function () { - ground network G { + ground dataspace G { Syndicate.JQuery.spawnJQueryDriver(); Syndicate.DOM.spawnDOMDriver(); @@ -163,7 +163,7 @@ $(document).ready(function () { spawnSearch(); } - G.network.onStateChange = function (mux, patch) { + G.dataspace.onStateChange = function (mux, patch) { $("#spy-holder").text(Syndicate.prettyTrie(mux.routingTable)); }; }); diff --git a/js/examples/textfield/index.js b/js/examples/textfield/index.js index ab8991f..2fcdfd2 100644 --- a/js/examples/textfield/index.js +++ b/js/examples/textfield/index.js @@ -1,7 +1,7 @@ /////////////////////////////////////////////////////////////////////////// // GUI -var Network = Syndicate.Network; +var Dataspace = Syndicate.Dataspace; var Route = Syndicate.Route; var Patch = Syndicate.Patch; var __ = Syndicate.__; @@ -26,7 +26,7 @@ function piece(text, pos, lo, hi, cls) { } function spawnGui() { - Network.spawn({ + Dataspace.spawn({ field: { text: '', pos: 0 }, highlight: { state: false }, @@ -46,15 +46,15 @@ function spawnGui() { var keycode = event.keyCode; var character = String.fromCharCode(event.charCode); if (keycode === 37 /* left */) { - Network.send(["fieldCommand", "cursorLeft"]); + Dataspace.send(["fieldCommand", "cursorLeft"]); } else if (keycode === 39 /* right */) { - Network.send(["fieldCommand", "cursorRight"]); + Dataspace.send(["fieldCommand", "cursorRight"]); } else if (keycode === 9 /* tab */) { // ignore } else if (keycode === 8 /* backspace */) { - Network.send(["fieldCommand", "backspace"]); + Dataspace.send(["fieldCommand", "backspace"]); } else if (character) { - Network.send(["fieldCommand", ["insert", character]]); + Dataspace.send(["fieldCommand", ["insert", character]]); } break; case "stateChange": @@ -89,7 +89,7 @@ function spawnGui() { function spawnModel() { var initialContents = "initial"; - Network.spawn({ + Dataspace.spawn({ fieldContents: initialContents, cursorPos: initialContents.length, /* positions address gaps between characters */ @@ -127,7 +127,7 @@ function spawnModel() { }, publishState: function () { - Network.stateChange( + Dataspace.stateChange( Patch.retract(["fieldContents", __, __]) .andThen(Patch.assert(["fieldContents", this.fieldContents, this.cursorPos]))); } @@ -138,7 +138,7 @@ function spawnModel() { // Search engine function spawnSearch() { - Network.spawn({ + Dataspace.spawn({ fieldContents: "", highlight: false, @@ -163,7 +163,7 @@ function spawnSearch() { }, publishState: function () { - Network.stateChange( + Dataspace.stateChange( Patch.retract(["highlight", __]) .andThen(Patch.assert(["highlight", this.highlight]))); }, @@ -198,7 +198,7 @@ $(document).ready(function () { spawnSearch(); }); - G.network.onStateChange = function (mux, patch) { + G.dataspace.onStateChange = function (mux, patch) { $("#spy-holder").text(Syndicate.prettyTrie(mux.routingTable)); }; diff --git a/js/src/ack.js b/js/src/ack.js index 45e22fe..dd83ac9 100644 --- a/js/src/ack.js +++ b/js/src/ack.js @@ -1,7 +1,7 @@ // Utility protocol for measuring when a stateChange takes effect. var RandomID = require('./randomid.js'); -var Network = require('./network.js').Network; +var Dataspace = require('./dataspace.js').Dataspace; var Route = require('./route.js'); var Patch = require('./patch.js'); @@ -14,12 +14,12 @@ function Ack(metaLevel, id) { } Ack.prototype.arm = function () { - Network.stateChange(Patch.sub([$Ack, this.id], this.metaLevel)); - Network.send([$Ack, this.id], this.metaLevel); + Dataspace.stateChange(Patch.sub([$Ack, this.id], this.metaLevel)); + Dataspace.send([$Ack, this.id], this.metaLevel); }; Ack.prototype.disarm = function () { - Network.stateChange(Patch.unsub([$Ack, this.id], this.metaLevel)); + Dataspace.stateChange(Patch.unsub([$Ack, this.id], this.metaLevel)); }; Ack.prototype.check = function (e) { diff --git a/js/src/actor.js b/js/src/actor.js index 3fa192f..92239a2 100644 --- a/js/src/actor.js +++ b/js/src/actor.js @@ -1,7 +1,7 @@ 'use strict'; var Immutable = require('immutable'); -var Network = require('./network.js').Network; +var Dataspace = require('./dataspace.js').Dataspace; var Mux = require('./mux.js'); var Patch = require('./patch.js'); var Route = require('./route.js'); @@ -10,7 +10,7 @@ var Util = require('./util.js'); //--------------------------------------------------------------------------- function spawnActor(state, bootFn) { - Network.spawn(new Actor(state, bootFn)); + Dataspace.spawn(new Actor(state, bootFn)); } function Actor(state, bootFn) { @@ -41,14 +41,14 @@ Actor.prototype.removeFacet = function(facet) { Actor.prototype.checkForTermination = function() { if (this.facets.isEmpty()) { - Network.exit(); + Dataspace.exit(); } }; //--------------------------------------------------------------------------- function createFacet() { - return new Facet(Network.activeBehavior()); + return new Facet(Dataspace.activeBehavior()); } function Facet(actor) { @@ -129,7 +129,7 @@ Facet.prototype.addEndpoint = function(endpoint) { var patch = endpoint.subscriptionFn.call(this.actor.state); var r = this.actor.mux.addStream(patch); this.endpoints = this.endpoints.set(r.pid, endpoint); - Network.stateChange(r.deltaAggregate); + Dataspace.stateChange(r.deltaAggregate); return this; // for chaining }; @@ -152,7 +152,7 @@ Facet.prototype.refresh = function() { var r = facet.actor.mux.updateStream(eid, patch); aggregate = aggregate.andThen(r.deltaAggregate); }); - Network.stateChange(aggregate); + Dataspace.stateChange(aggregate); }; Facet.prototype.completeBuild = function() { @@ -168,7 +168,7 @@ Facet.prototype.terminate = function() { var r = facet.actor.mux.removeStream(eid); aggregate = aggregate.andThen(r.deltaAggregate); }); - Network.stateChange(aggregate); + Dataspace.stateChange(aggregate); this.endpoints = Immutable.Map(); this.actor.removeFacet(this); this.doneBlocks.forEach(function(b) { b.call(facet.actor.state); }); diff --git a/js/src/network.js b/js/src/dataspace.js similarity index 65% rename from js/src/network.js rename to js/src/dataspace.js index 151e54d..4466bdd 100644 --- a/js/src/network.js +++ b/js/src/dataspace.js @@ -24,14 +24,14 @@ function terminate() { return { type: 'terminate' }; } -function terminateNetwork() { - return { type: 'terminateNetwork' }; +function terminateDataspace() { + return { type: 'terminateDataspace' }; } /*---------------------------------------------------------------------------*/ -/* Network */ +/* Dataspace */ -function Network(bootFn) { +function Dataspace(bootFn) { this.pendingActions = Immutable.List(); // of [pid, Action] this.processTable = Immutable.Map(); // pid -> Behavior this.runnablePids = Immutable.Set(); // of pid @@ -42,93 +42,93 @@ function Network(bootFn) { // Class state and methods -Network.stack = Immutable.List(); +Dataspace.stack = Immutable.List(); -Network.current = function () { - return Network.stack.last().network; +Dataspace.current = function () { + return Dataspace.stack.last().dataspace; }; -Network.activePid = function () { - return Network.stack.last().activePid; +Dataspace.activePid = function () { + return Dataspace.stack.last().activePid; }; -Network.activeBehavior = function () { - var entry = Network.stack.last(); - var p = entry.network.processTable.get(entry.activePid); +Dataspace.activeBehavior = function () { + var entry = Dataspace.stack.last(); + var p = entry.dataspace.processTable.get(entry.activePid); return p ? p.behavior : null; }; -Network.withNetworkStack = function (stack, f) { - var oldStack = Network.stack; - Network.stack = stack; +Dataspace.withDataspaceStack = function (stack, f) { + var oldStack = Dataspace.stack; + Dataspace.stack = stack; var result; try { result = f(); } catch (e) { - Network.stack = oldStack; + Dataspace.stack = oldStack; throw e; } - Network.stack = oldStack; + Dataspace.stack = oldStack; return result; }; -Network.wrap = function (f) { - var savedStack = Network.stack; +Dataspace.wrap = function (f) { + var savedStack = Dataspace.stack; return function () { var actuals = arguments; - return Network.withNetworkStack(savedStack, function () { - var result = Network.current().asChild(Network.activePid(), function () { + return Dataspace.withDataspaceStack(savedStack, function () { + var result = Dataspace.current().asChild(Dataspace.activePid(), function () { return f.apply(null, actuals); }); - Network.stack.reverse().forEach(function (entry) { - entry.network.markRunnable(entry.activePid); + Dataspace.stack.reverse().forEach(function (entry) { + entry.dataspace.markRunnable(entry.activePid); }); return result; }); }; }; -Network.enqueueAction = function (action) { - var entry = Network.stack.last(); - entry.network.enqueueAction(entry.activePid, action); +Dataspace.enqueueAction = function (action) { + var entry = Dataspace.stack.last(); + entry.dataspace.enqueueAction(entry.activePid, action); }; -Network.send = function (body, metaLevel) { - Network.enqueueAction(message(Patch.prependAtMeta(body, metaLevel || 0))); +Dataspace.send = function (body, metaLevel) { + Dataspace.enqueueAction(message(Patch.prependAtMeta(body, metaLevel || 0))); }; -Network.stateChange = function (patch) { - Network.enqueueAction(stateChange(patch)); +Dataspace.stateChange = function (patch) { + Dataspace.enqueueAction(stateChange(patch)); }; -Network.spawn = function (behavior) { - Network.enqueueAction(spawn(behavior)); +Dataspace.spawn = function (behavior) { + Dataspace.enqueueAction(spawn(behavior)); }; -Network.exit = function (exn) { - Network.current().kill(Network.activePid(), exn); +Dataspace.exit = function (exn) { + Dataspace.current().kill(Dataspace.activePid(), exn); }; -Network.exitNetwork = function () { - Network.enqueueAction(terminateNetwork()); +Dataspace.exitDataspace = function () { + Dataspace.enqueueAction(terminateDataspace()); }; -Network.inertBehavior = { +Dataspace.inertBehavior = { handleEvent: function (e) {} }; // Instance methods -Network.prototype.asChild = function (pid, f, omitLivenessCheck) { +Dataspace.prototype.asChild = function (pid, f, omitLivenessCheck) { var self = this; var p = this.processTable.get(pid, null); if (!omitLivenessCheck && (p === null)) { - console.warn("Network.asChild eliding invocation of dead process", pid); + console.warn("Dataspace.asChild eliding invocation of dead process", pid); return; } - return Network.withNetworkStack( - Network.stack.push({ network: this, activePid: pid }), + return Dataspace.withDataspaceStack( + Dataspace.stack.push({ dataspace: this, activePid: pid }), function () { try { return f(p); @@ -138,14 +138,14 @@ Network.prototype.asChild = function (pid, f, omitLivenessCheck) { }); }; -Network.prototype.kill = function (pid, exn) { +Dataspace.prototype.kill = function (pid, exn) { if (exn && exn.stack) { console.log("Process exiting", pid, exn, exn.stack); } else { console.log("Process exiting", pid, exn); } var p = this.processTable.get(pid); - this.processTable = this.processTable.set(pid, { behavior: Network.inertBehavior }); + this.processTable = this.processTable.set(pid, { behavior: Dataspace.inertBehavior }); if (p) { if (p.behavior.trapexit) { this.asChild(pid, function () { return p.behavior.trapexit(exn); }, true); @@ -154,12 +154,12 @@ Network.prototype.kill = function (pid, exn) { } }; -Network.prototype.boot = function () { - // Needed in order for a new Network to be marked as "runnable", so +Dataspace.prototype.boot = function () { + // Needed in order for a new Dataspace to be marked as "runnable", so // its initial actions get performed. }; -Network.prototype.handleEvent = function (e) { +Dataspace.prototype.handleEvent = function (e) { switch (e.type) { case 'stateChange': this.enqueueAction('meta', stateChange(e.patch.lift())); @@ -175,17 +175,17 @@ Network.prototype.handleEvent = function (e) { return true; }; -Network.prototype.step = function () { +Dataspace.prototype.step = function () { return this.dispatchActions() && this.runRunnablePids() && ((this.pendingActions.size > 0) || (this.runnablePids.size > 0)); }; -Network.prototype.enqueueAction = function (pid, action) { +Dataspace.prototype.enqueueAction = function (pid, action) { this.pendingActions = this.pendingActions.push([pid, action]); }; -Network.prototype.dispatchActions = function () { +Dataspace.prototype.dispatchActions = function () { var self = this; var actionQueue = this.pendingActions; this.pendingActions = Immutable.List(); @@ -201,11 +201,11 @@ Network.prototype.dispatchActions = function () { return alive; }; -Network.prototype.markRunnable = function (pid) { +Dataspace.prototype.markRunnable = function (pid) { this.runnablePids = this.runnablePids.add(pid); }; -Network.prototype.runRunnablePids = function () { +Dataspace.prototype.runRunnablePids = function () { var self = this; var pidSet = this.runnablePids; this.runnablePids = Immutable.Set(); @@ -219,7 +219,7 @@ Network.prototype.runRunnablePids = function () { return true; }; -Network.prototype.interpretAction = function (pid, action) { +Dataspace.prototype.interpretAction = function (pid, action) { var self = this; switch (action.type) { @@ -233,7 +233,7 @@ Network.prototype.interpretAction = function (pid, action) { console.warn('Process ' + pid + ' send message containing query', action.message); } if (pid !== 'meta' && Patch.isAtMeta(action.message)) { - Network.send(action.message[1]); + Dataspace.send(action.message[1]); } else { this.mux.routeMessage(action.message).forEach(function (pid) { self.deliverEvent(pid, action); @@ -262,8 +262,8 @@ Network.prototype.interpretAction = function (pid, action) { this.processTable = this.processTable.remove(pid); return true; - case 'terminateNetwork': - Network.exit(); + case 'terminateDataspace': + Dataspace.exit(); return false; default: @@ -273,17 +273,17 @@ Network.prototype.interpretAction = function (pid, action) { } }; -Network.prototype.deliverPatches = function (oldMux, updateStreamResult) { +Dataspace.prototype.deliverPatches = function (oldMux, updateStreamResult) { var self = this; var events = Mux.computeEvents(oldMux, this.mux, updateStreamResult); events.eventMap.forEach(function (patch, pid) { self.deliverEvent(pid, stateChange(patch)); }); - events.metaEvents.forEach(Network.stateChange); + events.metaEvents.forEach(Dataspace.stateChange); this.onStateChange(this.mux, updateStreamResult.deltaAggregate); }; -Network.prototype.deliverEvent = function (pid, event) { +Dataspace.prototype.deliverEvent = function (pid, event) { var childBusy = this.asChild(pid, function (p) { return p.behavior.handleEvent(event); }); if (childBusy) this.markRunnable(pid); }; @@ -294,6 +294,6 @@ module.exports.stateChange = stateChange; module.exports.message = message; module.exports.spawn = spawn; module.exports.terminate = terminate; -module.exports.terminateNetwork = terminateNetwork; +module.exports.terminateDataspace = terminateDataspace; -module.exports.Network = Network; +module.exports.Dataspace = Dataspace; diff --git a/js/src/dom-driver.js b/js/src/dom-driver.js index 11d63a4..6b21767 100644 --- a/js/src/dom-driver.js +++ b/js/src/dom-driver.js @@ -4,20 +4,20 @@ var DemandMatcher = require('./demand-matcher.js').DemandMatcher; var Ack = require('./ack.js').Ack; var Seal = require('./seal.js').Seal; -var Network_ = require("./network.js"); -var Network = Network_.Network; -var __ = Network_.__; -var _$ = Network_._$; +var Dataspace_ = require("./dataspace.js"); +var Dataspace = Dataspace_.Dataspace; +var __ = Dataspace_.__; +var _$ = Dataspace_._$; function spawnDOMDriver(domWrapFunction, jQueryWrapFunction) { domWrapFunction = domWrapFunction || defaultWrapFunction; var spec = domWrapFunction(_$('selector'), _$('fragmentClass'), _$('fragmentSpec')); - Network.spawn( + Dataspace.spawn( new DemandMatcher(spec, Patch.advertise(spec), { onDemandIncrease: function (c) { - Network.spawn(new DOMFragment(c.selector, + Dataspace.spawn(new DOMFragment(c.selector, c.fragmentClass, c.fragmentSpec, domWrapFunction, @@ -45,11 +45,11 @@ DOMFragment.prototype.boot = function () { var self = this; var specification = self.domWrapFunction(self.selector, self.fragmentClass, self.fragmentSpec); - Network.spawn(new Network(function () { + Dataspace.spawn(new Dataspace(function () { Syndicate.JQuery.spawnJQueryDriver(self.selector+" > ."+self.fragmentClass, 1, self.jQueryWrapFunction); - Network.spawn({ + Dataspace.spawn({ demandExists: false, subscriptionEstablished: new Ack(1), boot: function () { @@ -63,7 +63,7 @@ DOMFragment.prototype.boot = function () { if (e.patch.hasRemoved()) this.demandExists = false; } if (this.subscriptionEstablished.done && !this.demandExists) { - Network.exitNetwork(); + Dataspace.exitDataspace(); } } }); @@ -84,7 +84,7 @@ DOMFragment.prototype.handleEvent = function (e) { var n = this.nodes[i]; n.parentNode.removeChild(n); } - Network.exit(); + Dataspace.exit(); } }; diff --git a/js/src/ground.js b/js/src/ground.js index a6ea0a9..9deba81 100644 --- a/js/src/ground.js +++ b/js/src/ground.js @@ -1,21 +1,21 @@ "use strict"; var Immutable = require('immutable'); -var Network = require('./network.js').Network; +var Dataspace = require('./dataspace.js').Dataspace; function Ground(bootFn) { var self = this; this.stepperId = null; - this.baseStack = Immutable.List.of({ network: this, activePid: -1 }); - Network.withNetworkStack(this.baseStack, function () { - self.network = new Network(bootFn); + this.baseStack = Immutable.List.of({ dataspace: this, activePid: -1 }); + Dataspace.withDataspaceStack(this.baseStack, function () { + self.dataspace = new Dataspace(bootFn); }); } Ground.prototype.step = function () { var self = this; - return Network.withNetworkStack(this.baseStack, function () { - return self.network.step(); + return Dataspace.withDataspaceStack(this.baseStack, function () { + return self.dataspace.step(); }); }; @@ -49,7 +49,7 @@ Ground.prototype.stopStepping = function () { Ground.prototype.kill = function (pid, exn) { this.checkPid(pid); - console.log("Ground network terminated"); + console.log("Ground dataspace terminated"); this.stopStepping(); }; diff --git a/js/src/jquery-driver.js b/js/src/jquery-driver.js index c3c77a5..aca370f 100644 --- a/js/src/jquery-driver.js +++ b/js/src/jquery-driver.js @@ -2,21 +2,21 @@ var Patch = require("./patch.js"); var DemandMatcher = require('./demand-matcher.js').DemandMatcher; -var Network_ = require("./network.js"); -var Network = Network_.Network; -var __ = Network_.__; -var _$ = Network_._$; +var Dataspace_ = require("./dataspace.js"); +var Dataspace = Dataspace_.Dataspace; +var __ = Dataspace_.__; +var _$ = Dataspace_._$; function spawnJQueryDriver(baseSelector, metaLevel, wrapFunction) { metaLevel = metaLevel || 0; wrapFunction = wrapFunction || defaultWrapFunction; - Network.spawn( + Dataspace.spawn( new DemandMatcher(Patch.observe(wrapFunction(_$('selector'), _$('eventName'), __)), Patch.advertise(wrapFunction(_$('selector'), _$('eventName'), __)), { metaLevel: metaLevel, onDemandIncrease: function (c) { - Network.spawn(new JQueryEventRouter(baseSelector, + Dataspace.spawn(new JQueryEventRouter(baseSelector, c.selector, c.eventName, metaLevel, @@ -38,8 +38,8 @@ function JQueryEventRouter(baseSelector, selector, eventName, metaLevel, wrapFun this.wrapFunction = wrapFunction || defaultWrapFunction; this.preventDefault = (this.eventName.charAt(0) !== "+"); this.handler = - Network.wrap(function (e) { - Network.send(self.wrapFunction(self.selector, self.eventName, e), self.metaLevel); + Dataspace.wrap(function (e) { + Dataspace.send(self.wrapFunction(self.selector, self.eventName, e), self.metaLevel); if (self.preventDefault) e.preventDefault(); return !self.preventDefault; }); @@ -56,7 +56,7 @@ JQueryEventRouter.prototype.boot = function () { JQueryEventRouter.prototype.handleEvent = function (e) { if (e.type === "stateChange" && e.patch.hasRemoved()) { this.computeNodes().off(this.eventName, this.handler); - Network.exit(); + Dataspace.exit(); } }; diff --git a/js/src/main.js b/js/src/main.js index 8e383a1..09edd73 100644 --- a/js/src/main.js +++ b/js/src/main.js @@ -6,7 +6,7 @@ function copyKeys(keys, to, from) { } } -module.exports = require("./network.js"); +module.exports = require("./dataspace.js"); module.exports.Route = require("./route.js"); copyKeys(['__', '_$', '$Capture', '$Special', diff --git a/js/test/test-syndicate.js b/js/test/test-syndicate.js index 823a6b1..252ab51 100644 --- a/js/test/test-syndicate.js +++ b/js/test/test-syndicate.js @@ -4,7 +4,7 @@ var expect = require('expect.js'); var Immutable = require('immutable'); var Syndicate = require('../src/main.js'); -var Network = Syndicate.Network; +var Dataspace = Syndicate.Dataspace; var Patch = Syndicate.Patch; var __ = Syndicate.__; @@ -53,12 +53,12 @@ describe("configurationTrace", function() { describe("with some traced communication", function () { it("should yield an appropriate trace", function () { checkTrace(function (trace) { - Network.spawn({ + Dataspace.spawn({ boot: function () { return Syndicate.sub(__); }, handleEvent: traceEvent(trace) }); - Network.send(123); - Network.send(234); + Dataspace.send(123); + Dataspace.send(234); }, ['<<<<<<<< Removed:\n'+ '::: nothing\n'+ '======== Added:\n'+ @@ -75,11 +75,11 @@ describe("nonempty initial routes", function () { it("should be immediately signalled to the process", function () { // Specifically, no Syndicate.updateRoutes([]) first. checkTrace(function (trace) { - Network.spawn({ + Dataspace.spawn({ boot: function () { return Patch.assert(["A", __]); }, handleEvent: function (e) {} }); - Network.spawn({ + Dataspace.spawn({ boot: function () { return Patch.sub(["A", __]); }, handleEvent: traceEvent(trace) }); @@ -94,10 +94,10 @@ describe("nonempty initial routes", function () { describe("nested actor with an echoey protocol", function () { it("shouldn't see an echoed assertion", function () { checkTrace(function (trace) { - Network.spawn(new Network(function () { - Network.spawn({ + Dataspace.spawn(new Dataspace(function () { + Dataspace.spawn({ boot: function () { - Network.stateChange(Patch.retract("X", 1)); // happens after subs on next line! + Dataspace.stateChange(Patch.retract("X", 1)); // happens after subs on next line! return Patch.sub("X", 1).andThen(Patch.assert("X", 1)); }, handleEvent: traceEvent(trace) @@ -116,10 +116,10 @@ describe("nested actor with an echoey protocol", function () { }) it("shouldn't see an echoed message", function () { checkTrace(function (trace) { - Network.spawn(new Network(function () { - Network.spawn({ + Dataspace.spawn(new Dataspace(function () { + Dataspace.spawn({ boot: function () { - Network.send("X", 1); // happens after subs on next line! + Dataspace.send("X", 1); // happens after subs on next line! return Patch.sub("X", 1); }, handleEvent: traceEvent(trace) @@ -134,10 +134,10 @@ describe("nested actor with an echoey protocol", function () { // describe("actor with nonempty initial routes", function () { // it("shouldn't see initial empty conversational context", function () { // checkTrace(function (trace) { -// Network.spawn({ +// Dataspace.spawn({ // boot: function () { return [pub(["A", __])] }, // handleEvent: function (e) { -// Network.spawn(new Actor(function () { +// Dataspace.spawn(new Actor(function () { // Actor.observeAdvertisers( // function () { return ["A", __] }, // { presence: "isPresent" }, diff --git a/racket/FAQ.md b/racket/FAQ.md index 456f2bf..535ac39 100644 --- a/racket/FAQ.md +++ b/racket/FAQ.md @@ -2,7 +2,7 @@ * How do I run a syndicate program? - `#lang syndicate` collects actions (`spawn`s) from module toplevel and - uses them as boot actions for a ground-level network. The alternative + uses them as boot actions for a ground-level dataspace. The alternative is to use a different #lang, and to call `run-ground` yourself; see an example in syndicate/examples/example-plain.rkt. @@ -20,7 +20,7 @@ p - lifecycle events (spawns, crashes, and quits) a - process actions g - dataspace contents - Adding 'N' will show whole network-states too. Remove each individual + Adding 'N' will show whole dataspace-states too. Remove each individual character to turn off the corresponding trace facility; the default value of the variable is just the empty-string. @@ -67,8 +67,8 @@ ;; stateless actor (spawn/stateless (lambda (event) ... (list action ...)) initial-action ...) - ;; network of actors - (spawn-network boot-action ...) + ;; dataspace of actors + (spawn-dataspace boot-action ...) ``` * How do actors at different levels communicate? @@ -98,9 +98,9 @@ while the second says > OVER THERE, I am interested in assertions 'hello - The former is necessary for the local network to route events to us, and - the latter is necessary for the remote network to route events to the - local network. + The former is necessary for the local dataspace to route events to us, and + the latter is necessary for the remote dataspace to route events to the + local dataspace. Implicit in any `sub` call with N>0 meta-level, therefore, is the construction of a whole *chain* of subscriptions, relaying information @@ -176,7 +176,7 @@ When a message is sent, it is delivered to everyone that is interested in it **at that time**. -* How to inject an external event (e.g. keyboard press) into the network? +* How to inject an external event (e.g. keyboard press) into the dataspace? - Use `send-ground-message`. - (Note that the argument to `send-ground-message` is wrapped in a `message`, so to send `'foo` at the ground level use `(send-ground-message 'foo)` rather than @@ -191,10 +191,10 @@ * I used `spawn` but the actor isn't being created. What happened? - The only two ways to spawn a process are to (a) supply the spawn instruction in - that network's boot-actions, or (b) have some already-existing actor supply the + that dataspace's boot-actions, or (b) have some already-existing actor supply the spawn instruction in response to some event it receives. Note that calling `spawn` constructs a structure which is perhaps eventually interpreted by the containing - network of an actor; it doesn't really "do" anything directly. + dataspace of an actor; it doesn't really "do" anything directly. * Why does `patch-seq` exist? Aren't all the actions in a transition effectively `patch-seq`d together? - Effectively, yes, that is what happens. The difference is in the @@ -210,7 +210,7 @@ gets to observe things-as-they-were-before-the-patch, and things-as-they-are-after-the-patch. -* How do I create a tiered network, such as +* How do I create a tiered dataspace, such as ``` ground / \ @@ -218,15 +218,15 @@ \ net3 ``` - - use `spawn-network`: + - use `spawn-dataspace`: ```racket #lang syndicate - (spawn-network ...) - (spawn-network ... - (spawn-network ...)) + (spawn-dataspace ...) + (spawn-dataspace ... + (spawn-dataspace ...)) ``` - `spawn-network` expands into a regular `spawn` with an event-handler and - state corresponding to a whole VM. The arguments to spawn-network are + `spawn-dataspace` expands into a regular `spawn` with an event-handler and + state corresponding to a whole VM. The arguments to spawn-dataspace are actions to take at boot time in the new VM. * What is the outcome if I do `(assert X)` and then later `(patch-seq (retract ?) assert X)`? @@ -275,4 +275,4 @@ * Why does `#f` keep getting sent as an event? - When a behavior returns something besides `#f` in response to an event, it is repeatedly sent `#f` until it does return `#f`. - - Think of it as a way of the network asking "anything else?" + - Think of it as a way of the dataspace asking "anything else?" diff --git a/racket/doc/big-bang.rkt.txt b/racket/doc/big-bang.rkt.txt index 01a364e..25ddb12 100644 --- a/racket/doc/big-bang.rkt.txt +++ b/racket/doc/big-bang.rkt.txt @@ -37,15 +37,15 @@ (idle 0 (- mx dx) (- my dy))])) (actor (idle 0 orig-x orig-y))) -(big-bang-network #:width 640 - #:height 480 - (actor (forever - (on (asserted (active-window $id) #:meta-level 1) - (update-window 'active-window-label 300 0 - (text (format "~v" id) 22 "black"))))) - (button #:background "red" 'stop-button 0 0 "Exit" - (lambda () (assert! 'stop #:meta-level 1))) - (draggable-shape 'c1 50 50 (circle 30 "solid" "orange")) - (draggable-shape 's1 100 100 (star 40 "solid" "firebrick"))) +(big-bang-dataspace #:width 640 + #:height 480 + (actor (forever + (on (asserted (active-window $id) #:meta-level 1) + (update-window 'active-window-label 300 0 + (text (format "~v" id) 22 "black"))))) + (button #:background "red" 'stop-button 0 0 "Exit" + (lambda () (assert! 'stop #:meta-level 1))) + (draggable-shape 'c1 50 50 (circle 30 "solid" "orange")) + (draggable-shape 's1 100 100 (star 40 "solid" "firebrick"))) (exit 0) diff --git a/racket/doc/chat.rkt.txt b/racket/doc/chat.rkt.txt index c2dbe07..d1ab30d 100644 --- a/racket/doc/chat.rkt.txt +++ b/racket/doc/chat.rkt.txt @@ -19,13 +19,13 @@ (on `(,$who says ,$what) (say who "says: ~a" what)) (on (message (at-meta (tcp-channel them us $bs))) (define input-string (string-trim (bytes->string/utf-8 bs))) - (if (equal? input-string "quit-network") - (assert! 'quit-network) + (if (equal? input-string "quit-dataspace") + (assert! 'quit-dataspace) (send! `(,user says ,input-string))))) (send-to-remote "Goodbye!\n"))) (spawn-tcp-driver) (let ((us (tcp-listener 5999))) - (group (until (asserted 'quit-network) + (group (until (asserted 'quit-dataspace) (on (asserted (advertise (tcp-channel $them us ?)) #:meta-level 1) (spawn-session them us))))) diff --git a/racket/doc/notes-on-hll.md b/racket/doc/notes-on-hll.md index 60d1c39..fce0905 100644 --- a/racket/doc/notes-on-hll.md +++ b/racket/doc/notes-on-hll.md @@ -3,7 +3,7 @@ Just a sketch, at the moment. Instantaneous actions, I := (actor I ...) - (network I ...) + (dataspace I ...) (state [B O ...] [E I ...] ...) (background I ...) (assert! P) @@ -52,8 +52,8 @@ value(s) of the final `I` from the `E` exit branch that was chosen *prepended* to the values of the calling actor's variables at the time of `state` termination. -There are four kinds of actor-spawning `I`s: `actor`, `network`, -`state` and `background`. Neither `actor`, `network` nor `background` +There are four kinds of actor-spawning `I`s: `actor`, `dataspace`, +`state` and `background`. Neither `actor`, `dataspace` nor `background` yield a value; only `state` does so. However, both `state` and `background` link to their invoking contexts, because `state` may return values or crash, and `background` may crash. Actors using @@ -66,7 +66,7 @@ Q: Should exception values be transmitted on `state` failure? I think no, but I am not sure there's a good reason why not. Of the events, `asserted`, `retracted` and `message` require no -private-state, since the network does the book-keeping for us. +private-state, since the dataspace does the book-keeping for us. `rising-edge`, however, needs to track the state of its predicate. If the predicate happens to involve an `exists`, then an assertion set must be maintained, like for a `track`. diff --git a/racket/syndicate-gl/2d.rkt b/racket/syndicate-gl/2d.rkt index e8b1081..6be66c7 100644 --- a/racket/syndicate-gl/2d.rkt +++ b/racket/syndicate-gl/2d.rkt @@ -12,7 +12,7 @@ update-scene update-sprites spawn-keyboard-integrator - 2d-network) + 2d-dataspace) (require data/order) (require data/splay-tree) @@ -31,13 +31,13 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Shared state maintained by network. Describes current window dimensions. +;; Shared state maintained by dataspace. Describes current window dimensions. (struct window (width height) #:transparent) -;; Message sent by network. Describes frame about to be rendered. +;; Message sent by dataspace. Describes frame about to be rendered. (struct frame-event (counter timestamp elapsed-ms target-frame-rate) #:transparent) -;; Message sent by network. Describes a key event. Key is a sealed +;; Message sent by dataspace. Describes a key event. Key is a sealed ;; key-event%. `press?` is #t when the key is pressed (or ;; autorepeated!), and #f when it is released. (struct key-event (code press? key) #:transparent) @@ -221,7 +221,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define network-canvas% +(define dataspace-canvas% (class canvas% (inherit refresh with-gl-context swap-gl-buffers) @@ -243,7 +243,7 @@ (define postlude empty-instructions) (define fullscreen? #f) - (define network (make-network boot-actions)) + (define dataspace (make-dataspace boot-actions)) (define event-queue (make-queue)) (define target-frame-rate 60) @@ -266,7 +266,7 @@ (enqueue! event-queue e)) (define (deliver-event e) - (clean-transition (network-handle-event e network))) + (clean-transition (dataspace-handle-event e dataspace))) (define (quiesce!) (let loop ((txn #f) (need-poll? #t)) @@ -275,8 +275,8 @@ (if (queue-empty? event-queue) (when need-poll? (loop (deliver-event #f) #f)) (loop (deliver-event (dequeue! event-queue)) #t))] - [(transition new-network actions) - (set! network new-network) + [(transition new-dataspace actions) + (set! dataspace new-dataspace) (for-each process-action! actions) (loop #f #t)]))) @@ -387,9 +387,9 @@ (super-new (style '(gl no-autoclear))))) -(define (2d-network #:width [width #f] - #:height [height #f] - . boot-actions) +(define (2d-dataspace #:width [width #f] + #:height [height #f] + . boot-actions) (collect-garbage 'incremental) (collect-garbage 'major) (define frame (new frame% @@ -397,11 +397,11 @@ [label "syndicate-gl"] [width (or width 640)] [height (or height 480)])) - (define c (new network-canvas% + (define c (new dataspace-canvas% [parent frame] [boot-actions boot-actions])) (unless (send (send (send c get-dc) get-gl-context) ok?) - (error '2d-network "OpenGL context failed to initialize")) + (error '2d-dataspace "OpenGL context failed to initialize")) (send c focus) (send frame show #t) (yield 'wait)) diff --git a/racket/syndicate-gl/examples/basic.rkt b/racket/syndicate-gl/examples/basic.rkt index 30124dd..a511d57 100644 --- a/racket/syndicate-gl/examples/basic.rkt +++ b/racket/syndicate-gl/examples/basic.rkt @@ -77,20 +77,20 @@ (void) (sub (frame-event ? ? ? ?) #:meta-level 1))) -(2d-network (spawn-keyboard-integrator) - (spawn-background) - ;; (spawn-frame-counter) - (spawn-player-avatar) - (spawn (lambda (e s) #f) - (void) - (update-sprites (simple-sprite 0 50 50 50 50 (circle 50 "solid" "orange")) - (simple-sprite -1 60 60 50 50 (circle 50 "solid" "green")))) - (spawn (lambda (e s) - (match e - [(message _) - (transition s (assert 'stop #:meta-level 1))] - [_ #f])) - (void) - (sub (key-event #\q #t ?) #:meta-level 1)) - ) +(2d-dataspace (spawn-keyboard-integrator) + (spawn-background) + ;; (spawn-frame-counter) + (spawn-player-avatar) + (spawn (lambda (e s) #f) + (void) + (update-sprites (simple-sprite 0 50 50 50 50 (circle 50 "solid" "orange")) + (simple-sprite -1 60 60 50 50 (circle 50 "solid" "green")))) + (spawn (lambda (e s) + (match e + [(message _) + (transition s (assert 'stop #:meta-level 1))] + [_ #f])) + (void) + (sub (key-event #\q #t ?) #:meta-level 1)) + ) (exit 0) diff --git a/racket/syndicate-monolithic/core.rkt b/racket/syndicate-monolithic/core.rkt index ac17424..211f36b 100644 --- a/racket/syndicate-monolithic/core.rkt +++ b/racket/syndicate-monolithic/core.rkt @@ -1,14 +1,14 @@ #lang racket/base -;; Core implementation of Incremental Network Calculus. +;; Core implementation of Monolithic Syndicate. (provide (struct-out message) (except-out (struct-out quit) quit) - (struct-out quit-network) + (struct-out quit-dataspace) (rename-out [quit ]) (except-out (struct-out spawn) spawn) (rename-out [spawn ]) (struct-out transition) - (struct-out network) + (struct-out dataspace) (struct-out seal) @@ -46,11 +46,11 @@ scn/union (rename-out [make-quit quit]) - make-network - spawn-network + make-dataspace + spawn-dataspace (rename-out [spawn-process spawn]) spawn/stateless - make-spawn-network + make-spawn-dataspace transition-bind sequence-transitions @@ -58,10 +58,10 @@ sequence-transitions0 sequence-transitions0* - network-handle-event + dataspace-handle-event clean-transition - pretty-print-network) + pretty-print-dataspace) (require racket/set) (require racket/match) @@ -79,7 +79,7 @@ ;; Actions ⊃ Events (struct spawn (boot) #:prefab) -(struct quit-network () #:prefab) ;; NB. An action. Compare (quit), a Transition. +(struct quit-dataspace () #:prefab) ;; NB. An action. Compare (quit), a Transition. ;; A Behavior is a ((Option Event) Any -> Transition): a function ;; mapping an Event (or, in the #f case, a poll signal) and a @@ -89,7 +89,7 @@ ;; - #f, a signal from a Process that it is inert and need not be ;; scheduled until some Event relevant to it arrives; or, ;; - a (transition Any (Constreeof Action)), a new Process state to -;; be held by its Network and a sequence of Actions for the Network +;; be held by its Dataspace and a sequence of Actions for the Dataspace ;; to take on the transitioning Process's behalf. ;; - a (quit (Option Exn) (Constreeof Action)), signalling that the ;; Process should never again be handed an event, and that any @@ -104,16 +104,16 @@ ;; A Label is a PID or 'meta. ;; VM private states -(struct network (mux ;; Multiplexer - pending-action-queue ;; (Queueof (Cons Label (U Action 'quit))) - runnable-pids ;; (Setof PID) - behaviors ;; (HashTable PID Behavior) - states ;; (HashTable PID Any) - ) +(struct dataspace (mux ;; Multiplexer + pending-action-queue ;; (Queueof (Cons Label (U Action 'quit))) + runnable-pids ;; (Setof PID) + behaviors ;; (HashTable PID Behavior) + states ;; (HashTable PID Any) + ) #:transparent #:methods gen:syndicate-pretty-printable [(define (syndicate-pretty-print w [p (current-output-port)]) - (pretty-print-network w p))]) + (pretty-print-dataspace w p))]) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Seals are used by protocols to prevent the routing tries from @@ -124,7 +124,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (event? x) (or (scn? x) (message? x))) -(define (action? x) (or (event? x) (spawn? x) (quit-network? x))) +(define (action? x) (or (event? x) (spawn? x) (quit-dataspace? x))) (define (prepend-at-meta pattern level) (if (zero? level) @@ -181,8 +181,8 @@ (filter action? (flatten actions))) (define (send-event e pid w) - (define behavior (hash-ref (network-behaviors w) pid #f)) - (define old-state (hash-ref (network-states w) pid #f)) + (define behavior (hash-ref (dataspace-behaviors w) pid #f)) + (define old-state (hash-ref (dataspace-states w) pid #f)) (if (not behavior) w (begin @@ -205,16 +205,16 @@ (enqueue-actions (disable-process pid exn w) pid (list 'quit))))))) (define (update-state w pid s) - (struct-copy network w [states (hash-set (network-states w) pid s)])) + (struct-copy dataspace w [states (hash-set (dataspace-states w) pid s)])) (define (disable-process pid exn w) (when exn (log-error "Process ~a died with exception:\n~a" (cons pid (trace-pid-stack)) (exn->string exn))) - (struct-copy network w - [behaviors (hash-remove (network-behaviors w) pid)] - [states (hash-remove (network-states w) pid)])) + (struct-copy dataspace w + [behaviors (hash-remove (dataspace-behaviors w) pid)] + [states (hash-remove (dataspace-states w) pid)])) (define (invoke-process pid thunk k-ok k-exn) (define-values (ok? result) @@ -228,12 +228,12 @@ (k-exn result))) (define (mark-pid-runnable w pid) - (struct-copy network w [runnable-pids (set-add (network-runnable-pids w) pid)])) + (struct-copy dataspace w [runnable-pids (set-add (dataspace-runnable-pids w) pid)])) (define (enqueue-actions w label actions) - (struct-copy network w + (struct-copy dataspace w [pending-action-queue - (queue-append-list (network-pending-action-queue w) + (queue-append-list (dataspace-pending-action-queue w) (for/list [(a actions)] (cons label a)))])) (define (make-quit #:exception [exn #f] . actions) @@ -263,20 +263,20 @@ [(? quit? q) q] [actions (transition state actions)])) -(define-syntax-rule (spawn-network boot-action ...) - (make-spawn-network (lambda () (list boot-action ...)))) +(define-syntax-rule (spawn-dataspace boot-action ...) + (make-spawn-dataspace (lambda () (list boot-action ...)))) -(define (make-network boot-actions) - (network (mux) - (list->queue (for/list ((a (in-list (clean-actions boot-actions)))) (cons 'meta a))) - (set) - (hash) - (hash))) +(define (make-dataspace boot-actions) + (dataspace (mux) + (list->queue (for/list ((a (in-list (clean-actions boot-actions)))) (cons 'meta a))) + (set) + (hash) + (hash))) -(define (make-spawn-network boot-actions-thunk) +(define (make-spawn-dataspace boot-actions-thunk) (spawn (lambda () - (list network-handle-event - (transition (make-network (boot-actions-thunk)) '()))))) + (list dataspace-handle-event + (transition (make-dataspace (boot-actions-thunk)) '()))))) (define (transition-bind k t0) (match t0 @@ -307,10 +307,10 @@ [(? transition? t) (sequence-transitions* t rest)])])) (define (inert? w) - (and (queue-empty? (network-pending-action-queue w)) - (set-empty? (network-runnable-pids w)))) + (and (queue-empty? (dataspace-pending-action-queue w)) + (set-empty? (dataspace-runnable-pids w)))) -(define (network-handle-event e w) +(define (dataspace-handle-event e w) (if (or e (not (inert? w))) (sequence-transitions (transition w '()) (inject-event e) @@ -326,8 +326,8 @@ '())) (define (perform-actions w) - (for/fold ([wt (transition (struct-copy network w [pending-action-queue (make-queue)]) '())]) - ((entry (in-list (queue->list (network-pending-action-queue w))))) + (for/fold ([wt (transition (struct-copy dataspace w [pending-action-queue (make-queue)]) '())]) + ((entry (in-list (queue->list (dataspace-pending-action-queue w))))) #:break (quit? wt) ;; TODO: should a quit action be delayed until the end of the turn? (match-define [cons label a] entry) (trace-internal-action label a (transition-state wt)) @@ -351,20 +351,20 @@ (match-define (list behavior initial-transition) results) (create-process w behavior initial-transition)) (lambda (exn) - (log-error "Spawned process in network ~a died with exception:\n~a" + (log-error "Spawned process in dataspace ~a died with exception:\n~a" (trace-pid-stack) (exn->string exn)) (transition w '())))] ['quit (define-values (new-mux _label s aggregate-assertions) - (mux-remove-stream (network-mux w) label)) + (mux-remove-stream (dataspace-mux w) label)) ;; behavior & state in w already removed by disable-process (deliver-scns w new-mux label s aggregate-assertions)] - [(quit-network) + [(quit-dataspace) (make-quit)] [(? scn? s-orig) (define-values (new-mux _label s aggregate-assertions) - (mux-update-stream (network-mux w) label s-orig)) + (mux-update-stream (dataspace-mux w) label s-orig)) (deliver-scns w new-mux label s aggregate-assertions)] [(and m (message body)) (when (observe? body) @@ -375,7 +375,7 @@ (at-meta? body)) ;; it relates to envt, not local (transition w (message (at-meta-claim body))) (transition (for/fold [(w w)] - [(pid (in-list (mux-route-message (network-mux w) body)))] + [(pid (in-list (mux-route-message (dataspace-mux w) body)))] (send-event m pid w)) '()))])) @@ -400,20 +400,20 @@ [(cons (? scn? s) rest) (values s rest)] [other (values (scn trie-empty) other)])) (define-values (new-mux new-pid s aggregate-assertions) - (mux-add-stream (network-mux w) initial-scn)) - (let* ((w (struct-copy network w - [behaviors (hash-set (network-behaviors w) + (mux-add-stream (dataspace-mux w) initial-scn)) + (let* ((w (struct-copy dataspace w + [behaviors (hash-set (dataspace-behaviors w) new-pid behavior)])) (w (enqueue-actions (postprocess w new-pid) new-pid remaining-initial-actions))) (deliver-scns w new-mux new-pid s aggregate-assertions))))) (define (deliver-scns w new-mux acting-label s aggregate-assertions) - (define old-mux (network-mux w)) + (define old-mux (dataspace-mux w)) (define old-echo-cancelled-assertions (echo-cancelled-routing-table old-mux)) (define-values (scns meta-action) (compute-scns old-mux new-mux acting-label s aggregate-assertions)) - (transition (for/fold [(w (struct-copy network w [mux new-mux]))] + (transition (for/fold [(w (struct-copy dataspace w [mux new-mux]))] [(entry (in-list scns))] (match-define (cons label (and event (scn new-assertions))) entry) (if (equal? (biased-intersection old-echo-cancelled-assertions @@ -424,17 +424,17 @@ meta-action)) (define (step-children w) - (define runnable-pids (network-runnable-pids w)) + (define runnable-pids (dataspace-runnable-pids w)) (if (set-empty? runnable-pids) - #f ;; network is inert. - (transition (for/fold [(w (struct-copy network w [runnable-pids (set)]))] + #f ;; dataspace is inert. + (transition (for/fold [(w (struct-copy dataspace w [runnable-pids (set)]))] [(pid (in-set runnable-pids))] (send-event #f pid w)) '()))) -(define (pretty-print-network w [p (current-output-port)]) - (match-define (network mux qs runnable behaviors states) w) - (fprintf p "NETWORK:\n") +(define (pretty-print-dataspace w [p (current-output-port)]) + (match-define (dataspace mux qs runnable behaviors states) w) + (fprintf p "DATASPACE:\n") (fprintf p " - ~a queued actions\n" (queue-length qs)) (fprintf p " - ~a runnable pids ~a\n" (set-count runnable) (set->list runnable)) (fprintf p " - ~a live processes\n" (hash-count states)) @@ -460,10 +460,10 @@ (define (step* w) (let loop ((w w) (actions '())) (pretty-print w) - (match (network-handle-event #f w) + (match (dataspace-handle-event #f w) [#f (values w #f (flatten actions))] [(quit exn new-actions) (values w exn (flatten (cons actions new-actions)))] [(transition new-w new-actions) (loop new-w (cons actions new-actions))]))) - (step* (make-network '())) + (step* (make-dataspace '())) ) diff --git a/racket/syndicate-monolithic/examples/example-lang.rkt b/racket/syndicate-monolithic/examples/example-lang.rkt index 5f30cb3..414c2ce 100644 --- a/racket/syndicate-monolithic/examples/example-lang.rkt +++ b/racket/syndicate-monolithic/examples/example-lang.rkt @@ -27,8 +27,8 @@ #f)] [_ #f])) -(spawn-network (spawn r (void) (scn (subscription ?))) - (spawn b 0 '())) +(spawn-dataspace (spawn r (void) (scn (subscription ?))) + (spawn b 0 '())) (define (echoer e s) (match e diff --git a/racket/syndicate-monolithic/examples/example-layer.rkt b/racket/syndicate-monolithic/examples/example-layer.rkt index 97d878a..35add87 100644 --- a/racket/syndicate-monolithic/examples/example-layer.rkt +++ b/racket/syndicate-monolithic/examples/example-layer.rkt @@ -11,7 +11,7 @@ (subscription 'die) (subscription (observe 'die)))) -(spawn-network +(spawn-dataspace (spawn (lambda (e s) (match e [(message (at-meta 'die)) (quit)] diff --git a/racket/syndicate-monolithic/examples/example-meta-echo.rkt b/racket/syndicate-monolithic/examples/example-meta-echo.rkt index 4646758..5a8acc0 100644 --- a/racket/syndicate-monolithic/examples/example-meta-echo.rkt +++ b/racket/syndicate-monolithic/examples/example-meta-echo.rkt @@ -15,7 +15,7 @@ (require syndicate/pretty) -(spawn-network +(spawn-dataspace (spawn (lambda (e counter) (and e (let ((new-counter (+ counter 1))) diff --git a/racket/syndicate-monolithic/examples/example-meta-echo2.rkt b/racket/syndicate-monolithic/examples/example-meta-echo2.rkt index 2cb77e0..b70e9b4 100644 --- a/racket/syndicate-monolithic/examples/example-meta-echo2.rkt +++ b/racket/syndicate-monolithic/examples/example-meta-echo2.rkt @@ -3,7 +3,7 @@ (require syndicate/pretty) -(spawn-network +(spawn-dataspace (spawn (lambda (e counter) (and e (let ((new-counter (+ counter 1))) diff --git a/racket/syndicate-monolithic/examples/example-plain.rkt b/racket/syndicate-monolithic/examples/example-plain.rkt index ceb04cf..21cdc68 100644 --- a/racket/syndicate-monolithic/examples/example-plain.rkt +++ b/racket/syndicate-monolithic/examples/example-plain.rkt @@ -63,8 +63,8 @@ 1 (scn/union (subscription (observe (set-timer ? ? ?))) (subscription (timer-expired 'tick ?)))) - (spawn-network (spawn r (void) (scn (subscription ?))) - (spawn b 0 '())) + (spawn-dataspace (spawn r (void) (scn (subscription ?))) + (spawn b 0 '())) (spawn echoer (void) (scn (subscription (external-event (read-line-evt (current-input-port) 'any) ?) diff --git a/racket/syndicate-monolithic/examples/example-quit-world.rkt b/racket/syndicate-monolithic/examples/example-quit-world.rkt index 9fce14f..9f07f7f 100644 --- a/racket/syndicate-monolithic/examples/example-quit-world.rkt +++ b/racket/syndicate-monolithic/examples/example-quit-world.rkt @@ -1,5 +1,5 @@ #lang syndicate-monolithic -;; Demonstrates quit-network. +;; Demonstrates quit-dataspace. (require (only-in racket/port read-bytes-line-evt)) @@ -9,9 +9,9 @@ [(message (at-meta (at-meta (external-event _ (list #"quit"))))) (printf "Quitting just the leaf actor.\n") (quit)] - [(message (at-meta (at-meta (external-event _ (list #"quit-network"))))) - (printf "Terminating the whole network.\n") - (transition s (quit-network))] + [(message (at-meta (at-meta (external-event _ (list #"quit-dataspace"))))) + (printf "Terminating the whole dataspace.\n") + (transition s (quit-dataspace))] [_ #f])) (void) (scn (subscription (external-event (read-bytes-line-evt (current-input-port) 'any) ?) @@ -30,6 +30,6 @@ (void) (sub-to-alarm))) -(printf "Type 'quit' or 'quit-network'.\n") -(spawn-network (spawn-command-listener) - (spawn-ticker)) +(printf "Type 'quit' or 'quit-dataspace'.\n") +(spawn-dataspace (spawn-command-listener) + (spawn-ticker)) diff --git a/racket/syndicate-monolithic/ground.rkt b/racket/syndicate-monolithic/ground.rkt index cfb368e..3348782 100644 --- a/racket/syndicate-monolithic/ground.rkt +++ b/racket/syndicate-monolithic/ground.rkt @@ -1,5 +1,5 @@ #lang racket/base -;; Breaking the infinite tower of nested Networks, connecting to the "real world" at the fracture line. +;; Breaking the infinite tower of nested Dataspaces, connecting to the "real world" at the fracture line. (require racket/async-channel) (require racket/set) @@ -51,7 +51,7 @@ ;; Projection ;; Used to extract event descriptors and results from subscriptions -;; from the ground VM's contained Network. +;; from the ground VM's contained Dataspace. (define event-projection (observe (external-event (?!) ?))) ;; Interests -> (Listof RacketEvent) @@ -74,10 +74,10 @@ (handle-evt (system-idle-evt) (lambda _ #f))) ;; Action* -> Void -;; Runs a ground VM, booting the outermost Network with the given Actions. +;; Runs a ground VM, booting the outermost Dataspace with the given Actions. (define (run-ground . boot-actions) (let await-interrupt ((inert? #f) - (w (make-network boot-actions)) + (w (make-dataspace boot-actions)) (interests trie-empty)) ;; (log-info "GROUND INTERESTS:\n~a" (trie->pretty-string interests)) (if (and inert? (trie-empty? interests)) @@ -87,9 +87,9 @@ (current-ground-event-async-channel) (if inert? never-evt idle-handler) (extract-active-events interests)))) - (trace-process-step e #f network-handle-event w) - (define resulting-transition (clean-transition (network-handle-event e w))) - (trace-process-step-result e #f network-handle-event w #f resulting-transition) + (trace-process-step e #f dataspace-handle-event w) + (define resulting-transition (clean-transition (dataspace-handle-event e w))) + (trace-process-step-result e #f dataspace-handle-event w #f resulting-transition) (match resulting-transition [#f ;; inert (await-interrupt #t w interests)] diff --git a/racket/syndicate-monolithic/trace/stderr.rkt b/racket/syndicate-monolithic/trace/stderr.rkt index 08f1cfc..6863204 100644 --- a/racket/syndicate-monolithic/trace/stderr.rkt +++ b/racket/syndicate-monolithic/trace/stderr.rkt @@ -35,7 +35,7 @@ (define show-message-actions? #f) (define show-actions? #f) (define show-routing-table? #f) -(define network-is-boring? #t) +(define dataspace-is-boring? #t) (define (set-stderr-trace-flags! flags-string) (set! flags (for/set [(c flags-string)] (string->symbol (string c)))) @@ -53,7 +53,7 @@ (set-flag! M show-message-actions?) (set-flag! a show-actions?) (set-flag! g show-routing-table?) - (set! network-is-boring? (not (set-member? flags 'N)))) + (set! dataspace-is-boring? (not (set-member? flags 'N)))) (set-stderr-trace-flags! (or (getenv "MINIMART_TRACE") "")) @@ -81,7 +81,7 @@ (apply fprintf (current-error-port) fmt args)) (define (boring-state? state) - (or (and (network? state) network-is-boring?) + (or (and (dataspace? state) dataspace-is-boring?) (void? state))) (define (set-color! c) (when colored-output? (output "\e[0~am" c))) @@ -162,14 +162,14 @@ (syndicate-pretty-print (transition-state t) (current-error-port)))))))] [('internal-action (list pids a old-w)) (define pidstr (format-pids pids)) - (define oldcount (hash-count (network-behaviors old-w))) + (define oldcount (hash-count (dataspace-behaviors old-w))) (match a [(? spawn?) ;; Handle this in internal-action-result (void)] ['quit (when (or show-process-lifecycle? show-actions?) - (define interests (mux-interests-of (network-mux old-w) (car pids))) + (define interests (mux-interests-of (dataspace-mux old-w) (car pids))) (with-color BRIGHT-RED (output "~a exiting (~a total processes remain)\n" pidstr @@ -177,9 +177,9 @@ (unless (trie-empty? interests) (output "~a's final interests:\n" pidstr) (pretty-print-trie interests (current-error-port))))] - [(quit-network) + [(quit-dataspace) (with-color BRIGHT-RED - (output "Process ~a performed a quit-network.\n" pidstr))] + (output "Process ~a performed a quit-dataspace.\n" pidstr))] [(scn r) (when (or show-actions? show-scn-actions?) (output "~a performing a SCN:\n" pidstr) @@ -192,15 +192,15 @@ (when (transition? t) (define new-w (transition-state t)) (define pidstr (format-pids pids)) - (define newcount (hash-count (network-behaviors new-w))) + (define newcount (hash-count (dataspace-behaviors new-w))) (match a [(? spawn?) (when (or show-process-lifecycle? show-actions?) - (define newpid (mux-next-pid (network-mux old-w))) + (define newpid (mux-next-pid (dataspace-mux old-w))) (define newpidstr (format-pids (cons newpid (cdr pids)))) ;; replace parent pid - (define interests (mux-interests-of (network-mux new-w) newpid)) - (define behavior (hash-ref (network-behaviors new-w) newpid '#:missing-behavior)) - (define state (hash-ref (network-states new-w) newpid '#:missing-state)) + (define interests (mux-interests-of (dataspace-mux new-w) newpid)) + (define behavior (hash-ref (dataspace-behaviors new-w) newpid '#:missing-behavior)) + (define state (hash-ref (dataspace-states new-w) newpid '#:missing-state)) (with-color BRIGHT-GREEN (output "~a ~v spawned from ~a (~a total processes now)\n" newpidstr @@ -217,8 +217,8 @@ ;; other cases handled in internal-action (void)]) (when show-routing-table? - (define old-table (mux-routing-table (network-mux old-w))) - (define new-table (mux-routing-table (network-mux new-w))) + (define old-table (mux-routing-table (dataspace-mux old-w))) + (define new-table (mux-routing-table (dataspace-mux new-w))) (when (not (equal? old-table new-table)) (with-color BRIGHT-BLUE (output "~a's routing table:\n" (format-pids (cdr pids))) diff --git a/racket/syndicate/actor.rkt b/racket/syndicate/actor.rkt index b53cd30..e443b09 100644 --- a/racket/syndicate/actor.rkt +++ b/racket/syndicate/actor.rkt @@ -1,7 +1,7 @@ #lang racket/base (provide actor - network + dataspace ;; background state @@ -54,8 +54,8 @@ (require racket/set) (require racket/match) -(require (except-in "core.rkt" assert network) - (rename-in "core.rkt" [assert core:assert] [network core:network])) +(require (except-in "core.rkt" assert dataspace) + (rename-in "core.rkt" [assert core:assert] [dataspace core:dataspace])) (require "trie.rkt") (require "mux.rkt") @@ -84,7 +84,7 @@ ;; A LinkageKind is one of ;; - 'call, a blocking, exception-linked connection ;; - 'actor, a non-blocking, non-exception-linked connection -;; - 'network, a non-blocking, nested, non-exception-linked connection +;; - 'dataspace, a non-blocking, nested, non-exception-linked connection ;; ;; Patch Instructions are issued when the actor uses `assert!` and ;; `retract!`. Action instructions are issued when the actor uses @@ -92,7 +92,7 @@ ;; called. Script-complete instructions are automatically issued when ;; a Script terminates successfully. ;; -;; Spawn instructions are issued when `actor`, `network`, and `state` +;; Spawn instructions are issued when `actor`, `dataspace`, and `state` ;; are used, directly or indirectly. (TODO: `background`?) The ;; spawn-action-producing function is given the IDs of the spawned and ;; spawning actors, and is to return an action which spawns the new @@ -256,14 +256,14 @@ [(_ I ...) (expand-state 'actor #'(I ... (return/no-link-result!)) #'() #'() #'() #'())])) -;; Spawn whole networks -(define-syntax (network stx) +;; Spawn whole dataspaces +(define-syntax (dataspace stx) (syntax-parse stx [(_ I ...) - (expand-state 'network + (expand-state 'dataspace #'(I ... - (perform-core-action! (quit-network)) + (perform-core-action! (quit-dataspace)) (return/no-link-result!)) #'() #'() @@ -393,8 +393,8 @@ (transition (if blocking? (store-continuation s callee-id get-next-instr) s) - (if (eq? linkage-kind 'network) - (spawn-network spawn-action) + (if (eq? linkage-kind 'dataspace) + (spawn-dataspace spawn-action) spawn-action))))) (if blocking? next-t @@ -415,7 +415,7 @@ ;; TODO: track ;; TODO: default to hll -;; TODO: some better means of keeping track of nested network levels +;; TODO: some better means of keeping track of nested dataspace levels (begin-for-syntax (define-splicing-syntax-class when-pred diff --git a/racket/syndicate/big-bang.rkt b/racket/syndicate/big-bang.rkt index 662ccef..06a902e 100644 --- a/racket/syndicate/big-bang.rkt +++ b/racket/syndicate/big-bang.rkt @@ -1,7 +1,7 @@ #lang racket/base -(provide big-bang-network - big-bang-network/universe +(provide big-bang-dataspace + big-bang-dataspace/universe (struct-out window) (struct-out to-server) (struct-out from-server) @@ -48,7 +48,7 @@ ;;--------------------------------------------------------------------------- -(struct bb (network windows inbound outbound halted? x y) #:transparent) +(struct bb (dataspace windows inbound outbound halted? x y) #:transparent) (define window-projection (?! (window ? ? ? ? ?))) @@ -74,7 +74,7 @@ #f)])) (define (deliver b e) - (clean-transition (network-handle-event e (bb-network b)))) + (clean-transition (dataspace-handle-event e (bb-dataspace b)))) (define (interpret-actions b txn need-poll?) (match txn @@ -90,8 +90,8 @@ [(cons e rest) (let ((b (struct-copy bb b [inbound rest]))) (interpret-actions b (deliver b e) #t))])] - [(transition new-network actions) - (let process-actions ((b (struct-copy bb b [network new-network])) (actions actions)) + [(transition new-dataspace actions) + (let process-actions ((b (struct-copy bb b [dataspace new-dataspace])) (actions actions)) (match actions ['() (interpret-actions b #f #t)] [(cons a actions) @@ -128,8 +128,8 @@ (patch-seq (retract (active-window ?)) (assert (active-window active-id)))) -(define-syntax-rule (big-bang-network* boot-actions extra-clause ...) - (big-bang (interpret-actions (bb (make-network boot-actions) +(define-syntax-rule (big-bang-dataspace* boot-actions extra-clause ...) + (big-bang (interpret-actions (bb (make-dataspace boot-actions) '() '() '() @@ -155,25 +155,25 @@ (stop-when bb-halted?) extra-clause ...)) -(define-syntax-rule (big-bang-network** width height boot-actions extra-clause ...) +(define-syntax-rule (big-bang-dataspace** width height boot-actions extra-clause ...) (if (and width height) - (big-bang-network* boot-actions (to-draw render width height) extra-clause ...) - (big-bang-network* boot-actions (to-draw render) extra-clause ...))) + (big-bang-dataspace* boot-actions (to-draw render width height) extra-clause ...) + (big-bang-dataspace* boot-actions (to-draw render) extra-clause ...))) -(define (big-bang-network #:width [width #f] - #:height [height #f] - . boot-actions) - (big-bang-network** width height boot-actions)) +(define (big-bang-dataspace #:width [width #f] + #:height [height #f] + . boot-actions) + (big-bang-dataspace** width height boot-actions)) -(define (big-bang-network/universe #:width [width #f] - #:height [height #f] - #:register [ip LOCALHOST] - #:port [port-number SQPORT] - #:name [world-name (gensym 'syndicate)] - . boot-actions) - (big-bang-network** width height boot-actions - (on-receive (lambda (b sexps) - (inject b (for/list ((m sexps)) (message (from-server m)))))) - (register ip) - (port port-number) - (name world-name))) +(define (big-bang-dataspace/universe #:width [width #f] + #:height [height #f] + #:register [ip LOCALHOST] + #:port [port-number SQPORT] + #:name [world-name (gensym 'syndicate)] + . boot-actions) + (big-bang-dataspace** width height boot-actions + (on-receive (lambda (b sexps) + (inject b (for/list ((m sexps)) (message (from-server m)))))) + (register ip) + (port port-number) + (name world-name))) diff --git a/racket/syndicate/core.rkt b/racket/syndicate/core.rkt index de1e3ed..f7cf898 100644 --- a/racket/syndicate/core.rkt +++ b/racket/syndicate/core.rkt @@ -1,14 +1,14 @@ #lang racket/base -;; Core implementation of Incremental Network Calculus. +;; Core implementation of Incremental Syndicate. (provide (struct-out message) (except-out (struct-out quit) quit) - (struct-out quit-network) + (struct-out quit-dataspace) (rename-out [quit ]) (except-out (struct-out spawn) spawn) (rename-out [spawn ]) (struct-out transition) - (struct-out network) + (struct-out dataspace) (struct-out seal) @@ -46,11 +46,11 @@ unpub (rename-out [make-quit quit]) - make-network - spawn-network + make-dataspace + spawn-dataspace (rename-out [spawn-process spawn]) spawn/stateless - make-spawn-network + make-spawn-dataspace transition-bind sequence-transitions @@ -58,10 +58,10 @@ sequence-transitions0 sequence-transitions0* - network-handle-event + dataspace-handle-event clean-transition - pretty-print-network) + pretty-print-dataspace) (require racket/set) (require racket/match) @@ -79,7 +79,7 @@ ;; Actions ⊃ Events (struct spawn (boot) #:prefab) -(struct quit-network () #:prefab) ;; NB. An action. Compare (quit), a Transition. +(struct quit-dataspace () #:prefab) ;; NB. An action. Compare (quit), a Transition. ;; A Behavior is a ((Option Event) Any -> Transition): a function ;; mapping an Event (or, in the #f case, a poll signal) and a @@ -89,7 +89,7 @@ ;; - #f, a signal from a Process that it is inert and need not be ;; scheduled until some Event relevant to it arrives; or, ;; - a (transition Any (Constreeof Action)), a new Process state to -;; be held by its Network and a sequence of Actions for the Network +;; be held by its Dataspace and a sequence of Actions for the Dataspace ;; to take on the transitioning Process's behalf. ;; - a (quit (Option Exn) (Constreeof Action)), signalling that the ;; Process should never again be handed an event, and that any @@ -104,16 +104,16 @@ ;; A Label is a PID or 'meta. ;; VM private states -(struct network (mux ;; Multiplexer - pending-action-queue ;; (Queueof (Cons Label (U Action 'quit))) - runnable-pids ;; (Setof PID) - behaviors ;; (HashTable PID Behavior) - states ;; (HashTable PID Any) - ) +(struct dataspace (mux ;; Multiplexer + pending-action-queue ;; (Queueof (Cons Label (U Action 'quit))) + runnable-pids ;; (Setof PID) + behaviors ;; (HashTable PID Behavior) + states ;; (HashTable PID Any) + ) #:transparent #:methods gen:syndicate-pretty-printable [(define (syndicate-pretty-print w [p (current-output-port)]) - (pretty-print-network w p))]) + (pretty-print-dataspace w p))]) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Seals are used by protocols to prevent the routing tries from @@ -124,7 +124,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (event? x) (or (patch? x) (message? x))) -(define (action? x) (or (event? x) (spawn? x) (quit-network? x))) +(define (action? x) (or (event? x) (spawn? x) (quit-dataspace? x))) (define-syntax-rule (match-event e clause ...) (match e @@ -178,8 +178,8 @@ (filter (lambda (x) (and (action? x) (not (patch-empty? x)))) (flatten actions))) (define (send-event e pid w) - (define behavior (hash-ref (network-behaviors w) pid #f)) - (define old-state (hash-ref (network-states w) pid #f)) + (define behavior (hash-ref (dataspace-behaviors w) pid #f)) + (define old-state (hash-ref (dataspace-states w) pid #f)) (if (not behavior) w (begin @@ -202,7 +202,7 @@ (enqueue-actions (disable-process pid exn w) pid (list 'quit))))))) (define (update-state w pid s) - (struct-copy network w [states (hash-set (network-states w) pid s)])) + (struct-copy dataspace w [states (hash-set (dataspace-states w) pid s)])) (define (send-event/guard delta pid w) (if (patch-empty? delta) @@ -214,9 +214,9 @@ (log-error "Process ~a died with exception:\n~a" (cons pid (trace-pid-stack)) (exn->string exn))) - (struct-copy network w - [behaviors (hash-remove (network-behaviors w) pid)] - [states (hash-remove (network-states w) pid)])) + (struct-copy dataspace w + [behaviors (hash-remove (dataspace-behaviors w) pid)] + [states (hash-remove (dataspace-states w) pid)])) (define (invoke-process pid thunk k-ok k-exn) (define-values (ok? result) @@ -230,12 +230,12 @@ (k-exn result))) (define (mark-pid-runnable w pid) - (struct-copy network w [runnable-pids (set-add (network-runnable-pids w) pid)])) + (struct-copy dataspace w [runnable-pids (set-add (dataspace-runnable-pids w) pid)])) (define (enqueue-actions w label actions) - (struct-copy network w + (struct-copy dataspace w [pending-action-queue - (queue-append-list (network-pending-action-queue w) + (queue-append-list (dataspace-pending-action-queue w) (for/list [(a actions)] (cons label a)))])) (define (make-quit #:exception [exn #f] . actions) @@ -265,20 +265,20 @@ [(? quit? q) q] [actions (transition state actions)])) -(define-syntax-rule (spawn-network boot-action ...) - (make-spawn-network (lambda () (list boot-action ...)))) +(define-syntax-rule (spawn-dataspace boot-action ...) + (make-spawn-dataspace (lambda () (list boot-action ...)))) -(define (make-network boot-actions) - (network (mux) - (list->queue (for/list ((a (in-list (clean-actions boot-actions)))) (cons 'meta a))) - (set) - (hash) - (hash))) +(define (make-dataspace boot-actions) + (dataspace (mux) + (list->queue (for/list ((a (in-list (clean-actions boot-actions)))) (cons 'meta a))) + (set) + (hash) + (hash))) -(define (make-spawn-network boot-actions-thunk) +(define (make-spawn-dataspace boot-actions-thunk) (spawn (lambda () - (list network-handle-event - (transition (make-network (boot-actions-thunk)) '()))))) + (list dataspace-handle-event + (transition (make-dataspace (boot-actions-thunk)) '()))))) (define (transition-bind k t0) (match t0 @@ -309,10 +309,10 @@ [(? transition? t) (sequence-transitions* t rest)])])) (define (inert? w) - (and (queue-empty? (network-pending-action-queue w)) - (set-empty? (network-runnable-pids w)))) + (and (queue-empty? (dataspace-pending-action-queue w)) + (set-empty? (dataspace-runnable-pids w)))) -(define (network-handle-event e w) +(define (dataspace-handle-event e w) (if (or e (not (inert? w))) (sequence-transitions (transition w '()) (inject-event e) @@ -328,8 +328,8 @@ '())) (define (perform-actions w) - (for/fold ([wt (transition (struct-copy network w [pending-action-queue (make-queue)]) '())]) - ((entry (in-list (queue->list (network-pending-action-queue w))))) + (for/fold ([wt (transition (struct-copy dataspace w [pending-action-queue (make-queue)]) '())]) + ((entry (in-list (queue->list (dataspace-pending-action-queue w))))) #:break (quit? wt) ;; TODO: should a quit action be delayed until the end of the turn? (match-define [cons label a] entry) (trace-internal-action label a (transition-state wt)) @@ -353,20 +353,20 @@ (match-define (list behavior initial-transition) results) (create-process w behavior initial-transition)) (lambda (exn) - (log-error "Spawned process in network ~a died with exception:\n~a" + (log-error "Spawned process in dataspace ~a died with exception:\n~a" (trace-pid-stack) (exn->string exn)) (transition w '())))] ['quit (define-values (new-mux _label delta delta-aggregate) - (mux-remove-stream (network-mux w) label)) + (mux-remove-stream (dataspace-mux w) label)) ;; behavior & state in w already removed by disable-process (deliver-patches w new-mux label delta delta-aggregate)] - [(quit-network) + [(quit-dataspace) (make-quit)] [(? patch? delta-orig) (define-values (new-mux _label delta delta-aggregate) - (mux-update-stream (network-mux w) label delta-orig)) + (mux-update-stream (dataspace-mux w) label delta-orig)) (deliver-patches w new-mux label delta delta-aggregate)] [(and m (message body)) (when (observe? body) @@ -377,7 +377,7 @@ (at-meta? body)) ;; it relates to envt, not local (transition w (message (at-meta-claim body))) (transition (for/fold [(w w)] - [(pid (in-list (mux-route-message (network-mux w) body)))] + [(pid (in-list (mux-route-message (dataspace-mux w) body)))] (send-event m pid w)) '()))])) @@ -402,9 +402,9 @@ [(cons (? patch? p) rest) (values p rest)] [other (values patch-empty other)])) (define-values (new-mux new-pid delta delta-aggregate) - (mux-add-stream (network-mux w) initial-patch)) - (let* ((w (struct-copy network w - [behaviors (hash-set (network-behaviors w) + (mux-add-stream (dataspace-mux w) initial-patch)) + (let* ((w (struct-copy dataspace w + [behaviors (hash-set (dataspace-behaviors w) new-pid behavior)])) (w (enqueue-actions (postprocess w new-pid) new-pid remaining-initial-actions))) @@ -412,25 +412,25 @@ (define (deliver-patches w new-mux acting-label delta delta-aggregate) (define-values (patches meta-action) - (compute-patches (network-mux w) new-mux acting-label delta delta-aggregate)) - (transition (for/fold [(w (struct-copy network w [mux new-mux]))] + (compute-patches (dataspace-mux w) new-mux acting-label delta delta-aggregate)) + (transition (for/fold [(w (struct-copy dataspace w [mux new-mux]))] [(entry (in-list patches))] (match-define (cons label event) entry) (send-event/guard event label w)) meta-action)) (define (step-children w) - (define runnable-pids (network-runnable-pids w)) + (define runnable-pids (dataspace-runnable-pids w)) (if (set-empty? runnable-pids) - #f ;; network is inert. - (transition (for/fold [(w (struct-copy network w [runnable-pids (set)]))] + #f ;; dataspace is inert. + (transition (for/fold [(w (struct-copy dataspace w [runnable-pids (set)]))] [(pid (in-set runnable-pids))] (send-event #f pid w)) '()))) -(define (pretty-print-network w [p (current-output-port)]) - (match-define (network mux qs runnable behaviors states) w) - (fprintf p "NETWORK:\n") +(define (pretty-print-dataspace w [p (current-output-port)]) + (match-define (dataspace mux qs runnable behaviors states) w) + (fprintf p "DATASPACE:\n") (fprintf p " - ~a queued actions\n" (queue-length qs)) (fprintf p " - ~a runnable pids ~a\n" (set-count runnable) (set->list runnable)) (fprintf p " - ~a live processes\n" (hash-count states)) @@ -456,10 +456,10 @@ (define (step* w) (let loop ((w w) (actions '())) (pretty-print w) - (match (network-handle-event #f w) + (match (dataspace-handle-event #f w) [#f (values w #f (flatten actions))] [(quit exn new-actions) (values w exn (flatten (cons actions new-actions)))] [(transition new-w new-actions) (loop new-w (cons actions new-actions))]))) - (step* (make-network '())) + (step* (make-dataspace '())) ) diff --git a/racket/syndicate/drivers/timer.rkt b/racket/syndicate/drivers/timer.rkt index c3ce5cf..47b7e12 100644 --- a/racket/syndicate/drivers/timer.rkt +++ b/racket/syndicate/drivers/timer.rkt @@ -37,7 +37,7 @@ ;; that are coming from the background thread. ;; ;; The race cannot occur in the sequential implementation - ;; because the network makes sure to enqueue the transition + ;; because the dataspace makes sure to enqueue the transition ;; actions resulting from the set-timer message delivery ahead ;; of any enqueueing of the timer-expired ground message, so ;; that by the time the ground message is processed, the diff --git a/racket/syndicate/examples/actor/chat-no-quit-world.rkt b/racket/syndicate/examples/actor/chat-no-quit-world.rkt index 1f5e3df..cbfe29d 100644 --- a/racket/syndicate/examples/actor/chat-no-quit-world.rkt +++ b/racket/syndicate/examples/actor/chat-no-quit-world.rkt @@ -31,7 +31,7 @@ (send! (says user (string-trim (bytes->string/utf-8 bs)))))))) (spawn-tcp-driver) -(network (define us (tcp-listener 5999)) - (forever (assert (advertise (observe (tcp-channel _ us _))) #:meta-level 1) - (on (asserted (advertise (tcp-channel $them us _)) #:meta-level 1) - (spawn-session them us)))) +(dataspace (define us (tcp-listener 5999)) + (forever (assert (advertise (observe (tcp-channel _ us _))) #:meta-level 1) + (on (asserted (advertise (tcp-channel $them us _)) #:meta-level 1) + (spawn-session them us)))) diff --git a/racket/syndicate/examples/actor/chat.rkt b/racket/syndicate/examples/actor/chat.rkt index d419c32..f769112 100644 --- a/racket/syndicate/examples/actor/chat.rkt +++ b/racket/syndicate/examples/actor/chat.rkt @@ -30,13 +30,13 @@ (assert (advertise (tcp-channel us them _)) #:meta-level 1) (on (message (tcp-channel them us $bs) #:meta-level 1) (define input-string (string-trim (bytes->string/utf-8 bs))) - (if (equal? input-string "quit-network") + (if (equal? input-string "quit-dataspace") (send! (shutdown)) (send! (says user input-string))))))) (spawn-tcp-driver) -(network (define us (tcp-listener 5999)) - (until (message (shutdown)) - (assert (advertise (observe (tcp-channel _ us _))) #:meta-level 1) - (on (asserted (advertise (tcp-channel $them us _)) #:meta-level 1) - (spawn-session them us)))) +(dataspace (define us (tcp-listener 5999)) + (until (message (shutdown)) + (assert (advertise (observe (tcp-channel _ us _))) #:meta-level 1) + (on (asserted (advertise (tcp-channel $them us _)) #:meta-level 1) + (spawn-session them us)))) diff --git a/racket/syndicate/examples/big-bang.rkt b/racket/syndicate/examples/big-bang.rkt index 1d338de..a47d426 100644 --- a/racket/syndicate/examples/big-bang.rkt +++ b/racket/syndicate/examples/big-bang.rkt @@ -50,21 +50,21 @@ (mouse-sub name) (move-to orig-x orig-y)))) -(big-bang-network #:width 640 - #:height 480 - (spawn (lambda (e s) - (match e - [(? patch? p) - (define-values (in out) - (patch-project/set/single p (at-meta (?! (active-window ?))))) - (transition s (update-window 'active-window-label 300 0 - (text (format "~v" in) 22 "black")))] - [_ #f])) - (void) - (sub (active-window ?) #:meta-level 1)) - (button #:background "red" 'stop-button 0 0 "Exit" - (lambda () (assert 'stop #:meta-level 1))) - (draggable-shape 'c1 50 50 (circle 30 "solid" "orange")) - (draggable-shape 's1 100 100 (star 40 "solid" "firebrick"))) +(big-bang-dataspace #:width 640 + #:height 480 + (spawn (lambda (e s) + (match e + [(? patch? p) + (define-values (in out) + (patch-project/set/single p (at-meta (?! (active-window ?))))) + (transition s (update-window 'active-window-label 300 0 + (text (format "~v" in) 22 "black")))] + [_ #f])) + (void) + (sub (active-window ?) #:meta-level 1)) + (button #:background "red" 'stop-button 0 0 "Exit" + (lambda () (assert 'stop #:meta-level 1))) + (draggable-shape 'c1 50 50 (circle 30 "solid" "orange")) + (draggable-shape 's1 100 100 (star 40 "solid" "firebrick"))) (exit 0) diff --git a/racket/syndicate/examples/chat-no-quit-world.rkt b/racket/syndicate/examples/chat-no-quit-world.rkt index e756b64..35821f9 100644 --- a/racket/syndicate/examples/chat-no-quit-world.rkt +++ b/racket/syndicate/examples/chat-no-quit-world.rkt @@ -37,7 +37,7 @@ )))) (spawn-tcp-driver) -(spawn-network +(spawn-dataspace (spawn-demand-matcher (advertise (tcp-channel (?!) (?! (tcp-listener 5999)) ?)) (observe (tcp-channel (?!) (?! (tcp-listener 5999)) ?)) #:meta-level 1 diff --git a/racket/syndicate/examples/chat.rkt b/racket/syndicate/examples/chat.rkt index 5b5f294..3243d93 100644 --- a/racket/syndicate/examples/chat.rkt +++ b/racket/syndicate/examples/chat.rkt @@ -18,8 +18,8 @@ (match e [(message (at-meta (tcp-channel _ _ bs))) (define input-string (string-trim (bytes->string/utf-8 bs))) - (if (equal? input-string "quit-network") - (quit-network) + (if (equal? input-string "quit-dataspace") + (quit-dataspace) (message `(,user says ,input-string)))] [(message `(,who says ,what)) (say who "says: ~a" what)] @@ -40,7 +40,7 @@ )))) (spawn-tcp-driver) -(spawn-network +(spawn-dataspace (spawn-demand-matcher (advertise (tcp-channel (?!) (?! (tcp-listener 5999)) ?)) (observe (tcp-channel (?!) (?! (tcp-listener 5999)) ?)) #:meta-level 1 diff --git a/racket/syndicate/examples/example-lang.rkt b/racket/syndicate/examples/example-lang.rkt index 6504183..f2c0954 100644 --- a/racket/syndicate/examples/example-lang.rkt +++ b/racket/syndicate/examples/example-lang.rkt @@ -27,8 +27,8 @@ #f)] [_ #f])) -(spawn-network (spawn r (void) (sub ?)) - (spawn b 0 '())) +(spawn-dataspace (spawn r (void) (sub ?)) + (spawn b 0 '())) (define (echoer e s) (match e diff --git a/racket/syndicate/examples/example-layer.rkt b/racket/syndicate/examples/example-layer.rkt index 3db879a..d6ac073 100644 --- a/racket/syndicate/examples/example-layer.rkt +++ b/racket/syndicate/examples/example-layer.rkt @@ -10,7 +10,7 @@ (patch-seq (sub 'die) (sub (observe 'die)))) -(spawn-network +(spawn-dataspace (spawn (lambda (e s) (match e [(message (at-meta 'die)) (quit)] diff --git a/racket/syndicate/examples/example-meta-drop.rkt b/racket/syndicate/examples/example-meta-drop.rkt index 171ff5c..ad89b3b 100644 --- a/racket/syndicate/examples/example-meta-drop.rkt +++ b/racket/syndicate/examples/example-meta-drop.rkt @@ -2,7 +2,7 @@ ;; Analogous to nc-incremental-meta-drop.rkt in the Redex model. ;; Demonstrates (hopefully) correct processing of meta-interests when dropping a patch. -(spawn-network +(spawn-dataspace (spawn (lambda (e u) (match u [0 (transition 1 '())] diff --git a/racket/syndicate/examples/example-meta-echo.rkt b/racket/syndicate/examples/example-meta-echo.rkt index 0006061..e788ec3 100644 --- a/racket/syndicate/examples/example-meta-echo.rkt +++ b/racket/syndicate/examples/example-meta-echo.rkt @@ -15,7 +15,7 @@ (require syndicate/pretty) -(spawn-network +(spawn-dataspace (spawn (lambda (e counter) (and e (let ((new-counter (+ counter 1))) diff --git a/racket/syndicate/examples/example-meta-echo2.rkt b/racket/syndicate/examples/example-meta-echo2.rkt index 182d37d..01e76c4 100644 --- a/racket/syndicate/examples/example-meta-echo2.rkt +++ b/racket/syndicate/examples/example-meta-echo2.rkt @@ -3,7 +3,7 @@ (require syndicate/pretty) -(spawn-network +(spawn-dataspace (spawn (lambda (e counter) (and e (let ((new-counter (+ counter 1))) diff --git a/racket/syndicate/examples/example-plain.rkt b/racket/syndicate/examples/example-plain.rkt index 6dde9e3..b3a0c23 100644 --- a/racket/syndicate/examples/example-plain.rkt +++ b/racket/syndicate/examples/example-plain.rkt @@ -63,8 +63,8 @@ 1 (patch-seq (sub (observe (set-timer ? ? ?))) (sub (timer-expired 'tick ?)))) - (spawn-network (spawn r (void) (sub ?)) - (spawn b 0 '())) + (spawn-dataspace (spawn r (void) (sub ?)) + (spawn b 0 '())) (spawn echoer (void) (sub (external-event (read-line-evt (current-input-port) 'any) ?) diff --git a/racket/syndicate/examples/example-quit-world.rkt b/racket/syndicate/examples/example-quit-world.rkt index 69e82f4..d10d46a 100644 --- a/racket/syndicate/examples/example-quit-world.rkt +++ b/racket/syndicate/examples/example-quit-world.rkt @@ -1,5 +1,5 @@ #lang syndicate -;; Demonstrates quit-network. +;; Demonstrates quit-dataspace. (require (only-in racket/port read-bytes-line-evt)) @@ -9,9 +9,9 @@ [(message (at-meta (at-meta (external-event _ (list #"quit"))))) (printf "Quitting just the leaf actor.\n") (quit)] - [(message (at-meta (at-meta (external-event _ (list #"quit-network"))))) - (printf "Terminating the whole network.\n") - (transition s (quit-network))] + [(message (at-meta (at-meta (external-event _ (list #"quit-dataspace"))))) + (printf "Terminating the whole dataspace.\n") + (transition s (quit-dataspace))] [_ #f])) (void) (sub (external-event (read-bytes-line-evt (current-input-port) 'any) ?) @@ -31,6 +31,6 @@ (void) (sub-to-alarm))) -(printf "Type 'quit' or 'quit-network'.\n") -(spawn-network (spawn-command-listener) - (spawn-ticker)) +(printf "Type 'quit' or 'quit-dataspace'.\n") +(spawn-dataspace (spawn-command-listener) + (spawn-ticker)) diff --git a/racket/syndicate/examples/example-wildcard-assertion-2.rkt b/racket/syndicate/examples/example-wildcard-assertion-2.rkt index 022ef14..a54193f 100644 --- a/racket/syndicate/examples/example-wildcard-assertion-2.rkt +++ b/racket/syndicate/examples/example-wildcard-assertion-2.rkt @@ -2,7 +2,7 @@ ;; Demonstrate almost-wildcard assertions. ;; One actor subscribes to everything - and so initially sees itself. ;; The other advertises everything except subscriptions and at-meta assertions. -;; The first actor's aggregate view of the network then includes everything +;; The first actor's aggregate view of the dataspace then includes everything ;; except at-meta assertions. (require syndicate/pretty) diff --git a/racket/syndicate/ground.rkt b/racket/syndicate/ground.rkt index 2832413..b2c875a 100644 --- a/racket/syndicate/ground.rkt +++ b/racket/syndicate/ground.rkt @@ -1,5 +1,5 @@ #lang racket/base -;; Breaking the infinite tower of nested Networks, connecting to the "real world" at the fracture line. +;; Breaking the infinite tower of nested Dataspaces, connecting to the "real world" at the fracture line. (require racket/async-channel) (require racket/set) @@ -51,7 +51,7 @@ ;; Projection ;; Used to extract event descriptors and results from subscriptions -;; from the ground VM's contained Network. +;; from the ground VM's contained Dataspace. (define event-projection (observe (external-event (?!) ?))) ;; Interests -> (Listof RacketEvent) @@ -74,10 +74,10 @@ (handle-evt (system-idle-evt) (lambda _ #f))) ;; Action* -> Void -;; Runs a ground VM, booting the outermost Network with the given Actions. +;; Runs a ground VM, booting the outermost Dataspace with the given Actions. (define (run-ground . boot-actions) (let await-interrupt ((inert? #f) - (w (make-network boot-actions)) + (w (make-dataspace boot-actions)) (interests trie-empty)) ;; (log-info "GROUND INTERESTS:\n~a" (trie->pretty-string interests)) (if (and inert? (trie-empty? interests)) @@ -87,9 +87,9 @@ (current-ground-event-async-channel) (if inert? never-evt idle-handler) (extract-active-events interests)))) - (trace-process-step e #f network-handle-event w) - (define resulting-transition (clean-transition (network-handle-event e w))) - (trace-process-step-result e #f network-handle-event w #f resulting-transition) + (trace-process-step e #f dataspace-handle-event w) + (define resulting-transition (clean-transition (dataspace-handle-event e w))) + (trace-process-step-result e #f dataspace-handle-event w #f resulting-transition) (match resulting-transition [#f ;; inert (await-interrupt #t w interests)] diff --git a/racket/syndicate/scribblings/syndicate.scrbl b/racket/syndicate/scribblings/syndicate.scrbl index 7ac6f77..9735ea2 100644 --- a/racket/syndicate/scribblings/syndicate.scrbl +++ b/racket/syndicate/scribblings/syndicate.scrbl @@ -14,15 +14,15 @@ Spawns an actor that executes each instantaneous action @racket[I] in sequence.} -@defform[(network I ...)]{ -Spawns a network as a child of the network enclosing the executing actor. The -new network executes each instantaneous action @racket[I].} +@defform[(dataspace I ...)]{ +Spawns a dataspace as a child of the dataspace enclosing the executing actor. The +new dataspace executes each instantaneous action @racket[I].} @defproc[(send! [v any/c] [#:meta-level level natural-number/c 0]) void?]{ Sends a message with body @racket[v]. The message is sent @racket[level] -networks removed from the network containing the actor performing the +dataspaces removed from the dataspace containing the actor performing the @racket[send!].} @defproc[(assert! [v any/c] @@ -30,14 +30,14 @@ networks removed from the network containing the actor performing the void?]{ Asserts the value of @racket[v] until either explicitly retracted via @racket[retract!] or the immediately enclosing actor exits. @racket[level] -specifies which network the assertion should be made, in terms of relative -distance from the network containing the enclosing actor.} +specifies which dataspace the assertion should be made, in terms of relative +distance from the dataspace containing the enclosing actor.} @defproc[(retract! [v any/c] [#:meta-level level natural-number/c 0]) void?]{ Retracts any assertions made by the immediately enclosing actor at -@racket[level] networks above the enclosing network of the form @racket[v].} +@racket[level] dataspaces above the enclosing dataspace of the form @racket[v].} @section{Ongoing Behaviors (O)} diff --git a/racket/syndicate/trace.rkt b/racket/syndicate/trace.rkt index 9ef7964..df7c2e5 100644 --- a/racket/syndicate/trace.rkt +++ b/racket/syndicate/trace.rkt @@ -46,10 +46,10 @@ (exn->string exn))) (record-trace-event 'process-step-result (list (cons-pid pid) e beh st exn t))) -;; (Option PID) Action Network -> Void +;; (Option PID) Action Dataspace -> Void (define (trace-internal-action pid a w) (record-trace-event 'internal-action (list (cons-pid pid) a w))) -;; (Option PID) Action Network Transition -> Void +;; (Option PID) Action Dataspace Transition -> Void (define (trace-internal-action-result pid a w t) (record-trace-event 'internal-action-result (list (cons-pid pid) a w t))) diff --git a/racket/syndicate/trace/stderr.rkt b/racket/syndicate/trace/stderr.rkt index 23f5339..8b615ec 100644 --- a/racket/syndicate/trace/stderr.rkt +++ b/racket/syndicate/trace/stderr.rkt @@ -36,7 +36,7 @@ (define show-message-actions? #f) (define show-actions? #f) (define show-routing-table? #f) -(define network-is-boring? #t) +(define dataspace-is-boring? #t) (define (set-stderr-trace-flags! flags-string) (set! flags (for/set [(c flags-string)] (string->symbol (string c)))) @@ -54,7 +54,7 @@ (set-flag! M show-message-actions?) (set-flag! a show-actions?) (set-flag! g show-routing-table?) - (set! network-is-boring? (not (set-member? flags 'N)))) + (set! dataspace-is-boring? (not (set-member? flags 'N)))) (set-stderr-trace-flags! (or (getenv "MINIMART_TRACE") "")) @@ -82,7 +82,7 @@ (apply fprintf (current-error-port) fmt args)) (define (boring-state? state) - (or (and (network? state) network-is-boring?) + (or (and (dataspace? state) dataspace-is-boring?) (void? state))) (define (set-color! c) (when colored-output? (output "\e[0~am" c))) @@ -163,14 +163,14 @@ (syndicate-pretty-print (transition-state t) (current-error-port)))))))] [('internal-action (list pids a old-w)) (define pidstr (format-pids pids)) - (define oldcount (hash-count (network-behaviors old-w))) + (define oldcount (hash-count (dataspace-behaviors old-w))) (match a [(? spawn?) ;; Handle this in internal-action-result (void)] ['quit (when (or show-process-lifecycle? show-actions?) - (define interests (mux-interests-of (network-mux old-w) (car pids))) + (define interests (mux-interests-of (dataspace-mux old-w) (car pids))) (with-color BRIGHT-RED (output "~a exiting (~a total processes remain)\n" pidstr @@ -178,9 +178,9 @@ (unless (trie-empty? interests) (output "~a's final interests:\n" pidstr) (pretty-print-trie interests (current-error-port))))] - [(quit-network) + [(quit-dataspace) (with-color BRIGHT-RED - (output "Process ~a performed a quit-network.\n" pidstr))] + (output "Process ~a performed a quit-dataspace.\n" pidstr))] [(? patch? p) (when (or show-actions? show-patch-actions?) (output "~a performing a patch:\n" pidstr) @@ -193,15 +193,15 @@ (when (transition? t) (define new-w (transition-state t)) (define pidstr (format-pids pids)) - (define newcount (hash-count (network-behaviors new-w))) + (define newcount (hash-count (dataspace-behaviors new-w))) (match a [(? spawn?) (when (or show-process-lifecycle? show-actions?) - (define newpid (mux-next-pid (network-mux old-w))) + (define newpid (mux-next-pid (dataspace-mux old-w))) (define newpidstr (format-pids (cons newpid (cdr pids)))) ;; replace parent pid - (define interests (mux-interests-of (network-mux new-w) newpid)) - (define behavior (hash-ref (network-behaviors new-w) newpid '#:missing-behavior)) - (define state (hash-ref (network-states new-w) newpid '#:missing-state)) + (define interests (mux-interests-of (dataspace-mux new-w) newpid)) + (define behavior (hash-ref (dataspace-behaviors new-w) newpid '#:missing-behavior)) + (define state (hash-ref (dataspace-states new-w) newpid '#:missing-state)) (with-color BRIGHT-GREEN (output "~a ~v spawned from ~a (~a total processes now)\n" newpidstr @@ -218,8 +218,8 @@ ;; other cases handled in internal-action (void)]) (when show-routing-table? - (define old-table (mux-routing-table (network-mux old-w))) - (define new-table (mux-routing-table (network-mux new-w))) + (define old-table (mux-routing-table (dataspace-mux old-w))) + (define new-table (mux-routing-table (dataspace-mux new-w))) (when (not (equal? old-table new-table)) (with-color BRIGHT-BLUE (output "~a's routing table:\n" (format-pids (cdr pids)))