SlideShare a Scribd company logo
WebAssembly (WASM)
An Introduction
April 1, 2017
Brad Beiermann
The winner is... #3
The new logo was selected in February 2017 in a design contest
https://github.com/WebAssembly/design/issues/980
What is WebAssembly?
WebAssembly is a portable byte code format that has become available to the major
browsers by Google, Microsoft, Mozilla and Apple.
History
June 2015 - WebAssembly was first announced.
March 2016 - Google, Microsoft, Mozilla preview WebAssembly in their
browsers.
October 2016 – WebAssembly becomes a binary release candidate.
March 2017 – Begins to be shipped on-by-default in browsers.
Links of Interest:
http://webassembly.org/
https://github.com/WebAssembly
https://www.w3.org/community/webassembly/
Why would I need WebAssembly?
• For those of you have been looking to get binary level
support across the entire web platform stack,
WebAssembly is your ticket.
• WebAssembly is actually a binary AST format by
default.
• It is quite a departure from the payload restraints of
JavaScript.
The Binary Beat
• AST- Abstract Syntax Tree.
• In a compiler the AST keeps source location information
and some typing information.
• WebAssembly code essentially gets compiled to binary
AST from languages like C, Haskell, or C++ in the
browser.
The Advantage
• The power is being able to use other languages to compile a binary file to be
handled within the browser.
• In WASM, you can author and debug in a text format so it’s readable. We are
talking a new low-level language in the spirit of something like assembly
language.
Assembly Language?...Ugh! :-(
...but, doesn't asm.js do this today?
• A snippet of some asm.js code.
• asm.js is a low-level subset of javascript. It appears to be direct memory register
access, but it is still being parsed by JavaScript.
• You still have all that payload overhead
• WebAssembly is bypassing all that by directly using the AST in a binary format.
JavaScript's Bottleneck
• JavaScript has quite a few restrictions in it’s flexibility (ie. Payload,..etc.)
• WASM works at the bare metal memory layer in the browser.
• Think about expressing things directly to threads and SIMD.
• WASM is filling in the holes left by JavaScript in terms of controlling bit/byte level
memory register control.
• You simply cannot get to that low-level with JavaScript or any other popular
library/framework in JavaScript like REACT, Angular, Embers, Vue,...etc.
BUT, one excitement around WASM is...
Other languages running in the browser!
"A user can compile a program of a high-level language to WebAssembly and run it
in a browser. As a first step, in the minimal viable product, the goal was to ensure
that a C/C++ program could be compiled to WebAssembly and run within the
browser."
B. Abhijith Chatra,
Sr. Software Engineer at Microsoft
Co-chairman of WASM community group
Up Next: Browser Compilers & Browser VMs
• They also want it to enable other programming
languages to compile efficiently to the Web.
• Again, WASM is giving you a binary executable format to
make this happen
• WebAssembly will feature a memory-safe, sandboxed
execution environment. It would access browser
functionality through the same Web APIs accessible
from JavaScript.
For WebAssembly to succeed we need two things:
1. Browsers to support WebAssembly natively
2. Compilers that emit WebAssembly. There are
already several out: LLVM, ilwasm, Binaryen
(written in C++), asm2wasm, Emscripten
Compiling a WASM Program
Step #1: Get the Emscripten Compiler and Emscripten SDK
Step #2: Enter the Emscripten compiler environment in the current
command line prompt type
Compiling a WASM Program (continued)
Step #3: Create a simple “hello world” program and compile it. The
compilation step is the last line.
Step #4: We can use the emrun web server provided with the
Emscripten SDK:
Online demo of a WASM compiler
Cross Browser Demo of Tanks (FUN!)
Some Online Demos of WASM Running
https://kripken.github.io/talks/wasm.html#/11
http://webassembly.org/demo/
What about mobile with WASM?
Where is WASM first headed?
"Rather than kill JavaScript, which is not feasible, what [we're] trying to do is respond to
real engineering problems that we’ve had with ASM.js. Loading a big game from Epic or
Unity can take 20 - 30 seconds. That’s too long. With a compressed abstract syntax tree
encoding that’s 20 times faster, just a couple seconds, that’s what you want. So there’s a
real reason for WASM, and it is a valid reason."
Brendan Eich
Author of JavaScript
WebAssembly WASM Introduction Presentation

More Related Content

What's hot

Web assembly: a brief overview
Web assembly: a brief overviewWeb assembly: a brief overview
Web assembly: a brief overview
Pavlo Iatsiuk
 
Web Assembly Big Picture
Web Assembly Big PictureWeb Assembly Big Picture
Web Assembly Big Picture
Yousif Shalaby
 
Scylla Summit 2022: ScyllaDB Embraces Wasm
Scylla Summit 2022: ScyllaDB Embraces WasmScylla Summit 2022: ScyllaDB Embraces Wasm
Scylla Summit 2022: ScyllaDB Embraces Wasm
ScyllaDB
 
NodeJS - Server Side JS
NodeJS - Server Side JS NodeJS - Server Side JS
NodeJS - Server Side JS
Ganesh Kondal
 
Nodejs functions & modules
Nodejs functions & modulesNodejs functions & modules
Nodejs functions & modules
monikadeshmane
 
WebAssembly: In a Nutshell
WebAssembly: In a NutshellWebAssembly: In a Nutshell
WebAssembly: In a Nutshell
RangHo Lee
 
Mikrofrontend a Module Federation
Mikrofrontend a Module FederationMikrofrontend a Module Federation
Mikrofrontend a Module Federation
The Software House
 
ES2015 / ES6: Basics of modern Javascript
ES2015 / ES6: Basics of modern JavascriptES2015 / ES6: Basics of modern Javascript
ES2015 / ES6: Basics of modern Javascript
Wojciech Dzikowski
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
Dinesh U
 
Nodejs presentation
Nodejs presentationNodejs presentation
Nodejs presentation
Arvind Devaraj
 
Event Driven Systems with Spring Boot, Spring Cloud Streams and Kafka
Event Driven Systems with Spring Boot, Spring Cloud Streams and KafkaEvent Driven Systems with Spring Boot, Spring Cloud Streams and Kafka
Event Driven Systems with Spring Boot, Spring Cloud Streams and Kafka
VMware Tanzu
 
Node js introduction
Node js introductionNode js introduction
Node js introduction
Joseph de Castelnau
 
Node.js Express Framework
Node.js Express FrameworkNode.js Express Framework
Node.js Express Framework
TheCreativedev Blog
 
Nodejs Explained with Examples
Nodejs Explained with ExamplesNodejs Explained with Examples
Nodejs Explained with Examples
Gabriele Lana
 
JavaScript Fetch API
JavaScript Fetch APIJavaScript Fetch API
JavaScript Fetch API
Xcat Liu
 
Express js
Express jsExpress js
Express js
Manav Prasad
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
AMD Developer Central
 
Lessons Learned from Using Next.js in Production
Lessons Learned from Using Next.js in ProductionLessons Learned from Using Next.js in Production
Lessons Learned from Using Next.js in Production
Panjamapong Sermsawatsri
 

What's hot (20)

Web assembly: a brief overview
Web assembly: a brief overviewWeb assembly: a brief overview
Web assembly: a brief overview
 
Web Assembly Big Picture
Web Assembly Big PictureWeb Assembly Big Picture
Web Assembly Big Picture
 
Scylla Summit 2022: ScyllaDB Embraces Wasm
Scylla Summit 2022: ScyllaDB Embraces WasmScylla Summit 2022: ScyllaDB Embraces Wasm
Scylla Summit 2022: ScyllaDB Embraces Wasm
 
NodeJS - Server Side JS
NodeJS - Server Side JS NodeJS - Server Side JS
NodeJS - Server Side JS
 
Nodejs functions & modules
Nodejs functions & modulesNodejs functions & modules
Nodejs functions & modules
 
WebAssembly: In a Nutshell
WebAssembly: In a NutshellWebAssembly: In a Nutshell
WebAssembly: In a Nutshell
 
Mikrofrontend a Module Federation
Mikrofrontend a Module FederationMikrofrontend a Module Federation
Mikrofrontend a Module Federation
 
ES2015 / ES6: Basics of modern Javascript
ES2015 / ES6: Basics of modern JavascriptES2015 / ES6: Basics of modern Javascript
ES2015 / ES6: Basics of modern Javascript
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
 
Nodejs presentation
Nodejs presentationNodejs presentation
Nodejs presentation
 
Web workers
Web workersWeb workers
Web workers
 
Event Driven Systems with Spring Boot, Spring Cloud Streams and Kafka
Event Driven Systems with Spring Boot, Spring Cloud Streams and KafkaEvent Driven Systems with Spring Boot, Spring Cloud Streams and Kafka
Event Driven Systems with Spring Boot, Spring Cloud Streams and Kafka
 
Node js introduction
Node js introductionNode js introduction
Node js introduction
 
Node.js Express Framework
Node.js Express FrameworkNode.js Express Framework
Node.js Express Framework
 
Nodejs Explained with Examples
Nodejs Explained with ExamplesNodejs Explained with Examples
Nodejs Explained with Examples
 
JavaScript Fetch API
JavaScript Fetch APIJavaScript Fetch API
JavaScript Fetch API
 
Express node js
Express node jsExpress node js
Express node js
 
Express js
Express jsExpress js
Express js
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Lessons Learned from Using Next.js in Production
Lessons Learned from Using Next.js in ProductionLessons Learned from Using Next.js in Production
Lessons Learned from Using Next.js in Production
 

Similar to WebAssembly WASM Introduction Presentation

WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?
Brainhub
 
JS Fest 2018. Александр Скачков. WebAssembly vs JavaScript
JS Fest 2018. Александр Скачков. WebAssembly vs JavaScriptJS Fest 2018. Александр Скачков. WebAssembly vs JavaScript
JS Fest 2018. Александр Скачков. WebAssembly vs JavaScript
JSFestUA
 
Into to Webassmbly
Into to WebassmblyInto to Webassmbly
Into to Webassmbly
cliffzhaobupt
 
WebAssembly vs JavaScript: What is faster?
WebAssembly vs JavaScript: What is faster?WebAssembly vs JavaScript: What is faster?
WebAssembly vs JavaScript: What is faster?
Alexandr Skachkov
 
Oleksandr Skachkov - WebAssembly vs JavaScript: What is faster?
Oleksandr Skachkov - WebAssembly vs JavaScript: What is faster?Oleksandr Skachkov - WebAssembly vs JavaScript: What is faster?
Oleksandr Skachkov - WebAssembly vs JavaScript: What is faster?
OdessaJS Conf
 
WebAssemlby vs JavaScript
WebAssemlby vs JavaScriptWebAssemlby vs JavaScript
WebAssemlby vs JavaScript
Alexandr Skachkov
 
Web Assembly (on the server)
Web Assembly (on the server)Web Assembly (on the server)
Web Assembly (on the server)
Massimo Ferre'
 
WebAssembly and .NET
WebAssembly and .NETWebAssembly and .NET
WebAssembly and .NET
Joanna Lamch
 
WebAssembly
WebAssemblyWebAssembly
WebAssembly
Jens Siebert
 
Quick overview of WebAssembly
Quick overview of WebAssemblyQuick overview of WebAssembly
Quick overview of WebAssembly
Karl Ritchie
 
Web assembly with go
Web assembly with goWeb assembly with go
Web assembly with go
WangChow1
 
The shift to the edge
The shift to the edgeThe shift to the edge
The shift to the edge
Jakub Wadolowski
 
The shift to the edge
The shift to the edgeThe shift to the edge
The shift to the edge
Jakub Wadolowski
 
Blazor v1.1
Blazor v1.1Blazor v1.1
Past, present, and future of web assembly - Devfest Nantes 2017
Past, present, and future of web assembly - Devfest Nantes 2017Past, present, and future of web assembly - Devfest Nantes 2017
Past, present, and future of web assembly - Devfest Nantes 2017
Alexandre Morgaut
 
Oleksandr Skachkov "How to run WebAssembly in your React web application"
Oleksandr Skachkov "How to run WebAssembly in your React web application"Oleksandr Skachkov "How to run WebAssembly in your React web application"
Oleksandr Skachkov "How to run WebAssembly in your React web application"
Fwdays
 
DevDay 2018 - Blazor
DevDay 2018 - BlazorDevDay 2018 - Blazor
DevDay 2018 - Blazor
Denis Voituron
 
Oleksandr Skachkov "Running С# in your Web Browser with WebAssembly"
Oleksandr Skachkov "Running С# in your Web Browser with WebAssembly"Oleksandr Skachkov "Running С# in your Web Browser with WebAssembly"
Oleksandr Skachkov "Running С# in your Web Browser with WebAssembly"
Fwdays
 
WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?
Brainhub
 
Asm.js introduction
Asm.js introductionAsm.js introduction
Asm.js introduction
Oleksii Prohonnyi
 

Similar to WebAssembly WASM Introduction Presentation (20)

WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?WebAssembly - czy dzisiaj mi się to przyda do pracy?
WebAssembly - czy dzisiaj mi się to przyda do pracy?
 
JS Fest 2018. Александр Скачков. WebAssembly vs JavaScript
JS Fest 2018. Александр Скачков. WebAssembly vs JavaScriptJS Fest 2018. Александр Скачков. WebAssembly vs JavaScript
JS Fest 2018. Александр Скачков. WebAssembly vs JavaScript
 
Into to Webassmbly
Into to WebassmblyInto to Webassmbly
Into to Webassmbly
 
WebAssembly vs JavaScript: What is faster?
WebAssembly vs JavaScript: What is faster?WebAssembly vs JavaScript: What is faster?
WebAssembly vs JavaScript: What is faster?
 
Oleksandr Skachkov - WebAssembly vs JavaScript: What is faster?
Oleksandr Skachkov - WebAssembly vs JavaScript: What is faster?Oleksandr Skachkov - WebAssembly vs JavaScript: What is faster?
Oleksandr Skachkov - WebAssembly vs JavaScript: What is faster?
 
WebAssemlby vs JavaScript
WebAssemlby vs JavaScriptWebAssemlby vs JavaScript
WebAssemlby vs JavaScript
 
Web Assembly (on the server)
Web Assembly (on the server)Web Assembly (on the server)
Web Assembly (on the server)
 
WebAssembly and .NET
WebAssembly and .NETWebAssembly and .NET
WebAssembly and .NET
 
WebAssembly
WebAssemblyWebAssembly
WebAssembly
 
Quick overview of WebAssembly
Quick overview of WebAssemblyQuick overview of WebAssembly
Quick overview of WebAssembly
 
Web assembly with go
Web assembly with goWeb assembly with go
Web assembly with go
 
The shift to the edge
The shift to the edgeThe shift to the edge
The shift to the edge
 
The shift to the edge
The shift to the edgeThe shift to the edge
The shift to the edge
 
Blazor v1.1
Blazor v1.1Blazor v1.1
Blazor v1.1
 
Past, present, and future of web assembly - Devfest Nantes 2017
Past, present, and future of web assembly - Devfest Nantes 2017Past, present, and future of web assembly - Devfest Nantes 2017
Past, present, and future of web assembly - Devfest Nantes 2017
 
Oleksandr Skachkov "How to run WebAssembly in your React web application"
Oleksandr Skachkov "How to run WebAssembly in your React web application"Oleksandr Skachkov "How to run WebAssembly in your React web application"
Oleksandr Skachkov "How to run WebAssembly in your React web application"
 
DevDay 2018 - Blazor
DevDay 2018 - BlazorDevDay 2018 - Blazor
DevDay 2018 - Blazor
 
Oleksandr Skachkov "Running С# in your Web Browser with WebAssembly"
Oleksandr Skachkov "Running С# in your Web Browser with WebAssembly"Oleksandr Skachkov "Running С# in your Web Browser with WebAssembly"
Oleksandr Skachkov "Running С# in your Web Browser with WebAssembly"
 
WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?
 
Asm.js introduction
Asm.js introductionAsm.js introduction
Asm.js introduction
 

Recently uploaded

De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
Jelle | Nordend
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Why React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdfWhy React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdf
ayushiqss
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Hivelance Technology
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
Peter Caitens
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
NaapbooksPrivateLimi
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
XfilesPro
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Software Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdfSoftware Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdf
MayankTawar1
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 

Recently uploaded (20)

De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Why React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdfWhy React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdf
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Software Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdfSoftware Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdf
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 

WebAssembly WASM Introduction Presentation

  • 2. The winner is... #3 The new logo was selected in February 2017 in a design contest https://github.com/WebAssembly/design/issues/980
  • 3. What is WebAssembly? WebAssembly is a portable byte code format that has become available to the major browsers by Google, Microsoft, Mozilla and Apple.
  • 4. History June 2015 - WebAssembly was first announced. March 2016 - Google, Microsoft, Mozilla preview WebAssembly in their browsers. October 2016 – WebAssembly becomes a binary release candidate. March 2017 – Begins to be shipped on-by-default in browsers. Links of Interest: http://webassembly.org/ https://github.com/WebAssembly https://www.w3.org/community/webassembly/
  • 5. Why would I need WebAssembly? • For those of you have been looking to get binary level support across the entire web platform stack, WebAssembly is your ticket. • WebAssembly is actually a binary AST format by default. • It is quite a departure from the payload restraints of JavaScript.
  • 6. The Binary Beat • AST- Abstract Syntax Tree. • In a compiler the AST keeps source location information and some typing information. • WebAssembly code essentially gets compiled to binary AST from languages like C, Haskell, or C++ in the browser.
  • 7. The Advantage • The power is being able to use other languages to compile a binary file to be handled within the browser. • In WASM, you can author and debug in a text format so it’s readable. We are talking a new low-level language in the spirit of something like assembly language.
  • 9. ...but, doesn't asm.js do this today? • A snippet of some asm.js code. • asm.js is a low-level subset of javascript. It appears to be direct memory register access, but it is still being parsed by JavaScript. • You still have all that payload overhead • WebAssembly is bypassing all that by directly using the AST in a binary format.
  • 10. JavaScript's Bottleneck • JavaScript has quite a few restrictions in it’s flexibility (ie. Payload,..etc.) • WASM works at the bare metal memory layer in the browser. • Think about expressing things directly to threads and SIMD. • WASM is filling in the holes left by JavaScript in terms of controlling bit/byte level memory register control. • You simply cannot get to that low-level with JavaScript or any other popular library/framework in JavaScript like REACT, Angular, Embers, Vue,...etc. BUT, one excitement around WASM is...
  • 11. Other languages running in the browser! "A user can compile a program of a high-level language to WebAssembly and run it in a browser. As a first step, in the minimal viable product, the goal was to ensure that a C/C++ program could be compiled to WebAssembly and run within the browser." B. Abhijith Chatra, Sr. Software Engineer at Microsoft Co-chairman of WASM community group
  • 12. Up Next: Browser Compilers & Browser VMs • They also want it to enable other programming languages to compile efficiently to the Web. • Again, WASM is giving you a binary executable format to make this happen • WebAssembly will feature a memory-safe, sandboxed execution environment. It would access browser functionality through the same Web APIs accessible from JavaScript.
  • 13. For WebAssembly to succeed we need two things: 1. Browsers to support WebAssembly natively 2. Compilers that emit WebAssembly. There are already several out: LLVM, ilwasm, Binaryen (written in C++), asm2wasm, Emscripten
  • 14. Compiling a WASM Program Step #1: Get the Emscripten Compiler and Emscripten SDK Step #2: Enter the Emscripten compiler environment in the current command line prompt type
  • 15. Compiling a WASM Program (continued) Step #3: Create a simple “hello world” program and compile it. The compilation step is the last line. Step #4: We can use the emrun web server provided with the Emscripten SDK:
  • 16. Online demo of a WASM compiler Cross Browser Demo of Tanks (FUN!) Some Online Demos of WASM Running https://kripken.github.io/talks/wasm.html#/11 http://webassembly.org/demo/
  • 17. What about mobile with WASM?
  • 18. Where is WASM first headed? "Rather than kill JavaScript, which is not feasible, what [we're] trying to do is respond to real engineering problems that we’ve had with ASM.js. Loading a big game from Epic or Unity can take 20 - 30 seconds. That’s too long. With a compressed abstract syntax tree encoding that’s 20 times faster, just a couple seconds, that’s what you want. So there’s a real reason for WASM, and it is a valid reason." Brendan Eich Author of JavaScript