gRPC in D using gRPC Core

hatf0 harrison at 0xcc.pw
Tue Nov 12 00:23:25 UTC 2019


I've recently spent the past few days writing a higher-level 
wrapping around gRPC Core (attempting to keep everything as safe 
as possible), and have reached a point where technical demos are 
possible. There are definitely some bugs that I have to work out 
(and LOTS of code to document.. this was mostly an experiment to 
see if it would work or not), but I'd definitely like to get the 
community's take and help on maintaining this library.

Currently, bidirectional streaming (server <-> client) is broken 
for an unknown reason, but client OR server streaming 
independently work great (using Fibers!). The library is highly 
multi-threaded (each "Service" has a thread spun up for it), 
implementing mutexes up the wazoo (the majority of which I 
definitely think are unnecessary, but there is very little 
documentation for gRPC Core which specifies memory safety..). As 
well, the client-side has not been fully finished (rather, I've 
been focusing much more on the server side as it's easier to 
debug), however, the library is usable at it's current state 
(while being a little rough due to lots of debugging "writeln"s 
being all over the place), and it requires a modified version of 
the protobuf compiler written by Dracos Carp. You can pull a 
rudimentary version of the library from here: 
https://github.com/hatf0/grpc-d, with the forked protobuf 
compiler being available here: 
https://github.com/hatf0/protobuf-d, and the gRPC "greeter" 
example available here: https://github.com/hatf0/grpc-demo.


More information about the Digitalmars-d-announce mailing list