{"id":89094,"date":"2021-11-29T09:00:32","date_gmt":"2021-11-29T17:00:32","guid":{"rendered":""},"modified":"2025-05-29T14:41:46","modified_gmt":"2025-05-29T21:41:46","slug":"progress-on-making-ebpf-work-on-windows","status":"publish","type":"post","link":"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/","title":{"rendered":"Progress on making eBPF work on Windows"},"content":{"rendered":"\n<p><a href=\"https:\/\/ebpf.io\" target=\"_blank\" rel=\"noopener\">eBPF<\/a> is a well-known, but revolutionary, technology for providing programmability, extensibility, and agility. eBPF has been applied to use cases such as denial-of-service protection and observability. In May 2021, we <a href=\"https:\/\/cloudblogs.microsoft.com\/opensource\/2021\/05\/10\/making-ebpf-work-on-windows\/\" target=\"_blank\" rel=\"noopener\">announced the effort to make eBPF work on Windows<\/a>, and were encouraged by the huge amount of interest. Six months have passed since then, and we have achieved some significant milestones worthy of mention.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"announcements-and-talks\">Announcements and talks<\/h2>\n\n\n\n<p>In June, we did an <a href=\"https:\/\/www.youtube.com\/watch?v=LrrV-eo6fug&amp;t=2139s\" target=\"_blank\" rel=\"noopener\">eCHO live stream episode on eBPF for Windows<\/a>. Less than two months later, we were part of another huge <a href=\"https:\/\/isovalent.com\/blog\/post\/2021-08-ebpf-foundation-announcement\" target=\"_blank\" rel=\"noopener\">announcement for the whole eBPF ecosystem<\/a>: the creation of the <a href=\"https:\/\/ebpf.io\/\" target=\"_blank\" rel=\"noopener\">eBPF Foundation<\/a> with Microsoft as one of the founding members!&nbsp;&nbsp; We expect this foundation will encourage collaboration across the industry and help many projects, including eBPF for Windows.<\/p>\n\n\n\n<p>A week later, we gave a <a href=\"https:\/\/youtu.be\/Kp3PHPuFkaA?t=12463\" target=\"_blank\" rel=\"noopener\">keynote talk on eBPF for Windows<\/a> at the eBPF Summit, and then an <a href=\"https:\/\/youtu.be\/1EB2kXsO40c\" target=\"_blank\" rel=\"noopener\">invited talk on the cross-platform future of eBPF<\/a> at Cloud Native eBPF Day, co-located with KubeCon. We\u2019ve been excited by the energy we\u2019ve seen from others around these discussions and look forward to continued collaboration as we continue the journey on eBPF for Windows.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ebpf-for-windows\">eBPF for Windows<\/h2>\n\n\n\n<p>Let\u2019s talk about the great progress we\u2019ve made over the past six months on the <a href=\"https:\/\/github.com\/microsoft\/ebpf-for-windows\" target=\"_blank\" rel=\"noopener\">eBPF for Windows project<\/a>. When we first announced the project, there were relatively few APIs available to eBPF programs, and no support yet for the de facto standard <a href=\"https:\/\/github.com\/libbpf\/libbpf\" target=\"_blank\" rel=\"noopener\">libbpf APIs<\/a>. The table below shows the progress on several dimensions:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Dimension<\/strong><\/td><td><strong>May <\/strong><strong>2021<\/strong><\/td><td><strong>November 2021<\/strong><\/td><\/tr><tr><td><em>Standard libbpf APIs<\/em><\/td><td>0<\/td><td>68<\/td><\/tr><tr><td><em>Standard helper functions for eBPF programs<\/em><\/td><td>3<\/td><td>11<\/td><\/tr><tr><td><em>Standard map types<\/em><\/td><td>2<\/td><td>12<\/td><\/tr><tr><td><em>XDP hook actions<\/em><\/td><td>2<\/td><td>3<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>&nbsp;<\/p>\n\n\n\n<p>In particular, we have tried to focus on some of the most used APIs and map types, to unblock key application scenarios. For example, eBPF for Windows now includes the following eBPF features, among others:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Support for loops.<\/li>\n\n\n\n<li>Support for tail calls, where an eBPF program can call another eBPF program.<\/li>\n\n\n\n<li>Support for pinned programs and maps.<\/li>\n\n\n\n<li>Support for many of the top commands in the bpftool utility used for managing eBPF programs on the local machine.<\/li>\n\n\n\n<li>Support for the XDP_TX action to allow retransmitting a packet.<\/li>\n\n\n\n<li>Improved readability and understandability of verifier failure messages.<\/li>\n\n\n\n<li>Ability to verify a wider set of eBPF programs, including every eBPF program we\u2019ve found so far that uses supported hooks and helper functions. The <a href=\"https:\/\/github.com\/vbpf\/ebpf-verifier\" target=\"_blank\" rel=\"noopener\">PREVAIL verifier<\/a> itself has test cases verifying eBPF programs from Cilium, Falco, and various other projects, and we have been improving this, so more can be successfully verified, such as additional Cilium programs that were not previously part of the verifier test runs.<\/li>\n\n\n\n<li>Various performance benchmarking and improvements.<\/li>\n<\/ul>\n\n\n\n<p>In order to increase usability, we spent efforts making sure that all eBPF for Windows hooks, helper functions, and <a href=\"https:\/\/microsoft.github.io\/ebpf-for-windows\/\" target=\"_blank\" rel=\"noopener\">libbpf APIs are fully documented<\/a>. The eBPF for Windows project also provides a framework where extensions can be added at any time, even during runtime, and so we created a sample extension and <a href=\"https:\/\/github.com\/microsoft\/ebpf-for-windows\/blob\/master\/docs\/eBpfExtensions.md\" target=\"_blank\" rel=\"noopener\">documentation on how to create a new extension<\/a> with hooks and helpers.<\/p>\n\n\n\n<p>Finally, we improved our test infrastructure so that every pull request is validated with the eBPF for Windows runtime running in kernel mode, using a constantly increasing set of hundreds of test cases.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"looking-ahead\">Looking ahead<\/h2>\n\n\n\n<p>We\u2019ve come a long way over the past six months, but let\u2019s mention a few areas of focus for the path ahead. First, we\u2019d like to enable other existing eBPF applications and projects to work on top of eBPF for Windows by continuing to collect requirements from customers and ensure that they can be met on top of Windows.<\/p>\n\n\n\n<p>Second, and in support of the first goal, although we\u2019ve made huge strides in terms of application APIs and eBPF program helper functions, we\u2019d like to expand the set of eBPF program types and hook points to which they can be attached, to enable new scenarios for observability for example.&nbsp; In fact, observability hooks are probably our most requested future feature, and we invite collaborators to contribute to this effort, whether through pull requests or extensions as discussed earlier.<\/p>\n\n\n\n<p>And finally, we want to continue the security hardening work needed for eBPF for Windows to be ready for use in production.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-collaborate\">How to collaborate<\/h2>\n\n\n\n<p>We welcome all contributions and suggestions and look forward to continued collaboration with the rest of the eBPF community on this exciting journey. You can reach us on our <a href=\"https:\/\/cilium.slack.com\/archives\/C02EF7ACLKS\" target=\"_blank\" rel=\"noopener\">Slack channel<\/a>, through our <a href=\"https:\/\/github.com\/microsoft\/ebpf-for-windows\/discussions\" target=\"_blank\" rel=\"noopener\">GitHub discussions<\/a>, or join us at our <a href=\"https:\/\/github.com\/microsoft\/ebpf-for-windows\/discussions\/427\" target=\"_blank\" rel=\"noopener\">weekly public Zoom meetings<\/a> at 8:30 AM Pacific Time.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>eBPF is a well-known, but revolutionary, technology for providing programmability, extensibility, and agility. eBPF has been applied to use cases such as denial-of-service protection and observability. In May 2021, we announced the effort to make eBPF work on Windows, and were encouraged by the huge amount of interest.<\/p>\n","protected":false},"author":5562,"featured_media":95462,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"msxcm_post_with_no_image":false,"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","footnotes":""},"post_tag":[2272,227],"content-type":[361],"topic":[2244,2251,2252],"programming-languages":[],"coauthors":[1790],"class_list":["post-89094","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-microsoft","tag-windows","content-type-project-updates","topic-devops","topic-it-trends","topic-tools","review-flag-2-1593580437-411","review-flag-3-1593580442-169","review-flag-8-1593580468-572","review-flag-new-1593580248-669"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Progress on making eBPF work on Windows | Microsoft Open Source Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Progress on making eBPF work on Windows | Microsoft Open Source Blog\" \/>\n<meta property=\"og:description\" content=\"eBPF is a well-known, but revolutionary, technology for providing programmability, extensibility, and agility. eBPF has been applied to use cases such as denial-of-service protection and observability. In May 2021, we announced the effort to make eBPF work on Windows, and were encouraged by the huge amount of interest.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Open Source Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-29T17:00:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-29T21:41:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/1920-Panel8-FeatureHeader-Modernize.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1170\" \/>\n\t<meta property=\"og:image:height\" content=\"640\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Dave Thaler\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@OpenAtMicrosoft\" \/>\n<meta name=\"twitter:site\" content=\"@OpenAtMicrosoft\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dave Thaler\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 min read\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/\"},\"author\":[{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/author\/dave-thaler\/\",\"@type\":\"Person\",\"@name\":\"Dave Thaler\"}],\"headline\":\"Progress on making eBPF work on Windows\",\"datePublished\":\"2021-11-29T17:00:32+00:00\",\"dateModified\":\"2025-05-29T21:41:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/\"},\"wordCount\":766,\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/1920-Panel8-FeatureHeader-Modernize.webp\",\"keywords\":[\"Microsoft\",\"Windows\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/\",\"name\":\"Progress on making eBPF work on Windows | Microsoft Open Source Blog\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/1920-Panel8-FeatureHeader-Modernize.webp\",\"datePublished\":\"2021-11-29T17:00:32+00:00\",\"dateModified\":\"2025-05-29T21:41:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/#primaryimage\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/1920-Panel8-FeatureHeader-Modernize.webp\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/1920-Panel8-FeatureHeader-Modernize.webp\",\"width\":1170,\"height\":640},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/opensource.microsoft.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Progress on making eBPF work on Windows\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/\",\"name\":\"Microsoft Open Source Blog\",\"description\":\"Open dialogue about openness at Microsoft \u2013 open source, standards, interoperability\",\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/opensource.microsoft.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\",\"name\":\"Microsoft Open Source Blog\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"width\":259,\"height\":194,\"caption\":\"Microsoft Open Source Blog\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/OpenAtMicrosoft\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Progress on making eBPF work on Windows | Microsoft Open Source Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/","og_locale":"en_US","og_type":"article","og_title":"Progress on making eBPF work on Windows | Microsoft Open Source Blog","og_description":"eBPF is a well-known, but revolutionary, technology for providing programmability, extensibility, and agility. eBPF has been applied to use cases such as denial-of-service protection and observability. In May 2021, we announced the effort to make eBPF work on Windows, and were encouraged by the huge amount of interest.","og_url":"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/","og_site_name":"Microsoft Open Source Blog","article_published_time":"2021-11-29T17:00:32+00:00","article_modified_time":"2025-05-29T21:41:46+00:00","og_image":[{"width":1170,"height":640,"url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/1920-Panel8-FeatureHeader-Modernize.png","type":"image\/png"}],"author":"Dave Thaler","twitter_card":"summary_large_image","twitter_creator":"@OpenAtMicrosoft","twitter_site":"@OpenAtMicrosoft","twitter_misc":{"Written by":"Dave Thaler","Est. reading time":"3 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/#article","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/"},"author":[{"@id":"https:\/\/opensource.microsoft.com\/blog\/author\/dave-thaler\/","@type":"Person","@name":"Dave Thaler"}],"headline":"Progress on making eBPF work on Windows","datePublished":"2021-11-29T17:00:32+00:00","dateModified":"2025-05-29T21:41:46+00:00","mainEntityOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/"},"wordCount":766,"publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/1920-Panel8-FeatureHeader-Modernize.webp","keywords":["Microsoft","Windows"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/","url":"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/","name":"Progress on making eBPF work on Windows | Microsoft Open Source Blog","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/#primaryimage"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/1920-Panel8-FeatureHeader-Modernize.webp","datePublished":"2021-11-29T17:00:32+00:00","dateModified":"2025-05-29T21:41:46+00:00","breadcrumb":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/#primaryimage","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/1920-Panel8-FeatureHeader-Modernize.webp","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/1920-Panel8-FeatureHeader-Modernize.webp","width":1170,"height":640},{"@type":"BreadcrumbList","@id":"https:\/\/opensource.microsoft.com\/blog\/2021\/11\/29\/progress-on-making-ebpf-work-on-windows\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/opensource.microsoft.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Progress on making eBPF work on Windows"}]},{"@type":"WebSite","@id":"https:\/\/opensource.microsoft.com\/blog\/#website","url":"https:\/\/opensource.microsoft.com\/blog\/","name":"Microsoft Open Source Blog","description":"Open dialogue about openness at Microsoft \u2013 open source, standards, interoperability","publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/opensource.microsoft.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/opensource.microsoft.com\/blog\/#organization","name":"Microsoft Open Source Blog","url":"https:\/\/opensource.microsoft.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","width":259,"height":194,"caption":"Microsoft Open Source Blog"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/OpenAtMicrosoft"]}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Open Source Blog","distributor_original_site_url":"https:\/\/opensource.microsoft.com\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/89094","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/users\/5562"}],"replies":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/comments?post=89094"}],"version-history":[{"count":2,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/89094\/revisions"}],"predecessor-version":[{"id":97491,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/89094\/revisions\/97491"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media\/95462"}],"wp:attachment":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media?parent=89094"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/post_tag?post=89094"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/content-type?post=89094"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/topic?post=89094"},{"taxonomy":"programming-languages","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/programming-languages?post=89094"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/coauthors?post=89094"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}