Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

What's your take on Coyote? #251

Open
JohnNilsson opened this issue Jun 9, 2020 · 3 comments
Open

What's your take on Coyote? #251

JohnNilsson opened this issue Jun 9, 2020 · 3 comments

Comments

@JohnNilsson
Copy link

Microsoft recently release a new actor implementation: Coyote

So I was wondering how this relates to Reliable Actors:

What has been learnt since Orleans and Reliable Actors?

Will elements of Coyote be incorporated into Reliable Actors?

@esbenbach
Copy link

This pretty much does a comparrison with SF: https://microsoft.github.io/coyote/learn/programming-models/actors/why-actors

@JohnNilsson
Copy link
Author

I'm hoping for something a bit more opinionated than "there have also been instances". What's the take away?

@WhitWaldo
Copy link

WhitWaldo commented Nov 16, 2022

Updated link on the Coyote docs: https://microsoft.github.io/coyote/#concepts/actors/why-actors/

@JohnNilsson I haven't yet used Coyote, but having read through the docs this morning, both use the same single-threaded execution model, I'd say there are two large differences:

  • Coyote lacks a distributed runtime, so it's an actor solution that requires hosting on some other runtime
  • It appears designed entirely around a test-like-it-runs-in-production philosophy where instead treating a test suite as something run in parallel just from a speed perspective and the runtime as one run in more a concurrent real-world manner, it attempts to perform more rigorous test coverage to run that test suite in a real-world manner complete with all the concurrency bugs you might not readily encounter locally. It can produce a DGML diagram showing state transitions leading up to a bug and supports reproduction of bugs using async, await, lock, using the common System.Threading.Tasks types in the TPL including Task, Task<TResult> and TaskCompletionSource<TResult> as well as Monitor in System.Threading.

Other notes:

  • C# only with a dependency only on .NET Core running atop the .NET Task Parallel Library
  • Cross-platform on .NET Standard 2.0+
  • Installed via NuGet package (Microsoft.Coyote or individually with Microsoft.Coyote.Core and Microsoft.Coyote.Test). They also offer a CLI tool that can be installed globally with Microsoft.Coyote.CLI (or Microsoft.Coyote.Tool for Windows-only .NET)

I'm looking forward to playing around with it atop a reliable service as it looks like it might really help from a testability perspective.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants