I really like the idea of being able to consistently and reliably reproduce these hard asynchronous bugs. I have heard engineers working with customers and finding it hard to understand and fix issues because the issue happens in certain conditions that are unknown. This leads to many issues left unresolved or fixed through workarounds that seem to hold things up.<p>Coyote now empowers the developers, by not only identifying hard to find bugs, but also enable them to replay these bugs and study the root cause and make a solid fix. This should help with stability and uptime of services over time.
Super happy to see Coyote publicly released. Our team within Azure has used it on a number of services and cannot say enough good things about it. It has allowed us to develop code knowing that safety and liveness violations due to subtle race conditions are caught in testing and design time instead of production! For folks familiar with software verification tools, you might know the project as P#. Coyote is an evolution of P# and adds support for testing task-based programming (.NET's TPL framework) in addition to the state-machine based actor programming model.
Coyote brings a fundamental and revolutionary change in the design, development and testing of asynchronous systems:<p>- Finding even the most obscure concurrency bugs even before pushing to production?<p>- All done on your laptop and in no time?<p>- Giving you a full repro in the Debugger?<p>Not only are big professional teams in Azure reporting this, but I personally have benefited enormously from being able to use Coyote in my work.
Coyote is very useful for developing and testing asynchronous services particularly in the context of hard to find async bugs. We can feel confident in the quality of the services we build and deploy to production using Coyote.