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

Related tags

Frameworks grpc
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
  • Question about how to set the condtion's clock type as CLOCK_MONOTONIC

    Question about how to set the condtion's clock type as CLOCK_MONOTONIC

    PLEASE DO NOT POST A QUESTION HERE. This form is for bug reports and feature requests ONLY!

    We download the grpcio package, and use it in our python daemon for the GRPC related feature, and in the test, we found after the service stub is created, two timer threads would be spawned. From the strace result, we also found the condition used to control the timer interval is set with FUTEX_CLOCK_REALTIME. [pid 282057] 04:34:37.808298 futex(0xbf70e00740, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, {1664426077, 866905722}, ffffffffffffffff <unfinished ...> My question is how to change the clock type in condition into CLOCK_MONOTONIC. Thanks.

    For general questions and troubleshooting, please ask/look for answers at StackOverflow, with "grpc" tag: https://stackoverflow.com/questions/tagged/grpc

    For questions that specifically need to be answered by gRPC team members, please ask/look for answers at grpc.io mailing list: https://groups.google.com/forum/#!forum/grpc-io

    This issue will be closed down once seen by the repo managers.

    kind/question priority/P3 untriaged 
    opened by silverwingbug 0
  • Removed GRPC_ERROR_[INT|STR] macros

    Removed GRPC_ERROR_[INT|STR] macros

    Replaced GRPC_ERROR_[INT|STR] macros with Status[Int|Str]Property enum types. All changes are done using the following command except error.h and error.cc file. Note that error.h still have enum types and legacy getter and setter functions because of internal usage. These will be removed once the same migration is done internally as well.

    find . -type f -name '*.h' -not -path './third_party/*' -print0 \
      | xargs -0 sed -i \
        -e 's/GRPC_ERROR_INT_ERRNO/grpc_core::StatusIntProperty::kErrorNo/g' \
        -e 's/GRPC_ERROR_INT_FILE_LINE/grpc_core::StatusIntProperty::kFileLine/g' \
        -e 's/GRPC_ERROR_INT_STREAM_ID/grpc_core::StatusIntProperty::kStreamId/g' \
        -e 's/GRPC_ERROR_INT_GRPC_STATUS/grpc_core::StatusIntProperty::kRpcStatus/g' \
        -e 's/GRPC_ERROR_INT_OFFSET/grpc_core::StatusIntProperty::kOffset/g' \
        -e 's/GRPC_ERROR_INT_INDEX/grpc_core::StatusIntProperty::kIndex/g' \
        -e 's/GRPC_ERROR_INT_SIZE/grpc_core::StatusIntProperty::kSize/g' \
        -e 's/GRPC_ERROR_INT_HTTP2_ERROR/grpc_core::StatusIntProperty::kHttp2Error/g' \
        -e 's/GRPC_ERROR_INT_TSI_CODE/grpc_core::StatusIntProperty::kTsiCode/g' \
        -e 's/GRPC_ERROR_INT_WSA_ERROR/grpc_core::StatusIntProperty::kWsaError/g' \
        -e 's/GRPC_ERROR_INT_FD/grpc_core::StatusIntProperty::kFd/g' \
        -e 's/GRPC_ERROR_INT_HTTP_STATUS/grpc_core::StatusIntProperty::kHttpStatus/g' \
        -e 's/GRPC_ERROR_INT_OCCURRED_DURING_WRITE/grpc_core::StatusIntProperty::kOccurredDuringWrite/g' \
        -e 's/GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE/grpc_core::StatusIntProperty::ChannelConnectivityState/g' \
        -e 's/GRPC_ERROR_INT_LB_POLICY_DROP/grpc_core::StatusIntProperty::kLbPolicyDrop/g' \
        -e 's/GRPC_ERROR_STR_DESCRIPTION/grpc_core::StatusStrProperty::kDescription/g' \
        -e 's/GRPC_ERROR_STR_FILENAME/grpc_core::StatusStrProperty::kFilename/g' \
        -e 's/GRPC_ERROR_STR_FILE/grpc_core::StatusStrProperty::kFile  /g' \
        -e 's/GRPC_ERROR_STR_OS_ERROR/grpc_core::StatusStrProperty::kOsError/g' \
        -e 's/GRPC_ERROR_STR_SYSCALL/grpc_core::StatusStrProperty::kSyscall/g' \
        -e 's/GRPC_ERROR_STR_TARGET_ADDRESS/grpc_core::StatusStrProperty::kTargetAddress/g' \
        -e 's/GRPC_ERROR_STR_GRPC_MESSAGE/grpc_core::StatusStrProperty::kGrpcMessage/g' \
        -e 's/GRPC_ERROR_STR_RAW_BYTES/grpc_core::StatusStrProperty::kRawBytes/g' \
        -e 's/GRPC_ERROR_STR_TSI_ERROR/grpc_core::StatusStrProperty::kTsiError/g' \
        -e 's/GRPC_ERROR_STR_KEY/grpc_core::StatusStrProperty::kKey/g' \
        -e 's/GRPC_ERROR_STR_VALUE/grpc_core::StatusStrProperty::kValue/g'
    
    lang/c++ kind/internal cleanup lang/core release notes: no bloat/none per-call-memory/neutral per-channel-memory/neutral 
    opened by veblush 1
Releases(v1.50.0-pre1)
  • 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)
  • 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)
  • v1.43.0(Dec 16, 2021)

    This is release 1.43.0 (green) 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

    • Remove redundant work serializer usage in c-ares windows code. (#28016)
    • Support RDS updates on the server. (#27851)
    • Use WorkSerializer in XdsClient to propagate updates in a synchronized manner. (#27975)
    • Support Custom Post-handshake Verification in TlsCredentials. (#25631)
    • Reintroduce the EventEngine default factory. (#27920)
    • Assert Android API >= v21. (#27943)
    • Add support for abstract unix domain sockets. (#27906)

    C++

    • OpenCensus: Move metadata storage to arena. (#27948)

    C#

    • [C#] Add nullable type attributes to Grpc.Core.Api. (#27887)

    Objective-C

    • Revert "Revert "[objc] GRPCMetadataDictionary convenient typedef"". (#27882)

    Python

    • [Aio] Validate the input type for set_trailing_metadata and abort. (#27958)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_plugin-1.43.0-macos-x86_64.zip(1.16 MB)
Owner
grpc
A high performance, open source, general-purpose RPC framework
grpc
FuelPHP v1.x is a simple, flexible, community driven PHP 5.3+ framework, based on the best ideas of other frameworks, with a fresh start! FuelPHP is fully PHP 7 compatible.

FuelPHP Version: 1.8.2 Website Release Documentation Release API browser Development branch Documentation Development branch API browser Support Forum

Fuel 1.4k Sep 23, 2022
Hello, this is simple attribute validation for PHP Models, based on the new features, presented in PHP 8

Hello, this is simple attribute validation for PHP Models, based on the new features, presented in PHP 8 It works as a standalone and can be use in custom projects or in libraries like Symfony and Laravel.

Ivan Grigorov 87 Sep 16, 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 Sep 27, 2022
High performance HTTP Service Framework for PHP based on Workerman.

webman High performance HTTP Service Framework for PHP based on Workerman. Manual https://www.workerman.net/doc/webman Benchmarks https://www.techempo

walkor 1.2k Sep 27, 2022
Symprowire is a PHP MVC Framework based and built on Symfony, using the ProcessWire CMS as DBAL and Service Provider.

Symprowire - PHP MVC Framework for ProcessWire 3.x Symprowire is a PHP MVC Framework based and built on Symfony using ProcessWire 3.x as DBAL and Serv

Luis Mendez 7 Jan 16, 2022
Bootcamp project based on PHP-MVC using MySQL database.

Up-Stream This is the implementation of a full website based on PHP MVC. Using MySql database to create a website. And Bootstrap4 for front-end. Start

AmirH.Najafizadeh 4 Jul 31, 2022
A server side alternative implementation of socket.io in PHP based on workerman.

phpsocket.io A server side alternative implementation of socket.io in PHP based on Workerman. Notice Only support socket.io v1.3.0 or greater. This pr

walkor 2.1k Sep 20, 2022
Framework X is a simple and fast micro framework based on PHP

Framework X is a simple and fast micro framework based on PHP. I've created a simple CRUD application to understand how it works. I used twig and I created a custom middleware to handle PUT, DELETE methods.

Mahmut Bayri 5 Aug 13, 2022
Jin microservices is a complete microservice demo based on PHP language + hyperf microservices framework

介绍 Jin-microservices是基于 php 语言 + hyperf 微服务 框架的完整微服务demo。 github:https://github.com/Double-Jin/jin-microservices gitee:https://gitee.com/ljj96/jin-mic

null 98 Sep 22, 2022
Software for an e-book library, in Bulgarian only. Based on Symfony3 and Doctrine 2.

chitanka.info core Това е уеб софтуер, който задвижва „Моята библиотека“. Изграден е с помощта на Symfony3, Doctrine 2 и много други прекрасни свободн

null 45 Jun 17, 2022
Railway Flow Based Programming

Why ? Railway Flow Based Programming concept aims to solve Adopt asynchronous as native implementation Build your code with functional programming and

Darkwood 7 Sep 12, 2022
This JSON marshaller is based on the one built into FEAST framework

Standalone JSON marshaller based off the one built into FEAST framework at feast/framework on packagist or feastframework/framework on github

null 12 Aug 9, 2022
Ergonode is modern PIM platform based on Symfony and Vue.js frameworks.

Modern Product Information Management Platform Ergonode is modern PIM platform based on Symfony and Vue.js frameworks. It has modular structure and gi

Ergonode 97 Aug 19, 2022
a framework for WebDevelop based on the mvc structure. The name of this project for Fun because everyone can use it. Completely simple and powerful structure for all your projects

A_A (-.-) ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ |-| █▄─▄▄─█▄─██─▄█─▄▄▄▄█─▄▄▄▄█▄─█─▄█─▄▄▄─██▀▄─██─▄

MasihGhaznavi 7 Jun 29, 2022
Hyperf instant messaging program based on swoole framework

Hyperf instant messaging program based on swoole framework

null 20 Aug 12, 2022
An issue tracking tool based on hyperf+reactjs for small and medium-sized enterprises, open-source and free, similar to Jira.

介绍 本项目以 actionview 为蓝本,使用 Hyperf 框架进行重写。 本项目为 Hyperf 框架的 DEMO 项目 原 ActionView 介绍 English | 中文 一个类Jira的问题需求跟踪工具,前端基于reactjs+redux、后端基于php laravel-frame

Gemini-D 13 Aug 22, 2022
🎁 Datagrid component project skeleton based on Nette Framework

?? Datagrid component project skeleton based on Nette Framework

Contributte 3 Jul 19, 2022
Asynchronous tasks based on ticks.

TickAsync Asynchronous tasks based on ticks. If you like this project gift us a ⭐ . Installation. $ composer require thenlabs/task-loop 2.0.x-dev then

ThenLabs 1 Jan 3, 2022
Hprose asynchronous client & standalone server based on swoole

Hprose for Swoole Introduction Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform,

Hprose 186 Sep 9, 2022