Typed Syndicate Status

50 views
Skip to first unread message

Ray Racine

unread,
Mar 10, 2020, 10:25:33 AM3/10/20
to Racket
Syndicate is just a brilliant piece software.  Such a novel approach to the Actor model and concurrency.

With past use I've pushed as much of the code into Typed Racket as possible leaving only the Syndicate layer Untyped.  Over the past year I've noted steady work towards #lang typed/syndicate support. 

For a new project with Syndicate I'd like to jump up to typed/syndicate if possible even if it is a little bit "early".  As expected it looks like  PLT's approach to typing dataspaces, tuples spaces, actors and messaging looks novel and impressive.

Yesterday with a few tweaks here and there I have typed/syndicate compiling and running 1 or 2 of the examples.  The tweaks that appear to be necessary are to sync up typed/syndicate with the latest Turnstile.

Glancing at the example code I expect to use the extended language capability offered via #lang typed/syndicate/roles. The project is an opensource one of a personal nature and is fine with bug reports, workarounds and hiccups assuming typed/syndicate work is still "active".

Questions:
  1. Is #lang typed/syndicate/roles more or less ready for beta code use?
  2. Is it active and maintained?
  3. Can the Syndicate's git repo typed branch be sync'd up with the current Turnstile and Racket release?[1]
[1] I can help with small compilation issue patches if there is someone currently active in typed/syndicate to receive them.


Sam Caldwell

unread,
Mar 10, 2020, 11:07:20 AM3/10/20
to Ray Racine, Racket
hi Ray,


Sam Caldwell

unread,
Mar 10, 2020, 11:27:17 AM3/10/20
to Ray Racine, Racket
Er, jumped the gun a bit;


On Tue, Mar 10, 2020 at 10:25 AM Ray Racine <ray.r...@gmail.com> wrote:
For a new project with Syndicate I'd like to jump up to typed/syndicate if possible even if it is a little bit "early".  As expected it looks like  PLT's approach to typing dataspaces, tuples spaces, actors and messaging looks novel and impressive.

Yesterday with a few tweaks here and there I have typed/syndicate compiling and running 1 or 2 of the examples.  The tweaks that appear to be necessary are to sync up typed/syndicate with the latest Turnstile.

I would be very interested to hear how you are using Syndicate and what your experience has been like, if you wouldn't mind sharing. Do you have any projects on github that are using it?
 
Glancing at the example code I expect to use the extended language capability offered via #lang typed/syndicate/roles. The project is an opensource one of a personal nature and is fine with bug reports, workarounds and hiccups assuming typed/syndicate work is still "active".

Questions:
  1. Is #lang typed/syndicate/roles more or less ready for beta code use?
More or less, yes. I can anticipate a couple of potential issues:
- There is no integration with Typed Racket.
- The type system does all its work during macro expansion and is generally un-optimized, so you may notice longer compilation times.
- While there is support for interoperating with untyped syndicate and untyped code in general, no contracts are generated to ensure safety.
- There is no documentation (though I actually started working on some this morning).
  1. Is it active and maintained?
Yes! I am currently developing typed syndicate.
  1. Can the Syndicate's git repo typed branch be sync'd up with the current Turnstile and Racket release?[1]
Yes; in fact I think it's about time I integrated typed syndicate into the master branch so you shouldn't need to fiddle with those.

I'm generally happy to answer any question you may have about typed or untyped Syndicate, no matter how small, and look into any issue that needs to be addressed. Feel free to email me directly or open issues on github.

Cheers,
Sam Caldwell

Ray Racine

unread,
Mar 10, 2020, 2:09:26 PM3/10/20
to Sam Caldwell, Racket
Syndicate usage is primarily has been in three areas. 

1.  A Bluetooth LE (low energy) library.  Syndicate was a very nice fit here because at the base level Bluetooth BLE CSR Mesh is all about asynch sending of low level HCI commands and async responses and inbound events.   After several different approaches Syndicate has been by FAR the best approach here.   No comparison.
2. A system simulator toy predicated on inbound external "events" that basically has been seesawing between a Lux like event loop, Racket's Reactive, FrTime and some travesty of a homebrew arrowized FRP.  The issue of deterministic, if arbitrary ordering of event  that happen at the "same time" has been the conundrum here.  I can't say that Syndicate has been clearly the better approach here over other approaches.  Primarily because I'm not clear exactly what I'm tying to do. A typical state of being ...
3. The latest project use is at the lowest level a Interactive Exchange Brokers API integration.  Again the asynch-ness and arbitrary inbound event-ness seems to be a perfect fit for Syndicate.  I hope to have an additional layer consisting of an ensemble of doing some high level monitoring/analysing of the real time data and responding to intra-ensemble signals for some lightweight alogorithmic trading.  Also explains why typed turtles all the way down is desirable here.

The only one currently code (now) visible is, caveat, also fully reflects all the various approach experimentation and learning Syndicate, is found hither and yon:




Reply all
Reply to author
Forward
0 new messages