grpc-d-core ~master

gRPC Core Implementation for DLang


To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:

gRPC-D-Core

Purpose

This library is intended to provide better RPC support for the D Language (and provide interop with major systems), while being lightweight with little overhead.

Design Goals

  • Utilize the metaprogramming facilities in the language to avoid massive hurdles that other languages have had to jump over (see C++, where the programming model is incredibly strange and foreign)
  • Perform massive amounts of computation and generation at compile-time to avoid adding extra runtime complexity
  • Heavily multithread service requests (to avoid the problem that Rust developers are currently facing)
  • Make ease of use of the library a priority, not an after-thought.
  • Reach performance that is near native C++ performance, but significantly easier to use.
  • Avoid invoking the garbage collector as much as possible

Progress

IMPORTANT: As of current, the library is server-only. This will change in the future, and client functionality IS planned. Pre-alpha (until more extensive validation takes place)

Known quirks

  • Compiling .proto files must be done with the custom compiler plugin here, rather then using the compiler plugin from protobuf-d
    • This is due to the compiler generating custom attributes that are not normally emitted (and handling the ServiceDescriptors)
  • The library will spawn multiple workers (and, thus, multiple instances of a handler class)
    • This is normally not an issue with simple classes, however, if your class loads data from disk, this should be a consideration.
    • The worker value (for each call) will be tunable in future releases

Example applications

  • grpc-demo: This program fully complies to the HelloWorld example contained within the gRPC source, and demonstrates the simplex performance of this library.
  • grpc-route-guide: This program fully complies to the RouteGuide example contained within the gRPC source, and demonstrates how easy streaming is to take advantage of.

Planned features

  • [ ] Document library (and code in it's entirety)
  • [ ] Unit test functionality
  • [ ] Optimize, optimize, optimize
  • [ ] Implement the client interface
  • [ ] Improve exception handling (currently it can lead to a segfault in rare occasions)
  • [ ] channelz/reflection support
  • [X] Implement the server interface
  • [ ] Enable compression/encrypted communication
  • [ ] Allow for full server/client configuration (tuning via grpc{channel,server}args)
Authors:
  • Harrison Ford
Dependencies:
emsi_containers, protobuf, automem, grpc-d-interop
Versions:
0.0.3 2023-Jun-27
0.0.2 2020-Jul-09
0.0.1 2020-Jun-25
~master 2023-Jun-27
Show all 4 versions
Download Stats:
  • 0 downloads today

  • 0 downloads this week

  • 0 downloads this month

  • 25 downloads total

Score:
0.1
Short URL:
grpc-d-core.dub.pm