{"id":97104,"date":"2025-02-11T07:00:00","date_gmt":"2025-02-11T15:00:00","guid":{"rendered":""},"modified":"2025-08-13T14:54:14","modified_gmt":"2025-08-13T21:54:14","slug":"hyperlight-creating-a-0-0009-second-micro-vm-execution-time","status":"publish","type":"post","link":"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/","title":{"rendered":"Hyperlight: Achieving 0.0009-second micro-VM execution time"},"content":{"rendered":"\n<p>In our previous post, <a href=\"https:\/\/aka.ms\/hyperlight-announcement\">we introduced Hyperlight<\/a>, a Rust library designed to let developers leverage hypervisor technologies like kernel-based virtual machine (KVM) or Hyper-V to execute untrusted code within micro virtual machines\u2014without the overhead of a full operating system and with cold start performance measured in microseconds to low milliseconds.&nbsp;<\/p>\n\n\n\n<p>Fast forward to <strong>KubeCon North America 2024<\/strong>, held just this past November, where Hyperlight took the keynote stage for an exciting introduction and demonstration. In this post, we\u2019ll take the demo application we used on stage and show how it demonstrates one way you can use Hyperlight in your applications.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-happened-on-the-big-stage\">What happened on the big stage?&nbsp;<\/h2>\n\n\n\n<p>During the keynote, Microsoft\u2019s <a href=\"https:\/\/youtu.be\/f8ornY7h2KE?feature=shared&amp;t=290\" target=\"_blank\" rel=\"noreferrer noopener\">Rita Zhang demonstrated<\/a> how Hyperlight can execute multiple functions inside a micro virtual machine and return results in just <strong>0.0009 seconds on average<\/strong>.&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-1-1024x401.webp\" alt=\"Microsoft&rsquo;s Rita Zhang stands on the KubeCon stage to introduce and demo the Hyperlight project.\" class=\"wp-image-97111 webp-format\" style=\"box-shadow:var(--wp--preset--shadow--natural)\" srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-1-1024x401.webp 1024w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-1-388x152.webp 388w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-1-768x301.webp 768w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-1-450x176.webp 450w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-1-650x255.webp 650w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-1.webp 1431w\" data-orig-src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-1-1024x401.webp\"><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"taking-the-demo-app-apart\">Taking the demo app apart&nbsp;<\/h2>\n\n\n\n<p>Let\u2019s take a closer look at the demo and how it uses hyperlight to enable that kind of speed for a hardware-protected function! The following graphic describes the routes implemented in a simple Rust-based web server designed to mimic a developer-built application:&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-2.webp\" alt=\"A graphic of the routes the demo application has, ending in hyperlight. There are six routes all told. This article is about those ending in \/warm and \/cold.\" class=\"wp-image-97124 webp-format\" style=\"box-shadow:var(--wp--preset--shadow--natural)\" srcset=\"\" data-orig-src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-2.webp\"><\/figure>\n\n\n\n<p>This application implements the following routes:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>hyperlight\/hello-world\/cold&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>hyperlight\/hello-world\/warm&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>hyperlight\/hello-world\/safety\/deref-raw-null-prt (only in debug mode)&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>hyperlight\/hello-world\/vm-count&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>&nbsp;<br>What happens? Let\u2019s look at the host application, which starts <a href=\"https:\/\/github.com\/hyperlight-dev\/hyperlight-kubeconNA2024-demo\/blob\/9fbd85f9c8c5b67c9f607978786889801090d4aa\/demo-main\/src\/main.rs#L15\" target=\"_blank\" rel=\"noreferrer noopener\">at this line<\/a> for a <strong>\/cold<\/strong> virtual machine per request. That is implemented in hello_world.rs, <a href=\"https:\/\/github.com\/hyperlight-dev\/hyperlight-kubeconNA2024-demo\/blob\/9fbd85f9c8c5b67c9f607978786889801090d4aa\/demo-main\/src\/hyperlight\/hello_world.rs#L18\" target=\"_blank\" rel=\"noreferrer noopener\">in this line<\/a>.&nbsp;<\/p>\n\n\n\n<p>This function will create a brand-new hardware-protected micro virtual machine for each request that comes in (and destroy it afterward). Then the host application routes the cold request to the routed function but executes inside the guest micro virtual machine. <a href=\"https:\/\/github.com\/hyperlight-dev\/hyperlight-kubeconNA2024-demo\/blob\/9fbd85f9c8c5b67c9f607978786889801090d4aa\/demo-main\/src\/hyperlight\/hello_world.rs#L36-L41\" target=\"_blank\" rel=\"noreferrer noopener\">That happens here<\/a>:&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-syntaxhighlighter-code aligncenter\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 let message = \"Hello, World! I am executing inside of a VM :)\\n\".to_string();\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 multi_use_sandbox\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .call_guest_function_by_name(\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"PrintOutput\",\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ReturnType::Int,\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Some(vec![ParameterValue::String(message.clone())]),\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 )\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .unwrap();\n<\/pre><\/div><\/div>\n\n\n\n<p>But to simulate work, this function immediately calls back into the host to print something there because there isn\u2019t a print command inside the micro virtual machine (remember, there\u2019s no operating system and therefore no system print calls):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code aligncenter\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nfn print_output(message: &str) -> hyperlight_guest::error::Result<Vec<u8>> {\n\u00a0\u00a0\u00a0 call_host_function(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"HostPrint\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Some(Vec::from(&[ParameterValue::String(message.to_string())])),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ReturnType::Int,\n\u00a0\u00a0\u00a0 )?;\n\u00a0\u00a0\u00a0 let result = get_host_value_return_as_int()?;\n\u00a0\u00a0\u00a0 Ok(get_flatbuffer_result_from_int(result))\n}\n<\/pre><\/div>\n\n\n<p>The message is printed on the host\u2019s console, and the host function returns to the micro virtual machine guest, which then returns control back to the host and stops executing. Both cold and warm functions use this very same host&#8211;&gt;guest&#8211;&gt;host callback&#8211;&gt;guest-to-host path for each web request.&nbsp;<\/p>\n\n\n\n<p>In the demo on stage, we sent 1,000 requests to the warm function using five simultaneous connections, to the web server. Upon receiving a request, the web server\u2014almost like a home-baked Function-as-a-Service (FaaS) platform\u2014either creates a new micro-virtual machine (like we see if we use the <strong>\/hyperlight\/hello-world\/cold<\/strong> endpoint) or reuses pre-created micro virtual machines to execute potentially untrusted code.&nbsp;<\/p>\n\n\n\n<p>For the demo, our untrusted guest code is a pre-configured x86_64 native Executable and Linkable Format (ELF) binary that implements <a href=\"https:\/\/github.com\/hyperlight-dev\/hyperlight-kubeconNA2024-demo\/blob\/main\/demo-guest\/src\/main.rs\" target=\"_blank\" rel=\"noreferrer noopener\">each hello-world function<\/a>, but Hyperlight also runs WebAssembly or even JavaScript directly. (In future blog posts we\u2019ll dive deeper into these use cases!)&nbsp;<\/p>\n\n\n\n<p>During the 0.0009 seconds of the response, our host accessed a pre-warmed micro virtual machine. This approach skips several initialization steps, enabling faster execution. Here\u2019s what\u2019s already in place:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The virtual machine guest\u2014our supposed untrusted code\u2014has already been loaded into memory and is ready for execution inside the micro VM.&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Key memory regions, such as the guest virtual machines stack, heap, and communication buffers between the guest and host, have been pre-allocated.&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The micro virtual machine itself has been instantiated, with shared memory already mapped to it.&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A virtual CPU (vCPU) has been created within the micro virtual machine, complete with initialized registers and appropriate values.&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>&nbsp;<br>With all that already in place, the HTTP server simply pulls a pre-warmed micro virtual machine from the warm pool and calls a guest function. This involves writing potential parameters for the function call into the shared memory region between the VM guest and the HTTP server host, followed by issuing a VM run command.<\/p>\n\n\n\n<p>During this virtual machine run, the virtual machine guest calls back into the host operating system&#8217;s standard output to print &#8220;Hello, World,&#8221; then returns back into VM guest. Finally, the guest yields back to the host HTTP server, signaling the successful execution of the function call\u2014and the microVM guest is recycled, its memory reset. The command uses the <a href=\"https:\/\/github.com\/rakyll\/hey\" target=\"_blank\" rel=\"noreferrer noopener\">hey load tool<\/a>: <strong>hey -n 1000 -c 5 http:\/\/localhost:8080\/hyperlight\/hello-world\/warm<\/strong>. That\u2019s two virtual machine exits completed in just 0.0009 seconds on stage! The <strong>hey<\/strong> tool also gives a nice histogram:&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-1024x764.webp\" alt=\"Image displays a histogram showing an average latency of .0009 seconds per micro-vm.\" class=\"wp-image-97110 webp-format\" style=\"box-shadow:var(--wp--preset--shadow--natural)\" srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-1024x764.webp 1024w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-388x290.webp 388w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-768x573.webp 768w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-1536x1146.webp 1536w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-450x336.webp 450w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-650x485.webp 650w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image.webp 1600w\" data-orig-src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/image-1024x764.webp\"><\/figure>\n\n\n\n<p>This demonstration highlights how Hyperlight can bridge the gap between performance and security. Enabling near-instant function execution opens possibilities for handling real-time workloads, optimizing serverless platforms, and securely running untrusted code in production environments.&nbsp;<\/p>\n\n\n\n<p>To take a closer look at the demo code, you can <a href=\"https:\/\/github.com\/hyperlight-dev\/hyperlight-kubeconNA2024-demo\" target=\"_blank\" rel=\"noreferrer noopener\">check out its GitHub repository<\/a>. Experiment with the code, try running your own untrusted functions, and explore how Hyperlight can fit into your applications!&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-s-coming-next\">What\u2019s coming next?&nbsp;<\/h2>\n\n\n\n<p>As a newly open-sourced project, Hyperlight is actively evolving and <a href=\"https:\/\/github.com\/cncf\/sandbox\/issues\/312\" target=\"_blank\" rel=\"noreferrer noopener\">has submitted the application<\/a> to join the <strong>Cloud Native Computing Foundation (CNCF) <\/strong>Sandbox. This milestone represents an exciting opportunity for developers to shape the project\u2019s future, whether by contributing code, submitting issues, or sharing feedback on its use cases.&nbsp;<\/p>\n\n\n\n<p>Get involved by exploring the repository, trying out the demo, and engaging with the Hyperlight community. Join our bi-weekly community meetings on Wednesdays at 9 AM PST to <strong>connect with maintainers, share ideas, and collaborate on making Hyperlight even better<\/strong>. <a href=\"https:\/\/aka.ms\/hyperlight-agenda\" target=\"_blank\" rel=\"noreferrer noopener\">Put yourself or your questions on the agenda<\/a>!<\/p>\n\n\n<div class=\"wp-block-msxcm-cta-block\" data-moray data-bi-an=\"CTA Block\">\n\t<div class=\"card d-block mx-ng mx-md-0\">\n\t\t<div class=\"row no-gutters material-color-brand-light bg-fabric-white\">\n\n\t\t\t\t\t\t\t<div class=\"col-md-4\">\n\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"605\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/11\/1.16-CTA-Correct.jpg\" class=\"card-img img-object-cover\" alt=\"developer on computer\" srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/11\/1.16-CTA-Correct.jpg 600w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/11\/1.16-CTA-Correct-385x388.jpg 385w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/11\/1.16-CTA-Correct-150x150.jpg 150w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/11\/1.16-CTA-Correct-446x450.jpg 446w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/>\t\t\t\t<\/div>\n\t\t\t\n\t\t\t<div class=\"d-flex col-md\">\n\t\t\t\t<div class=\"card-body align-self-center p-4 p-md-5\">\n\t\t\t\t\t\n\t\t\t\t\t<h2>Microsoft Open Source<\/h2>\n\n\t\t\t\t\t<div class=\"mb-3\">\n\t\t\t\t\t\t<p>Open Source enables Microsoft products and services to bring choice, technology, and community to our customers<\/p>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"link-group\">\n\t\t\t\t\t\t\t<a href=\"https:\/\/opensource.microsoft.com\/\" class=\"btn btn-link text-decoration-none p-0\" target=\"_blank\">\n\t\t\t\t\t\t\t\t<span>Get involved<\/span>\n\t\t\t\t\t\t\t\t<span class=\"glyph-append glyph-append-chevron-right glyph-append-xsmall\"><\/span>\n\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this post, we\u2019ll take the demo application and show how it demonstrates one way you can use Hyperlight.<\/p>\n","protected":false},"author":6220,"featured_media":97140,"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":[],"content-type":[352,340],"topic":[2240],"programming-languages":[],"coauthors":[2595],"class_list":["post-97104","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","content-type-events","content-type-tutorials-and-demos","topic-application-development","review-flag-1593580362-584","review-flag-1593580428-734","review-flag-1-1593580432-963","review-flag-5-1593580453-725","review-flag-9-1593580473-997","review-flag-lever-1593580265-989","review-flag-micro-1680215167-604","review-flag-new-1593580248-669","review-flag-vm-1593580807-312"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Hyperlight: Achieving 0.0009-second micro-VM execution time | Microsoft Open Source Blog<\/title>\n<meta name=\"description\" content=\"In this post, we\u2019ll take the demo application and show how it demonstrates one way you can use Hyperlight in your applications.\u00a0Learn more.\" \/>\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\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hyperlight: Achieving 0.0009-second micro-VM execution time | Microsoft Open Source Blog\" \/>\n<meta property=\"og:description\" content=\"In this post, we\u2019ll take the demo application and show how it demonstrates one way you can use Hyperlight in your applications.\u00a0Learn more.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Open Source Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-11T15:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-13T21:54:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/MSC24-India-business-Adobe-550638570-rgb-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Danilo Chiarlone\" \/>\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=\"Danilo Chiarlone\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 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\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/\"},\"author\":[{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/author\/danilo-chiarlone\/\",\"@type\":\"Person\",\"@name\":\"Danilo Chiarlone\"}],\"headline\":\"Hyperlight: Achieving 0.0009-second micro-VM execution time\",\"datePublished\":\"2025-02-11T15:00:00+00:00\",\"dateModified\":\"2025-08-13T21:54:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/\"},\"wordCount\":937,\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/MSC24-India-business-Adobe-550638570-rgb-scaled.jpg\",\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/\",\"name\":\"Hyperlight: Achieving 0.0009-second micro-VM execution time | Microsoft Open Source Blog\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/MSC24-India-business-Adobe-550638570-rgb-scaled.jpg\",\"datePublished\":\"2025-02-11T15:00:00+00:00\",\"dateModified\":\"2025-08-13T21:54:14+00:00\",\"description\":\"In this post, we\u2019ll take the demo application and show how it demonstrates one way you can use Hyperlight in your applications.\u00a0Learn more.\",\"breadcrumb\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/#primaryimage\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/MSC24-India-business-Adobe-550638570-rgb-scaled.jpg\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/MSC24-India-business-Adobe-550638570-rgb-scaled.jpg\",\"width\":2560,\"height\":1707,\"caption\":\"SSUCv3H4sIAAAAAAAACpySS27DIBCG95V6B4t1LNnGxk2vUnUxPJygEIgAp6qi3L0D2BHrbizmm5l\/Xn68vzUN4RC0IJ\/NI1loa2PWED1E7Szi7rBxr6xUviZ3T1lXAyV1dF6DqSGHKM4WrgqhXY1J+JmdJESIa1AhVd+QgKhOqFHgS6K0+FXsZndkJ2agi5BDxcLKM9tREf9XZnl879PASVnxmxuuBvHKKCiDbD2SARY+ifmjXSbB2nFhc8s569qe0XE+iuXIepqrFGly+YnKX+tVwCq1q7ZwdwJMCqBV5ZvXQttTlebiOZ9pTxNutdGnll+TEuPcDbhJJ1lQU+38DCFguNx5VUjgT+GuVR3rYh54UyUSL5fMntJ+pB+UDrSfh2me6RZQrn3WqJPb2YXQFhct69F16oCw4yh7xnB7XHb4WQBXOEBLpYKJzYJ3C8cVPv8AAAD\/\/wMAk1xggcgCAAA=\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/opensource.microsoft.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hyperlight: Achieving 0.0009-second micro-VM execution time\"}]},{\"@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":"Hyperlight: Achieving 0.0009-second micro-VM execution time | Microsoft Open Source Blog","description":"In this post, we\u2019ll take the demo application and show how it demonstrates one way you can use Hyperlight in your applications.\u00a0Learn more.","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\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/","og_locale":"en_US","og_type":"article","og_title":"Hyperlight: Achieving 0.0009-second micro-VM execution time | Microsoft Open Source Blog","og_description":"In this post, we\u2019ll take the demo application and show how it demonstrates one way you can use Hyperlight in your applications.\u00a0Learn more.","og_url":"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/","og_site_name":"Microsoft Open Source Blog","article_published_time":"2025-02-11T15:00:00+00:00","article_modified_time":"2025-08-13T21:54:14+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/MSC24-India-business-Adobe-550638570-rgb-scaled.jpg","type":"image\/jpeg"}],"author":"Danilo Chiarlone","twitter_card":"summary_large_image","twitter_creator":"@OpenAtMicrosoft","twitter_site":"@OpenAtMicrosoft","twitter_misc":{"Written by":"Danilo Chiarlone","Est. reading time":"4 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/#article","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/"},"author":[{"@id":"https:\/\/opensource.microsoft.com\/blog\/author\/danilo-chiarlone\/","@type":"Person","@name":"Danilo Chiarlone"}],"headline":"Hyperlight: Achieving 0.0009-second micro-VM execution time","datePublished":"2025-02-11T15:00:00+00:00","dateModified":"2025-08-13T21:54:14+00:00","mainEntityOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/"},"wordCount":937,"publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/MSC24-India-business-Adobe-550638570-rgb-scaled.jpg","inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/","url":"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/","name":"Hyperlight: Achieving 0.0009-second micro-VM execution time | Microsoft Open Source Blog","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/#primaryimage"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/MSC24-India-business-Adobe-550638570-rgb-scaled.jpg","datePublished":"2025-02-11T15:00:00+00:00","dateModified":"2025-08-13T21:54:14+00:00","description":"In this post, we\u2019ll take the demo application and show how it demonstrates one way you can use Hyperlight in your applications.\u00a0Learn more.","breadcrumb":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/#primaryimage","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/MSC24-India-business-Adobe-550638570-rgb-scaled.jpg","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2025\/02\/MSC24-India-business-Adobe-550638570-rgb-scaled.jpg","width":2560,"height":1707,"caption":"SSUCv3H4sIAAAAAAAACpySS27DIBCG95V6B4t1LNnGxk2vUnUxPJygEIgAp6qi3L0D2BHrbizmm5l\/Xn68vzUN4RC0IJ\/NI1loa2PWED1E7Szi7rBxr6xUviZ3T1lXAyV1dF6DqSGHKM4WrgqhXY1J+JmdJESIa1AhVd+QgKhOqFHgS6K0+FXsZndkJ2agi5BDxcLKM9tREf9XZnl879PASVnxmxuuBvHKKCiDbD2SARY+ifmjXSbB2nFhc8s569qe0XE+iuXIepqrFGly+YnKX+tVwCq1q7ZwdwJMCqBV5ZvXQttTlebiOZ9pTxNutdGnll+TEuPcDbhJJ1lQU+38DCFguNx5VUjgT+GuVR3rYh54UyUSL5fMntJ+pB+UDrSfh2me6RZQrn3WqJPb2YXQFhct69F16oCw4yh7xnB7XHb4WQBXOEBLpYKJzYJ3C8cVPv8AAAD\/\/wMAk1xggcgCAAA="},{"@type":"BreadcrumbList","@id":"https:\/\/opensource.microsoft.com\/blog\/2025\/02\/11\/hyperlight-creating-a-0-0009-second-micro-vm-execution-time\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/opensource.microsoft.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Hyperlight: Achieving 0.0009-second micro-VM execution time"}]},{"@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\/97104","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\/6220"}],"replies":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/comments?post=97104"}],"version-history":[{"count":38,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/97104\/revisions"}],"predecessor-version":[{"id":98096,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/97104\/revisions\/98096"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media\/97140"}],"wp:attachment":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media?parent=97104"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/post_tag?post=97104"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/content-type?post=97104"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/topic?post=97104"},{"taxonomy":"programming-languages","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/programming-languages?post=97104"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/coauthors?post=97104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}