Commit Graph

101 Commits

Author SHA1 Message Date
Tony Garnock-Jones 4357424e78 Switch to non-boxed, persistent impl of fields 2016-07-21 16:50:16 -04:00
Tony Garnock-Jones 970baf7a36 Forbid multiple uses of a suspend-script continuation 2016-07-21 15:14:03 -04:00
Tony Garnock-Jones bffc3757cb Remove unused #:substate arg from add-facet!. 2016-07-21 15:00:58 -04:00
Tony Garnock-Jones 3569426048 Support specification of the form to use to create an actor in during/actor 2016-07-20 22:05:14 -04:00
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 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
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 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 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 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 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 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 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 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 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 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 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 fbece48f52 `patch!` and crude `on-event` handling in actor.rkt 2016-05-08 20:41:29 -04:00
Tony Garnock-Jones 6fe897eb46 Rename track -> query 2016-05-08 17:51:08 -04:00
Tony Garnock-Jones 7fcfa9586b Rename "network" to "dataspace" throughout 2016-04-07 09:42:54 +02:00
Tony Garnock-Jones 9dee4e3b30 Alpha convert: prospect -> syndicate 2016-04-01 19:53:46 -04:00
Renamed from racket/prospect/actor.rkt (Browse further)