{"id":17086398,"url":"https://github.com/dasch/ruby-csp","last_synced_at":"2025-06-23T19:07:54.450Z","repository":{"id":539346,"uuid":"168895","full_name":"dasch/ruby-csp","owner":"dasch","description":"Ruby implementation of Communicating Sequential Processes","archived":false,"fork":false,"pushed_at":"2010-02-02T22:09:44.000Z","size":100,"stargazers_count":13,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-14T23:52:45.417Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dasch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2009-04-05T22:47:13.000Z","updated_at":"2019-08-13T14:15:34.000Z","dependencies_parsed_at":"2022-07-18T02:46:48.757Z","dependency_job_id":null,"html_url":"https://github.com/dasch/ruby-csp","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/dasch/ruby-csp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasch%2Fruby-csp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasch%2Fruby-csp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasch%2Fruby-csp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasch%2Fruby-csp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dasch","download_url":"https://codeload.github.com/dasch/ruby-csp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasch%2Fruby-csp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260728418,"owners_count":23053561,"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":[],"created_at":"2024-10-14T13:28:31.876Z","updated_at":"2025-06-23T19:07:49.407Z","avatar_url":"https://github.com/dasch.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"\nConcurrent Sequential Processes\n===============================\n\nThis library provides a concurrency framework based on the work of Tony Hoare\nin his book [\"Communicating Sequential Processes\"](http://www.usingcsp.com/).\n\n\nUsage\n-----\n\nWith CSP, your problem is modelled by *processes* that run concurrently, but\nare sequential internally. These processes communicate over *channels*, which\nprovide a simple messaging API.\n\n    # Prints \"Hello, World!\" to stdout.\n    chan = CSP::Channel.new\n\tCSP::Process.start { puts(chan.read) }\n\tCSP::Process.start { chan \u003c\u003c \"Hello, World!\" }\n\nNote that the process is blocked when trying to read on the channel, and only\nresumes execution when it is able to read a value.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdasch%2Fruby-csp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdasch%2Fruby-csp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdasch%2Fruby-csp/lists"}