{"id":52649,"date":"2023-10-17T12:20:37","date_gmt":"2023-10-17T16:20:37","guid":{"rendered":"https:\/\/sdtimes.com\/?p=52649"},"modified":"2023-10-27T16:30:48","modified_gmt":"2023-10-27T20:30:48","slug":"what-makes-webassembly-special","status":"publish","type":"post","link":"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/","title":{"rendered":"What makes WebAssembly special? The Component Model"},"content":{"rendered":"<p><a href=\"https:\/\/webassembly.org\/\"><span style=\"font-weight: 400;\">WebAssembl<\/span><span style=\"font-weight: 400;\">y<\/span> <span style=\"font-weight: 400;\">(<\/span><span style=\"font-weight: 400;\">Wasm)<\/span><\/a> <span style=\"font-weight: 400;\">began its journey in the web browser. However, it has since expanded, becoming a sought-after technology for server-side environments, Internet of Things (IoT) systems, and synchronous plugins. With this kind of horizontal expansion, even reaching into multi-tenanted cloud environments, it is clear that Wasm has some desirable attributes. One additional innovation, on the Wasm side, elevates the technology beyond just being desirable. Wasm has the potential to change the game for software developers, revolutionizing the landscape of software development.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">What is this new thing that makes Wasm so exciting and special? It\u2019s a technology that hides behind a deceptively boring name: <\/span><a href=\"https:\/\/component-model.bytecodealliance.org\/introduction.html\"><span style=\"font-weight: 400;\">The WebAssembl<\/span><span style=\"font-weight: 400;\">y<\/span><span style=\"font-weight: 400;\"> Component Model<\/span><span style=\"font-weight: 400;\">.<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Before diving into the Component Model, though, let\u2019s trace Wasm\u2019s journey from the web browser to the cloud.<\/span><\/p>\n<p><b>Why Wasm Moved Beyond the Web Browser<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Wasm was developed for a very specific purpose: A consortium of developers from Mozilla, Apple, Microsoft, and Google wanted a vendor-neutral standardized way to run languages other than JavaScript inside of the web browser. As an industry, we have accrued software written in languages such as C, Java, and Python over many decades. In more recent times, newer languages like Rust continue to add to the vast array of software tools and libraries. However, web browsers, being restricted to a JavaScript runtime, are not able to execute code written in these high-level languages.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Wouldn\u2019t it be great, reasoned the Wasm creators, if we could create a standard binary format to which any of these languages could compile? From this point onwards, we saw toolchain development that enabled high-level languages like C, Rust, and others to be compiled into WebAssembly binaries. These binaries could be loaded into web browsers and interacted with using JavaScript. This brought about a rich interplay with existing web technologies; suddenly, web developers could write JavaScript code that interfaced with these WebAssembly binaries, harnessing functionality and achieving near-native performance right there in the browser.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The web browser environment (for which Wasm was initially designed) does carry forward some constraints that any deliberately interoperable system (Wasm) must abide by:<\/span><\/p>\n<p><span style=\"font-weight: 400;\"> Security: The web browser routinely runs code from unknown and untrusted sources. As we click around on the internet, we rely on the web browser to protect us from bad actors and buggy code. In the same vein, Wasm must be highly secure.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"> Portability: Web browsers run natively on all major operating systems and various system architectures. Wasm must not require that an application be compiled to a specific OS or architecture but must support running on many (ideally all) platforms without compromising performance. Wasm must ensure users have a smooth and efficient experience regardless of where the application runs.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"> Performance: As we browse the web, we grow impatient, waiting for things to load. Just a few extra moments can give us the feeling that our expected digital dopamine isn&#8217;t arriving on schedule. At this point, we often close that tab or move on, clicking, swiping, and liking something else. Wasm must always load and execute immediately to ensure that a user\u2019s interest is retained.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In addition to the three constraints above, a fourth\u2014highly audacious constraint\u2014 remains.\u00a0 A way in which all of the disparate language communities (each with its timelines, processes, and prioritizations) can adopt Wasm into their build and runtime toolchains. Optimally, as soon as it is practicably possible.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">By rights, Wasm should have failed simply because that fourth item mentioned above could easily be considered unrealistic (in the real world). Yet, against the odds, language communities began supporting Wasm. First, C and C++ gained support (from the Wasm creators themselves), as did the burgeoning Rust programming language. That very well may have been the stopping point. But it was not. Language after language has begun adding support. Python, Ruby, Swift, the .NET languages, Go, Zig\u2026 the list started growing and continues to grow. Even wholly new projects (like the functional programming language Grain, which compiles exclusively to Wasm) are building their community and undergoing ongoing development in the Wasm space.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">With this level of language support, Wasm consistently increases its foothold as a promising tool. Wasm\u2019s security, portability, and performance virtues are making savvy developers outside of the web browser world begin to notice. This foothold gets stronger whilst stories of companies like BBC and Disney (using Wasm in their embedded streamed video apps) appear, other parts of the web like Samsung documentation pages go on to explain \u201c<\/span><a href=\"https:\/\/developer.samsung.com\/smarttv\/develop\/extension-libraries\/webassembly\/overview.html\"><span style=\"font-weight: 400;\">WebAssembl<\/span><span style=\"font-weight: 400;\">y<\/span><span style=\"font-weight: 400;\"> and its application in Samsun<\/span><span style=\"font-weight: 400;\">g<\/span><span style=\"font-weight: 400;\"> Smart TVs<\/span><span style=\"font-weight: 400;\">\u201d<\/span><\/a><span style=\"font-weight: 400;\">.\u00a0 Cloud innovators such as Fastly, Fermyon, and Microsoft continue to enhance Wasm tooling and frameworks, integrating Wasm seamlessly into cloud and edge computing. Companies like Shopify, Suborbital (now part of F5), and Dylibso making leveraging Wasm as a plugin framework a reality. All roads lead to refining the Wasm application developer experience and simplifying Wasm\u2019s implementation in mainstream products and services. If we boil it down, in every case, the magic formula is the same: Wasm offers a secure, portable environment that performs well across devices. In addition, there is broad support from various language ecosystems.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Detractors might point out that this is mainly overwrought praise for boring features. Sure, it\u2019s fine. One could argue that other solutions just might also be \u201cfine\u201d, right? More to the point, if the ambitions behind Wasm stopped here, then I would have to agree: Wasm is simply a \u201cgood enough\u201d technology. But something has been brewing in the standards groups working on Wasm. And this \u201csomething\u201d boosts Wasm from <\/span><i><span style=\"font-weight: 400;\">fine<\/span><\/i><span style=\"font-weight: 400;\"> to <\/span><i><span style=\"font-weight: 400;\">redefining<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><b>The Component Model is the Future<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Here&#8217;s an intriguing question: If languages such as Rust can compile to Wasm and\u00a0<\/span><span style=\"font-weight: 400;\">Python can operate within Wasm, could there be an architecture to build interoperable Wasm libraries, applications, and environments? If the answer is affirmative, we might be on the verge of realizing a goal that has largely eluded the programming world:\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">creating libraries (programs with reusable code) that are universally usable, regardless of their source language.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The audacious goal of the Wasm project was that, in theory, any language should be able to run in a Wasm runtime. And the surprising fact is that many languages (over two dozen) already can.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">To put this in perspective, let&#8217;s consider some standard tasks typically encapsulated in libraries: parsing an XML or JSON file, formatting a date, or implementing a complex encryption scheme. For each language, its community writes this code in their preferred language. JavaScript has an XML parser; so does Rust, and every major language features an XML parser crafted for it. Each of these libraries needs updates, patches for security issues, and more. Consider the countless hours dedicated to maintaining myriad libraries, all of which ultimately perform the same essential functions. What really drives this point home for me is that <\/span><a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc7159.html\"><span style=\"font-weight: 400;\">RFC 7159<\/span> <\/a><span style=\"font-weight: 400;\">officially describes JSON as a language-independent data interchange format &#8211; you read correctly; \u201clanguage-independent\u201d.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The Component Model addresses the challenge of enabling code compiled to Wasm to intercommunicate. It facilitates communication between one Wasm component and another. This means a Python program can now import a library written in JavaScript, which can import a library written in Rust. Remarkably, the original programming language has no bearing on the usability of the code. Let\u2019s put this into meaningful context. How does this change how we talk to computers? Standards like Unicode already allow us to represent our written human languages in 8-bit sequences. For instance, a UTF-8 encoded JSON string can be deserialized into bytes, raw data that computers can store, transmit, process, and stream. These bytes can subsequently be serialized back into a UTF-8 encoded JSON string. The good news is that many highlevel programming languages already support such standards (and have done so for quite some time). At this point, you might wonder how on earth we will be able to deal with different implementations of high-level language variables. Take strings, again, as an example. A string in C might be represented entirely differently from a string in Rust or a string in JavaScript [1]. In fact, there are two types of strings in Rust. Rust\u2019s \u201cString\u201d variable, denoted by an upper case \u201cS\u201d, is stored as a vector of bytes and Rust\u2019s other string type, denoted by lower-case letters \u201cstr\u201d, which is prefixed by an ampersand, is stored as a slice [2]. Does this exacerbate the situation? No. Because The Wasm Component Model has an agreed-upon way of defining those richer types and an agreed-upon way of expressing them at module boundaries. These type definitions are written in a language called Wasm Interface Type (WIT), and the way they translate into bits and bytes is called the Canonical Application Binary Interface (ABI). It now becomes clear that components are portable across architectures, operating systems and languages. What do we stand to gain from this? Well, for one, we can stop reimplementing the same libraries in every language under the sun.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In addition, a library can be written in the language best suited for it and then shared to all other languages. For example, a high-performance cryptography library might best be written in Rust, where one could argue that built-in handling of null pointer dereferencing, dangling pointers, and buffer overflows might make Rust the safest tool for that particular task. Another example is that a library related to data processing might better be written in Python, perhaps due to its network effect in this programming genre and Python\u2019s already extensive data processing library ecosystem. Don\u2019t hang your hat on just these conversations. This is but the tip of the iceberg.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The component model enables developers to update specific sections of an application rather than overhauling the entire system. If a security vulnerability emerges in the cryptography component, for instance, only that individual component needs to be upgraded, leaving the rest of the application untouched. Moreover, such updates might be executed in real-time, eliminating the need for a full system shutdown, rebuild, and deployment. This approach could foster more agile application iterations. Furthermore, data storage backends can be interchanged seamlessly without modifying the broader application&#8217;s code. Implementing specialized tests, collecting metrics, and debugging could be as straightforward as integrating the appropriate intermediary components into the application without altering the existing code.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This approach will seem revolutionary for developers accustomed to regular code rebuilds and redeployments. What&#8217;s thrilling is that this technology is already here. Tools like Fermyon Spin and the Bytecode Alliance\u2019s Wasmtime fully support this component model. And with the Component Model being standardized by the respected W3C (the standards body responsible for HTML and CSS), it&#8217;s open for anyone to implement. It&#8217;s anticipated that the Component Model will be widely adopted in the Wasm ecosystem within a year.<\/span><\/p>\n<p><a href=\"https:\/\/events.linuxfoundation.org\/kubecon-cloudnativecon-north-america\/register\/\"><i><span style=\"font-weight: 400;\">Join us<\/span><\/i><\/a><i><span style=\"font-weight: 400;\"> at <\/span><\/i><a href=\"https:\/\/events.linuxfoundation.org\/kubecon-cloudnativecon-north-america\/\"><i><span style=\"font-weight: 400;\">KubeCon + CloudNativeCon North America<\/span><\/i><\/a><i><span style=\"font-weight: 400;\"> this November 6 &#8211; 9 in Chicago for more on Kubernetes and the cloud native ecosystem. <\/span><\/i><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>WebAssembly (Wasm) began its journey in the web browser. However, it has since expanded, becoming a sought-after technology for server-side environments, Internet of Things (IoT) systems, and synchronous plugins. With this kind of horizontal expansion, even reaching into multi-tenanted cloud environments, it is clear that Wasm has some desirable attributes. One additional innovation, on the  &hellip; <a class=\"read-more\" href=\"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/\">continue reading<\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1184,"featured_media":52650,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"om_disable_all_campaigns":false,"cybocfi_hide_featured_image":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[10716,16753,542,16341],"coauthors":[16754,16755],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What makes WebAssembly special? The Component Model - SD Times<\/title>\n<meta name=\"description\" content=\"With a high level of language support, WebAssembly (Wasm) consistently increases its foothold as a promising tool.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What makes WebAssembly special? The Component Model - SD Times\" \/>\n<meta property=\"og:description\" content=\"With a high level of language support, WebAssembly (Wasm) consistently increases its foothold as a promising tool.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/\" \/>\n<meta property=\"og:site_name\" content=\"SD Times\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SDTimesD2\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-17T16:20:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-27T20:30:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sdtimes.com\/wp-content\/uploads\/2023\/10\/webassembly.png\" \/>\n\t<meta property=\"og:image:width\" content=\"650\" \/>\n\t<meta property=\"og:image:height\" content=\"364\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tim McCallum, Matt Butcher\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@sdtimes\" \/>\n<meta name=\"twitter:site\" content=\"@sdtimes\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tim McCallum, Matt Butcher\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/\"},\"author\":{\"name\":\"Tim McCallum\",\"@id\":\"https:\/\/sdtimes.com\/#\/schema\/person\/e638e1f53be464c908ab50e66d25a4fc\"},\"headline\":\"What makes WebAssembly special? The Component Model\",\"datePublished\":\"2023-10-17T16:20:37+00:00\",\"dateModified\":\"2023-10-27T20:30:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/\"},\"wordCount\":1818,\"publisher\":{\"@id\":\"https:\/\/sdtimes.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/sdtimes.com\/wp-content\/uploads\/2023\/10\/webassembly.png\",\"keywords\":[\"cloud native\",\"component model\",\"Python\",\"Wasm\"],\"articleSection\":[\"Latest News\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/\",\"url\":\"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/\",\"name\":\"What makes WebAssembly special? The Component Model - SD Times\",\"isPartOf\":{\"@id\":\"https:\/\/sdtimes.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/sdtimes.com\/wp-content\/uploads\/2023\/10\/webassembly.png\",\"datePublished\":\"2023-10-17T16:20:37+00:00\",\"dateModified\":\"2023-10-27T20:30:48+00:00\",\"description\":\"With a high level of language support, WebAssembly (Wasm) consistently increases its foothold as a promising tool.\",\"breadcrumb\":{\"@id\":\"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/#primaryimage\",\"url\":\"https:\/\/sdtimes.com\/wp-content\/uploads\/2023\/10\/webassembly.png\",\"contentUrl\":\"https:\/\/sdtimes.com\/wp-content\/uploads\/2023\/10\/webassembly.png\",\"width\":650,\"height\":364},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/sdtimes.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What makes WebAssembly special? The Component Model\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/sdtimes.com\/#website\",\"url\":\"https:\/\/sdtimes.com\/\",\"name\":\"SD Times\",\"description\":\"Software Development News\",\"publisher\":{\"@id\":\"https:\/\/sdtimes.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/sdtimes.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/sdtimes.com\/#organization\",\"name\":\"SD Times\",\"url\":\"https:\/\/sdtimes.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/sdtimes.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/sdtimes.com\/wp-content\/uploads\/2014\/05\/deafaultlogo.png\",\"contentUrl\":\"https:\/\/sdtimes.com\/wp-content\/uploads\/2014\/05\/deafaultlogo.png\",\"width\":225,\"height\":90,\"caption\":\"SD Times\"},\"image\":{\"@id\":\"https:\/\/sdtimes.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SDTimesD2\",\"https:\/\/x.com\/sdtimes\",\"https:\/\/www.linkedin.com\/company\/sdtimes\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/sdtimes.com\/#\/schema\/person\/e638e1f53be464c908ab50e66d25a4fc\",\"name\":\"Tim McCallum\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/sdtimes.com\/#\/schema\/person\/image\/8f03b9cb12edc1eb676b7d9a52052f9e\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/255a63bf97410a66ca7d939fc1e6113d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/255a63bf97410a66ca7d939fc1e6113d?s=96&d=mm&r=g\",\"caption\":\"Tim McCallum\"},\"description\":\"Tim McCallum, Content Specialist and Developer Relations, Fermyon.\",\"url\":\"https:\/\/sdtimes.com\/author\/tim-mccallum\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What makes WebAssembly special? The Component Model - SD Times","description":"With a high level of language support, WebAssembly (Wasm) consistently increases its foothold as a promising tool.","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:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/","og_locale":"en_US","og_type":"article","og_title":"What makes WebAssembly special? The Component Model - SD Times","og_description":"With a high level of language support, WebAssembly (Wasm) consistently increases its foothold as a promising tool.","og_url":"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/","og_site_name":"SD Times","article_publisher":"https:\/\/www.facebook.com\/SDTimesD2","article_published_time":"2023-10-17T16:20:37+00:00","article_modified_time":"2023-10-27T20:30:48+00:00","og_image":[{"width":650,"height":364,"url":"https:\/\/sdtimes.com\/wp-content\/uploads\/2023\/10\/webassembly.png","type":"image\/png"}],"author":"Tim McCallum, Matt Butcher","twitter_card":"summary_large_image","twitter_creator":"@sdtimes","twitter_site":"@sdtimes","twitter_misc":{"Written by":"Tim McCallum, Matt Butcher","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/#article","isPartOf":{"@id":"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/"},"author":{"name":"Tim McCallum","@id":"https:\/\/sdtimes.com\/#\/schema\/person\/e638e1f53be464c908ab50e66d25a4fc"},"headline":"What makes WebAssembly special? The Component Model","datePublished":"2023-10-17T16:20:37+00:00","dateModified":"2023-10-27T20:30:48+00:00","mainEntityOfPage":{"@id":"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/"},"wordCount":1818,"publisher":{"@id":"https:\/\/sdtimes.com\/#organization"},"image":{"@id":"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/#primaryimage"},"thumbnailUrl":"https:\/\/sdtimes.com\/wp-content\/uploads\/2023\/10\/webassembly.png","keywords":["cloud native","component model","Python","Wasm"],"articleSection":["Latest News"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/","url":"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/","name":"What makes WebAssembly special? The Component Model - SD Times","isPartOf":{"@id":"https:\/\/sdtimes.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/#primaryimage"},"image":{"@id":"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/#primaryimage"},"thumbnailUrl":"https:\/\/sdtimes.com\/wp-content\/uploads\/2023\/10\/webassembly.png","datePublished":"2023-10-17T16:20:37+00:00","dateModified":"2023-10-27T20:30:48+00:00","description":"With a high level of language support, WebAssembly (Wasm) consistently increases its foothold as a promising tool.","breadcrumb":{"@id":"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/#primaryimage","url":"https:\/\/sdtimes.com\/wp-content\/uploads\/2023\/10\/webassembly.png","contentUrl":"https:\/\/sdtimes.com\/wp-content\/uploads\/2023\/10\/webassembly.png","width":650,"height":364},{"@type":"BreadcrumbList","@id":"https:\/\/sdtimes.com\/softwaredev\/what-makes-webassembly-special\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sdtimes.com\/"},{"@type":"ListItem","position":2,"name":"What makes WebAssembly special? The Component Model"}]},{"@type":"WebSite","@id":"https:\/\/sdtimes.com\/#website","url":"https:\/\/sdtimes.com\/","name":"SD Times","description":"Software Development News","publisher":{"@id":"https:\/\/sdtimes.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sdtimes.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/sdtimes.com\/#organization","name":"SD Times","url":"https:\/\/sdtimes.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sdtimes.com\/#\/schema\/logo\/image\/","url":"https:\/\/sdtimes.com\/wp-content\/uploads\/2014\/05\/deafaultlogo.png","contentUrl":"https:\/\/sdtimes.com\/wp-content\/uploads\/2014\/05\/deafaultlogo.png","width":225,"height":90,"caption":"SD Times"},"image":{"@id":"https:\/\/sdtimes.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SDTimesD2","https:\/\/x.com\/sdtimes","https:\/\/www.linkedin.com\/company\/sdtimes\/"]},{"@type":"Person","@id":"https:\/\/sdtimes.com\/#\/schema\/person\/e638e1f53be464c908ab50e66d25a4fc","name":"Tim McCallum","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sdtimes.com\/#\/schema\/person\/image\/8f03b9cb12edc1eb676b7d9a52052f9e","url":"https:\/\/secure.gravatar.com\/avatar\/255a63bf97410a66ca7d939fc1e6113d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/255a63bf97410a66ca7d939fc1e6113d?s=96&d=mm&r=g","caption":"Tim McCallum"},"description":"Tim McCallum, Content Specialist and Developer Relations, Fermyon.","url":"https:\/\/sdtimes.com\/author\/tim-mccallum\/"}]}},"_links":{"self":[{"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/posts\/52649"}],"collection":[{"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/users\/1184"}],"replies":[{"embeddable":true,"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/comments?post=52649"}],"version-history":[{"count":4,"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/posts\/52649\/revisions"}],"predecessor-version":[{"id":52871,"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/posts\/52649\/revisions\/52871"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/media\/52650"}],"wp:attachment":[{"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/media?parent=52649"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/categories?post=52649"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/tags?post=52649"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/sdtimes.com\/wp-json\/wp\/v2\/coauthors?post=52649"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}