The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)

Overview

gRPC - An RPC library and framework

gRPC is a modern, open source, high-performance remote procedure call (RPC) framework that can run anywhere. gRPC enables client and server applications to communicate transparently, and simplifies the building of connected systems.

Homepage: grpc.io
Mailing List: [email protected]

Join the chat at https://gitter.im/grpc/grpc

To start using gRPC

To maximize usability, gRPC supports the standard method for adding dependencies to a user's chosen language (if there is one). In most languages, the gRPC runtime comes as a package available in a user's language package manager.

For instructions on how to use the language-specific gRPC runtime for a project, please refer to these documents

  • C++: follow the instructions under the src/cpp directory
  • C#: NuGet package Grpc
  • Dart: pub package grpc
  • Go: go get google.golang.org/grpc
  • Java: Use JARs from Maven Central Repository
  • Kotlin: Use JARs from Maven Central Repository
  • Node: npm install grpc
  • Objective-C: Add gRPC-ProtoRPC dependency to podspec
  • PHP: pecl install grpc
  • Python: pip install grpcio
  • Ruby: gem install grpc
  • WebJS: follow the grpc-web instructions

Per-language quickstart guides and tutorials can be found in the documentation section on the grpc.io website. Code examples are available in the examples directory.

Precompiled bleeding-edge package builds of gRPC master branch's HEAD are uploaded daily to packages.grpc.io.

To start developing gRPC

Contributions are welcome!

Please read How to contribute which will guide you through the entire workflow of how to build the source code, how to run the tests, and how to contribute changes to the gRPC codebase. The "How to contribute" document also contains info on how the contribution process works and contains best practices for creating contributions.

Troubleshooting

Sometimes things go wrong. Please check out the Troubleshooting guide if you are experiencing issues with gRPC.

Performance

See the Performance dashboard for performance numbers of master branch daily builds.

Concepts

See gRPC Concepts

About This Repository

This repository contains source code for gRPC libraries implemented in multiple languages written on top of a shared C core library src/core.

Libraries in different languages may be in various states of development. We are seeking contributions for all of these libraries:

Language Source
Shared C [core library] src/core
C++ src/cpp
Ruby src/ruby
Python src/python
PHP src/php
C# (core library based) src/csharp
Objective-C src/objective-c
Language Source repo
Java grpc-java
Kotlin grpc-kotlin
Go grpc-go
NodeJS grpc-node
WebJS grpc-web
Dart grpc-dart
.NET (pure C# impl.) grpc-dotnet
Comments
  • LB policies request re-resolution without shutting down

    LB policies request re-resolution without shutting down

    Fixes #12731.

    I changed the code by intuition and I am still uncertain about lots of logic here. This initial commit can be compiled but increases the flakiness of at least grpclb_end2end test. And there is some asan issue I am looking at.


    This change is Reviewable

    kind/enhancement cla: yes area/client channel 
    opened by AspirinSJL 189
  • grpclb re-resolution

    grpclb re-resolution

    Currently, grpclb will hand off the re-resolution decision to its embedded RR policy. This PR lets grpclb to be in charge of its re-resolution. The connectivity of the balancers will also be taken into consideration so that grpclb will re-resolve only when both balancers and backends have been unreachable for some timeout.


    This change is Reviewable

    kind/enhancement area/client channel 
    opened by AspirinSJL 160
  • Retry support

    Retry support

    ~~This is VERY preliminary code. It builds, and I don't think it breaks any existing functionality, but that's about all I can say for it at this point. There are "FIXME" comments all over the place that need to be addressed before this is done, and there may yet be some issues that I have not yet identified.~~

    ~~That having been said, I am sending it out at this point just to get a sanity check as to whether or not this approach is even moderately reasonable. Please look at the high-level structure and let me know if it seems reasonable. Also, please look at my use of atomics (and some of the FIXME comments about things that aren't currently atomics but may need to be) and let me know if it looks sane.~~

    ~~Also, note that I came up with what I think is a better alternative to the tee_byte_stream implementation in #10448. It will need some additional work later to support hedging, but I think the current approach is fine for retries. If it looks good to you, I can probably revert that other PR.~~

    ~~I would welcome any and all suggestions you may have on this. Thanks!~~

    This code is now ready for review!

    I would appreciate review from the following folks:

    • @ctiller: This code is really complex, and I am unwilling to trust it without careful review from you.
    • @dgquintas: Please review from the perspective of your general knowledge of the client channel code.
    • @ncteisen: Please review for compliance with the retry design.

    Some things to note:

    • This is a massive PR, so please let me know what I can do to make it easier to review. There is a large block comment in client_channel.cc describing the overall approach, but I'm sure it's not enough to understand everything. I would be happy to meet in person and do a code walk-through with some or all of you, or just answer any questions you may have.
    • This includes all configurable retry functionality except for the stats, which I will work on in a separate PR. (That will require working with the Census folks to figure out the right way to expose these stats.)
    • This does not include transparent retry support. That work depends on #11934 and will be added in a separate PR.
    • This does not include hedging support. I've kept that use-case in mind while writing this code, but more design discussions will need to occur to figure out how to implement it without impacting performance.
    • I have not yet verified that all tests pass, so there will no doubt be some fixes needed before this can be merged.
    • I will be interested to see what the performance impact of this is. It should hopefully be not very much, since all of the synchronization overhead is taken care of by the call combiner code, which was already merged. There is some additional memory allocation needed for this, but that's mostly done on the arena, so it should hopefully not have a big impact. (And the additional memory allocations can be avoided by disabling retries via a channel arg.)

    Please let me know if you have any questions. Thanks!


    This change is Reviewable

    cla: yes 
    opened by markdroth 154
  • Remove memset(0) from arena allocate memory.

    Remove memset(0) from arena allocate memory.

    Callers should properly initialize the memory.

    Note that to avoid performance regressions we need some reordering in the initialization of grpc_call.

    This behavior can be overridden using GRPC_ARENA_INIT_STRATEGY environment variable.

    I had two more changes in the following files which I will skip in the PR because they are purely performance changes for cache coherency. I will upload that as a separate patch once this PR is merged: src/core/lib/channel/channel_stack.cc src/core/lib/surface/call.cc


    This change is Reviewable

    lang/core release notes: yes 
    opened by soheilhy 150
  • Channel Tracing Implementation; Part 1

    Channel Tracing Implementation; Part 1

    Implements the basic channel tracing architecture.

    Adds channel_tracer and object_registry files. The tracers are held by channels and subchannels and only log channel creation for now. In a subsequent PR I will begin plumbing the tracing objects around and logging all of the interesting things happening

    Picks up work from #10259. That PR was too stale to do a merge or rebase, but I want to maintain history


    This change is Reviewable

    kind/enhancement area/core 
    opened by ncteisen 136
  • Add address sorting submodule for use in c-ares wrapper

    Add address sorting submodule for use in c-ares wrapper

    This adds code to sort IP addresses resolved by grpc/c-ares wrapper per RFC 6724. This used Android's getaddrinfo as a guide (the differences between this and Android's implementation are mostly cosmetic and based around hooking the address-sorting code into the grpc code base). So, the code is added as a custom submodule which is under Android's license.

    I'd like to have more end-to-end tests and cross-platform tests for this, (e.g. run the resolver_component_tests on IPv4-only machines, IPv6-only machines, machines with modified routing tables, Windows, etc.,and verify sorting results in those scenarios), but it looks like that involves a lot of setup, and so this tests by mocking libc functions.


    This change is Reviewable

    area/core cla: yes 
    opened by apolcyn 136
  • Bazel multipool config update, removed sentinel file

    Bazel multipool config update, removed sentinel file

    Added multipool config for large instances and standard instances, replacing the sentinel file for large instances. Also updated the RBE container to the image containing bazel 0.16.1

    area/tools release notes: no 
    opened by billfeng327 127
  • Integrate Grpc.Tools into msbuild system (C# only)

    Integrate Grpc.Tools into msbuild system (C# only)

    When Grpc.Tools is added to a C# project, the project recognizes .proto files. These .proto are compiled into .cs files placed in the object directory (under obj/...), and are not shown in Visual Studio, but are available to Intellisense nevertheless.

    The scripts support both "classic" projects and the new dotnet style projects. In line with the latter ones (when .cs files are just dropped into the directory are picked up and compiled), .proto files are handled the same way, so just placing a .proto file into the folder is enough to compile it, and compile its protoc outputs into the project target assembly.

    The "classic" project requires adding .proto files by one, and they are assigned a correct build action automatically. To manually add proto files to msbuild script, use 'ProtoBuf' item type.

    For native code C++ projects, there is no added support beyond just dropping the compiler as before. For all other project types, an error message is generated on an attempted build. More C++ support is on the way.

    Dependency change: the package now adds a dependency on Grpc.Tools of a matching version for managed projects only. This is naturally skipped for native C++, as the managed runtime is not required.

    Also packaged are proto includes for well-known types.


    Validated and confirmed working:

    • Windows (VS, classic C#, dotnet C#, C++)
    • Linux/Mono (both classic C# and dotnet C#)
    • Linux/dotnet (dotnet C# project only)

    There are quite a few questions I wanted to discuss. If anyone could help me with proper decicions, I would appreciate it.

    1. The captialization of generated .cs files. When I compile fooBar.proto, the resulting .cs file is called FooBar.proto. Is there a way around that? This does not seem to make sense in the build like this, when the .cs files are treated at best as temporary. I can certainly script around the issue in msbuild scripts, but why have it in the first place?

    2. If x.proto does not contain any RPC services. the corresponding xGrpc.cs is not generated (FWIW, the cpp plugin does not do that). This is not good for the build. While it is certainly possible to see if the file is there after compilation, it is impossible to learn if it was actually produced by it. In other words, if I take a service definition out of x.proto after having previously compiled it, I end up with a stale xGrpc.cs that is added to compilation. Of course, it is possible to write some msbuild incantations about this issue as well, but it would be much cleaner just to create a nearly empty xGrpc.cs stub even if no services are defined. So options I am asking about here are

    • a) Leave it as is and script some very ugly transformations around it.
    • b) Add a plugin option to do always generate the stub.
    • c) In fact, forget the option and just always generate the stub.
    1. I want to package cpp plugins also, and support to integrate gRPC into the build process. (I already have it packaged internally). This will cover the build process in Visual Studio. Should we do that?

    2. I am adding a bunch of files to the root of src/chsarp that only go into the nuget package. Is it better to place them into a subdirectory? Is Grpc.Tools subdirectory good?


    /cc @jskeet @hcoona
    Closes #4805
    /* #13098 */

    lang/C# cla: yes release notes: yes 
    opened by kkm000 126
  • C++ API review: reduce core/implementation leakage

    C++ API review: reduce core/implementation leakage

    If you liked internalization, you'll love C++ API review. The purpose of this PR is to clean up the use of breakable core structs from C++ public API. This has previously been done for the features that interfaced with code generation, but this now needs to be more pervasive. The basic principle is that core surface APIs and C++ implementation details should not leak through to C++ public API.

    The implementation strategy is

    1. when possible, privatize features that should have never been exposed
    2. deprecate pieces if they can be easily and meaningfully substituted with a purely C++ API
    3. co-opt items for which there is no other option, but try to give an alternative and more idiomatically C++ version for those when possible

    This supercedes #14106 and will be matched to a gRFC soon.


    This change is Reviewable

    area/core lang/c++ area/api disposition/stale 
    opened by vjpai 123
  • Channelz Python wrapper implementation

    Channelz Python wrapper implementation

    See Issue https://github.com/grpc/grpc/issues/17264

    • Expose the C-Core API in Cython layer
    • Handle the object translation
    • Create a separate package for Channelz specifically
    • Adding utilities for the new package
    kind/enhancement lang/Python release notes: yes 
    opened by lidizheng 109
  • Rich status transport implementation

    Rich status transport implementation

    Background

    gRPC spec defined two trailing data to indicate the status of a RPC call Status and Status-Message (Spec). But status code and a text message themselves are insufficient to express more complicate situation like the RPC call failed because of quota check of certain policy, or the stack trace from the crashed server, or obtain retry delay from the server (see error details).

    Objective

    So, gRPC needs a mechanism to transport those complex status. It is implemented in C++, Java, Golang, and now Python.

    Design

    It is quite straight forward, we provide two API:

    • A server API to pack the rich status proto.
    • A client API to unpack the rich status proto.

    The transportation is done by setting/getting a trailing metadata entry named grpc-status-details-bin. Rich status message is encoded by ProtoBuf and transmit as binary.

    Implementation

    This PR

    Related Issue

    Addresses: https://github.com/grpc/grpc/issues/16366

    kind/enhancement lang/Python release notes: yes 
    opened by lidizheng 106
  • UnboundLocalError: local variable 'raw_response' referenced before assignment

    UnboundLocalError: local variable 'raw_response' referenced before assignment

    What version of gRPC and what language are you using?

    1.49.0, Python

    What operating system (Linux, Windows,...) and version?

    Linux on WSL

    What runtime / compiler are you using (e.g. python version or version of gcc)

    Python 3.10.6

    What did you do?

    I have no idea.

    What did you expect to see?

    I am just going to leave the stack trace. My code is failing and maybe it has something to do with this error:

    
    [generate] ----------------------------
    [generate] Traceback (most recent call last):
    [generate]   File "/app/videosdb/downloader.py", line 172, in _process_video
    [generate]     _, video = await self.api.get_video_info(video_id)
    [generate]   File "/app/videosdb/youtube_api.py", line 111, in get_video_info
    [generate]     return await self._request_one(url, params)
    [generate]   File "/app/videosdb/youtube_api.py", line 156, in _request_one
    [generate]     item = await anext(generator)
    [generate]   File "/app/videosdb/youtube_api.py", line 163, in generator
    [generate]     async for page in pages:
    [generate]   File "/app/videosdb/youtube_api.py", line 196, in _request_with_cache
    [generate]     async for page in self.db.stream("cache/%s/pages" % cache_id):
    [generate]   File "/home/appuser/.cache/pypoetry/virtualenvs/videosdb-9TtSrW0h-py3.10/lib/python3.10/site-packages/google/cloud/firestore_v1/async_collection.py", line 241, in stream
    [generate]     async for d in query.stream(transaction=transaction, **kwargs):
    [generate]   File "/home/appuser/.cache/pypoetry/virtualenvs/videosdb-9TtSrW0h-py3.10/lib/python3.10/site-packages/google/cloud/firestore_v1/async_query.py", line 264, in stream
    [generate]     async for response in response_iterator:
    [generate]   File "/home/appuser/.cache/pypoetry/virtualenvs/videosdb-9TtSrW0h-py3.10/lib/python3.10/site-packages/google/api_core/grpc_helpers_async.py", line 102, in _wrapped_aiter
    [generate]     async for response in self._call:  # pragma: no branch
    [generate]   File "/home/appuser/.cache/pypoetry/virtualenvs/videosdb-9TtSrW0h-py3.10/lib/python3.10/site-packages/grpc/aio/_call.py", line 323, in _fetch_stream_responses
    [generate]     message = await self._read()
    [generate]   File "/home/appuser/.cache/pypoetry/virtualenvs/videosdb-9TtSrW0h-py3.10/lib/python3.10/site-packages/grpc/aio/_call.py", line 346, in _read
    [generate]     if raw_response is cygrpc.EOF:
    [generate] UnboundLocalError: local variable 'raw_response' referenced before assignment
    
    
    kind/bug lang/Python priority/P2 
    opened by kovan 1
  • Move PSM benchmarks to a separated cluster.

    Move PSM benchmarks to a separated cluster.

    This PR moves the PSM benchmark away from the benchmark-prod2 cluster to psm-benchmarks-performance cluster. This is to avoid any unexpected change on the OSS benchmarks due to the tuning we may perform for PSM benchmarks.

    The psm-benchmarks-performance cluster has 2 system nodes, 1 driver-ci and 2 worker-ci nodes. The node type is the same as the benchmark-prod2 cluster.

    bloat/none per-call-memory/neutral per-channel-memory/neutral 
    opened by wanlin31 0
  • Simplified GRPC_ERROR_CREATE macros

    Simplified GRPC_ERROR_CREATE macros

    Old macros had to have multiple variants depending on the type of description (e.g. const char* or std::string) but new absl::Status-based one doesn't need to do this anymore so those macros can be consolidated into a single one. For example, GRPC_ERROR_CREATE would be enuogh for all variants for STATIC_STRING, COPIED_STRING, CPP_STRING, and STRING_VIEW. Since internal code still rely on these macros, old macros aren't removed in this PR but will be removed once internal references are massaged.

    find . -type f -name '*.cc' -not -path './third_party/*' -print0 \
      | xargs -0 sed -i \
        -e 's/GRPC_ERROR_CREATE_FROM_STATIC_STRING/GRPC_ERROR_CREATE/g' \
        -e 's/GRPC_ERROR_CREATE_FROM_COPIED_STRING/GRPC_ERROR_CREATE/g' \
        -e 's/GRPC_ERROR_CREATE_FROM_CPP_STRING/GRPC_ERROR_CREATE/g' \
        -e 's/GRPC_ERROR_CREATE_FROM_STRING_VIEW/GRPC_ERROR_CREATE/g' \
        -e 's/GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING/GRPC_ERROR_CREATE_REFERENCING/g' \
        -e 's/GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING/GRPC_ERROR_CREATE_REFERENCING/g' \
        -e 's/GRPC_ERROR_CREATE_FROM_VECTOR_AND_CPP_STRING/GRPC_ERROR_CREATE_FROM_VECTOR/g'
    
    lang/c++ kind/internal cleanup lang/core release notes: no bloat/none per-call-memory/neutral per-channel-memory/neutral 
    opened by veblush 0
Releases(v1.50.0-pre1)
  • v1.50.0-pre1(Sep 29, 2022)

  • v1.49.1(Sep 22, 2022)

    This is release 1.49.1 (gamma) of gRPC Core.

    For gRPC documentation, see grpc.io. For previous releases, see Releases.

    This release contains refinements, improvements, and bug fixes, with highlights listed below.

    All

    • Update protobuf to v21.6 on 1.49.x. (#31028)

    Ruby

    • Backport "Fix ruby windows ucrt build #31051" to 1.49.x. (#31053)
    Source code(tar.gz)
    Source code(zip)
  • v1.46.5(Sep 22, 2022)

    This is release 1.46.5 (golazo) of gRPC Core.

    For gRPC documentation, see grpc.io. For previous releases, see Releases.

    This release contains refinements, improvements, and bug fixes, with highlights listed below.

    All

    • Update protobuf to v3.19.5 on v1.46.x. (#31032)

    Core

    • Backport to 1.46.x: priority and ring_hash LBs: fix interactions when using ring_hash under priority (#29332). (#30253)
    • Backport to v1.46.x: ring hash: fix picker propagation bug in xds_cluster_manager policy (#29959). (#30254)

    C#

    • Fix client resource leaks-issues 8451 and 28153. (#30290)
    Source code(tar.gz)
    Source code(zip)
  • v1.48.2(Sep 22, 2022)

  • v1.47.2(Sep 22, 2022)

  • v1.49.0(Sep 14, 2022)

    This is release 1.49.0 (gamma) of gRPC Core.

    For gRPC documentation, see grpc.io. For previous releases, see Releases.

    This release contains refinements, improvements, and bug fixes, with highlights listed below.

    Core

    • Backport: "stabilize the C2P resolver URI scheme" to v1.49.x. (#30654)
    • Bump core version. (#30588)
    • Update OpenCensus to HEAD. (#30567)
    • Update protobuf submodule to 3.21.5. (#30548)
    • Update third_party/protobuf to 3.21.4. (#30377)
    • [core] Remove GRPC_INITIAL_METADATA_CORKED flag. (#30443)
    • HTTP2: Fix keepalive time throttling. (#30164)
    • Use AnyInvocable in EventEngine APIs. (#30220)

    Python

    • Support Python 3.11 (#30818). (#30944)
    • Add type stub generation support to grpcio-tools. (#30498)

    Ruby

    • Backport "Drop support for ruby 2.5 (#30699)" to v1.49.x. (#30762)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_core-1.49.0-xcframework.zip(15.20 MB)
    grpc_objective_c_grpc-1.49.0-xcframework.zip(872.29 KB)
    grpc_objective_c_plugin-1.49.0-macos-x86_64.zip(1.18 MB)
    grpc_objective_c_protorpc-1.49.0-xcframework.zip(102.38 KB)
  • v1.49.0-pre3(Sep 1, 2022)

  • v1.49.0-pre2(Aug 30, 2022)

  • v1.48.1(Aug 31, 2022)

  • v1.49.0-pre1(Aug 18, 2022)

  • v1.48.0(Jul 19, 2022)

    This is release 1.48.0 (garum) of gRPC Core.

    For gRPC documentation, see grpc.io. For previous releases, see Releases.

    This release contains refinements, improvements, and bug fixes, with highlights listed below.

    Core

    • Upgrade Abseil to LTS 20220623.0 . (#30155)
    • Call: Send cancel op down the stack even when no ops are sent. (#30004)
    • FreeBSD system roots implementation. (#29436)
    • xDS: Workaround to get gRPC clients working with istio. (#29841)

    Python

    • Set Correct Platform Tag in Wheels on Mac OS with Python 3.10. (#29857)
    • [Aio] Ensure Core channel closes when deallocated. (#29797)
    • [Aio] Fix the wait_for_termination return value. (#29795)

    Ruby

    • Make the gem build on TruffleRuby. (#27660)
    • Support for prebuilt Ruby binary on x64-mingw-ucrt platform. (#29684)
    • [Ruby] Add ruby_abi_version to exported symbols. (#28976)

    Objective-C

    First developer preview of XCFramework binary distribution via Cocoapod (#28749).

    This brings in significant speed up to local compile time and includes support for Apple Silicon build.

    • The following binary pods are made available for ObjC V1 & V2 API
      • gRPC-XCFramework (source pod gRPC)
      • gRPC-ProtoRPC-XCFramework (source pod gRPC-ProtoRPC)
    • The following platforms and architectures are included
      • ios: armv7, arm64 for device. arm64, i386, x86_64 for simulator
      • macos: x86_64 (Intel), arm64 (Apple Silicon)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_core-1.48.0-xcframework.zip(58.66 MB)
    grpc_objective_c_grpc-1.48.0-xcframework.zip(1.77 MB)
    grpc_objective_c_plugin-1.48.0-macos-x86_64.zip(1.16 MB)
    grpc_objective_c_protorpc-1.48.0-xcframework.zip(256.14 KB)
  • v1.47.1(Jul 15, 2022)

    This is release gRPC Core 1.47.1 (gridman).

    For gRPC documentation, see grpc.io. For previous releases, see Releases.

    This release contains refinements, improvements, and bug fixes.

    Core

    • [Backport] Using string rep for status-time (#30123) #30145
    • [Backport] Tell MSVC to build grpc with utf-8 (#30003) #30153
    • [Backport] Ring hash: fix picker propagation bug in xds_cluster_manager policy (#29959) #30241
    Source code(tar.gz)
    Source code(zip)
  • v1.46.4(Jul 6, 2022)

    This is release gRPC Core 1.46.4 (golazo).

    For gRPC documentation, see grpc.io. For previous releases, see Releases.

    This release contains refinements, improvements, and bug fixes.

    Core

    • [Backport] Using string rep for status-time (#30123) #30146
    Source code(tar.gz)
    Source code(zip)
  • v1.48.0-pre1(Jul 5, 2022)

  • v1.47.0(Jun 22, 2022)

    This is release 1.47.0 (gridman) of gRPC Core.

    For gRPC documentation, see grpc.io. For previous releases, see Releases.

    This release contains refinements, improvements, and bug fixes, with highlights listed below.

    Announcement

    gRPC C++ 1.47.0 is the first release requiring C++14 (proposal). For those who cannot upgrade to C++14 right now, you can use gRPC C++ 1.46.x in the meantime and gRPC C++ 1.46.x will be maintained by having fixes for critical bugs (P0) and security fixes until 2023-06-01.

    Core

    • xDS: Workaround to get gRPC clients working with istio (#29841). (#29850)
    • Bump core version to 25.0.0 for upcoming release. (#29775)
    • Initial support for Haiku. (#27793)
    • Add NetBSD support (Community-supported). (#29542)
    • server: per-rpc backend metric reporting. (#29621)
    • Remove C# implementation (individual packages will continue to be maintained through v2.46.x patches or moved to grpc-dotnet). (#29225)

    C++

    • Expose NoOpCertificateVerifier to C++. (#29322)
    • RouteGuide example: Abort if database file not found. (#29398)

    C#

    • C#: Suppress CS8981 in generated source. (#29708)

    Python

    • Set Correct Platform Tag in Wheels on Mac OS with Python 3.10 (#29857). (#30026)
    • Removed manylinux2010 python artifacts. (#29734)
    • Allow grpcio to be built against system abseil-cpp. (#27550)
    • [Python] Add an UDS example. (#29592)

    Ruby

    • Backport "Support for prebuilt Ruby binary on x64-mingw-ucrt platform (#29684)" to 1.47.x. (#29868)
    • Upgrade ruby rake-compiler-dock images (and stop building ruby gem artifacts on mac, in favor of rake-compile-dock darwin builds). (#29304)

    Other

    • Downgrade io_bazel_rules_go to v0.27.0 restore Bazel 3.x support. (#29596)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_plugin-1.47.0-macos-x86_64.zip(1.16 MB)
  • v1.47.0-pre1(Jun 17, 2022)

    This is a prerelease of gRPC Core 1.47.0 (gridman).

    Please see the notes for the previous releases here: https://github.com/grpc/grpc/releases. Please consult https://grpc.io/ for all information regarding this product.

    This prerelease contains refinements, improvements, and bug fixes.

    Source code(tar.gz)
    Source code(zip)
  • v1.46.3(May 20, 2022)

  • v1.46.2(May 16, 2022)

    This is release gRPC Core 1.46.2 (golazo).

    For gRPC documentation, see grpc.io. For previous releases, see Releases.

    This release contains refinements, improvements, and bug fixes.

    Ruby

    • Backport "[Ruby]fix a rake compile error since rake-compiler ~> 1.1 (#28666)". (#29656)
    • Backport "Upgrade ruby rake-compiler-dock images (#29304)". (#29657)
    Source code(tar.gz)
    Source code(zip)
  • v1.46.1(May 11, 2022)

  • v1.46.0(May 4, 2022)

    This is release 1.46.0 (golazo) of gRPC Core.

    For gRPC documentation, see grpc.io. For previous releases, see Releases.

    This release contains refinements, improvements, and bug fixes, with highlights listed below.

    Announcement

    gRPC C++ 1.46 will be the last release supporting C++11, future releases will require C++ >= 14. We plan to backport critical (P0) bugs and security fixes to this release for a year, that is, until 2023-06-01. This change won't bump the major version of gRPC since this doesn't introduce API changes. Hence, the next version requiring C++14 will be 1.47 (context).

    Core

    • Ignore Connection Aborted errors on accept. (#29318)
    • Filter content-length metadata from the application. (#29295)
    • RetryFilter: Cleanup pending byte stream. (#29245)
    • HTTP Proxy: Ignore empty entry in no_proxy list. (#29217)
    • Adding http/1.1 support in httpcli. (#29238)
    • HTTP2: Initiate write for acknowledging SETTINGS frame. (#29218)
    • Change the unsupported polling strategy log for forking to GPR_INFO. (#29232)
    • Handle SSL_ERROR_WANT_WRITE error. (#29176)
    • TCP Async Connect: Fix Heap use-after-free. (#29209)
    • HTTP2: Add graceful goaway. (#29050)
    • Remove epollex poller. (#29160)
    • TlsCredentials: Comparator implementation. (#28940)
    • Decrease verbosity of alts handshaker logs which can happen during cancellation. (#29058)
    • HTTP2: Should not run cancelling logic on servers when receiving GOAWAY. (#29067)
    • HTTP2: Don't throttle pings from the server. (#29053)
    • Include ADS stream error in XDS error updates. (#29014)
    • Remove idempotent/cacheable requests. (#28922)

    C++

    • Add bazel cpp distribtest for grpc_cc_library. (#29175)

    C#

    • Add support for grpc-dotnet in GKE benchmarks. (#28975)
    • Sync unary call after shutdown: Add a repro and fix for #19090 . (#23003)
    • Remove C# Legacy (a.k.a. "Classic") csproj example. (#29102)

    Python

    • Add Python GCF Distribtest. (#29303)
    • Add Python Reflection Client. (#29085)
    • Revert "Fix prefork handler register's default behavior". (#29229)
    • Fix prefork handler register's default behavior. (#29103)
    • Fix fetching CXX variable in setup.py. (#28873)

    Ruby

    • Support pre-built binaries for Ruby 3.1. (#29000)
    • Make sure to always receive initial metadata in ruby. (#29155)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_plugin-1.46.0-macos-x86_64.zip(1.16 MB)
  • v1.46.0-pre2(Apr 22, 2022)

  • v1.46.0-pre1(Apr 18, 2022)

  • v1.45.2(Apr 8, 2022)

    This is release 1.45.2 (gravity) of gRPC Core.

    For gRPC documentation, see grpc.io. For previous releases, see Releases.

    This release contains refinements, improvements, and bug fixes, with highlights listed below.

    Core

    • Various fixes related to XDS (https://github.com/grpc/grpc/pull/29314, https://github.com/grpc/grpc/pull/29340, https://github.com/grpc/grpc/pull/29339)
    • HTTP2: Should not run cancelling logic on servers when receiving GOAWAY (https://github.com/grpc/grpc/pull/29307)
    Source code(tar.gz)
    Source code(zip)
  • v1.45.1(Apr 1, 2022)

    This is release 1.45.1 (gravity) of gRPC Core.

    For gRPC documentation, see grpc.io. For previous releases, see Releases.

    This release contains refinements, improvements, and bug fixes, with highlights listed below.

    Core

    • Switched to epoll1 as a default polling engine for Linux (#29239)
    • Various fixes related to XDS (https://github.com/grpc/grpc/pull/29240, https://github.com/grpc/grpc/pull/29242, https://github.com/grpc/grpc/pull/29243, https://github.com/grpc/grpc/pull/29244, https://github.com/grpc/grpc/pull/29280)

    Python

    • Revert "Remove GRPC_ENABLE_FORK_SUPPORT from setup.py" (#29230)
    Source code(tar.gz)
    Source code(zip)
  • v1.45.0(Mar 19, 2022)

    This is release 1.45.0 (gravity) of gRPC Core.

    For gRPC documentation, see grpc.io. For previous releases, see Releases.

    This release contains refinements, improvements, and bug fixes, with highlights listed below.

    Core

    • Backport "Include ADS stream error in XDS error updates (#29014)" to 1.45.x. (#29121)
    • Bump core version to 23.0.0 for upcoming release. (#29026)
    • Fix memory leak in HTTP request security handshake cancellation. (#28971)
    • CompositeChannelCredentials: Comparator implementation. (#28902)
    • Delete custom iomgr. (#28816)
    • Implement transparent retries. (#28548)
    • Uniquify channel args keys. (#28799)
    • Set trailing_metadata_available for recv_initial_metadata ops when generating a fake status. (#28827)
    • Eliminate gRPC insecure build. (#25586)
    • Fix for a racy WorkSerializer shutdown. (#28769)
    • InsecureCredentials: singleton object. (#28777)
    • Add http cancel api. (#28354)
    • Memory leak fix on windows in grpc_tcp_create(). (#27457)
    • xDS: Rbac filter updates. (#28568)

    C++

    • Bump the minimum gcc to 5. (#28786)
    • Add experimental API for CRL checking support to gRPC C++ TlsCredentials. (#28407)

    C#

    • [C#] Add cancellation token overloads to streaming interfaces. (#27886)
    • [C#] Grpc.Core.Api nullable fixes. (#28616)

    Objective-C

    • Patch GRPCCallOptions to use nonatomic properties. (#28972)

    Python

    • Reimplement Gevent Integration. (#28276)
    • Support musllinux binary wheels on x64 and x86. (#28092)
    • Increase the Python protobuf requirement to >=3.12.0. (#28604)

    Other

    • Upgrade googletest. (#27287)
    Source code(tar.gz)
    Source code(zip)
  • v1.45.0-pre1(Mar 10, 2022)

  • v1.44.0(Feb 15, 2022)

    This is release 1.44.0 (great) of gRPC Core.

    For gRPC documentation, see grpc.io. For previous releases, see Releases.

    This release contains refinements, improvements, and bug fixes, with highlights listed below.

    Core

    • xDS: Rbac filter updates (#28568). (#28608)
    • Fix xDS client for multiple watchers. (#28521)
    • bump C-core version for upcoming release. (#28527)
    • Add a trace to list which filters are contained in a channel stack. (#28530)
    • Remove grpc_httpcli_context. (#27867)
    • xDS: Add support for RBAC HTTP filter. (#28309)
    • API to cancel grpc_resolve_address. (#27883)
    • Replace work serializer with a mutex in c-ares resolver. (#27858)
    • xDS: Add graceful shutdown for old connections on listener resource update. (#28154)

    C++

    • Promote ClientContext::set_wait_for_ready to be non-experimental. (#28247)

    C#

    • Only apply "singleplatform" nuget suffix when actually needed. (#28677)
    • [C#] Add ConfigureAwait to AsyncUnaryCall and AsyncClientStreamingCall. (#28235)

    Python

    • Add python async example for hellostreamingworld using generator. (#27343)
    • Disable __wrap_memcpy hack for Python builds. (#28410)
    • Bump Bazel Python Cython dependency to 0.29.26. (#28398)
    • Fix libatomic linking on Raspberry Pi OS Bullseye. (#28041)
    • Allow generated proto sources in remote repositories for py_proto_library. (#28103)

    Ruby

    • Remove ruby 2.4 support. (#28522)
    • Add an env var to override make parallelism in ruby build. (#28250)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_plugin-1.44.0-macos-x86_64.zip(1.16 MB)
  • v1.44.0-pre2(Jan 27, 2022)

  • v1.43.2(Jan 26, 2022)

  • v1.44.0-pre1(Jan 24, 2022)

    This is a prerelease of gRPC Core 1.44.0 (great).

    Please see the notes for the previous releases here: https://github.com/grpc/grpc/releases. Please consult https://grpc.io/ for all information regarding this product.

    This prerelease contains refinements, improvements, and bug fixes.

    Source code(tar.gz)
    Source code(zip)
Owner
grpc
A high performance, open source, general-purpose RPC framework
grpc
Comprehensive RPC framework with support for C++, C#, Java, JavaScript, Python and more.

Ice - Comprehensive RPC Framework Ice helps you network your software with minimal effort. By taking care of all interactions with low-level network p

ZeroC Ice 1.8k Sep 27, 2022
PHP Encoder, protect PHP scripts in PHP 8 and PHP 7, High Performance, Compitable with X86_64, MIPS, ARM platform and Ubuntu/Centos/OpenWRT system.

What's FRICC2? FRICC2 is a PHP Script encryption tool. When you are developing a commercial software using PHP, the script can be distributed as encry

Hoowa Sun 37 Oct 2, 2022
ANSI C library for NURBS, B-Splines, and Bézier curves with interfaces for C++, C#, D, Go, Java, Lua, Octave, PHP, Python, R, and Ruby.

TinySpline TinySpline is a small, yet powerful library for interpolating, transforming, and querying arbitrary NURBS, B-Splines, and Bézier curves. Th

Marcel Steinbeck 849 Oct 3, 2022
List of Persian Colors and hex colors for CSS, SCSS, PHP, JS, Python, and Ruby.

Persian Colors (Iranian colors) List of Persian Colors and hex colors for CSS, SCSS, PHP, C++, QML, JS, Python, Ruby and CSharp. Persian colors Name H

Max Base 12 Sep 3, 2022
✔️The smallest header-only GUI library(4 KLOC) for all platforms

Welcome to GUI-lite The smallest header-only GUI library (4 KLOC) for all platforms. 中文 Lightweight ✂️ Small: 4,000+ lines of C++ code, zero dependenc

null 6.5k Oct 2, 2022
Python Inference Script is a Python package that enables developers to author machine learning workflows in Python and deploy without Python.

Python Inference Script(PyIS) Python Inference Script is a Python package that enables developers to author machine learning workflows in Python and d

Microsoft 11 Aug 10, 2022
Asynchronous gRPC with Boost.Asio executors

asio-grpc This library provides an implementation of boost::asio::execution_context that dispatches work to a grpc::CompletionQueue. Making it possibl

Dennis 148 Sep 30, 2022
gRPC - An RPC library and framework Baind Unity 3D Project

Unity 3D Compose for Desktop and Android, a modern UI framework for C ++ , C# that makes building performant and beautiful user interfaces easy and enjoyable.

Md Raihan 4 May 19, 2022
Async GRPC with C++20 coroutine support

agrpc Build an elegant GRPC async interface with C++20 coroutine and libunifex (target for C++23 executor). Get started mkdir build && cd build conan

Yuchao Zhang 58 Sep 24, 2022
Fast Binary Encoding is ultra fast and universal serialization solution for C++, C#, Go, Java, JavaScript, Kotlin, Python, Ruby, Swift

Fast Binary Encoding (FBE) Fast Binary Encoding allows to describe any domain models, business objects, complex data structures, client/server request

Ivan Shynkarenka 613 Sep 26, 2022
A static analyzer for Java, C, C++, and Objective-C

Infer Infer is a static analysis tool for Java, C++, Objective-C, and C. Infer is written in OCaml. Installation Read our Getting Started page for det

Facebook 13.5k Oct 2, 2022
distributed builds for C, C++ and Objective C

distcc -- a free distributed C/C++ compiler system by Martin Pool Current Documents: https://distcc.github.io/ Formally http://distcc.org/ "pump" func

distcc 1.7k Sep 27, 2022
Card game with Objective-C using Allegro 4/5

Card game with Objective-C using Allegro 4/5 , This is an alternative of the real game for personal reasons .

Cerbah Kamel 3 Nov 7, 2021
Binary Ninja plugin & workflow to help analyze Objective-C code

Objective Ninja Objective Ninja is a Binary Ninja plugin to assist in reverse engineering Objective-C code. Beware, Objective Ninja is still in very e

Jon Palmisciano 80 Aug 16, 2022
Macro magic for declaring/calling Objective-C APIs from C11 or C++. Preloads selectors, chooses the correct objc_msgSend to call per method/platform.

OC - Easily Declare/Invoke Objective-C APIs from C11 or C++11 Usage // Call class and instance methods: NSWindow* const nswindow = oc_cls(NSWindow,new

Garett Bass 45 Sep 9, 2022
🚀 Coroutine-based concurrency library for PHP

English | 中文 Swoole is an event-driven asynchronous & coroutine-based concurrency networking communication engine with high performance written in C++

Swoole Project 17.6k Oct 1, 2022
PHP Client based on C++ for Polaris

polaris-php Polaris is an operation centre that supports multiple programming languages, with high compatibility to different application framework. P

Polarismesh 7 Jun 28, 2022
A fast phone number lib for Ruby (binds to Google's C++ libphonenumber)

MiniPhone A Ruby gem which plugs directly into Google's native C++ libphonenumber for extremely fast and robust phone number parsing, validation, and

Ian Ker-Seymer 146 Aug 8, 2022
Calleree helps to analyze Ruby's caller-callee relationships.

Calleree Calleree helps to analyze Ruby's caller-callee relationships. Note that this tool consumes memory and introduces additional overhead because

Koichi Sasada 18 Sep 23, 2021
An extra-lightweight Ruby gem for working with SQLite3 databases

Extralite Extralite is an extra-lightweight SQLite3 wrapper for Ruby. It provides a single class with a minimal set of methods to interact with an SQL

Digital Fabric 108 Sep 16, 2022