{"id":13590967,"url":"https://github.com/JetBrains/rd","last_synced_at":"2025-04-08T14:32:11.847Z","repository":{"id":37405620,"uuid":"107686809","full_name":"JetBrains/rd","owner":"JetBrains","description":"Reactive Distributed communication framework for .NET, Kotlin, C++. Inspired by Rider IDE. ","archived":false,"fork":false,"pushed_at":"2024-10-26T12:13:59.000Z","size":7521,"stargazers_count":385,"open_issues_count":39,"forks_count":54,"subscribers_count":29,"default_branch":"master","last_synced_at":"2024-10-29T17:35:45.929Z","etag":null,"topics":["hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JetBrains.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2017-10-20T14:18:13.000Z","updated_at":"2024-10-26T12:13:51.000Z","dependencies_parsed_at":"2024-03-14T21:34:56.182Z","dependency_job_id":"b8316fc8-2c91-4ade-9048-c6238e737123","html_url":"https://github.com/JetBrains/rd","commit_stats":{"total_commits":2034,"total_committers":71,"mean_commits":28.64788732394366,"dds":0.8259587020648967,"last_synced_commit":"705d99fa24a336efcc45f85fb5854a30621d3300"},"previous_names":[],"tags_count":43,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Frd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Frd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Frd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Frd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JetBrains","download_url":"https://codeload.github.com/JetBrains/rd/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247411225,"owners_count":20934653,"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":["hacktoberfest"],"created_at":"2024-08-01T16:00:52.271Z","updated_at":"2025-04-08T14:32:11.824Z","avatar_url":"https://github.com/JetBrains.png","language":"C#","funding_links":[],"categories":["C# #","C#","并发编程"],"sub_categories":[],"readme":"# RD \n[![official JetBrains project](https://jb.gg/badges/official.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)\n[![Maven Central](https://img.shields.io/maven-central/v/com.jetbrains.rd/rd-core)](https://mvnrepository.com/artifact/com.jetbrains.rd)\n\nReactive Distributed communication framework for .NET, Kotlin and C++ (experimental). \nInspired by JetBrains Rider IDE. \n\n## Structure\nThe framework contains several libraries for single process usage and cross-process communication.\n\n### Lifetimes\nJetBrains Core library for graceful disposal, concurrency and reactive programming. For single-process usage.\n\n* Kotlin\n  * Sources: https://github.com/JetBrains/rd/tree/HEAD/rd-kt/rd-core\n  * Artifacts: https://mvnrepository.com/artifact/com.jetbrains.rd/rd-core\n\n* .NET\n  * Sources: https://github.com/JetBrains/rd/tree/HEAD/rd-net/Lifetimes\n  * Artifacts: https://www.nuget.org/packages/JetBrains.Lifetimes\n\n### RdFramework\nJetBrains Networking library for reactive distributed communication\n\n* Kotlin\n  * Sources: https://github.com/JetBrains/rd/tree/HEAD/rd-kt/rd-framework\n  * Maven artifacts: https://mvnrepository.com/artifact/com.jetbrains.rd/rd-framework\n\n* .NET\n  * Sources: https://github.com/JetBrains/rd/tree/HEAD/rd-net/RdFramework\n  * NuGet artifacts: https://www.nuget.org/packages/JetBrains.RdFramework\n\n#### RdFramework.Reflection\nPlugin for RdFramework used for defining models using regular C#\n\n* .NET\n  * Sources: https://github.com/JetBrains/rd/tree/HEAD/rd-net/RdFramework.Reflection\n  * NuGet artifacts: https://www.nuget.org/packages/JetBrains.RdFramework.Reflection\n\n### RdGen\nRd Generator: generates stubs (Kotlin/C#/C++) classes by Kotlin DSL models\n* Sources: https://github.com/JetBrains/rd/tree/HEAD/rd-kt/rd-gen\n* Gradle: https://mvnrepository.com/artifact/com.jetbrains.rd/rd-gen\n  \n# How to build\n\nFirstly decide which languages will be involved in the protocol. It may be **Kotlin** and **C#**, Rider uses them for instance. \nOr **C++** only, who knows. After that prepare the environment and build needed assemblies. Choose **separate** or **common** build based on needs.\n\n## Separate build\n\n### .NET\n\nOpen solution in JetBrains Rider: https://github.com/JetBrains/rd/tree/HEAD/rd-net/Rd.sln\n\n#### Requirements\n\n* .NET Framework \u003e= 3.5\n\n#### Console build instructions\n\n* `dotnet build rd-net/Rd.sln`\n\n### Kotlin\n\nOpen the project in IntelliJ IDEA: https://github.com/JetBrains/rd\n\n#### Requirements\n\n* Gradle 6.2.2\n* Kotlin 1.3.61\n\n#### Console build instructions\n\n* `./gradlew :build -x test`\n\n### C++ (experimental)\n\nOpen the project in CLion: https://github.com/JetBrains/rd/tree/HEAD/rd-cpp\n\n#### Requirements\n\n* git\n* cmake\n* Visual Studio 2015+\nor\n* clang 6.0+\n\n#### Console build instructions\n\n* `cd rd-cpp`\n* `./build.cmd`\n\nor\n\n* `gradle :rd-cpp:build -x test`\n\n## Build everything\n\n* `./gradlew build`\n\n### Build NuGet packages instructions\n\nTo build packages locally please use: `rd-kt/rd-gen/pack.sh`\n\n*\\* Right now it works only on Linux. Please use Docker for Windows or macOS.*\n\n## Run tests (Kotlin part only)\n\n### On a local computer\n\nDon't forget to set `TEAMCITY_VERSION=1` (temporary measure for now) before running any tests.\n\n```console\n$ ./gradlew build\n```\n\n### In a Docker container\n\n```console\n$ docker build . -t rd \u0026\u0026 docker rm rd \u0026\u0026 docker run -it --name rd rd\n```\n\nTo run particular tests (e.g. `:rd-gen:test`):\n\n```console\n$ docker build . -t rd \u0026\u0026 docker rm rd \u0026\u0026 docker run -it --name rd rd --entrypoint ./gradlew :rd-gen:test\n```\n\nTo extract test results afterwards:\n\n```console\n$ docker cp rd:/rd/rd-kt/rd-gen/build/reports/ T:\\Temp\\reports\n```\n\n# How to generate models (stubs)\n\nGenerate models in each language you have chosen. \nFor this purpose project _:rd-gen_ must be built.\n  \n## Instruction\n\nSee [https://www.jetbrains.com/help/resharper/sdk/Rider.html#protocol-extension](https://www.jetbrains.com/help/resharper/sdk/Rider.html#protocol-extension) for more details.\n\n### More examples of models\n\nSee _com.jetbrains.rd.generator.test.cases.generator.demo.DemoModel_\nand _com.jetbrains.rd.generator.test.cases.generator.example.ExampleModel_\n\n### How to connect processes\n\nGenerally, it depends on the architecture. But in standard Client-Server architecture through localhost connection framework's classes are suitable.\n\n### C#\n\nJetBrains.Rd.Impl.Server and *.Client respectively\n\n### Kotlin\n\ncom.jetbrains.rd.framework.Server and *.Client respectively\n\n### C++\n\nrd::SocketWire::Server and *.Client respectively\n\n## Examples of connections\n\nLook at cross tests\n* _com.jetbrains.rd.framework.test.cross_ at Kotlin side\n* _Test.RdCross_ at C# side\n* _rd::cross_ at C++ side\n\n## License\n\nRd is licensed under the [Apache 2.0](LICENSE) license. Rd distributions may include third-party software licensed separately; see [THIRD-PARTY-NOTICES](THIRD-PARTY-NOTICES.TXT) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJetBrains%2Frd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJetBrains%2Frd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJetBrains%2Frd/lists"}