Commit Graph

200 Commits

Author SHA1 Message Date
Tony Garnock-Jones f64491c0a7 Better use of console.warn and console.error in dataspace.js 2016-05-13 20:17:16 -04:00
Tony Garnock-Jones 628ba87c54 Rewrite JS DemandMatcher to handle important latency-related corner cases. 2016-05-13 20:14:01 -04:00
Tony Garnock-Jones 68cde5be6c DemandMatcher: overlap not ruled out! Remove it. 2016-05-12 22:18:57 -04:00
Tony Garnock-Jones b51e7f99d9 LocationHashTracker 2016-05-12 20:11:22 -04:00
Tony Garnock-Jones 6d305e6b00 Hoist .refresh out from .handleEvent; makes assertions depend on state that might have been changed in event handlers properly. 2016-05-12 17:37:14 -04:00
Tony Garnock-Jones a433a054b8 Syndicate.UI.windowEvent 2016-05-12 15:56:42 -04:00
Tony Garnock-Jones e0bd8d08c2 Re-register UIFragment event handlers on node replacement 2016-05-12 15:19:37 -04:00
Tony Garnock-Jones 4eb29832df Correct stupid mistake 2016-05-12 14:52:55 -04:00
Tony Garnock-Jones fb89954158 Only try to attach events to things that might emit them 2016-05-12 14:46:39 -04:00
Tony Garnock-Jones 7b26b4bf14 Switch to FunctionBody from plain Block, to allow function definitions. 2016-05-12 00:01:09 -04:00
Tony Garnock-Jones 879e2425b9 Make Anchor.prototype.context n-ary 2016-05-11 22:13:35 -04:00
Tony Garnock-Jones e67d018079 Make the TV catch fire eventually. 2016-05-11 21:22:26 -04:00
Tony Garnock-Jones 7b9f5a54e8 Use "message type" in demo-*.js 2016-05-11 21:05:40 -04:00
Tony Garnock-Jones 0208ae7a7d A better UI library. Replaces DOM and jQuery support. 2016-05-11 21:03:11 -04:00
Tony Garnock-Jones 23f269fba6 Use Syndicate.Timer in SVG example 2016-05-11 11:13:14 -04:00
Tony Garnock-Jones 6ba9b402ec Only trigger onStateChange with non-empty patch (?) 2016-05-11 10:59:44 -04:00
Tony Garnock-Jones 0693e88031 Allow "message type ..." as well as "assertion type ...". 2016-05-11 10:59:27 -04:00
Tony Garnock-Jones 4a2c8147aa Enable and disable the IoT demo spawn/kill buttons.
Previous commit changed DOM fragment representation to use strings
instead of Seal'd quasi-sexprs, and so eliminated any distinction
between textually-identical DOM fragments in the dataspace.

This patch disables the "spawn" buttons for components in the IoT demo
to avoid (mostly harmless) duplication of actor instances.

It also demonstrates use of react{} outside a *lexically*-enclosing
actor{}.
2016-05-10 22:40:49 -04:00
Tony Garnock-Jones dede7f08a7 Use strings-of-HTML and mustache.js for DOM fragments.
This avoids churn in the dataspace for no-op DOM updates, but at the
cost of losing the identity of multiple pieces of asserted DOM when
they end up being textually identical.

The fix is, generally, to make sure your DOM fragments are different
in some (perhaps invisible when rendered) way. Next commit updates the
IoT demo to avoid duplicate fragments.
2016-05-10 22:38:40 -04:00
Tony Garnock-Jones efc444ac37 forever => react, state => react, init => do, done => finally, until => react until 2016-05-10 18:49:12 -04:00
Tony Garnock-Jones e54b6566f5 Use Timer driver in IoT example. 2016-05-10 17:04:39 -04:00
Tony Garnock-Jones 43e94b83b4 Timer driver 2016-05-10 17:04:16 -04:00
Tony Garnock-Jones b8e076188c Protect init and done blocks with withCurrentFacet. 2016-05-10 17:02:31 -04:00
Tony Garnock-Jones 00b0ef63eb SVG example. 2016-05-10 15:33:02 -04:00
Tony Garnock-Jones 1adb8110b6 Support xmlns in dom-driver. 2016-05-10 15:31:47 -04:00
Tony Garnock-Jones b24cd754b0 Set default chat broker url 2016-05-10 01:14:32 -04:00
Tony Garnock-Jones 8f1d27c584 Move Codec and Broker into src/. 2016-05-10 00:57:05 -04:00
Tony Garnock-Jones 8546e93e5d Implement Syndicate/js broker-client and chat app.
Support capturing with a pattern in the Syndicate/js DSL: ($foo = bar())

Struct has been cleaned up, and now offers proper Javascript objects
for its prefab-like structures. These can serialize and deserialize
themselves to/from JSON. They behave like prefabs in that two
StructureTypes created with the same label and arity behave
identically wrt Dataspaces and Tries. Sadly, prefab field names had to
go in order to support this.

Facets now track and terminate their children upon termination. This
is experimental; I suspect it is required for nested durings.

DemandMatcher can now support multiple specs, but this is less useful
than you might think since it tracks supply and demand quite naively.
It would have to have (surprise, surprise!) a mux-like structure to do
the job properly!

Added WakeDetector to main.js; adding the broker client will have to
wait until it is turned into a proper module in the src/ directory.
2016-05-10 00:40:53 -04:00
Tony Garnock-Jones abc844c964 Dataspace.setOnStateChange, to correctly call it at least once 2016-05-09 13:18:19 -04:00
Tony Garnock-Jones 1dfaf537f5 Add Struct _get method. 2016-05-08 18:57:35 -04:00
Tony Garnock-Jones 5c5da4e569 Avoid using assert/retract directly in IoT alerting 2016-05-08 12:25:28 -04:00
Tony Garnock-Jones 6591091bb6 Drastically simplify IoT TV 2016-05-08 12:20:08 -04:00
Tony Garnock-Jones a428423ff2 Support when(...) clause in assert in facets. 2016-05-08 12:19:40 -04:00
Tony Garnock-Jones 9c5f427366 Split and rename route.js into trie.js, struct.js and special.js 2016-05-08 11:33:39 -04:00
Tony Garnock-Jones 062e4603af Convert Syndicate/js to use prefix-style trie 2016-05-08 11:11:29 -04:00
Tony Garnock-Jones 6078b81289 IoT example illustration 2016-05-04 14:00:42 -04:00
Tony Garnock-Jones 21a53ba948 IoT example 2016-05-02 17:13:25 -04:00
Tony Garnock-Jones 7fcfa9586b Rename "network" to "dataspace" throughout 2016-04-07 09:42:54 +02:00
Tony Garnock-Jones 71a7bacccd Fill TEMP_CHECKOUT/dist from working copy 2016-04-06 18:31:24 +02:00
Tony Garnock-Jones d149ec57ea Intro text on examples page. 2016-04-06 18:27:46 +02:00
Tony Garnock-Jones a85a941d91 Include third-party 2016-04-06 18:27:38 +02:00
Tony Garnock-Jones 7fb0c33660 Describe DOM example. 2016-04-06 18:21:57 +02:00
Tony Garnock-Jones 8e0906d918 Deployment of examples; example descriptions. 2016-04-06 15:29:27 +02:00
Tony Garnock-Jones 0d2e89e309 Include expanded code 2016-03-22 12:14:30 -04:00
Tony Garnock-Jones e7c7a7cdfa Button example 2016-03-22 12:11:56 -04:00
Tony Garnock-Jones da978aad39 Allow published DOM fragments to be just plain text. 2016-03-22 12:11:47 -04:00
Tony Garnock-Jones 64cbe51578 demo-filesystem.js and attendant fixes 2016-03-20 21:01:17 -04:00
Tony Garnock-Jones 761f5652af Two simple in-browser examples 2016-03-19 15:06:23 -04:00
Tony Garnock-Jones a8b7de0d64 Support gaining access to the ground object 2016-03-19 15:06:07 -04:00
Tony Garnock-Jones b9aa833186 Prefer parens around risingEdge transition condition 2016-03-19 14:50:08 -04:00
Tony Garnock-Jones ce0b30dba6 Fix code generation problem 2016-03-19 14:49:54 -04:00
Tony Garnock-Jones 45d1de7358 Get in-browser compilation working using brfs 2016-03-19 14:49:44 -04:00
Tony Garnock-Jones e4ae3b1f95 Check for termination of an actor after each event and after boot. 2016-03-19 14:47:39 -04:00
Tony Garnock-Jones d87118f686 Support risingEdge transition events 2016-03-19 13:48:49 -04:00
Tony Garnock-Jones e7de06c2d2 Remove spurious braces. 2016-03-19 13:01:23 -04:00
Tony Garnock-Jones 3b5a07f954 Split out compiler to separate syndicatec command 2016-03-19 13:01:14 -04:00
Tony Garnock-Jones adaf9511bf Init and done blocks. 2016-03-18 17:13:52 -04:00
Tony Garnock-Jones 3c124633b3 Terminate actors when they have no more facets left. 2016-03-18 17:08:49 -04:00
Tony Garnock-Jones dea733911d Load crypto functionality on node.js. 2016-03-18 17:01:00 -04:00
Tony Garnock-Jones 3785cebdf2 Syndicate/js HLL Ohm-based compiler. 2016-03-18 17:00:51 -04:00
Tony Garnock-Jones fbbad85b04 Put matchPattern back: actor.js will need it. 2016-03-18 15:02:44 -04:00
Tony Garnock-Jones dc35e7c1bd Cosmetic (reindentation) 2016-03-18 12:32:37 -04:00
Tony Garnock-Jones 21fd0f574a makeStructureConstructor 2016-03-18 12:32:09 -04:00
Tony Garnock-Jones 935fb98a1f Echo-cancel assertions, following syndicate/racket. 2016-02-11 23:56:42 -05:00
Tony Garnock-Jones e9b431c50f triePruneBranch; preparation for echo-cancellation of SCNs 2016-02-11 22:51:26 -05:00
Tony Garnock-Jones d29fb17ad6 Update README. 2016-02-07 14:46:42 -05:00
Tony Garnock-Jones 4f94c8702e Rename syndicate.js to network.js 2016-02-07 14:39:09 -05:00
Tony Garnock-Jones 0e7a6375e9 Escape text, and make spaces display properly. 2016-02-07 14:25:52 -05:00
Tony Garnock-Jones 49d11b1a73 Fix two major subtraction-related bugs in Route union and intersect.
Moved a bunch of lookup logic into rlookupWild, which let me delete a
lot of special-purpose and flawed code. It is clearly heading toward
being properly-refactored, like the Racket implementation (and the
ESOP2016 paper's presentation) is. The performance problems may
interrupt this gradual evolution before it is complete, though:
hopefully I will be able to move to an explicitly memory-managed
scheme soon.
2016-02-07 14:18:57 -05:00
Tony Garnock-Jones df0ff273b1 Mostly-working textfield example. 2016-02-06 22:05:25 -05:00
Tony Garnock-Jones 8c3aeec6ad Failing test 2016-02-06 22:05:07 -05:00
Tony Garnock-Jones e02755c701 Improve patch pretty-printing 2016-02-06 21:56:47 -05:00
Tony Garnock-Jones 6d028f00c5 Seal DOMFragment specifications. 2016-02-06 15:06:59 -05:00
Tony Garnock-Jones afa657096a Introduce Syndicate.Ack() to reliably detect lack of demand in DOMFragment. 2016-02-06 14:32:42 -05:00
Tony Garnock-Jones 3489b5fab7 DOM driver. 2016-02-06 07:42:31 -05:00
Tony Garnock-Jones a0670ec3a3 Simple Seal class 2016-02-06 07:42:16 -05:00
Tony Garnock-Jones 85c43510a8 Remove out-of-date comments 2016-02-06 07:41:59 -05:00
Tony Garnock-Jones 5e0757b65f Support optional metaLevel argument to Network.send 2016-02-06 07:41:47 -05:00
Tony Garnock-Jones f12f24b133 Support Immutable.List in patterns 2016-02-06 07:41:31 -05:00
Tony Garnock-Jones 4cdd595301 Guard against accidentally trying to build a patch matching a patch. 2016-02-06 07:41:11 -05:00
Tony Garnock-Jones f06d951dcb Support Network onStateChange callback. 2016-02-06 07:40:46 -05:00
Tony Garnock-Jones d00d205314 Take metaLevel into account compiling DemandMatcher projections. 2016-02-06 07:39:58 -05:00
Tony Garnock-Jones 9d7dd37a37 demand-matcher.js, jquery-driver.js 2016-02-06 06:22:49 -05:00
Tony Garnock-Jones 8c55ada827 Fix typo in ground.js 2016-02-06 06:22:13 -05:00
Tony Garnock-Jones 9a8e7b4856 Split out captureToObject 2016-02-06 05:50:47 -05:00
Tony Garnock-Jones 674870b9ba Remove superfluous require. 2016-02-06 05:47:34 -05:00
Tony Garnock-Jones 7d1a0c58c2 Use immutable sets/lists for projection results 2016-02-06 05:47:14 -05:00
Tony Garnock-Jones bfd8203a7a use strict 2016-02-02 21:11:50 -05:00
Tony Garnock-Jones 9f69cffbe7 Ground network; minor refactorings and bugfixes; smoketest example 2016-02-02 21:02:55 -05:00
Tony Garnock-Jones e0f76b991a First pass at Network implementation 2016-02-02 18:22:29 -05:00
Tony Garnock-Jones f22e228cc0 New tests and bug fixes for patch and mux 2016-02-02 15:52:48 -05:00
Tony Garnock-Jones d1b3ffdf81 Document optionality of removeMeta 2016-02-02 14:36:47 -05:00
Tony Garnock-Jones 4d87f071da Mux; beginnings of tests for it 2016-02-02 14:36:31 -05:00
Tony Garnock-Jones 6b9c7fee67 Remove unused function from test script 2016-02-02 14:35:43 -05:00
Tony Garnock-Jones bf94a2cd1c Support leftShort in Route.matchTrie 2016-02-02 14:35:33 -05:00
Tony Garnock-Jones 95cb196c49 Fix bug in Route.subtract 2016-02-02 14:35:08 -05:00
Tony Garnock-Jones a0f1d61635 Start skeleton Network 2016-01-31 17:48:00 -05:00
Tony Garnock-Jones 579b82261c Patches, more tests, fixes 2016-01-31 16:55:24 -05:00
Tony Garnock-Jones c2fa26f9ed New $Special objects for __, SOA, EOA etc. 2016-01-31 10:54:41 -05:00
Tony Garnock-Jones 1107483c86 Initial commit. 2016-01-30 21:58:59 -05:00