SuperDARNCanada / borealis

A control system for USRP based digital radars
GNU General Public License v3.0
11 stars 7 forks source link

Remove protobuf dependency #474

Open RemingtonRohel opened 2 months ago

RemingtonRohel commented 2 months ago

The protobuf library is a large dependency with complex installation steps that have caused headaches in the past (PGR 2022 site trip comes to mind). This library used to be used extensively when the DSP code was in C++, but since that has been moved to Python the only inter-language communication is with the usrp_driver module. It would be worthwhile investigating a different messaging protocol such as msgpack or JSON. See here for a comparison of the three protocols.

RemingtonRohel commented 1 month ago

Cap'n Proto is a possible substitute. The installation seems straightforward, there is no encoding/decoding step, it is written in C++ with Python wrappers, and it boasts being even faster than Protobuf. It also may be possible to use shared memory to avoid sending messages over the wire but instead just access the same message from C++ and Python processes without copies.