{"id":743263,"date":"2020-04-30T10:51:19","date_gmt":"2020-04-30T17:51:19","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/?post_type=msr-research-item&#038;p=743263"},"modified":"2021-05-03T10:58:12","modified_gmt":"2021-05-03T17:58:12","slug":"better-design-implementation-and-testing-of-async-systems-with-coyote","status":"publish","type":"msr-video","link":"https:\/\/www.microsoft.com\/en-us\/research\/video\/better-design-implementation-and-testing-of-async-systems-with-coyote\/","title":{"rendered":"Better design, implementation, and testing of async systems with Coyote"},"content":{"rendered":"<p>Software is becoming increasingly more distributed, making asynchronous programming the norm, yet programming languages and tools have been slow to provide the help needed to really address all the complexities that arise when building reliable async software. The Coyote project is a new open-source library from Microsoft Research designed to help developers solve challenging problems with concurrency and non-determinism in their code. Coyote also provides an advanced testing tool capable of quickly and systematically testing your code to automatically identify bugs, including safety and liveness violations. In addition, these bugs can be reproduced using Coyote\u2019s replay capability, making it easy to debug a system.<\/p>\n<p>In this webinar, Chris Lovett, Principal Software Engineer at Microsoft Research, will introduce Coyote and demonstrate how it can help developers write correct async code with confidence. To convey this complicated subject in a practical way, this webinar will walk you through Coyote sample code and show you how to test and visualize that code with the powerful Coyote testing tool. Lovett will also discuss how Coyote is being used by Microsoft Azure today.<\/p>\n<p>Together, you\u2019ll explore:<\/p>\n<ul>\n<li>The causes of complexity in async code, including sources of non-determinism<\/li>\n<li>Tackling this complexity using Coyote and its testing tool<\/li>\n<li>Coyote\u2019s two programming models\u2014the asynchronous tasks programming model and the more advanced asynchronous actors programming model<\/li>\n<li>Sample code in C#<\/li>\n<\/ul>\n<p><strong>Resource list:<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/project\/coyote\/\">Microsoft Coyote<\/a> (project page)<\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/blog\/coyote-making-it-easier-for-developers-to-build-reliable-asynchronous-software\/\">Coyote: Making it easier for developers to build reliable asynchronous software<\/a> (blog March 23, 2020)<\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/blog\/reinforcing-program-correctness-with-reinforcement-learning\/\">Reinforcing program correctness with reinforcement learning<\/a> (blog April 14, 2021)<\/li>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/microsoft.github.io\/coyote\/\" target=\"_blank\" rel=\"noopener noreferrer\">Coyote (microsoft.github.io)<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/github.com\/microsoft\/coyote\/\" target=\"_blank\" rel=\"noopener noreferrer\">Coyote GitHub Repository<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/github.com\/microsoft\/coyote-samples\" target=\"_blank\" rel=\"noopener noreferrer\">Coyote GitHub Samples Repository<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/gitter.im\/Microsoft\/coyote\" target=\"_blank\" rel=\"noopener noreferrer\">Coyote Gitter Community Channel<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/people\/clovett\">Chris Lovett<\/a> (researcher profile)<\/li>\n<\/ul>\n<p>*This on-demand webinar features a previously recorded Q&A session and open captioning.<\/p>\n<p>Explore more Microsoft Research webinars: <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https:\/\/aka.ms\/msrwebinars\">https:\/\/aka.ms\/msrwebinars<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Software is becoming increasingly more distributed, making asynchronous programming the norm, yet programming languages and tools have been slow to provide the help needed to really address all the complexities that arise when building reliable async software. The Coyote project is a new open-source library from Microsoft Research designed to help developers solve challenging problems [&hellip;]<\/p>\n","protected":false},"featured_media":743266,"template":"","meta":{"msr-url-field":"","msr-podcast-episode":"","msrModifiedDate":"","msrModifiedDateEnabled":false,"ep_exclude_from_search":false,"_classifai_error":"","msr_hide_image_in_river":0,"footnotes":""},"research-area":[13556,13560],"msr-video-type":[],"msr-locale":[268875],"msr-post-option":[],"msr-session-type":[],"msr-impact-theme":[],"msr-pillar":[],"msr-episode":[],"msr-research-theme":[],"class_list":["post-743263","msr-video","type-msr-video","status-publish","has-post-thumbnail","hentry","msr-research-area-artificial-intelligence","msr-research-area-programming-languages-software-engineering","msr-locale-en_us"],"msr_download_urls":"","msr_external_url":"https:\/\/youtu.be\/LOMOGN6D0_E","msr_secondary_video_url":"","msr_video_file":"","_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/743263","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/types\/msr-video"}],"version-history":[{"count":1,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/743263\/revisions"}],"predecessor-version":[{"id":743269,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/743263\/revisions\/743269"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media\/743266"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media?parent=743263"}],"wp:term":[{"taxonomy":"msr-research-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/research-area?post=743263"},{"taxonomy":"msr-video-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video-type?post=743263"},{"taxonomy":"msr-locale","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-locale?post=743263"},{"taxonomy":"msr-post-option","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-post-option?post=743263"},{"taxonomy":"msr-session-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-session-type?post=743263"},{"taxonomy":"msr-impact-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-impact-theme?post=743263"},{"taxonomy":"msr-pillar","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-pillar?post=743263"},{"taxonomy":"msr-episode","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-episode?post=743263"},{"taxonomy":"msr-research-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-theme?post=743263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}