Commit Graph

463 Commits

Author SHA1 Message Date
Sam Caldwell e20f87adba Implement field/c using a struct rather than make-contract
Asumu suggested that using a struct with the contract property is
generally preferred.
2016-07-19 17:49:45 -04:00
Sam Caldwell 9cf12a381e wrap contracts given to field with `field\c` 2016-07-18 15:20:38 -04:00
Sam Caldwell 0fb5fa52f4 allow field/c to blame positive party 2016-07-18 15:17:17 -04:00
Tony Garnock-Jones a046bd0f23 Experimental begin/dataflow and define/dataflow facilities 2016-07-17 12:51:57 -04:00
Tony Garnock-Jones 21f05e110a Do not provide "sleep" from the #langs 2016-07-17 12:51:57 -04:00
Tony Garnock-Jones 0a0feee01b Support optional priority in on-event 2016-07-17 00:29:52 -04:00
Tony Garnock-Jones 1334bd3abb Split out query-set* etc; add query-value etc 2016-07-17 00:11:19 -04:00
Tony Garnock-Jones d36ccbb0c2 New web driver 2016-07-16 16:20:57 -04:00
Tony Garnock-Jones 4f570fcd18 Support current-ground-dataspace for syndicate-gl. 2016-07-16 16:15:19 -04:00
Tony Garnock-Jones 4496258d0e Support current-ground-dataspace for big-bang and friends 2016-07-16 16:07:34 -04:00
Tony Garnock-Jones b6c679afa6 Support `module+` in Syndicate #langs. Closes #2.
Adding `#'module+` explicitly to the stop-list for local-expand stops
the infinite recursion (problem 1 in the issue description). The code
goes on to treat it like `#'module` and `#'module+`, namely as a
non-action-producing form.

Problem 2 in the issue description is interesting. I haven't done
anything in particular to address the production of unbounded `X` ->
`(begin X)` expansions, but it seems not currently to be a problem;
and, weirdly (?), submodules in a `#lang syndicate` or `#lang
syndicate/actor` module do not seem to inherit the `#%module-begin` of
their container! That is, `(module+ main)`, `(module+ test)` etc. all
seem to have a `racket/base` `#%module-begin`, though I've not looked
very far into this.

Most peculiar on this front is that if the `#,@(reverse final-forms)`
precedes the `(module+ syndicate-main ...)`, and the module being
processed includes, say, a `(module+ main)`, then for some reason the
resulting `main` submodule *is* treated as having a `syndicate/lang`
`#%module-begin` (thus causing problems as suggested in the issue
description)! I *really* don't understand why that might be, and
haven't spent very much time investigating after I noticed that so
long as the `main`-required `syndicate-main` submodule preceded all
other submodule declarations, things seemed to work out.

This whole approach is still a bit dicey: for example, the following
will erroneously treat `(foo quux)` as an expression yielding actions,
rather than a struct declaration:

    #lang syndicate
    (define-syntax-rule (foo x) (struct x ()))
    (foo quux)
2016-07-16 15:49:03 -04:00
Sam Caldwell 75cec37038 Support for defining fields with contracts 2016-07-15 18:53:25 -04:00
Sam Caldwell e1f42d5d4f First pass at field/c
Logic mostly dupicated from parameter/c
2016-07-15 15:45:08 -04:00
Tony Garnock-Jones 22f5c47d30 Collect actor.rkt pending-actions during module compilation 2016-07-15 09:50:29 -04:00
Tony Garnock-Jones cb473a8847 Make rising-edge check at patch-compute-time.
This makes rising-edge checks happen only when *fields* change, rather
than every turn. It also means that if a script causes a relevant
field change, the rising-edge check will definitely be performed
before the end of the turn.

A potential downside is that a rising-edge check could schedule a
script which triggers the same rising-edge check, causing an infinite
loop in `run-scripts!`.
2016-07-15 09:47:48 -04:00
Tony Garnock-Jones 0ac24a5755 Support #:on-add, #:on-remove in queries 2016-07-13 17:20:57 -04:00
Tony Garnock-Jones 024cb6d707 Promote {define/,}query-{set,hash,hash-set} to actor.rkt 2016-07-13 16:59:55 -04:00
Tony Garnock-Jones 95fe020ed1 Factor out support/hash.rkt 2016-07-13 16:53:07 -04:00
Tony Garnock-Jones fe272ab514 define/query-set, -hash, -hash-set 2016-07-13 16:37:58 -04:00
Tony Garnock-Jones 6c3295c96d Rename track -> query 2016-07-13 16:35:55 -04:00
Tony Garnock-Jones 53efb1fcd4 Refine script priorities for use by track-set and friends 2016-07-13 16:34:16 -04:00
Tony Garnock-Jones be80ac038f Split effect.rkt out into a package of its own, github.com/tonyg/racket-effects 2016-07-13 13:25:47 -04:00
Tony Garnock-Jones a466fcdf23 track-set.rkt 2016-07-12 21:17:07 -04:00
Tony Garnock-Jones cf82b794e5 Abort to prompt-tag when invoking a suspended continuation. 2016-07-12 17:42:54 -04:00
Tony Garnock-Jones 1a6199f9ee Allow naming of `during/actor`s 2016-07-12 16:32:54 -04:00
Tony Garnock-Jones 34b504326f Remove react/independent; counter to Syndicate design. See Journal 5 for details. 2016-07-12 15:33:31 -04:00
Tony Garnock-Jones 7989bc4931 Add `flush!` utility to actor.rkt 2016-07-12 15:18:06 -04:00
Tony Garnock-Jones 0b06bcf1c4 Introduce syndicate module *activation*.
Make #lang syndicate module-begin gather boot actions into a
syndicate-main submodule, and for each such module, add a main
submodule that calls run-ground with the syndicate-main boot actions.

This lets us write syndicate *libraries* that comprise both
data-structures, functions, and Syndicate services.
2016-07-12 15:05:56 -04:00
Tony Garnock-Jones 2afa0fce15 #lang syndicate/monolithic, integrated with incremental 2016-07-12 13:45:32 -04:00
Tony Garnock-Jones 7c11a438e4 Change compute-patch to deal with trie-sets rather than -maps 2016-07-12 13:43:01 -04:00
Tony Garnock-Jones 118c163193 Done 2016-07-11 12:27:15 -04:00
Tony Garnock-Jones b323d7c650 Support (quit-dataspace) at ground level 2016-07-10 20:14:54 -04:00
Tony Garnock-Jones 3f3249e7a1 Convert syndicate-gl/2d basic example to syndicate/actor style 2016-07-10 19:22:48 -04:00
Tony Garnock-Jones adf6603440 Track dependencies from fields to endpoint assertion sets with simple dataflow 2016-07-10 19:22:02 -04:00
Tony Garnock-Jones b20337fad8 Introduce actor-global field-table. 2016-07-10 19:15:50 -04:00
Tony Garnock-Jones 081383d321 Correct grammatical error in error message 2016-07-10 18:41:29 -04:00
Tony Garnock-Jones 5484e1b4a3 Cannot construct a 0x0 bitmap for some reason? 2016-07-10 18:38:33 -04:00
Tony Garnock-Jones adf2d1e291 Disallow usage of assert!/retract!/patch! outside scripts 2016-07-10 16:48:09 -04:00
Tony Garnock-Jones 9bf2991da8 Enforce rule: fields legal only at actor toplevel or in facet setup code 2016-07-10 16:47:37 -04:00
Tony Garnock-Jones 175c619edc #lang syndicate/actor 2016-07-10 12:33:16 -04:00
Tony Garnock-Jones bf12d3f27f Examples demonstrating illegal field flow 2016-07-09 17:25:37 -04:00
Tony Garnock-Jones 1e1fef6a6e Correctly (?) prune field-tables 2016-07-09 17:24:23 -04:00
Tony Garnock-Jones 3bc95aeaeb Update big-bang.rkt to the new Syndicate/Racket HLL. 2016-07-09 16:35:29 -04:00
Tony Garnock-Jones 8ca2b1ac0c Reimplement Syndicate/Racket with a new design.
This is Syndicate/Racket v2, modeled more closely after Syndicate/js.
Facets and Endpoints are now contained within a single actor, unlike
Syndicate/Racket v1, where a linkage protocol between multiple actors
was used. The approach to actor and facet state has been revised as a
consequence.

Almost all the examples using syndicate/actor have been updated.
2016-07-09 16:18:30 -04:00
Tony Garnock-Jones 52aed3111c Print process names during exn; avoid double-printing exns 2016-07-09 15:28:31 -04:00
Tony Garnock-Jones d244866617 Fix match-value/captures for vectors (and hence structs) 2016-07-09 13:21:20 -04:00
Tony Garnock-Jones 707245cfe2 Support broadcast messages 2016-06-27 14:54:07 -04:00
Tony Garnock-Jones 173a0edb54 two-buyer-protocol.rkt 2016-06-23 10:48:28 -04:00
Tony Garnock-Jones e5a38d5fe5 Instantiated patterns need `?`, not `_`. 2016-06-18 11:57:11 -04:00
Tony Garnock-Jones eac9f39169 Mini version of forward-chaining.rkt using syndicate/actor 2016-06-14 04:01:54 -04:00
Tony Garnock-Jones 7cc8f2cbe6 Remove obsolete "examples" 2016-06-14 03:55:10 -04:00
Tony Garnock-Jones 4ae9aa0e2b Move the newly-runnable example into examples/actor 2016-06-14 03:51:10 -04:00
Tony Garnock-Jones b857ce7bcd Actually-runnable syndicate/actor big-bang example. 2016-06-14 03:49:47 -04:00
Tony Garnock-Jones f21e58dacb Support #:meta-level for during 2016-06-14 03:48:31 -04:00
Tony Garnock-Jones 7271ef6b73 Ensure that `?` is provided by pattern.rkt and clients 2016-06-14 03:48:12 -04:00
Tony Garnock-Jones 0b964bb1bb Compute `retracted` pattern just once during `during`. Avoids mutation-related bug. 2016-06-11 06:59:59 -04:00
Tony Garnock-Jones 7e144ab33b Remove unused require 2016-06-09 14:24:03 -04:00
Tony Garnock-Jones 403cc372c1 Forgot to update endpoint.rkt's use of <spawn> 2016-06-09 14:23:54 -04:00
Tony Garnock-Jones d161d50b9a Split out pattern.rkt 2016-06-08 14:22:35 -04:00
Tony Garnock-Jones 2a218dd0a6 Split out effect-handling library. 2016-06-08 13:52:32 -04:00
Tony Garnock-Jones e74f6ae7e5 Initial support for properly-recorded actor names. 2016-06-06 16:45:42 -04:00
Tony Garnock-Jones cd94df3cab Report non-network-failure exceptions more clearly 2016-06-06 10:36:00 -04:00
Tony Garnock-Jones 9af4e88681 Optional SSL options for broker 2016-06-05 12:06:28 -04:00
Tony Garnock-Jones f3645b9081 Better choice of example UDP multicast group address. 2016-05-28 10:32:03 -04:00
Tony Garnock-Jones f6ed330a0d UDP multicast support 2016-05-27 19:43:35 -04:00
Tony Garnock-Jones 4d905e9f3f Correct typo in documentation 2016-05-27 18:45:41 -04:00
Tony Garnock-Jones 5c288036aa Friendlier error when one accidentally asserts wildcard 2016-05-17 02:08:23 -04:00
Tony Garnock-Jones 791d2880ae If a parent facet terminates, its children watch for this and terminate themselves. 2016-05-17 01:15:09 -04:00
Tony Garnock-Jones 1e84a3507d Avoid use of racket/match for message matching in actors; makes abstracting over patterns easier 2016-05-17 01:14:48 -04:00
Tony Garnock-Jones e3ff45b08e Fix wildcard matcing in trie-lookup to properly prepend wilds for open-parens. 2016-05-17 01:11:00 -04:00
Tony Garnock-Jones 07ef4f108e Improve printing of actor state 2016-05-17 01:10:26 -04:00
Tony Garnock-Jones b1f7816418 Only fire (on (asserted)) when no previous matching assertions have been seen.
This makes (on (asserted)), (on (retracted)) and (during) behave as if
they are *grouping* by their named captures, which is what we want. It
gives a much easier to understand programming model. Note the
differences in execution of example-partial-retraction.rkt before and
after this patch. This patch gives example-partial-retraction.rkt, and
programs like it, a more natural behaviour.
2016-05-17 00:24:17 -04:00
Tony Garnock-Jones 3db6177ce9 Second listener, this one using during 2016-05-17 00:15:52 -04:00
Tony Garnock-Jones d9b11566f5 example-partial-retraction.rkt 2016-05-17 00:09:18 -04:00
Tony Garnock-Jones c7b62b109e Slightly less noisy logging from broker by default 2016-05-16 14:18:44 -04:00
Tony Garnock-Jones cd60353053 Remove obsolete definition. 2016-05-15 07:01:32 -04:00
Tony Garnock-Jones 74c663d5d4 Provide broker-scope and broker-data from server.rkt 2016-05-15 06:59:28 -04:00
Tony Garnock-Jones 81f9a0f0fe Split host and port in websocket-remote-client and broker-scope. 2016-05-15 06:56:29 -04:00
Tony Garnock-Jones c29ae059ff Make sure to advertise presence even during connection establishment, since otherwise the user actor may hang indefinitely. 2016-05-15 06:55:39 -04:00
Tony Garnock-Jones 0f1fabddfb Better logging of websocket connection failures. 2016-05-15 06:55:14 -04:00
Tony Garnock-Jones 931c54df6a It is expected that outbound connection supply should drop. 2016-05-15 06:53:02 -04:00
Tony Garnock-Jones b65291e789 Remove obsolete clean-patch function. 2016-05-15 06:11:04 -04:00
Tony Garnock-Jones e7b0e15786 Support nested observation across broker protocol 2016-05-15 06:10:51 -04:00
Tony Garnock-Jones ee120022a4 trie-step* 2016-05-15 06:10:31 -04:00
Tony Garnock-Jones 7a4f1d8931 Update Racket demand-matcher to match improvements in the js version. 2016-05-14 17:07:50 -04:00
Tony Garnock-Jones 68cde5be6c DemandMatcher: overlap not ruled out! Remove it. 2016-05-12 22:18:57 -04:00
Tony Garnock-Jones c6cfa2fe87 Scoped broker connections 2016-05-12 12:32:29 -04:00
Tony Garnock-Jones f486f93bd4 More ergonomic step/prepend for tries and patches 2016-05-12 12:18:59 -04:00
Tony Garnock-Jones 81e10632dd Expose Websocket request host/path to server-side 2016-05-12 12:18:43 -04:00
Tony Garnock-Jones 7e48e82a48 Print out peer connection details in broker 2016-05-12 10:57:34 -04:00
Tony Garnock-Jones de44b51e49 ws-echo.rkt and ws-echo-client.rkt 2016-05-12 10:48:34 -04:00
Tony Garnock-Jones a8821913a1 Publish websocket-peer-details for each connection 2016-05-12 10:46:02 -04:00
Tony Garnock-Jones 4de4a099b9 Fix bug with outbound websocket connections 2016-05-12 10:46:02 -04:00
Tony Garnock-Jones 8d6bc484a8 Canonicalize deserialized atoms. Fixes serious routing bug when using the broker. 2016-05-12 08:06:23 -04:00
Tony Garnock-Jones fd2e4cc23c Exchange ad-hoc tracing for slightly more principled log-info output. 2016-05-10 01:24:47 -04:00
Tony Garnock-Jones bbca582b98 Get the broker working.
Add support for encoding prefab structs as JSON objects.

Remove linkage & at-meta from patches inside broker dataspace. This is
ugly, and deserves to be revisited in future.

Fix a bug where using trie-prune-branch was incorrect, and
trie-subtract should have been used instead.

Factor out support/struct.rkt.
2016-05-10 00:25:50 -04:00
Tony Garnock-Jones 7c4e00f614 Command-line launcher for broker 2016-05-09 12:55:20 -04:00
Tony Garnock-Jones 18eab695cc First sketch of broker 2016-05-08 20:42:46 -04:00
Tony Garnock-Jones 5d46a6e631 Add patch-without-at-meta 2016-05-08 20:42:33 -04:00
Tony Garnock-Jones fbece48f52 `patch!` and crude `on-event` handling in actor.rkt 2016-05-08 20:41:29 -04:00
Tony Garnock-Jones 925ba8c8de mux-focus-event (commented out, because problems) 2016-05-08 19:47:07 -04:00
Tony Garnock-Jones 6fe897eb46 Rename track -> query 2016-05-08 17:51:08 -04:00
Sam Caldwell 7b8b6c5da7 scribble syndicate-gl/2d 2016-05-06 17:35:15 -04:00
Tony Garnock-Jones 839818f8e4 Tries and patches to and from jsexpr 2016-04-19 18:52:49 -04:00
Tony Garnock-Jones d033c69083 Emacs indentation settings 2016-04-07 10:06:59 +02:00
Tony Garnock-Jones 7fcfa9586b Rename "network" to "dataspace" throughout 2016-04-07 09:42:54 +02:00
Tony Garnock-Jones b6ccbe81cc Rename documentation to "syndicate" 2016-04-04 05:06:23 +02:00
Tony Garnock-Jones 482afb9f62 Update readmes 2016-04-01 20:02:50 -04:00
Tony Garnock-Jones 9dee4e3b30 Alpha convert: prospect -> syndicate 2016-04-01 19:53:46 -04:00
Tony Garnock-Jones b2e0916350 Merge info.rkts 2016-04-01 19:20:21 -04:00
Tony Garnock-Jones d05d72a629 Merge branch 'master' of prospect-gl 2016-04-01 19:18:47 -04:00
Tony Garnock-Jones 6a71676df0 Move to submodule in prep for merge 2016-04-01 19:18:00 -04:00
Tony Garnock-Jones 1830d4da6c Move contents to subfolder in prep for merge 2016-04-01 19:05:47 -04:00