{"id":28386609,"url":"https://github.com/sciprogcentre/communicator","last_synced_at":"2025-06-26T15:31:21.613Z","repository":{"id":48340671,"uuid":"294704424","full_name":"SciProgCentre/communicator","owner":"SciProgCentre","description":"Polyglot and distributed scientific function call library","archived":false,"fork":false,"pushed_at":"2021-08-24T20:03:55.000Z","size":1502,"stargazers_count":6,"open_issues_count":10,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-30T19:18:31.148Z","etag":null,"topics":["distributed-systems","jetbrains-research","kotlin","rpc"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/SciProgCentre.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":"2020-09-11T13:35:41.000Z","updated_at":"2023-10-04T07:27:50.000Z","dependencies_parsed_at":"2022-09-16T22:50:45.636Z","dependency_job_id":null,"html_url":"https://github.com/SciProgCentre/communicator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SciProgCentre/communicator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SciProgCentre%2Fcommunicator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SciProgCentre%2Fcommunicator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SciProgCentre%2Fcommunicator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SciProgCentre%2Fcommunicator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SciProgCentre","download_url":"https://codeload.github.com/SciProgCentre/communicator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SciProgCentre%2Fcommunicator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262094347,"owners_count":23257936,"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":["distributed-systems","jetbrains-research","kotlin","rpc"],"created_at":"2025-05-30T15:14:08.712Z","updated_at":"2025-06-26T15:31:21.592Z","avatar_url":"https://github.com/SciProgCentre.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# communicator\n\nModern applications, in particular scientific ones, besides transferring information with common application protocols, \noften need the organization of remote procedure calling (RPC).\n\nTypical techniques of implementing RPC involve interprocess communication technologies including Component Object Model \n(COM), direct Unix socket usage, shared memory, cumbersome foreign function interfaces\u0026mdash;e.g., a manual combination \nof JNI, intermediate C API, and `ctypes` bindings to invoke a Java function from Python\u0026mdash;as well as designing \ncustom protocols based on HTTP, WebSockets or gRPC. In some cases, even raw TCP networking is used.\n\nTo conveniently implement RPC, it is useful to create a cross-language API to register and call functions with tight \ntransport-level abstraction.\n\nAs part of JetBrains Research summer internships, and architecture of the application was designed. It involves a \nso-called client that receives the result of the operation, the contractor for general data-related procedures, and \nfunctional servers for providing mathematical and statistical functions implementations to the contractors. This model \nallows one to lift out mathematical transformations from the main logic. Functional servers can be set up either \nremotely or locally, encapsulated with proxy middleware, and get launched independently of the contractor. In this\nproject, a prototype of API to build contractors and functional servers in Kotlin implemented.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsciprogcentre%2Fcommunicator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsciprogcentre%2Fcommunicator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsciprogcentre%2Fcommunicator/lists"}