Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. WebAssembly - Teknopedia
WebAssembly - Teknopedia
WebAssembly
linguaggio di programmazione
AutoreWorld Wide Web Consortium, Microsoft, Google, Mozilla e Apple Inc.
Data di origine2015
Ultima versione2.0 (1º giugno 2022)
Utilizzosviluppo web
Paradigmiprogrammazione strutturata, programmazione imperativa e programmazione stack-oriented
Estensioni comuniwast e wasm
Influenzato daasm.js e Google Native Client
Implementazione di riferimento
Licenzalicenza Apache
Sito webwebassembly.org/
Modifica dati su Wikidata · Manuale

WebAssembly (Wasm, WA) è uno standard web che definisce un formato binario e un corrispondente formato testuale per la scrittura di codice eseguibile nelle pagine web. Ha lo scopo di abilitare l'esecuzione del codice quasi alla stessa velocità con cui esegue il codice macchina nativo. È stato progettato come integrazione di JavaScript per accelerare le prestazioni delle parti critiche delle applicazioni Web e in seguito per consentire lo sviluppo web in altri linguaggi oltre a JavaScript. È sviluppato dal World Wide Web Consortium (W3C) con ingegneri provenienti da Mozilla, Microsoft, Google e Apple.

Viene eseguito in una sandbox nel browser Web dopo una fase di verifica formale. I programmi possono essere compilati da linguaggi di alto livello in moduli Wasm e caricati come librerie dalle applet JavaScript.

Progettazione

[modifica | modifica wikitesto]

Il codice WebAssembly è concepito per essere eseguito su una stack machine portabile strutturata e astratta, progettato per essere più veloce da analizzare di JavaScript e più veloce da eseguire e per consentire una rappresentazione molto compatta del codice.

Storia

[modifica | modifica wikitesto]

Le tecnologie precorritrici "vendor-specific" sono state Google Native Client (NaCl) e asm.js. L'implementazione iniziale del supporto di WebAssembly nei browser era basata sul set di funzionalità di asm.js. È stato annunciato per la prima volta il 17 giugno 2015 e il 15 marzo 2016 è stata dimostrata l'esecuzione di Unity's Angry Bots in Firefox, Chromium, Google Chrome, e Microsoft Edge. Nel marzo 2017, la progettazione del prodotto minimo vitale è stata dichiarata completata e la fase di anteprima conclusa. Alla fine di settembre 2017, è stato rilasciato il supporto in Safari 11. A partire da marzo 2019, il sito Can I use rileva che il 81.41% dei browser a livello globale supporta WebAssembly (e indirettamente, attraverso polyfill, altri browser sono supportati).[1] Nel febbraio 2018 il WebAssembly Working Group ha pubblicato tre bozze di lavoro per Core Specification, JavaScript Interface, e Web API.

Supporto

[modifica | modifica wikitesto]

Mozilla ha dichiarato il supporto "in tutti i principali browser", per esempio è stato abilitato di default anche in Edge 16. Per compatibilità con le versioni precedenti, Wasm può essere compilato in asm.js da un'applet JavaScript (il cosiddetto polyfill) ed eseguito su browser incompatibili in questo modo.

Emscripten può compilare in Wasm usando LLVM nel backend.

Il suo obiettivo iniziale è supportare la compilazione da C e C++, tuttavia sta emergendo anche il supporto per altri linguaggi come Rust. Dopo il rilascio del prodotto minimo vitale (MVP, minimum viable product), è previsto il supporto della garbage collection che renderebbe WebAssembly una destinazione di compilazione per i linguaggi di programmazione come Java e C#.

Rappresentazione

[modifica | modifica wikitesto]

Nel marzo 2017, il WebAssembly Community Group ha raggiunto il consenso sul formato binario iniziale (MVP), sull'API JavaScript e sull'interprete di riferimento. Esso definisce un formato binario di WebAssembly, che non è progettato per essere utilizzato dagli esseri umani, così come un formato bytecode lineare scrittura di assembly leggibile dall'uomo che assomiglia ai tradizionali linguaggi assembly.

La tabella seguente rappresenta tre diverse viste dello stesso codice sorgente così come immesso (a sinistra), convertito in una rappresentazione intermedia Wasm (al centro), e infine in formato binario Wasm:

Codice sorgente in linguaggio C Linear assembly bytecode
(Rappresentazione intermedia)
Codifica binaria Wasm (byte esadecimali)
int factorial(int n) {
  if (n == 0)
    return 1;
  else
    return n * factorial(n-1);
}
get_local 0
i64.eqz
if (result i64)
    i64.const 1
else
    get_local 0
    get_local 0
    i64.const 1
    i64.sub
    call 0
    i64.mul
end
20 00
50
04 7E
42 01
05
20 00
20 00
42 01
7D
10 00
7E
0B

Il formato di testo di WebAssembly può anche essere scritto in un formato compatto usando le s-expressions. Questo formato è puramente uno zucchero sintattico e non presenta differenze comportamentali con il formato lineare. Un esempio è mostrato di seguito:

(module
  (import "math" "exp" (func $exp (param f64) (result f64)))
  (func (export "doubleExp") (param $0 f64) (result f64)
    (f64.mul
      (call $exp
        (get_local $0))
      (f64.const 2))))

Note

[modifica | modifica wikitesto]
  1. ^ caniuse.com, https://caniuse.com/#search=webassembly Titolo mancante per url url (aiuto).

Altri progetti

[modifica | modifica wikitesto]

Altri progetti

  • Wikimedia Commons
  • Collabora a Wikimedia Commons Wikimedia Commons contiene immagini o altri file sul WebAssembly

Collegamenti esterni

[modifica | modifica wikitesto]
  • (EN) Sito ufficiale, su webassembly.org. Modifica su Wikidata
  • (EN) WebAssembly, su GitHub. Modifica su Wikidata
  • Repository sorgenti di WebAssembly, su github.com. Modifica su Wikidata
  • Repository sorgenti di WebAssembly, su github.com. Modifica su Wikidata
  • W3C Community Group, su w3.org.
  • GOTO 2017 • WebAssembly: What and What Next? • Ben Titzer & Andreas Rossberg - YouTube, su youtube.com.
  • WebAssembly | MDN, su developer.mozilla.org. – con informazioni sulla compatibilità e le specifiche del browser (WebAssembly JavaScript API)
V · D · M
Interfacce web
Lato server
ProtocolliHTTP · CGI · SCGI · FCGI · AJP · WSRP · WebSocket
API ServerC NSAPI · C ASAPI · C ISAPI · COM ASP · Java servlet · container · CLI OWIN · ASP.NET Handler · Python WSGI · Ruby Rack · JavaScript JSGI · Perl PSGI · Lua WSAPI · Portlet
ArgomentiWeb service · Open API · Webhook · Application server
Lato client
API browserC NPAPI (LiveConnect · XPConnect · C NPRuntime) · C PPAPI (NaCl) · ActiveX · BHO · XBAP
API web
W3CAudio · Canvas · CORS · DOM · DOM events · EME · File · Font Geolocation · IndexedDB · MSE · SSE · SVG · Video · WebRTC · WebSocket · Web messaging · Web storage · Web worker · XMLHttpRequest · WebAssembly
KhronosWebCL · WebGL
AltriGoogle Gears · Web SQL Database (formerly W3C) · WebUSB
ArgomentiAJAX vs. DHTML · Mashup · Web IDL · Scripting
ArgomentiWeb 1.0 · Web 2.0 · Open Web Platform · Rich Internet application · Applicazione web
V · D · M
Browser Internet
CaratteristicheSegnalibri · Estensioni · Navigazione privata · Sincronizzazione
StandardHTML (v5) · CSS · DOM · JavaScript (IndexedDB · Web storage · WebAssembly · WebGL)
ProtocolliHTTP (v2 · v3 · Cookies · HTTPS) · OCSP · WebRTC · WebSocket
Attivi
Basati su BlinkAvast Secure Browser · Blisk · Brave · Chrome · Chromium · Cốc Cốc · Dragon · Edge · Epic · Falkon · Kinza · Maxthon · Opera · Otter · Puffin · SalamWeb · Samsung Internet · Silk · Sleipnir · Sputnik · SRWare · Torch · UC · Vivaldi · Whale · Yandex
Basati su GeckoFirefox (per Android) · GNU IceCat · IceDragon · K-Meleon · PirateBrowser · SeaMonkey · SlimBrowser · TenFourFox · Tor · Waterfox
Basati su WebKitDolphin · Dooble · Firefox per iOS · GNOME Web · iCab · Konqueror · Midori · Safari · surf · WebPositive
Altro360 · Avant · Basilisk · Cake Browser · CM Browser · eww · Links · Lunascape · Lynx · NetFront · NetSurf · Pale Moon · QQ browser · qutebrowser · w3m · WebbIE
Inattivi
Basati su BlinkBeaker · Citrio · Flock · Redcore · RockMelt · SalamWeb · Sputnik · Torch
Basati su GeckoBeonex Communicator · Camino · Classilla · Conkeror · Galeon · Ghostzilla · Kazehakase · Kylo · Lotus · MicroB · Minimo · Mozilla suite · Pogo · Strata · Swiftfox · Swiftweasel · Timberwolf · xB
Basati su TridentAOL · Deepnet · GreenBrowser · Internet Explorer · MediaBrowser · MenuBox · NeoPlanet · NetCaptor · SpaceTime · UltraBrowser · ZAC
Basati su WebKitArora · BOLT · Opera Coast · Flock · Fluid · Google TV · Iris · Mercury · OmniWeb · Origyn · QtWeb · rekonq · RockMelt · Shiira · Steel · Browser for Symbian · Uzbl · xombrero
Altroabaco · Amaya · Arachne · Arena · Blazer · Charon · Deepfish · Dillo · ELinks · Gazelle · HotJava · IBM Home Page Reader · IBM WebExplorer · IBrowse · KidZui · Line Mode · Mosaic · MSN TV · NetPositive · Netscape · Skweezer · Skyfire · Teashark · ThunderHawk · Vision · WinWAP · WorldWideWeb
Categoria · Diffusione
  Portale Google
  Portale Internet
Estratto da "https://it.wikipedia.org/w/index.php?title=WebAssembly&oldid=147855073"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022