Sam Caldwell
c76480f701
Allow giving two contracts in field macro
2016-07-20 16:51:41 -04:00
Sam Caldwell
01ad7c72f6
Allow field/c to have different in and out contracts
...
This can be used to temporarily disallow writing to the field, or
allowing the field to be initially #f but never set to #f.
2016-07-20 16:34:21 -04:00
Sam Caldwell
3b9e483076
Re-kerjigger field macro to allow using #f as a contract
2016-07-20 16:14:12 -04:00
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