SlideShare a Scribd company logo
1 of 27
Dariusz Wrzesień
1995
Netscape Navigator wersja 2.0.
źródło:Wikipedia
Animowane GIFy
źródło:https://giphy.com
JavaScript
źródło:Wikipedia
2008
Google Chrome oraz silnik JavaScript V8
źródło:Wikipedia
https://hacks.mozilla.org/2017/02/a-cartoon-intro-to-webassembly/
źródło:
https://hacks.mozilla.org/2017/02/a-cartoon-intro-to-webassembly/
źródło:
Native Client NaCl
Portable Native Client (pNaCl)
asm.js
C/C++ LLVM Emscripten JavaScript
www
przeglądarka
internetowa
Przebieg kompilacji z C/C++ do asm.js
WebAssembly jest nowym rodzajem języka, który może być
uruchomiony w nowoczesnych wersjach przeglądarek. Jest językiem
niskopoziomowym, który działa z szybkością zbliżoną do
rozwiązań natywnych i pozwala na kompilacje kodu napisanego w
takich językach jak C/C++ do kodu docelowego, który może być
użyty na stronie internetowej.
źródło: https://developer.mozilla.org
Czym WebAssembly nie jest?
źródło:https://github.com/carlosbaraza/web-assembly-logo
JavaScript
Webassembly
Zastosowanie
○ gry,
○ multimedia (rozpoznawanie obrazów, edycja video, aplikacje typu CAD),
○ możliwość wykorzystania istniejących rozwiązań napisanych w C/C++ (OpenCV,
Box2D, DICOM),
○ 64-bitowe obliczenia matematyczne (SHA512, Fractal Calculations).
DEMO
int fib( int n ) {
if ( n == 1 ) return 1;
if ( n == 2 ) return 1;
return fib( n-1 ) + fib( n-2 );
}
n = 1 n = 2 n = 3 n = 4 n = 5 n = 6 n = 7 n = 8 n = 9 n = 10
1 1 2 3 5 8 13 21 34 55
emcc fib.c -O0 -o fib.wasm -s WASM=1 -s SIDE_MODULE=1
C/C++
Moduł
WASM
HTML
www
przeglądarka
internetowa
Przebieg kompilacji z C/C++ do wasm
Emscripten JavaScript
fetch( "fib.wasm" )
.then( response => response.arrayBuffer( ))
.then( bytes => WebAssembly.instantiate( bytes ))
.then( results => {
console.log( results.instance.exports.fib(10));
});
https://webassembly.studio
Webpack 4
import(“./mathf.js”).then(
math_f => console.log( math_f.fibon( 10 ) )
);
import { fib } from “./fib.wasm”;
export function fibon( x ) {
return fib( x );
}
_entry.js
mathf.js
źródło:https://caniuse.com/#feat=wasm
Awesome Wasm:
https://github.com/mbasso/awesome-wasm
Oficjalna strona WebAssembly:
http://webassembly.org/
O programowaniu bez kaca
devenv.pl

More Related Content

Similar to Webassembly

Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Natalia Stanko
 
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...Chris Suszyński
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackThe Software House
 
Ionic framework - aplikacja mobilna w 15 minut
Ionic framework - aplikacja mobilna w 15 minutIonic framework - aplikacja mobilna w 15 minut
Ionic framework - aplikacja mobilna w 15 minutTomasz Borowski
 
Visual basic-2005-express-i-mysql
Visual basic-2005-express-i-mysqlVisual basic-2005-express-i-mysql
Visual basic-2005-express-i-mysqlPrzemysław Wolny
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.jsWojciech Kaniuka
 
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Lukasz Kaluzny
 
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]Droptica
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 
Vagrant - RuPy Tuesday
Vagrant - RuPy TuesdayVagrant - RuPy Tuesday
Vagrant - RuPy TuesdayGaldoMedia
 
Pierwszy program w c# cezary walencik
Pierwszy program w c# cezary walencikPierwszy program w c# cezary walencik
Pierwszy program w c# cezary walencikCezary Walenciuk
 
Programowanie na wiele platform mobilnych - 2012
Programowanie na wiele platform mobilnych - 2012Programowanie na wiele platform mobilnych - 2012
Programowanie na wiele platform mobilnych - 2012Cezary Walenciuk
 
Silverlight z bliska i na wylot
Silverlight z bliska i na wylotSilverlight z bliska i na wylot
Silverlight z bliska i na wylotMichal Zylinski
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńPaweł Kondraciuk
 
Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Droptica
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkitbartosz_w
 
Delphi dla .NET. Vademecum profesjonalisty
Delphi dla .NET. Vademecum profesjonalistyDelphi dla .NET. Vademecum profesjonalisty
Delphi dla .NET. Vademecum profesjonalistyWydawnictwo Helion
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?tkryskiewicz
 

Similar to Webassembly (20)

Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010
 
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - Wars...
 
Środowisko PWA
Środowisko PWAŚrodowisko PWA
Środowisko PWA
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStack
 
Ionic framework - aplikacja mobilna w 15 minut
Ionic framework - aplikacja mobilna w 15 minutIonic framework - aplikacja mobilna w 15 minut
Ionic framework - aplikacja mobilna w 15 minut
 
Visual basic-2005-express-i-mysql
Visual basic-2005-express-i-mysqlVisual basic-2005-express-i-mysql
Visual basic-2005-express-i-mysql
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
 
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
Docker na MacOS przy wsparciu maszyny wirtualnej z Linuksem [PL]
 
JavaScript. Biblia
JavaScript. BibliaJavaScript. Biblia
JavaScript. Biblia
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
Vagrant - RuPy Tuesday
Vagrant - RuPy TuesdayVagrant - RuPy Tuesday
Vagrant - RuPy Tuesday
 
Pierwszy program w c# cezary walencik
Pierwszy program w c# cezary walencikPierwszy program w c# cezary walencik
Pierwszy program w c# cezary walencik
 
Programowanie na wiele platform mobilnych - 2012
Programowanie na wiele platform mobilnych - 2012Programowanie na wiele platform mobilnych - 2012
Programowanie na wiele platform mobilnych - 2012
 
Silverlight z bliska i na wylot
Silverlight z bliska i na wylotSilverlight z bliska i na wylot
Silverlight z bliska i na wylot
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzień
 
Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Delphi dla .NET. Vademecum profesjonalisty
Delphi dla .NET. Vademecum profesjonalistyDelphi dla .NET. Vademecum profesjonalisty
Delphi dla .NET. Vademecum profesjonalisty
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?
 

Webassembly