Sam Caldwell
9c1e9719ba
swap the meaning of spawn and actor in racket syndicate
2017-02-15 18:18:19 -05:00
Tony Garnock-Jones
413840382b
Better crash-handling for simplified TCP protocol sketch
2017-02-09 19:24:02 -05:00
Tony Garnock-Jones
25729454a6
Tweak
2017-01-23 17:38:38 -05:00
Tony Garnock-Jones
36459c5942
Even simpler chat server
2017-01-23 16:40:01 -05:00
Tony Garnock-Jones
e593cf768b
Cosmetic
2017-01-08 14:10:15 -05:00
Tony Garnock-Jones
19bebc9881
Handle IRC QUIT
2017-01-07 01:46:09 -05:00
Tony Garnock-Jones
eb4a228c73
Crude IRC driver and example.
2017-01-07 01:14:14 -05:00
Tony Garnock-Jones
b946bbec3c
Glitching example
2016-12-12 11:09:39 +13:00
Tony Garnock-Jones
6a2163bce9
Avoid accidental shadowing of field-names in query-value* and friends
2016-12-12 10:26:50 +13:00
Tony Garnock-Jones
c7db9f2543
Reload when hash of file has changed; stop using a naive counter
2016-12-07 10:10:36 +13:00
Tony Garnock-Jones
b87639b7a4
Split out reloader-mixin and reloader-mixin*
2016-12-07 09:47:53 +13:00
Tony Garnock-Jones
d9905df4e5
Add #:linkage for during/actor and the new supervise/actor to communicate properly
2016-12-07 09:47:39 +13:00
Tony Garnock-Jones
f440911e7f
Sort process table by PID
2016-12-07 09:47:03 +13:00
Tony Garnock-Jones
c019a61c18
Improvements in error-handling for websocket connections re: deadlock, closed ports etc.
2016-12-06 05:55:00 +13:00
Tony Garnock-Jones
64cfce2472
Work around limitations in the way the OS supports filesystem-change-evt
2016-12-06 05:54:17 +13:00
Tony Garnock-Jones
4ee234f118
Remove egregious lack of support for reading directory contents in filesystem driver
2016-12-04 17:33:12 +13:00
Tony Garnock-Jones
c2ece35bf9
Add #:hook to spawn-broker-server-connection
2016-11-30 10:19:56 +13:00
Tony Garnock-Jones
78cb6f0c02
Add #:hook to spawn-configuration
2016-11-29 18:22:00 +13:00
Tony Garnock-Jones
97b194487b
Remove unneeded definitions
2016-11-29 18:05:06 +13:00
Tony Garnock-Jones
ae6c5a409f
Abstract broker over spatial separation syntax used
2016-11-29 16:29:54 +13:00
Tony Garnock-Jones
97bb848611
Always supervise reloaders
2016-11-29 15:04:13 +13:00
Tony Garnock-Jones
d0d7e677fe
Reevaluate supervisor name expression for each supervisee
2016-11-29 14:59:14 +13:00
Tony Garnock-Jones
d9cc478e6c
Use a gensym if no supervisor name is supplied
2016-11-29 14:53:46 +13:00
Tony Garnock-Jones
8cd60417c4
Reimplement supervise.rkt to use spawn->process+transition at each reboot.
2016-11-29 14:48:28 +13:00
Tony Garnock-Jones
726b936ed3
Example of supervision
2016-11-29 13:45:43 +13:00
Tony Garnock-Jones
02c0af4c75
Remove noisy logging
2016-11-29 13:45:23 +13:00
Tony Garnock-Jones
885a1d05d6
Initial stab at a general supervisor
2016-11-29 12:28:08 +13:00
Tony Garnock-Jones
9bb831cac5
Avoid stomping on current-actor-state if it is changed in patch-fn
2016-11-29 12:24:31 +13:00
Tony Garnock-Jones
f677c3a888
current-action-transformer must be a store, not a parameter, else it sticks around for (e.g.) supervision of children of supervised actors
2016-11-29 12:23:33 +13:00
Tony Garnock-Jones
3a3d216908
Only act when we know a positive fact about the state of our watched file
2016-11-29 12:19:34 +13:00
Tony Garnock-Jones
bde2d833bd
Clean up internal interfaces to actor.rkt
2016-11-29 10:34:37 +13:00
Tony Garnock-Jones
f638923c6f
`current-action-transformer`
2016-11-29 10:19:52 +13:00
Tony Garnock-Jones
05c57ec05d
`perform-actions!`
2016-11-29 10:19:06 +13:00
Tony Garnock-Jones
c77513e838
Improve actor-state pretty-printing
2016-11-29 10:18:38 +13:00
Tony Garnock-Jones
e7402e4387
example-multiple-suspension-resumption.rkt
2016-11-29 10:16:39 +13:00
Tony Garnock-Jones
260a99e08b
Track lexical information through analyze-pattern
2016-11-28 14:08:46 +13:00
Tony Garnock-Jones
bab5aba083
Crude steps toward reloadable Syndicate modules
2016-11-28 12:27:10 +13:00
Tony Garnock-Jones
8202220fec
`schedule-actions!`
2016-11-28 11:39:38 +13:00
Tony Garnock-Jones
2f7313a489
Use web-request-header-websocket-upgrade?.
2016-11-26 11:27:14 +13:00
Tony Garnock-Jones
ad2874f463
`web-request-header-websocket-upgrade?`
2016-11-26 11:25:44 +13:00
Tony Garnock-Jones
8f181f5b4d
Hoist broker startup into a module+ main
2016-11-26 11:19:31 +13:00
Tony Garnock-Jones
b72fca51b0
Export spawn-broker-server-connection
2016-11-26 11:19:17 +13:00
Tony Garnock-Jones
f1a7e10fbf
Change syndicate-broker to use web.rkt instead of websocket.rkt
2016-11-26 11:09:23 +13:00
Tony Garnock-Jones
7b5b866a6d
web-request-peer-details
2016-11-26 11:08:45 +13:00
Tony Garnock-Jones
16d9dd27c9
... Oops.
2016-11-26 10:02:59 +13:00
Tony Garnock-Jones
990ae8ea9a
Oops.
2016-11-26 09:59:24 +13:00
Tony Garnock-Jones
0a585d7842
More uniform treatment of resource-path functions
2016-11-26 09:54:26 +13:00
Tony Garnock-Jones
4af472f7ff
Log smtp-account startup and shutdown
2016-11-24 10:38:36 +13:00
Tony Garnock-Jones
a3335800f6
Make immediate-query able to yield multiple values
2016-11-24 10:36:38 +13:00
Tony Garnock-Jones
f201bea5c6
immediate-query
2016-11-23 22:11:35 +13:00
Tony Garnock-Jones
f0f29007df
Very basic inbound cookie support
2016-11-23 22:05:49 +13:00
Tony Garnock-Jones
257c0bf628
#:headers for `web-redirect!`.
2016-11-23 17:21:01 +13:00
Tony Garnock-Jones
0d34e3280e
web-redirect/temporary! -> web-redirect!
2016-11-23 15:39:11 +13:00
Tony Garnock-Jones
3ce8bc380b
web-redirect/temporary!
2016-11-23 15:32:44 +13:00
Tony Garnock-Jones
4b99b629df
syndicate/drivers/config
2016-11-23 13:49:24 +13:00
Tony Garnock-Jones
97a843ccec
SMTP driver
2016-11-23 13:42:10 +13:00
Tony Garnock-Jones
c302e35024
Properly shut down tcp-listener
2016-11-22 11:45:53 +13:00
Tony Garnock-Jones
0102a7d1cd
append-url-path
2016-11-22 11:08:11 +13:00
Tony Garnock-Jones
6497cc5185
Use utility sleep instead of repeating it in one of the examples
2016-11-22 09:16:23 +13:00
Tony Garnock-Jones
4d6a2986d5
web-response-successful?
2016-11-22 09:16:08 +13:00
Tony Garnock-Jones
c8b7be22cc
Use SSL on outbound HTTPS connections properly
2016-11-21 17:38:55 +13:00
Tony Garnock-Jones
9d34ffea4f
Log websocket connection starts
2016-11-21 17:38:41 +13:00
Tony Garnock-Jones
b2c795c57a
Sleep utility
2016-11-21 11:51:48 +13:00
Tony Garnock-Jones
c595c638b2
Make ground a little quieter
2016-11-21 11:46:31 +13:00
Tony Garnock-Jones
a7a2a5c492
Log HTTP server startup and shutdown
2016-11-21 10:57:43 +13:00
Tony Garnock-Jones
c6ca757a7e
Useful web utilities
2016-11-21 10:57:35 +13:00
Tony Garnock-Jones
08f1e7506b
filesystem driver
2016-11-20 22:33:07 +13:00
Tony Garnock-Jones
bc346ff38a
Use logger named syndicate/drivers/web
2016-11-20 18:18:43 +13:00
Tony Garnock-Jones
594bb3989b
Log web requests
2016-11-20 18:11:08 +13:00
Tony Garnock-Jones
c77793f7fd
Ticker
2016-10-31 17:42:38 -04:00
Tony Garnock-Jones
15504cccab
timestate
2016-10-31 17:36:59 -04:00
Tony Garnock-Jones
490e414904
Add #:let to during/actor
2016-10-31 17:27:46 -04:00
Tony Garnock-Jones
d442f4890f
summarise-ground-state with SIGUSR2
2016-10-31 13:46:53 -04:00
Tony Garnock-Jones
4a39a03a0a
Log failures of outbound web requests
2016-10-30 20:30:58 -04:00
Tony Garnock-Jones
c9eddfa0b7
web-response-header-code-type
2016-10-30 20:30:49 -04:00
Tony Garnock-Jones
2d1ad8a62d
Add #:on-crash to during/actor
2016-10-30 20:30:38 -04:00
Tony Garnock-Jones
37af1e8726
Cope with transient pulses of demand in during/actor
2016-10-25 16:59:00 -04:00
Tony Garnock-Jones
ea997539a2
WIP exploration of problems with demand transients
2016-10-25 12:38:19 -04:00
Tony Garnock-Jones
e90c0e580e
Check once for unix-signal support, rather than every (!) time (!)
2016-10-25 12:37:57 -04:00
Tony Garnock-Jones
acd9dde2b8
Remove mistaken require
2016-10-25 12:37:35 -04:00
Tony Garnock-Jones
cd83b5f5d8
Minor fixes
2016-10-24 22:01:17 -04:00
Tony Garnock-Jones
d00f0cbf13
Fix bug where #:when-disabled on-message endpoints were processing
...
events even when "disabled".
2016-09-25 15:06:22 -04:00
Tony Garnock-Jones
8f28ae0e9c
Minor refactoring
2016-09-19 21:26:38 -04:00
Tony Garnock-Jones
694de50bc0
Illustrate bounds on observation too
2016-09-19 21:21:43 -04:00
Tony Garnock-Jones
c1681f7804
Another firewall-demo example case
2016-09-19 21:19:17 -04:00
Tony Garnock-Jones
e7dc36f126
syndicate/firewall
2016-09-19 21:14:08 -04:00
Tony Garnock-Jones
9a62eb6076
sandbox-os.rkt
2016-09-19 20:24:51 -04:00
Tony Garnock-Jones
aab25684b8
Fancy process table display on SIGUSR1 (if SYNDICATE_TRACE envt var nonempty)
2016-09-13 17:35:12 -04:00
Tony Garnock-Jones
7be8eb6d60
Oops -- I had forgotten udp-handle support in the UDP driver.
2016-09-13 13:21:04 -04:00
Tony Garnock-Jones
9080396bc5
Environment variable for convenient redirection of stdout to stderr
2016-09-13 12:24:53 -04:00
Tony Garnock-Jones
bb889542fc
Track process names in trace/stderr.rkt
2016-09-13 12:24:16 -04:00
Tony Garnock-Jones
9ee7e677ad
Give names to udp-driver and udp-socket processes
2016-09-06 16:46:14 +01:00
Tony Garnock-Jones
c844c0d596
Make sure spawn tracing happens before initial-patch tracing
2016-09-06 16:45:59 +01:00
Tony Garnock-Jones
02828d8356
syndicate/profile
2016-09-05 11:22:27 +01:00
Tony Garnock-Jones
7880b2ba28
current-trace-procedures needs to be a store, not a parameter, because spawns capture the parameterization too early and the scoping of tracing should be hierarchy-based
2016-09-02 17:55:46 +01:00
Tony Garnock-Jones
45c12bacf0
Permit #:when in stop-when.
2016-09-02 10:36:03 +01:00
Tony Garnock-Jones
8249993a86
Use lists rather than conses, since they travel through dataspaces better
2016-08-31 19:12:05 +01:00
Tony Garnock-Jones
4685d6af46
extract-patch-pids and tset/set-union
2016-08-31 19:11:43 +01:00
Tony Garnock-Jones
bf3b2a5a36
Expose current-ground-event-async-channel
2016-08-31 19:11:16 +01:00
Tony Garnock-Jones
fb3ed65831
trace-logger --> current-trace-procedures
2016-08-31 15:12:52 +01:00
Tony Garnock-Jones
ca1c0f6645
Add a way of loading trace modules at startup time
2016-08-25 18:15:39 +01:00
Tony Garnock-Jones
2a6061bd97
Revamp tracing
2016-08-25 18:07:27 +01:00
Tony Garnock-Jones
0bc775a89f
First commit moving from (actor (react ...)) to (actor ...)
2016-08-24 17:35:38 +01:00
Tony Garnock-Jones
56e893fac4
Use field instead of set!.
2016-08-21 08:42:45 -04:00
Tony Garnock-Jones
3240f20d90
Allow ($ v) bindings
2016-08-21 08:27:56 -04:00
Tony Garnock-Jones
426a38b17f
Silence redefinition warning
2016-08-15 10:45:23 -04:00
Tony Garnock-Jones
fe47abd540
Cosmetic
2016-08-10 19:14:01 -04:00
Tony Garnock-Jones
a890a7147b
Queue implementations without credit tracking
2016-08-10 19:04:08 -04:00
Tony Garnock-Jones
956a940480
Cosmetic
2016-08-10 19:03:52 -04:00
Tony Garnock-Jones
6684c9e883
queue-remove in functional-queue.rkt
2016-08-10 19:03:40 -04:00
Tony Garnock-Jones
0bc370beec
A Queue with credit-based flow control.
2016-08-10 18:42:19 -04:00
Tony Garnock-Jones
a828334b2f
Cosmetic
2016-08-10 18:41:46 -04:00
Tony Garnock-Jones
2b29e817a5
Add *idle-priority*, and allow #:priority on begin/dataflow
2016-08-10 18:41:41 -04:00
Tony Garnock-Jones
f20d1a2ad7
Invariant checking via begin/dataflow
2016-08-10 17:09:24 -04:00
Tony Garnock-Jones
d7a594e2b9
Counting-semaphore-like mutex, and dining philosophers.
2016-08-10 17:03:21 -04:00
Tony Garnock-Jones
eaade6e4fd
Treat synthetic patches differently wrt previousKnowledge
2016-08-07 21:58:19 -04:00
Sam Caldwell
73f180d90a
fix bug in LLL two-buyer
2016-08-03 14:19:18 -04:00
Tony Garnock-Jones
e22f608109
Now that we capture parameterization for actors, current-actor-path-rev has to be a store rather than a parameter
2016-07-31 22:19:59 -04:00
Tony Garnock-Jones
4e1bab4b90
Introduce make-spawn to capture parameterizations. Closes #10 .
2016-07-31 17:24:48 -04:00
Tony Garnock-Jones
1fa50e4e6a
file-system-during2.rkt
2016-07-31 12:22:15 -04:00
Tony Garnock-Jones
628b7b2356
Remove superfluous begin0; reindent
2016-07-31 12:19:54 -04:00
Tony Garnock-Jones
e2897d37f4
Factor out commonality from file-system*.rkt examples
2016-07-31 12:17:12 -04:00
Tony Garnock-Jones
463dd48577
Always pick the highest-priority script to run next.
...
This means that `*gc-priority*` scripts will now reliably run last.
Prior to this change, if some higher-priority script X ran while a
`*gc-priority*` script Y was queued, and it enqueued a high-priority
script Z, then Y would run before Z.
2016-07-31 12:02:11 -04:00
Tony Garnock-Jones
f34924bc6d
Leave a "tombstone" so we can see the process's name while any record of it remains.
2016-07-31 11:36:25 -04:00
Tony Garnock-Jones
4dad3e9661
Process retractions before asserts in the query forms
2016-07-30 17:05:54 -04:00
Tony Garnock-Jones
b6a03bdd9b
Tweak scribblings to silence errors. Still need to update docs.
2016-07-30 14:49:05 -04:00
Tony Garnock-Jones
c7dae47210
inbound* and outbound* are now match-expanders
2016-07-30 14:49:05 -04:00
Tony Garnock-Jones
07eb91b0d9
Update big-bang for split relay and mux.
2016-07-30 14:49:05 -04:00
Tony Garnock-Jones
17db697690
spawn->process+transition
2016-07-30 14:49:05 -04:00
Tony Garnock-Jones
c0786c86ca
Introduce struct process.
2016-07-30 14:49:05 -04:00
Tony Garnock-Jones
68ba2f74a6
Split dataspaces in to relay and mux sublayers.
...
This is a major change to the previous design, and also a change with
respect to the semantics in the ESOP 2016 paper. All the complexity of
echo-cancellation is stripped out of the core dataspace semantics, and
the relaying protocol is changed from one constructor, `at-meta`, to
two, `inbound` and `outbound`. The relay connecting a dataspace to its
container is now completely symmetric with the contained actors: it
initially asserts interest in what it is to relay, just like any other
actor would. Dataspaces no longer treat relaying specially.
This commit has updated all (I think) of the non-graphical examples. The
graphical code remains to be done in a following commit.
2016-07-30 14:49:05 -04:00
Tony Garnock-Jones
b8c109d82b
pretty-print-actor-state
2016-07-30 14:49:05 -04:00
Tony Garnock-Jones
2a2d363c5e
Improve printing of patches
2016-07-30 14:49:05 -04:00
Tony Garnock-Jones
129dd23b84
Remove obsolete endpoint.rkt and its example
2016-07-30 14:49:05 -04:00
Tony Garnock-Jones
56d2fc2c0d
Support #:when conditional (on ...) clauses.
2016-07-28 15:45:45 -04:00
Tony Garnock-Jones
0cff79abec
Switch from parameters to "stores".
...
A store is like a parameter, except stores are independent of each
other, unlike parameters which are bundled together into a single
parameterization. This was observable in cases like the
example-action-after-suspension code checked in here, where dataflow
invoked a script, which parameterized current-dataflow-subject-id.
This captured *too much* of things like the pending-patch and
pending-actions. Subsequent `schedule-action!` calls' effects were
then lost.
2016-07-28 15:45:45 -04:00
Sam Caldwell
2e24e105b8
Modify LLL two-buyer examples to give buyer A a budget
2016-07-28 15:33:52 -04:00
Sam Caldwell
48763d8dbe
modify HLL two-buyer example to give buyer A a budget
...
no longer bathing in venture capital
2016-07-27 18:01:15 -04:00
Tony Garnock-Jones
e99cd0887f
Improved tests for dataflow.rkt
2016-07-27 06:03:57 -04:00
Tony Garnock-Jones
8dba9a66c6
Line reader for TCP
2016-07-25 21:31:12 -04:00
Tony Garnock-Jones
8e22e58920
Move LLL two-buyer examples together in the syndicate collect
2016-07-25 18:37:45 -04:00
Tony Garnock-Jones
a05d486354
let-event
2016-07-25 18:34:34 -04:00
Sam Caldwell
fdf0fa8cf6
Add spawn/stateless to syndicate/monolithic
2016-07-25 14:48:41 -04:00
Tony Garnock-Jones
819ff13835
Expanders for events and assertion-patterns.
...
Introduced expanders for events (define-event-expander) and for
assertion-patterns (define-assertion-expander).
Introduced convenience syntax and utilities in web.rkt for working
with web requests.
Support nested bindings in assertion-patterns for message events
(only).
2016-07-23 14:57:26 -04:00
Tony Garnock-Jones
796acbeea2
Defaults for web-response-header
2016-07-23 11:40:18 -04:00
Tony Garnock-Jones
b6e863fa79
Support for using struct-defaults in web.rkt, plus a simple default
2016-07-23 11:28:46 -04:00
Tony Garnock-Jones
981914c15b
Move web-demo.rkt to web-sanity-check.rkt
2016-07-23 11:03:17 -04:00
Sam Caldwell
f28e16ee7b
low-level two-buyer example
2016-07-22 15:20:10 -04:00
Sam Caldwell
9f8ddc5249
Allow stateless actors to be given names
2016-07-22 15:11:53 -04:00
Tony Garnock-Jones
cecb261c6b
Introduce level-anchor and level-anchor->meta-level
2016-07-21 18:53:41 -04:00
Tony Garnock-Jones
5aebc7fa75
#:meta-level in query-set and friends
2016-07-21 18:31:44 -04:00
Tony Garnock-Jones
c931b0aee5
Fix dataspace macro
2016-07-21 18:31:33 -04:00
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
573ca4d6e5
Handle exceptions better in syndicate/threaded
2016-07-20 23:02:42 -04:00
Tony Garnock-Jones
ccdaceb30c
Add syndicate/threaded.
2016-07-20 22:13:43 -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
Tony Garnock-Jones
9b5a399383
Route targeted-events via actor paths
2016-07-20 19:30:49 -04:00
Tony Garnock-Jones
815b139e5c
Split out keeping track of actor paths to hierarchy.rkt
2016-07-20 18:54:31 -04:00
Tony Garnock-Jones
a01480fe05
Anticipate the pid a process is *about* to be allocated.
2016-07-20 18:42:35 -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
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
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
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