HoneyBee is a Swift library to increase the expressiveness of asynchronous and concurrent programming. HoneyBee design follows a few principles:
Example: Show Me.
In the above recipe,
Example: BYOC (Bring Your Own Code)
In the above recipe we see six of HoneyBee’s supported function signatures.
HoneyBee supports 34 distinct function signatures.
Example: Safe By Default
One of the many problems with the “pyramid of doom” is that error handling is hard to get right.
The above naive, “happy path” code has no error handling. Let’s add the most principled form of handling now:
Not very pretty, right? And there’s still issues here. This form of
So much cleaner right? And Bonus Points, the HoneyBee implementation allows us to parallelize the first two async calls to
(If you’re wondering about the
Diagnosing problems in misbehaving concurrent code is really hard right? Not with HoneyBee. Consider the following:
HoneyBee pinpoints the file and line where the recipe errored, along with the path which was taken to arrive at that function, and the inbound “subject” value. In most cases this reduces your diagnostic search process to a single function.
By default HoneyBee performs all functions on the global background queue. What if you need to work on the main queu?
Easy right? Need to change queues? What about
HoneyBee puts you in complete control of what queue will invoke your functions. This remains true even if the functions themselves call back on different queues than they were invoked from.
So that’s HoneyBee. Expressive, easy, and safe. Concurrency the way it should be. If you have any questions, contact me.