Skip to content

test-mass-forker-org-1/coyote-scheduler

 
 

Repository files navigation

Coyote Native Scheduler

Windows CI Linux CI

An experimental C++ header-only library for language-agnostic systematic concurrency testing.

The library provides APIs that allow you to instrument your runtime for (1) declaring concurrent operations and synchronization resources. (2) taking control of these operations and resources, and (3) systematically exploring interleavings. The library also exposes an FFI for interop with other languages.

This library is part of the Coyote project by Microsoft Research. To learn more about the research behind our technology, check out our published papers here.

We welcome open source contributions.

Note: This library is not an officially supported project and is provided As-Is.

How to build

On Linux, run the following bash script from the root directory:

./scripts/build.sh

On Windows, run the following script for a VS 2019 developer command prompt:

scripts\build.bat

After building the project, you can find a static and shared library in bin.

For more detailed building instructions (e.g. if you want to build without the scripts), read here.

Note: the build/ci scripts do not currently work on macOS, feel free to contribute!

How to use

To use the Coyote scheduler in a C++ project, link the static or shared library to your project, and include the following header file (from the include directory):

#include "coyote/scheduler.h"

Then use the Coyote scheduling APIs to instrument your code similar to our examples here.

To use the FFI from a language that requires importing a dll or so, follow the build instructions below to build the shared library.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repositories using our CLA.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

About

Language-agnostic systematic concurrency testing.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 94.9%
  • CMake 3.0%
  • Other 2.1%