{"id":13791899,"url":"https://github.com/tonyg/syndicate","last_synced_at":"2025-04-04T16:16:55.394Z","repository":{"id":28165498,"uuid":"31666487","full_name":"tonyg/syndicate","owner":"tonyg","description":"syn·di·cate: a language for interactive programs","archived":false,"fork":false,"pushed_at":"2025-03-06T19:45:53.000Z","size":10897,"stargazers_count":156,"open_issues_count":13,"forks_count":11,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-28T15:11:21.203Z","etag":null,"topics":["actor-model","dataspace","javascript","pubsub","racket","tuplespace"],"latest_commit_sha":null,"homepage":"http://syndicate-lang.org/","language":"Racket","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tonyg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-03-04T16:16:42.000Z","updated_at":"2025-03-23T06:10:24.000Z","dependencies_parsed_at":"2025-02-15T13:14:14.890Z","dependency_job_id":"80173469-222e-440b-8ea3-06d599ab8c05","html_url":"https://github.com/tonyg/syndicate","commit_stats":{"total_commits":1521,"total_committers":9,"mean_commits":169.0,"dds":0.3188691650230112,"last_synced_commit":"0226b74305d3e0d33d5b65a4d03652b5f11c0504"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonyg%2Fsyndicate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonyg%2Fsyndicate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonyg%2Fsyndicate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonyg%2Fsyndicate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tonyg","download_url":"https://codeload.github.com/tonyg/syndicate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247208190,"owners_count":20901570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actor-model","dataspace","javascript","pubsub","racket","tuplespace"],"created_at":"2024-08-03T22:01:05.615Z","updated_at":"2025-04-04T16:16:55.369Z","avatar_url":"https://github.com/tonyg.png","language":"Racket","funding_links":[],"categories":["Racket"],"sub_categories":["Languages"],"readme":"# Syndicate: A Networked, Concurrent, Functional Programming Language\n\nSyndicate is an actor-based concurrent language able to express\ncommunication, enforce isolation, and manage resources.\nNetwork-inspired extensions to a functional core represent imperative\nactions as values, giving side-effects locality and enabling\ncomposition of communicating processes.\n\nCollaborating actors are grouped within task-specific *networks* (a.k.a.\nvirtual machines) to scope their interactions. Conversations between\nactors are multi-party (using a publish/subscribe medium), and actors\ncan easily participate in many such conversations at once.\n\nSyndicate makes *presence* notifications an integral part of pub/sub\nthrough its *shared dataspaces*, akin to\n[tuplespaces](https://en.wikipedia.org/wiki/Tuple_space). Each shared\ndataspace doubles as the pub/sub subscription table for its network.\nActors react to *state change notifications* reporting changes in a\ndataspace, including new subscriptions created by peers and removal of\nsubscriptions when a peer exits or crashes. State change notifications\nserve to communicate changes in demand for and supply of services,\nboth within a single network and across nested layers of\nnetworks-within-networks. Programs can give up responsibility for\nmaintaining shared state and for scoping group communications, letting\ntheir containing network take on those burdens.\n\n## Contents\n\nThis repository contains\n\n - a [Racket](http://racket-lang.org/) implementation of Syndicate\n   (plus auxiliary modules) in `racket/syndicate/`\n\n - an\n   [ECMAScript 5](http://www.ecma-international.org/publications/standards/Ecma-262.htm)\n   implementation of Syndicate in `js/`\n\n - larger example programs:\n\n    - `examples/platformer`, a 2D Platform game written in Syndicate\n      for Racket.\n\n    - `examples/netstack`, a TCP/IP stack written in Syndicate for\n      Racket. It reads and writes raw Ethernet packets from the kernel\n      using Linux- and OSX-specific APIs.\n\n - a sketch of a Haskell implementation of the core routing structures\n   of Syndicate in `hs/`\n\n## Copyright and License\n\nCopyright \u0026copy; Tony Garnock-Jones 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018.\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Lesser General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public License\n    along with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonyg%2Fsyndicate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftonyg%2Fsyndicate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonyg%2Fsyndicate/lists"}