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)
- ~master released a year ago
- hatf0/grpc-d
- WTFPL
- Copyright © 2020, Harrison Ford
- Authors:
- 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 - Download Stats:
-
-
0 downloads today
-
0 downloads this week
-
0 downloads this month
-
0 downloads total
-
- Score:
- 0.0
- Short URL:
- grpc-d-core.dub.pm