diff --git a/marketplace/scribblings/overview.scrbl b/marketplace/scribblings/concepts.scrbl similarity index 81% rename from marketplace/scribblings/overview.scrbl rename to marketplace/scribblings/concepts.scrbl index 539d273..041b03e 100644 --- a/marketplace/scribblings/overview.scrbl +++ b/marketplace/scribblings/concepts.scrbl @@ -2,7 +2,7 @@ @require[racket/include] @include{prelude.inc} -@title{Overview} +@title{Concepts} In this paper, we present a novel "marketplace" approach to functional systems programming, generalizing @@ -26,3 +26,13 @@ nestable virtual machines (VMs). The result suggests a @emph{ marketplace} metaphor, where communicating programs exist in a noisy, crowded, even chaotic context, rather than in a quiet place systematically going through their inboxes. + +@section{What is a process, what are event handlers?} +@section{What is a VM?} +@section{Subscription and Advertisement} +**** orientation +**** topics and patterns +**** interest-type +**** roles +@section{Presence} +@section{Nesting, relaying, and levels of discourse} diff --git a/marketplace/scribblings/drivers.scrbl b/marketplace/scribblings/drivers.scrbl new file mode 100644 index 0000000..1c17d27 --- /dev/null +++ b/marketplace/scribblings/drivers.scrbl @@ -0,0 +1,11 @@ +#lang scribble/manual +@require[racket/include] +@include{prelude.inc} + +@title{Drivers} + +@section{event-relay} +@section{tcp-bare} +@section{tcp} +@section{timer (typed and untyped)} +@section{udp (typed and untyped)} diff --git a/marketplace/scribblings/echo-server-example.scrbl b/marketplace/scribblings/examples.scrbl similarity index 91% rename from marketplace/scribblings/echo-server-example.scrbl rename to marketplace/scribblings/examples.scrbl index de20cc0..b8338a4 100644 --- a/marketplace/scribblings/echo-server-example.scrbl +++ b/marketplace/scribblings/examples.scrbl @@ -2,7 +2,9 @@ @require[racket/include] @include{prelude.inc} -@title{Example: Echo Server} +@title{Examples} + +@section{TCP echo Server} Here is a complete Marketplace program, @tt{examples/echo-paper.rkt}: @@ -40,3 +42,8 @@ action, terminating the connection's process. The heart of our system is the interface between a process and its containing VM. Our implementation instantiates this interface as a collection of Typed Racket programs. + +@section{TCP chat server} +@section{Authoritative DNS server} +@section{DNS resolver server} +@section{SSH server} diff --git a/marketplace/scribblings/highlevel.scrbl b/marketplace/scribblings/highlevel.scrbl new file mode 100644 index 0000000..ca8e14e --- /dev/null +++ b/marketplace/scribblings/highlevel.scrbl @@ -0,0 +1,30 @@ +#lang scribble/manual +@require[racket/include] +@include{prelude.inc} + +@title{High-level interface} + +@section{#lang marketplace} +**** ground-vm, ground-vm: +@section{Constructing topics and roles} +**** ? +**** Role +**** Orientation +**** InterestType +@section{Constructing transitions} +**** transition, transition:, transition/no-state +**** cons-trees of actions; null, false, void; use of (when) +**** sequence-actions +@section{Actions} +**** Communication-related +***** endpoint, endpoint: +***** delete-endpoint +***** send-message +***** send-feedback +**** Process- and scheduling-related +***** spawn, spawn: +***** quit +***** yield, yield: +***** nested-vm, nested-vm: +**** Cross-layer +***** at-meta-level, at-meta-level: diff --git a/marketplace/scribblings/lowlevel.scrbl b/marketplace/scribblings/lowlevel.scrbl new file mode 100644 index 0000000..547757d --- /dev/null +++ b/marketplace/scribblings/lowlevel.scrbl @@ -0,0 +1,19 @@ +#lang scribble/manual +@require[racket/include] +@include{prelude.inc} + +@title{Low-level interface} + +@section{Handler functions} +@section{Events} +@section{Actions} +**** Communication-related +***** add-endpoint +***** delete-endpoint +***** send-message +**** Process- and scheduling-related +***** spawn +***** quit +***** yield +**** Cross-layer +***** at-meta-level diff --git a/marketplace/scribblings/management-and-monitoring.scrbl b/marketplace/scribblings/management-and-monitoring.scrbl new file mode 100644 index 0000000..b22b6b2 --- /dev/null +++ b/marketplace/scribblings/management-and-monitoring.scrbl @@ -0,0 +1,9 @@ +#lang scribble/manual +@require[racket/include] +@include{prelude.inc} + +@title{Management and Monitoring} + +@section{generic-spy} +@section{logging (MATRIX_LOG)} +@section{debugger (experimental)} diff --git a/marketplace/scribblings/marketplace.scrbl b/marketplace/scribblings/marketplace.scrbl index b0c4621..66060ff 100644 --- a/marketplace/scribblings/marketplace.scrbl +++ b/marketplace/scribblings/marketplace.scrbl @@ -12,6 +12,11 @@ This manual TODO @local-table-of-contents[] -@include-section["overview.scrbl"] -@include-section["echo-server-example.scrbl"] -@include-section["MISC.scrbl"] +@include-section["concepts.scrbl"] +@include-section["highlevel.scrbl"] +@include-section["lowlevel.scrbl"] +@include-section["vm.scrbl"] +@include-section["drivers.scrbl"] +@include-section["writing-drivers.scrbl"] +@include-section["management-and-monitoring.scrbl"] +@include-section["examples.scrbl"] diff --git a/marketplace/scribblings/outline.org b/marketplace/scribblings/outline.org index 4092dfd..7cbf544 100644 --- a/marketplace/scribblings/outline.org +++ b/marketplace/scribblings/outline.org @@ -1,3 +1,5 @@ +#+STARTUP: nofold + ** Overview ** Concepts @@ -72,3 +74,10 @@ *** generic-spy *** logging (MATRIX_LOG) *** debugger (experimental) + +** Example Applications +*** TCP echo server +*** TCP chat server +*** Authoritative DNS server +*** DNS resolver server +*** SSH server diff --git a/marketplace/scribblings/vm.scrbl b/marketplace/scribblings/vm.scrbl new file mode 100644 index 0000000..fbfdd76 --- /dev/null +++ b/marketplace/scribblings/vm.scrbl @@ -0,0 +1,10 @@ +#lang scribble/manual +@require[racket/include] +@include{prelude.inc} + +@title{How Marketplace VMs work} + +@section{run-vm} +@section{unification and Racket data (struct-map)} +@section{nested VMs} +@section{ground VMs and interfacing to Racket's event system} diff --git a/marketplace/scribblings/writing-drivers.scrbl b/marketplace/scribblings/writing-drivers.scrbl new file mode 100644 index 0000000..abcf8fa --- /dev/null +++ b/marketplace/scribblings/writing-drivers.scrbl @@ -0,0 +1,7 @@ +#lang scribble/manual +@require[racket/include] +@include{prelude.inc} + +@title{Writing New Drivers} + +*** pseudo-substruct