Why use gRPC?
gRPC has a number of benefits for this project:
- Evolution of interfaces means that features can be added for particular calls added, without the need for numeric versioning.
gRPCsupports bidirectional streams. This is hugely beneficial for commands that produce incremental output of an indeterminate length. For example, this is heavily used in streaming video or logs from iOS.
gRPCprovides flexibility in the implementation of the server/companion. This may allow us to migrate
idb's companion server to a Swift implementation away from a Objective-C++ one without affecting the client's implementation.
fbsimctl has now been removed from the codebase.
idb is it's replacement. We learned a lot thought building
fbsimctl which has informed a lot of the design considerations for
idb. For instance, it had a very provisional "RPC" mechanism via sending HTTP requests which was one of the design goals of
idb. All commands that
fbsimctl has implemented are now implemented by
The last working version of
fbsimctl is tagged as
v1.1.0, which you can build or fork from. It has been removed from the codebase in the interests of clarity.