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
Issues
  • Review the gRPC-Web protocol proposal

    Review the gRPC-Web protocol proposal

    opened by wenbozhu 403
  • Rolling out new API for gRPC Objective-C library

    Rolling out new API for gRPC Objective-C library

    Isolate gRPC Objective-C configurations into an individual class, and provide a set of new API functions to make gRPC call.

    cc: @aharperg

    lang/ObjC release notes: yes 
    opened by muxi 237
  • 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
  • Add ALTS C stack to gRPC core

    Add ALTS C stack to gRPC core

    This change is Reviewable

    area/security 
    opened by yihuazhang 157
  • 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
  • Buildify Envoy upb

    Buildify Envoy upb

    null

    kind/internal cleanup lang/core area/build release notes: no bloat/low perf-change/none 
    opened by veblush 0
  • Python TSI_DATA_CORRUPTED after Popen()

    Python TSI_DATA_CORRUPTED after Popen()

    What version of gRPC and what language are you using?

    Python 3.8.10 grpcio 1.43.0

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

    Ubuntu 20.04

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

    Python 3.8.10 (default, Nov 26 2021, 20:14:08) [GCC 9.3.0] on linux

    What did you do?

    When I use a gRPC client to make rpc calls immediately after a call to subprocess.Popen(), intermittently, the next rpc call fails.

    What did you expect to see?

    My rpc should return without error.

    What did you see instead?

    "{"created":"@1642115822.017133164","description":"Error received from peer ipv4:127.0.0.1:50686","file":"src/core/lib/surface/call.cc","file_line":1074,"grpc_message":"Stream removed","grpc_status":2}"
    

    Turning on additional gRPC logging with GRPC_VERBOSITY=debug GRPC_TRACE=tsi,subchannel,subchannel_pool,transport_security,

    I see

    I0113 15:17:01.721348644  906598 ssl_transport_security.cc:223]      HANDSHAKE START -       TLS client start_connect  - !!!!!!
    I0113 15:17:01.721527927  906598 ssl_transport_security.cc:223]                 LOOP -    TLS client enter_early_data  - !!!!!!
    I0113 15:17:01.721586410  906598 ssl_transport_security.cc:223]                 LOOP -   TLS client read_server_hello  - !!!!!!
    I0113 15:17:01.727443284  899282 ssl_transport_security.cc:223]                 LOOP - TLS 1.3 client read_hello_retr  - !!!!!!
    I0113 15:17:01.727508497  899282 ssl_transport_security.cc:223]                 LOOP - TLS 1.3 client read_server_hel  - !!!!!!
    I0113 15:17:01.727732797  899282 ssl_transport_security.cc:223]                 LOOP - TLS 1.3 client read_encrypted_  - !!!!!!
    I0113 15:17:01.727762972  899282 ssl_transport_security.cc:223]                 LOOP - TLS 1.3 client read_certificat  - !!!!!!
    I0113 15:17:01.727831564  899282 ssl_transport_security.cc:223]                 LOOP - TLS 1.3 client read_server_cer  - !!!!!!
    I0113 15:17:01.727922514  899282 ssl_transport_security.cc:223]                 LOOP - TLS 1.3 client read_server_cer  - !!!!!!
    I0113 15:17:01.728200308  899282 ssl_transport_security.cc:223]                 LOOP - TLS 1.3 client read_server_fin  - !!!!!!
    I0113 15:17:01.728249448  899282 ssl_transport_security.cc:223]                 LOOP - TLS 1.3 client send_end_of_ear  - !!!!!!
    I0113 15:17:01.728263945  899282 ssl_transport_security.cc:223]                 LOOP - TLS 1.3 client send_client_enc  - !!!!!!
    I0113 15:17:01.728277267  899282 ssl_transport_security.cc:223]                 LOOP - TLS 1.3 client send_client_cer  - !!!!!!
    I0113 15:17:01.728307083  899282 ssl_transport_security.cc:223]                 LOOP - TLS 1.3 client send_client_cer  - !!!!!!
    I0113 15:17:01.731202597  899282 ssl_transport_security.cc:223]                 LOOP - TLS 1.3 client complete_second  - !!!!!!
    I0113 15:17:01.731261934  899282 ssl_transport_security.cc:223]                 LOOP -            TLS 1.3 client done  - !!!!!!
    I0113 15:17:01.731279862  899282 ssl_transport_security.cc:223]                 LOOP - TLS client finish_client_hands  - !!!!!!
    I0113 15:17:01.731299929  899282 ssl_transport_security.cc:223]                 LOOP -                TLS client done  - !!!!!!
    I0113 15:17:01.731314157  899282 ssl_transport_security.cc:223]       HANDSHAKE DONE -                TLS client done  - !!!!!!
    I0113 15:17:01.732688311  899282 subchannel.cc:1006]         subchannel 0x7fd908003f60 {address=ipv4:127.0.0.1:50686, args=grpc.client_channel_factory=0x74728b0, grpc.default_authority=localhost:50686, grpc.http2_scheme=https, grpc.internal.channel_credentials=0x7482240, grpc.internal.security_connector=0x74ef1c0, grpc.internal.subchannel_pool=0x7488f90, grpc.primary_user_agent=grpc-python/1.43.0, grpc.resource_quota=0x71c5890, grpc.server_uri=dns:///localhost:50686}: new connected subchannel at 0x8cdcd70
    I0113 15:17:01.826414229  899282 fork_posix.cc:70]           Fork support is only compatible with the epoll1 and poll polling strategies
    E0113 15:17:02.016975648  899282 ssl_transport_security.cc:552] Corruption detected.
    E0113 15:17:02.017055716  899282 ssl_transport_security.cc:528] error:100003fc:SSL routines:OPENSSL_internal:SSLV3_ALERT_BAD_RECORD_MAC
    E0113 15:17:02.017079196  899282 secure_endpoint.cc:205]     Decryption error: TSI_DATA_CORRUPTED
    I0113 15:17:02.017356698  899282 subchannel.cc:320]          subchannel 0x7fd908003f60 {address=ipv4:127.0.0.1:50686, args=grpc.client_channel_factory=0x74728b0, grpc.default_authority=localhost:50686, grpc.http2_scheme=https, grpc.internal.channel_credentials=0x7482240, grpc.internal.security_connector=0x74ef1c0, grpc.internal.subchannel_pool=0x7488f90, grpc.primary_user_agent=grpc-python/1.43.0, grpc.resource_quota=0x71c5890, grpc.server_uri=dns:///localhost:50686}: Connected subchannel 0x8cdcd70 has gone into SHUTDOWN. Attempting to reconnect.
    

    Full logs from the test case: https://gist.github.com/spikecurtis/a8a51858f334924b811e5618921a6e48

    Anything else we should know about your project / environment?

    There are multiple gRPC services being contacted, some with, and some without TLS. The one that fails is always the same and is TLS-protected.

    The error occurs in the context of a set of py.test tests, where the gRPC services and their corresponding stubs/channels are per-test-case fixtures. When looking through the logs it appears that I'm seeing subchannel retries for services and stubs that have already been released by the test code. E.g. it seems that subchannels are not cleaned up synchronously with the Python channel objects.

    My call to Popen() calls ffprobe from the FFMpeg family of tools, e.g. it is fork() followed more or less immediately by exec().

    This document https://github.com/grpc/grpc/blob/master/doc/fork_support.md suggests that since https://github.com/grpc/grpc/pull/14647 it is safe to fork/exec without setting GRPC_ENABLE_FORK_SUPPORT=False, but I believe this must not strictly be the case. When I do set that environment variable, I do not see the stream corruption error. I strongly suspect that the fork handlers can cause intermittent corruption of the TLS stream, as disabling them makes the problem go away, and I never see the corruption error in the case where the "Fork support" log is followed by the "Skipping fork() handlers" log e.g.

    I0113 15:20:59.701224081  899282 fork_posix.cc:70]           Fork support is only compatible with the epoll1 and poll polling strategies
    I0113 15:20:59.701289901  899282 fork_posix.cc:75]           Other threads are currently calling into gRPC, skipping fork() handlers
    
    kind/bug priority/P2 
    opened by spikecurtis 0
  • The gRPC CocoaPods uncached installation can take several minutes

    The gRPC CocoaPods uncached installation can take several minutes

    What version of gRPC and what language are you using?

    1.28.2 Swift

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

    Apple

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

    n/a

    What did you do?

    Please provide either 1) A unit test for reproducing the bug or 2) Specific steps for us to follow to reproduce the bug. If there’s not enough information to debug the problem, gRPC team may close the issue at their discretion. You’re welcome to re-open the issue once you have a reproduction.

    pod cache clean --all pod deintegrate pod install --verbose

    What did you expect to see?

    A faster install

    What did you see instead?

    Several unneeded git repos installed taking several minutes.

    Installing gRPC-Core (1.28.2) Git download Git download $ /usr/local/git/current/bin/git clone https://github.com/grpc/grpc.git /var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v --template= --single-branch --depth 1 --branch v1.28.2 Cloning into '/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v'... Updating files: 100% (8203/8203), done. $ /usr/local/git/current/bin/git -C /var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v submodule update --init --recursive Submodule 'third_party/abseil-cpp' (https://github.com/abseil/abseil-cpp.git) registered for path 'third_party/abseil-cpp' Submodule 'third_party/benchmark' (https://github.com/google/benchmark) registered for path 'third_party/benchmark' Submodule 'third_party/bloaty' (https://github.com/google/bloaty.git) registered for path 'third_party/bloaty' Submodule 'third_party/boringssl-with-bazel' (https://github.com/google/boringssl.git) registered for path 'third_party/boringssl-with-bazel' Submodule 'third_party/cares/cares' (https://github.com/c-ares/c-ares.git) registered for path 'third_party/cares/cares' Submodule 'third_party/envoy-api' (https://github.com/envoyproxy/data-plane-api.git) registered for path 'third_party/envoy-api' Submodule 'third_party/gflags' (https://github.com/gflags/gflags.git) registered for path 'third_party/gflags' Submodule 'third_party/googleapis' (https://github.com/googleapis/googleapis.git) registered for path 'third_party/googleapis' Submodule 'third_party/googletest' (https://github.com/google/googletest.git) registered for path 'third_party/googletest' Submodule 'third_party/libuv' (https://github.com/libuv/libuv.git) registered for path 'third_party/libuv' Submodule 'third_party/protobuf' (https://github.com/google/protobuf.git) registered for path 'third_party/protobuf' Submodule 'third_party/protoc-gen-validate' (https://github.com/envoyproxy/protoc-gen-validate.git) registered for path 'third_party/protoc-gen-validate' Submodule 'third_party/udpa' (https://github.com/cncf/udpa.git) registered for path 'third_party/udpa' Submodule 'third_party/zlib' (https://github.com/madler/zlib) registered for path 'third_party/zlib' Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/abseil-cpp'... Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/benchmark'... Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/bloaty'... Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/boringssl-with-bazel'... Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/cares/cares'... Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/envoy-api'... Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/gflags'... Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/googleapis'... Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/googletest'... Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/libuv'... Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/protobuf'... Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/protoc-gen-validate'... Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/udpa'... Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/zlib'... Submodule path 'third_party/abseil-cpp': checked out 'b832dce8489ef7b6231384909fd9b68d5a5ff2b7' Submodule path 'third_party/benchmark': checked out '090faecb454fbd6e6e17a75ef8146acb037118d4' Submodule path 'third_party/bloaty': checked out '73594cde8c9a52a102c4341c244c833aa61b9c06' Submodule 'third_party/googletest' (https://github.com/google/googletest.git) registered for path 'third_party/bloaty/third_party/googletest' Submodule 'third_party/libFuzzer' (https://chromium.googlesource.com/chromium/llvm-project/llvm/lib/Fuzzer) registered for path 'third_party/bloaty/third_party/libFuzzer' Submodule 'third_party/re2' (https://github.com/google/re2) registered for path 'third_party/bloaty/third_party/re2' Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/bloaty/third_party/googletest'... Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/bloaty/third_party/libFuzzer'... Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/bloaty/third_party/re2'... Submodule path 'third_party/bloaty/third_party/googletest': checked out 'a2b8a8e07628e5fd60644b6dd99c1b5e7d7f1f47' Submodule path 'third_party/bloaty/third_party/libFuzzer': checked out '1b543d6e5073b56be214394890c9193979a3d7e1' Submodule path 'third_party/bloaty/third_party/re2': checked out 'c964d9b07816f9b52ca692e23b8b3dba33beec54' Submodule path 'third_party/boringssl-with-bazel': checked out '1c2769383f027befac5b75b6cedd25daf3bf4dcf' Submodule path 'third_party/cares/cares': checked out 'e982924acee7f7313b4baa4ee5ec000c5e373c30' Submodule path 'third_party/envoy-api': checked out '0487bbb43c3e8b54c7332f74ba7344d8265774f7' Submodule path 'third_party/gflags': checked out '28f50e0fed19872e0fd50dd23ce2ee8cd759338e' Submodule 'doc' (https://github.com/gflags/gflags.git) registered for path 'third_party/gflags/doc' Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/gflags/doc'... Submodule path 'third_party/gflags/doc': checked out '8411df715cf522606e3b1aca386ddfc0b63d34b4' Submodule path 'third_party/googleapis': checked out '80ed4d0bbf65d57cc267dfc63bd2584557f11f9b' Submodule path 'third_party/googletest': checked out 'c9ccac7cb7345901884aabf5d1a786cfa6e2f397' Submodule path 'third_party/libuv': checked out '15ae750151ac9341e5945eb38f8982d59fb99201' Submodule path 'third_party/protobuf': checked out 'fe1790ca0df67173702f70d5646b82f48f412b99' Submodule 'third_party/benchmark' (https://github.com/google/benchmark.git) registered for path 'third_party/protobuf/third_party/benchmark' Submodule 'third_party/googletest' (https://github.com/google/googletest.git) registered for path 'third_party/protobuf/third_party/googletest' Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/protobuf/third_party/benchmark'... Cloning into '/private/var/folders/f8/780yxvcx2x91wmlsmvyv0bdr00bzqz/T/d20220113-27138-k03p9v/third_party/protobuf/third_party/googletest'... Submodule path 'third_party/protobuf/third_party/benchmark': checked out '5b7683f49e1e9223cf9927b24f6fd3d6bd82e3f8' Submodule path 'third_party/protobuf/third_party/googletest': checked out '5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081' Submodule path 'third_party/protoc-gen-validate': checked out 'c0a080f4bea50bc087cdd8551143ee538cf3459e' Submodule path 'third_party/udpa': checked out 'db4b343e48c1264bb4d9ff491b059300701dc7c7' Submodule path 'third_party/zlib': checked out 'cacf7f1d4e3d44d871b605da3b647f07d718623f' Running prepare command $ /bin/bash -c set -e sed -E -i '' 's;#include <openssl/(.)>;#if COCOAPODS==1\ #include <openssl_grpc/\1>\ #else\ #include <openssl/\1>\ #endif;g' $(find src/core -type f ( -path '.h' -or -path '.cc' ) -print | xargs grep -H -c '#include <openssl_grpc/' | grep 0$ | cut -d':' -f1) find src/core/ third_party/upb/ -type f ( -name '.h' -or -name '.c' -or -name '.cc' ) -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include "upb/(.)";#if COCOAPODS==1\ #include "third_party/upb/upb/\1"\ #else\ #include "upb/\1"\ #endif;g' find src/core/ third_party/upb/ -type f -name '.grpc_back' -print0 | xargs -0 rm find src/core/ src/cpp/ -type f ( -name '.h' -or -name '.c' -or -name '.cc' ) -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include "(.).upb.h";#if COCOAPODS==1\ #include "src/core/ext/upb-generated/\1.upb.h"\ #else\ #include "\1.upb.h"\ #endif;g' find src/core/ src/cpp/ -type f -name '*.grpc_back' -print0 | xargs -0 rm Copying gRPC-Core from /Users/paulbeusterien/Library/Caches/CocoaPods/Pods/Release/gRPC-Core/1.28.2-4afa1 to Pods/gRPC-Core

    Make sure you include information that can help us debug (full error message, exception listing, stack trace, logs).

    See TROUBLESHOOTING.md for how to diagnose problems better.

    Anything else we should know about your project / environment?

    One possible approach would be to provide a publish only git repo for both CocoaPods and Swift Package Manager with only files and tags necessary for clients.

    kind/bug priority/P2 
    opened by paulb777 0
  • Bump version to 1.45.0-dev

    Bump version to 1.45.0-dev

    do not merge until the release branch is cut.

    lang/c++ lang/core bloat/none perf-change/none 
    opened by jtattermusch 0
  • Revert

    Revert "Update to rbac policy struct and end2end authz test."

    Reverts grpc/grpc#27074

    Looks like it broke the grpc/core/master/macos/grpc_bazel_cpp_ios_tests kokoro job on master: https://source.cloud.google.com/results/invocations/6dec90a4-7bce-4d99-86a3-e98ea7fafc06/log

    FAIL: //test/cpp/end2end:sdk_authz_end2end_test_on_ios (see /Volumes/BuildData/tmpfs/tmp/bazel/execroot/com_github_grpc_grpc/bazel-out/darwin-fastbuild/testlogs/test/cpp/end2end/sdk_authz_end2end_test_on_ios/test.log)
    INFO: From Testing //test/cpp/end2end:sdk_authz_end2end_test_on_ios:
    ==================== Test output for //test/cpp/end2end:sdk_authz_end2end_test_on_ios:
    2022-01-12 23:32:50,093 Will consider the test as test type logic_test to run.
    2022-01-12 23:32:50,563 Creating a new simulator:
    Name: New-iPhone 11 Pro Max-13.3
    OS: iOS 13.3
    Type: iPhone 11 Pro Max
    2022-01-12 23:32:50,763 Created new simulator CBDF3AF5-38B1-4082-85B4-B9F338FC6CDD.
    Test Suite 'All tests' started at 2022-01-12 15:32:51.034
    Test Suite 'sdk_authz_end2end_test_on_ios.xctest' started at 2022-01-12 15:32:51.034
    Test Suite 'GTMGoogleTestRunner' started at 2022-01-12 15:32:51.034
    Test Suite 'SdkAuthzEnd2EndTest' started at 2022-01-12 15:32:51.034
    Test Case '-[GTMGoogleTestRunner SdkAuthzEnd2EndTest::StaticInitAllowsRpcRequestNoMatchInDenyMatchInAllow]' started.
    E0112 15:32:51.068633000 4603672000 sdk_authz_end2end_test.cc:50]      load_file: {"created":"@1642030371.068608000","description":"Failed to load file","file":"src/core/lib/iomgr/load_file.cc","file_line":72,"filename":"src/core/tsi/test_creds/ca.pem","referenced_errors":[{"created":"@1642030371.068606000","description":"No such file or directory","errno":2,"file":"src/core/lib/iomgr/load_file.cc","file_line":45,"os_error":"No such file or directory","syscall":"fopen"}]}
    E0112 15:32:51.068732000 4603672000 sdk_authz_end2end_test.cc:50]      assertion failed: GRPC_LOG_IF_ERROR("load_file", grpc_load_file(file_path, 0, &slice))
    Child process terminated with signal 6: Abort trap
    2022-01-12 23:32:51,070 Deleting simulator CBDF3AF5-38B1-4082-85B4-B9F338FC6CDD asynchronously.
    2022-01-12 23:32:51,074 Done.
    ================================================================================
    Target //test/cpp/end2end:sdk_authz_end2end_test_on_ios up-to-date:
      bazel-bin/test/cpp/end2end/sdk_authz_end2end_test_on_ios
      bazel-out/applebin_ios-ios_x86_64-fastbuild-ST-e637a0adc749/bin/test/cpp/end2end/sdk_authz_end2end_test_on_ios.zip
    INFO: Elapsed time: 12.650s, Critical Path: 10.90s
    INFO: 60 processes: 18 internal, 41 darwin-sandbox, 1 local.
    INFO: Build completed, 1 test FAILED, 60 total actions
    //test/cpp/end2end:sdk_authz_end2end_test_on_ios                         FAILED in 1.7s
        ERROR   .test/cpp/end2end/sdk_authz_end2end_test_on_ios (0.0s)
    
    lang/c++ priority/P0/RELEASE BLOCKER lang/core release notes: no bloat/none perf-change/none 
    opened by jtattermusch 1
  • Stream is closed for idle connection

    Stream is closed for idle connection

    I have bidirectional streaming rpc between server and client. If data is not exchanged over the stream, after certain time, on the server, it seems that stream is disconnected or stream-Read() returns false.

    Currently I am not using keepalive flags for the channel on server and client. There is a flag: GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS : This channel argument if set to 1 (0 : false; 1 : true), allows keepalive pings to be sent even if there are no calls in flight. what is meaning of "no calls in flight" ?

    Is this the option will help me out to solve my issue? What are the performance penalties?

    I found that there is an alternative idleTimeout in Java, however, is there any similar option in C++? Also, how to set it to infinite?

    kind/question priority/P3 
    opened by rochaudhari 0
  • Error When Returning Pointer to ClientReader 0), function RefNonZero, file ref_counted.h"">

    Error When Returning Pointer to ClientReader"(prior > 0), function RefNonZero, file ref_counted.h"

    What version of gRPC and what language are you using?

    GRPC - v1.43.0 and C++

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

    macOS Monterey v12.0.1

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

    C++20 Apple clang version 13.0.0 (clang-1300.0.29.3)

    What did you do?

    Inside my client file, I have a function to return a pointer with a response from the server.

    std::unique_ptr<ClientReader<FlowCellPositionsResponse>> ManagerClient::flow_cell_positions() {
      ClientContext context;
      FlowCellPositionsRequest request; // Request here doesn't need any values
      return std::move(stub_->flow_cell_positions(&context, request)); // Also tried without std::move and same error
    }
    

    I created a seperate file to use this client function like so:

        FlowCellPositionsResponse response;
        std::unique_ptr<ClientReader<FlowCellPositionsResponse> > reader = manager->flow_cell_positions();
        while(reader->Read(&response)) { // Fails here
          std::cout << response.positions(0).name() << std::endl;
          std::cout << response.positions(0).rpc_ports().insecure() << std::endl;
        }
        Status status = reader->Finish();
        if(status.ok()) {
          std::cout << "Finished successfully!" << std::endl;
        } else {
          std::cout << "Failed " << status.error_code() << std::endl;
        }
    

    What did you expect to see?

    The seperate file to print out the response's values. If I move this external logic back into the client file, it works fine, but creating this abstraction breaks it for some reason and I can't seem to get why.

    What did you see instead?

    Assertion failed: (prior > 0), function RefNonZero, file ref_counted.h, line 119.
    [1]    8785 abort      ./program
    

    Anything else we should know about your project / environment?

    kind/bug priority/P2 
    opened by brianzhang2101 1
  • Fixes check to CN is optional in X509 subject

    Fixes check to CN is optional in X509 subject

    null

    lang/core release notes: no bloat/none perf-change/none 
    opened by ashithasantosh 0
  • Implement transparent retries

    Implement transparent retries

    null

    lang/core release notes: no bloat/none perf-change/high 
    opened by markdroth 0
  • Remove host getter

    Remove host getter

    null

    lang/core release notes: no bloat/none perf-change/none 
    opened by ashithasantosh 0
Releases(v1.43.0)
  • 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)
  • v1.43.0-pre1(Dec 7, 2021)

  • v1.42.0(Nov 17, 2021)

    This is release 1.42.0 (granola) 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

    • Update RDS parsing for use on servers. (#27715)
    • Upgrade Abseil to LTS 20210324, Patch 2. (#27811)
    • Upgrade bazel to 4.2.1 (LTS), upgrade bazel toolchain to 4.1.0. (#27410)
    • Remove old backwards compatibility cronet compression workaround code. (#27701)
    • EventEngine Test Suite: Timers. (#27496)
    • EventEngine::Closure. (#27395)
    • OpenCensusCallTracer: Move context generation to StartTransportStreamOpBatch. (#27523)
    • Fix client idle filter. (#27611)
    • allow connectivity state watching to work on lame channels. (#27747)
    • grpclb: implement subchannel caching. (#27657)
    • xds: change CSDS to populate new generic_xds_configs field. (#27794)

    C++

    • Describe support-levels for undocumented supported platforms. (#27363)

    C#

    • Fix link error when building app with Xamarin.iOS. (#27345)
    • C#: metadata.Get and GetAll should accept uppercase keys. (#27383)
    • Fix use-after-free metadata corruption in C# when receiving response headers for streaming response calls. (#27382)

    Objective-C

    • [objc] GRPCErrorCode enum base type to int32_t. (#27908)
    • [objc] Adding lightweight generic to GPRCCallOptions's initialMetadata prop . (#27905)
    • [objc] GRPCMetadataDictionary convenient typedef. (#27845)
    • [objc] Switch to proto forward declare for gRPC codegen plugin. (#27444)

    Python

    • Add Aspects to Bazel py_proto_library and py_grpc_library Rules. (#27275)
    • [Aio] Add add_done_callback/done/cancelled methods to ServicerContext. (#27767)
    • [Aio] Correct the typing of input metadata. (#27768)
    • Address leak when using request stream interceptors (#25449). (#27571)
    • Catch ExecuteBatchError in _consume_request_iterator. (#27240)
    • [Aio] Resolve deprecated warnings from asyncio. (#27635)
    • Create Bazel gevent test harness. (#27507)
    • Add python_requires >=3.6 to grpcio-* packages. (#27495)
    • fix: use == instead of is when comparing with a certain types of literals. (#26519)
    • python: fix type annotation for the _metadata field. (#27251)

    Ruby

    • ruby: add arm64 darwin support. (#25992)
    • ruby: build native Darwin gems using rake-compiler-dock. (#25794)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_plugin-1.42.0-macos-x86_64.zip(1.16 MB)
  • v1.42.0-pre1(Nov 5, 2021)

  • v1.41.1(Oct 25, 2021)

  • v1.41.0(Sep 27, 2021)

    This is release 1.41.0 (goat) 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

    • De-experimentalize XdsCredentials and XdsServerCredentials API. (#26544)
    • xDS: Remove environmental variable guard for security. (#27290)
    • xDS Security: Use new way to fetch certificate provider plugin instance config. (#27264)
    • xDS server serving status: Use a struct to allow more fields to be added in the future. (#27242)
    • Annotate impl/codegen with IWYU pragmas. (#27252)
    • Update submodule envoy-api to origin/main. (#27256)
    • Upgrade third_party/protobuf to v3.17.3. (#27227)
    • update submodule boringssl-with-bazel with origin/master-with-bazel. (#27208)
    • Delete libuv-iomgr implementation and GRPC_UV build option. (#27188)
    • Allow access to Google API regional endpoints via Google Default Credentials. (#27155)
    • Remove GPR_*_TLS macros except PTHREAD. (#26974)
    • Limit initial window size increases and per-stream window delta. (#26342)

    C++

    • Bump version to v1.41.0-pre1. (#27371)
    • De-experimentalize XdsServerBuilder. (#27296)
    • C++ opencensus filter: Fix point of creating context for overall call. (#27221)
    • Flag grpc++_test library testonly. (#27214)
    • Add note on officially supported platforms. (#22344)
    • Open census call attempt span name and attribute changes (#26889). (#26902)
    • Open census call attempt span name and attribute changes. (#26889)

    C#

    • Backport #27382 to v1.41.x. (#27398)
    • [csharp] Fix error loading library grpc_csharp_ext.*.dll on windows with non-ASCII encoding. (#26762)
    • Annotate copied Content native lib items with package id to enable customization. (#26725)

    Objective-C

    • Objective-C: Fix issue with creating a Unix file socket. (#26931)

    Python

    • Use manylinux_2_17 instead of manylinux_2_24 tag for manylinux2014 aarch64 wheels. (#27280)
    • Add Python 3.10 drop 3.5. (#26074)
    • [Aio] Remove custom IO manager support. (#27090)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_plugin-1.41.0-macos-x86_64.zip(1.15 MB)
  • v1.41.0-pre2(Sep 19, 2021)

  • v1.40.0(Sep 7, 2021)

    This is release 1.40.0 (guileless) 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

    • Update Envoy API to the latest version (2021-07-30). (#26848)
    • Enable retries by default. (#26766)
    • Add opentelemetry as a submodule for latest xDS API. (#26850)
    • Pointing the protobuf submodule to the new URL. (#26811)
    • Remove BUILD.gn. (#26822)
    • Prevent race causing early-destruction of grpc_winsocket object when creating a TCP connection. (#26642)
    • TLS Security Connector: Add an always-fail-handshaker when certificates are not ready. (#26561)
    • Enable layering checks in the Bazel build. (#26591)
    • Support user provided "scope" in JWT and GDC. (#26577)

    C++

    • C++ opencensus filter: Fix point of creating context for overall call. (#27238)
    • Open census call attempt span name and attribute changes (#26889). (#26957)
    • Open census filter: Use new internal stats API and record retry stats. (#26739)
    • Add OpenCensus measures and views for retries. (#26751)

    Python

    • Add retry example for gRPC Python. (#26829)
    • Remove Python 2.7 binary wheel generations. (#26691)
    • [Aio][fix] catch application exception in request iterators. (#26706)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_plugin-1.40.0-macos-x86_64.zip(1.20 MB)
  • v1.39.1(Aug 13, 2021)

    This is release 1.39.0 (goofy) 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.

    C#

    • Fix C# protoc plugin argument parsing on 1.39.x (#26897)
    Source code(tar.gz)
    Source code(zip)
  • v1.39.0(Jul 21, 2021)

    This is release 1.39.0 (goofy) 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

    • Initialize tcp_posix for CFStream when needed. (#26530)
    • Update boringssl submodule. (#26520)
    • Fix backup poller races. (#26446)
    • I am back. (#26464)
    • Use default port 443 in HTTP CONNECT request. (#26331)

    C++

    • New iomgr implementation backed by the EventEngine API. (#26026)
    • async_unary_call: add a Destroy method, called by std::default_delete. (#26389)
    • De-experimentalize C++ callback API. (#25728)

    C#

    • [C#] Add ChannelCredentials.SecureSsl property for better codecompletion with ChannelCredentials. (#26472)
    • Better way of building protoc aarch64 artifacts. (#26416)
    • Add C# plugin "file_suffix" option defaulting to "Grpc.cs". (#26162)
    • Add "GeneratedCode" attribute to generated service stubs. (#26164)

    PHP

    • PHP: stop reading composer.json file just to read the version string. (#26156)

    Python

    • Python AIO: Match continuation typing on Interceptors. (#26500)
    • Workaround #26279 by publishing manylinux_2_24 wheels instead of manylinux2014 on aarch64. (#26430)
    • Fix zlib unistd.h import problem. (#26374)
    • Handle gevent exception in gevent poller. (#26058)

    Ruby

    • Set XDS user agent in ruby via macros. (#26268)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_plugin-1.39.0-macos-x86_64.zip(1.20 MB)
  • v1.39.0-pre1(Jul 2, 2021)

  • v1.38.1(Jun 21, 2021)

  • v1.38.0(May 20, 2021)

    This is release 1.38.0 (guadalupe_river_park_conservancy) 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

    • Invalidate ExecCtx now before computing timeouts in all repeating timer events using a WorkSerializer or combiner. (#26086)
    • Revert #16288. (#25827)
    • Fix use-after-unref bug in fault_injection_filter. (#25903)
    • Fix #25897 to avoid crashes when certificates are not yet updated. (#25899)
    • gRPC EventEngine Interface. (#25795)
    • Allow the AWS_DEFAULT_REGION environment variable. (#25760)

    C++

    • s/OnServingStatusChange/OnServingStatusUpdate. (#26010)
    • cmake: only install channelz if gRPC_USE_PROTO_LITE is off. (#25772)

    C#

    • Grpc.Tools: Use x64 protoc on macOS arm64. (#26080)
    • Provide runtime/framework info in gRPC C# user agent string. (#25889)

    Python

    • Add grpcio-admin Python package. (#26166)
    • Add CSDS API to Python. (#26114)
    • Expose code and details from context on the server side. (#25457)
    • Explicitly import importlib.abc; required on Python 3.10. Fixes #26062. (#26083)
    • Fix potential deadlock on the GIL in AuthMetdataPlugin. (#26009)
    • Introduce new Python package "xds_protos". (#25975)
    • also build python3.6 aarch64 manylinux2014 wheel. (#25928)
    • Remove async mark for set_trailing_metadata interface. (#25814)

    Ruby

    • ruby: use x86_64 binary on M1 macs. (#25756)
    • Add ruby 3.0 support for mac binary packages. (#25429)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_plugin-1.38.0-macos-x86_64.zip(1.20 MB)
  • v1.38.0-pre1(May 11, 2021)

  • v1.37.1(Apr 29, 2021)

    This is release 1.37.1 (gilded) 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

    • Fix #25897 to avoid crashes when certificates are not yet updated (#25899). (#25965)
    • [Backport] Fix use-after-unref bug in fault_injection_filter. (#25935)

    C++

    • Enable channelz for xds_interop_client and xds_interop_server (#25939). (#25968)

    Python

    • Also build python3.6 aarch64 manylinux2014 wheel (backport to v1.37.x). (#25944)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_plugin-1.37.1-macos-x86_64.zip(1.20 MB)
  • v1.37.0(Apr 7, 2021)

    This is release 1.37.0 (gilded) 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

    • Bump up minimum supported clang to 4.0. (#25443)
    • Use URI form of address for channelz listen node. (#25785)
    • Implementation CSDS (xDS Config Dump). (#25038)
    • Don't assume that c-ares won't retry failed writes in grpc_core::GrpcPolledFdWindows::SendVUDP. (#25726)
    • Fix an infinite read loop with SRV record resolution on windows. (#25672)
    • xDS status notifier. (#25321)
    • Remove CAS loops in global subchannel pool and simplify subchannel refcounting. (#25485)
    • Add missing security field to channelz Socket. (#25593)
    • Disable check_call_host when server_verification_option is not GRPC_TLS_SERVER_VERIFICATION. (#25577)

    C++

    • Remove fault injection environmental variable guard. (#25792)
    • Implement C++ Admin Interface API. (#25753)
    • cmake: Reflect minor version change in SONAME for C++ and C#. (#25617)
    • xDS Client-Side Fault Injection. (#24354)

    C#

    • [C#] Add buildTransitive directory to NuGet package. (#25385)
    • Reduce Grpc.Core nuget size by generating separate .so with/without debug symbols for grpc_csharp_ext. (#25729)
    • make Grpc C# work on aarch64 linux. (#25717)
    • Add support for additional protoc arguments in Grpc.Tools. (#25374)
    • C#: Use explicit native extension loading whenever possible. (#25490)

    Python

    • use boringssl asm optimizations in aarch64 wheel source build. (#25453)
    • Clarify Guarantees about grpc.Future Interface. (#25383)
    • Use crosscompilation to build python armv7 wheels. (#25704)
    • [Aio] Add time_remaining method to ServicerContext. (#25719)
    • Standardize all environment variable boolean configuration in python's setup.py. (#25444)
    • Crosscompile python aarch64 wheels with dockcross. (#25418)
    • Fix Signal Safety Issue. (#25394)

    Ruby

    • Cherry-pick PR #25429 "Add ruby 3.0 support for mac binary packages" to 1.37.x. (#25869)
    • Include GRPC::GenericService from root namespace. (#25153)
    • Ruby: support for PSM security. (#25330)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_plugin-1.37.0-macos-x86_64.zip(1.20 MB)
  • v1.37.0-pre1(Mar 31, 2021)

  • v1.36.4(Mar 19, 2021)

  • v1.36.3(Mar 15, 2021)

  • v1.36.2(Mar 5, 2021)

  • v1.36.1(Mar 3, 2021)

  • v1.36.0(Feb 24, 2021)

    This is release 1.36.0 (gummybear) 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 unnecessary internal pollset set in c-ares DNS resolver. (#25296)
    • Fix implicit declaration error in zlib + macOS. (#24979)
    • Support Default Root Certs in Tls Credentials. (#25018)

    C++

    • Move third party identity C++ api out of experimental namespace. (#25379)
    • refactor!: change error_details functions to templates. (#25196)
    • Support ServerContext for callback API. (#25175)

    C#

    • [Backport] [C#] Use explicit native extension loading whenever possible. (#25506)

    PHP

    • PHP: support for PSM security. (#25303)
    • PHP: fixed segfault on reused call object. (#25245)
    • PHP: fixed phpunit 8 warnings. (#25019)

    Python

    • Implement Python Client and Server xDS Creds. (#25365)

    Ruby

    • Drop support for ruby 2.3. (#25201)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_plugin-1.36.0-macos-x86_64.zip(1.20 MB)
  • v1.36.0-pre1(Feb 16, 2021)

  • v1.35.0(Jan 20, 2021)

    This is release 1.35.0 (gecko) 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 "Fix implicit declaration error in zlib + macOS #24979". (#25133)
    • xDS features doc update for case insensitive prefix/full path matching. (#24999)
    • Add darwin_arm64 and darwin_arm64e to c-ares config settings. (#24872)
    • Add FileWatcher CertificateProvider. (#24600)
    • Protect xds security code with the environment variable "GRPC_XDS_EXPERIMENTAL_SECURITY_SUPPORT". (#24780)

    C++

    • Upgrade bazel to 3.7.1 (repository-wide). (#25000)
    • Makefile: remove support for building protobuf, C++ libraries and executables. (#24000)

    C#

    • fix nuget package signing on Linux (do not use PublicSign=true on non-windows). (#24980)
    • Remove C# as a supported language for xDS features. (#24982)
    • Fix C# native library loading in .NET 5 single-file apps. (#24744)

    Python

    • Fix visibility of libprotobuf symbols in protoc_compiler.so on Mac. (#24992)
    • [Aio] Correct type annotation of grpc.aio.ServicerContext.abort. (#24946)
    • Add limit concurrent RPC feature to asyncio server. (#24818)
    • [Aio] Fix the emtpy response handling in streaming RPC. (#24801)
    • [Backport] Implement grpc.Future interface in SingleThreadedRendezvous. (#24574)
    • [Backport] Make Python 2 an optional dependency for Bazel build. (#24452)

    Ruby

    • Fix implicit decalaration in rb_event_thread.c. (#24962)
    • Base the ruby build off of latest rake-compiler-dock/manylinux14 images, add ruby 3.0 binary packages. (#25070)
    • Ruby: add support to circuit_breaking xds interop test case. (#25028)
    • Binary packages (for example, grpc-1.35.0-x86_64-linux.gem):
      • Are now compatible with ruby 3.0
      • Are now built off of manylinux14 (we no longer support Centos 6)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_plugin-1.35.0-macos-x86_64.zip(1.20 MB)
  • v1.34.1(Jan 13, 2021)

    This is release 1.34.1 (gauntlet) of gRPC Core.

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

    This release is a patch specifically for Python and C#, which adds three backported PRs:

    • Backport "Fix visibility of libprotobuf symbols in protoc_compiler.so on Mac" to 1.34.x (#25010)
    • Backport "Lazily import grpc_tools when using runtime stub/message generation" to 1.34.x (#25011)
    • Backport "do not use <PublicSign>true</PublicSign> on non-windows" to 1.34.x (##24995)
    Source code(tar.gz)
    Source code(zip)
  • v1.35.0-pre1(Jan 7, 2021)

  • v1.34.0(Dec 2, 2020)

    This is release 1.34.0 (gauntlet) 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

    • Protect xds security code with the environment variable "GRPC_XDS_EXPERIMENTAL_SECURITY_SUPPORT". (#24782)
    • Add support for "unix-abstract:" URIs to support abstract unix domain sockets. (#24500)
    • Increment Index when parsing not plumbed SAN fields. (#24601)
    • Revert "Revert "Deprecate GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS"". (#24518)
    • xds: Set status code to INVALID_ARGUMENT when NACKing. (#24516)
    • Include stddef.h in address_sorting.h. (#24514)
    • xds: Add support for case_sensitive option in RouteMatch. (#24381)
    • Removing TLS workaround for Android NDK r12b. (#24283)

    C++

    • Fix --define=grpc_no_xds=true builds. (#24503)
    • Experimental support and tests for CreateCustomInsecureChannelWithInterceptorsFromFd. (#24362)

    C#

    • Fix C# native library loading in .NET 5 single-file apps (backport to v1.34.x). (#24853)
    • Make RIDs for the native dependencies in Grpc.Core arch specific. (#24766)
    • Improve PlatformApis check for detecting Unity. (#24714)
    • Fix to not require libc-dev on .NET 5 or later. (#24485)
    • C#: Make Grpc.Core nuget slimmer by moving mobile support to Grpc.Core.Xamarin package. (#24380)
    • C#: Stop supporting 32bit runtime for linux and macos . (#24378)
    • Modernize C# HelloworldXamarin example. (#24425)

    Objective-C

    • Support swift package manager for grpc-core and grpc-cpp. (#24571)
    • Add transport information into grpc-objc user-agent. (#24253)
    • Bump iOS and OSX version. (#24282)

    PHP

    • PHP: add support for PHP 8 in PECL extension. (#24621)
    • PHP: deprecate PHP 5 support from PECL extension. (#24353)

    Python

    • Incur setuptools as an dependency for grpcio_tools. (#24752)
    • Stop the spamming log generated by ctrl-c for AsyncIO server. (#24718)
    • [gRPC Easy] Make Well-Known Types Available to Runtime Protos. (#24478)
    • Bump MACOSX_DEPLOYMENT_TARGET to 10.10 for Python. (#24480)
    • Make Python 2 an optional dependency for Bazel build. (#24407)
    • [Linux] [macOS] Support pre-compiled Python 3.9 wheels. (#24356)

    Ruby

    • Bump MACOSX_DEPLOYMENT_TARGET to 10.10 for Ruby. (#24479)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_plugin-1.34.0-macos-x86_64.zip(703.32 KB)
  • v1.34.0-pre1(Nov 19, 2020)

  • v1.33.2(Oct 28, 2020)

    This is the 1.33.2 release (geeky) of gRPC Core.

    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 release contains refinements, improvements, and bug fixes, with highlights listed below.

    Core

    • Deprecate GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS. (#24063)
    • Expose Cronet error message to the application layer. (#24083)
    • Remove grpc_channel_ping from surface API. (#23894)
    • Do not send BDP pings if there is no receive side activity. (#22997)

    C++

    • Makefile: only support building deps from submodule. (#23957)

    C#

    • Add trimming attribute to BindServiceMethodAttribute. (#24217)
    • Fix incremental build of csproj projects depending on grpc. (#23391)

    Python

    • [Backport] Implement grpc.Future interface in SingleThreadedRendezvous. (#24574)
    • [Backport] Make Python 2 an optional dependency for Bazel build. (#24452)
    • Allow asyncio API to be imported as grpc.aio. (#24289)
    • [gRPC Easy] Fix import errors on Windows. (#24124)
    • Make version check for importlib.abc in grpcio-tools more stringent. (#24098)
    Source code(tar.gz)
    Source code(zip)
  • v1.33.1(Oct 21, 2020)

    This is the 1.33.1 release (geeky) of gRPC Core.

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

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

    Core

    • Deprecate GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS. (#24063)
    • Expose Cronet error message to the application layer. (#24083)
    • Remove grpc_channel_ping from surface API. (#23894)
    • Do not send BDP pings if there is no receive side activity. (#22997)

    C++

    • Makefile: only support building deps from submodule. (#23957)

    C#

    • Add trimming attribute to BindServiceMethodAttribute. (#24217)
    • Fix incremental build of csproj projects depending on grpc. (#23391)

    Python

    • [Backport] Make Python 2 an optional dependency for Bazel build. (#24452)
    • Allow asyncio API to be imported as grpc.aio. (#24289)
    • [gRPC Easy] Fix import errors on Windows. (#24124)
    • Make version check for importlib.abc in grpcio-tools more stringent. (#24098)
    Source code(tar.gz)
    Source code(zip)
    grpc_objective_c_plugin-1.33.1-macos-x86_64.zip(703.33 KB)
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.5k Jan 6, 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 22 Jan 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.2k Jan 12, 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 751 Jan 14, 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 Sep 10, 2021
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 2k Jan 17, 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 2 Jan 19, 2022
Software for an e-book library, in Bulgarian only. Based on Symfony3 and Doctrine 2.

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

null 43 Jan 12, 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 4 Nov 19, 2021
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 11 Jan 3, 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 93 Jan 10, 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 4 Oct 4, 2021
Hyperf instant messaging program based on swoole framework

Hyperf instant messaging program based on swoole framework

null 16 Jan 6, 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 2 Dec 14, 2021
🎁 Datagrid component project skeleton based on Nette Framework

?? Datagrid component project skeleton based on Nette Framework

Contributte 2 Jan 10, 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 185 Nov 15, 2021
PHP Kafka client is used in PHP-FPM and Swoole. PHP Kafka client supports 50 APIs, which might be one that supports the most message types ever.

longlang/phpkafka Introduction English | 简体中文 PHP Kafka client is used in PHP-FPM and Swoole. The communication protocol is based on the JSON file in

Swoole Project 196 Jan 13, 2022