Frequently Asked Questions

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.
  • gRPC supports 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.
  • gRPC provides 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.

Where did fbsimctl go?#

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 idb.

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.