{"id":13439828,"url":"https://github.com/tikv/grpc-rs","last_synced_at":"2025-05-13T20:21:40.172Z","repository":{"id":37617508,"uuid":"88956492","full_name":"tikv/grpc-rs","owner":"tikv","description":"The gRPC library for Rust built on C Core library and futures","archived":false,"fork":false,"pushed_at":"2024-08-13T06:11:58.000Z","size":1573,"stargazers_count":1822,"open_issues_count":98,"forks_count":257,"subscribers_count":71,"default_branch":"master","last_synced_at":"2025-04-08T19:21:09.640Z","etag":null,"topics":["grpc","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/tikv.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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-04-21T07:41:57.000Z","updated_at":"2025-04-08T10:36:45.000Z","dependencies_parsed_at":"2024-05-06T15:24:08.989Z","dependency_job_id":"537aef09-e7bf-4719-b972-4e41b2fa31d3","html_url":"https://github.com/tikv/grpc-rs","commit_stats":{"total_commits":342,"total_committers":63,"mean_commits":5.428571428571429,"dds":0.6111111111111112,"last_synced_commit":"4b76b8612c7bc5002aca00b14f33baf4f8235f0f"},"previous_names":["pingcap/grpc-rs"],"tags_count":38,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tikv%2Fgrpc-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tikv%2Fgrpc-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tikv%2Fgrpc-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tikv%2Fgrpc-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tikv","download_url":"https://codeload.github.com/tikv/grpc-rs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251311298,"owners_count":21569006,"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":["grpc","rust"],"created_at":"2024-07-31T03:01:17.444Z","updated_at":"2025-04-28T11:51:48.018Z","avatar_url":"https://github.com/tikv.png","language":"Rust","funding_links":[],"categories":["Libraries","Rust","库 Libraries","库"],"sub_categories":["Network programming","网络编程 Network programming","网络编程"],"readme":"# gRPC-rs\n\n`gRPC-rs` is a Rust wrapper of [gRPC Core](https://github.com/grpc/grpc). [gRPC](http://www.grpc.io) is a high performance, open source universal RPC framework that puts mobile and HTTP/2 first.\n\n[![Crates.io](https://img.shields.io/crates/v/grpcio.svg?maxAge=2592000)](https://crates.io/crates/grpcio)\n[![docs.rs](https://docs.rs/grpcio/badge.svg)](https://docs.rs/grpcio)\n[![Build Status](https://github.com/tikv/grpc-rs/workflows/CI/badge.svg)](https://github.com/tikv/grpc-rs/actions)\n[![Build Status](https://travis-ci.org/tikv/grpc-rs.svg)](https://travis-ci.org/tikv/grpc-rs)\n\n## Status\n\nThis project is still under development. The following features with the check marks are supported:\n\n- [x] Basic asynchronous unary/steaming call\n- [x] SSL\n- [x] Generic call\n- [x] Connection level compression\n- [x] Interoperability test\n- [x] QPS benchmark\n- [ ] Custom metadata\n- [x] Health check\n- [ ] Reflection\n- [X] Authentication\n- [ ] Load balance, client side is fully supported, server side load report is not implemented yet.\n\n## Prerequisites\n\n- CMake \u003e= 3.8.0\n- Rust \u003e= 1.36.0\n- binutils \u003e= 2.22\n- LLVM and Clang \u003e= 3.9 if you need to generate bindings at compile time.\n\nFor Linux and MacOS, you also need to install gcc 7.3+ (or clang 6+) too.\n\nBindings are pre-generated for x86_64/arm64 Linux. For other platforms, bindings are generated at compile time.\n\nFor Windows, you also need to install following software:\n\n- Active State Perl\n- yasm\n- Visual Studio 2015+\n\n## Build\n\n```\n$ cargo xtask submodule # if you just cloned the repository\n$ cargo build\n```\n\n### Error linking OpenSSL\n\nIf you're getting linker errors when building your project using `gRPC-rs`, head\ndown to the `openssl` feature section for a possible fix.\n\n## Usage\n\nTo generate the sources from proto files:\n\n### Option 1 - Manual Generation\n\n1. Install the protobuf compiler:\n\n```\n$ cargo install protobuf-codegen\n```\n\n2. Install the gRPC compiler:\n\n```\n$ cargo install grpcio-compiler\n```\n\n3. Generate the sources:\n\n```\n$ protoc --rust_out=. --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_rust_plugin` example.proto\n```\n\n\n### Option 2 - Programmatic Generation\n\nProgrammatic generation can be used to generate Rust modules from proto files\nvia your `build.rs` by using [protoc-grpcio](https://crates.io/crates/protoc-grpcio).\n\nFor more information and examples see\n[README](https://github.com/mtp401/protoc-grpcio/blob/master/README.md).\n\nTo include this project as a dependency:\n\n```\n[dependencies]\ngrpcio = \"0.13\"\n```\n\n### Feature `boringssl`\n\n`boringssl` feature enables support for TLS encryption and some authentication\nmechanism. When you do not need it, for example when working in intranet,\nyou can disable it by using the following configuration:\n```\n[dependencies]\ngrpcio = { version = \"0.13\", default-features = false, features = [\"protobuf-codec\"] }\n```\n\n### Feature `prost-codec` and `protobuf-codec`\n\n`gRPC-rs` uses `protobuf` crate by default. If you want to use `prost` instead, you can enable\n`prost-codec` feature. You probably only want to enable only one of the two features. Though\ngrpcio is completely fine with both features enabled at the same time, grpcio-compiler\nwill not going to work as expected.\n\n### Feature `openssl` and `openssl-vendored`\n\n`gRPC-rs` comes vendored with `gRPC Core`, which by default uses BoringSSL\ninstead of OpenSSL. This may cause linking issues due to symbol clashes and/or\nmissing symbols when another one of your dependencies uses OpenSSL. To resolve\nthis, you can tell `gRPC-rs` to use OpenSSL too by specifying `\"openssl\"` in\nyour `Cargo.toml`'s features list for `gprcio`, which requires openssl (\u003e=1.0.2). E.g.:\n\n```toml\n[dependencies]\ngrpcio = { version = \"0.13\", features = [\"openssl\"] }\n```\n\nFeature `openssl-vendored` is the same as feature `openssl` except it will build openssl from\nbundled sources.\n\n## Performance\n\nSee [benchmark](https://github.com/tikv/grpc-rs/tree/master/benchmark) to find out how to run a benchmark by yourself.\n\nCross Compile\n-------------\nSee [cross_compile](cross_compile.md)\n\nContributing\n------------\n\nMake sure to format and test the code before sending a PR.\n\nIf the content in grpc-sys/grpc is updated, you may need to regenerate bindings:\n\n```\n$ cargo xtask bindgen\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftikv%2Fgrpc-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftikv%2Fgrpc-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftikv%2Fgrpc-rs/lists"}