ID.nl logo
Wat is WebAssembly en wat kun je er mee?
© PXimport
Huis

Wat is WebAssembly en wat kun je er mee?

WebAssembly klinkt hardcore, en dat is het ook. Een soort machinetaal voor high-performance webapps. Ondertussen wordt het ondersteund door alle grote browsers en is het gestandaardiseerd door het W3C. Wat is WebAssembly precies en waar wordt het in de praktijk voor gebruikt?

De voertaal voor webapps is javascript. Ondanks de succesvolle inspanningen van browsermakers om hun javascript-engines in elke versie weer wat efficiënter te maken, is dat voor veel toepassingen nog niet genoeg. Google kwam dan in 2011 met zijn Native Client (NaCl) om native processorcode in een webapp te draaien.

Mozilla wilde de platformonafhankelijkheid van javascript echter niet verlaten, en begon daarom in 2013 aan een andere aanpak: asm.js, een subset van javascript die browsers heel efficiënt kunnen uitvoeren. Je compileert dan een webapp uit een taal zoals C naar asm.js, en je browser voert dit dan als gewone javascript uit.

Het voordeel van asm.js is dat het gewoon al in alle webbrowsers werkte, maar Mozilla botste tegen de snelheidsgrenzen van javascript aan. Omdat javascript een tekstformaat heeft, vraagt het parsen veel rekenkracht, zeker op mobiele toestellen met een wat zwakkere processor. En zo werd in 2015 WebAssembly geboren, een binair instructieformaat voor een virtuele machine in je webbrowser.

Sneller

WebAssembly is dus geen nieuwe programmeertaal, maar een binair formaat voor uitvoerbare programma’s. In de praktijk kan een webontwikkelaar dus gewoon in javascript blijven programmeren en zijn .js-bestanden naar WebAssembly (met de extensie .wasm) compileren.

Het bestandsformaat is ontworpen om zo klein mogelijk te zijn en zo snel mogelijk te parsen. Vergeleken met gecomprimeerde javascript (met gzip) is een functioneel identiek WebAssembly-bestand 10 tot 20 procent kleiner. Maar de grootste snelheidswinst haalt WebAssembly bij het parsen: het binaire formaat is een factor tien sneller te parsen dan het tekstgebaseerde javascript. Het downloaden en parsen zijn twee taken die de opstarttijd in belangrijke mate bepalen, en op beide gebieden is WebAssembly geoptimaliseerd: in totaal zo’n twintig keer sneller.

Maar ook na de opstart is WebAssembly sneller. Het formaat is immers niet beperkt tot wat in javascript uitgedrukt kan worden. Daardoor kan een WebAssembly-programma rechtstreeks gebruikmaken van zaken die heel efficiënt in een moderne processor uitgevoerd worden, zoals rekenen met 64bit-getallen.

De snelheidswinst hangt uiteraard af van het feit of je code deze functies gebruikt. Gemiddeld gezien ziet Mozilla met WebAssembly een vijf procent snelheidswinst vergeleken met asm.js, maar bij encryptiecode kan dat een grootteorde groter zijn. WebAssembly haalt een zo goed als native snelheid.

Universeel formaat

Maar je kunt ook code in heel wat andere programmeertalen naar WebAssembly compileren. Elke programmeertaal die door het compilerinfrastructuurproject LLVM ondersteund wordt, kun je in principe gebruiken. Daarbij zitten onder andere C#, Haskell, Kotlin, Lua, Ruby en Rust. WebAssembly is gewoon een extra compilertarget voor die talen, en te vergelijken met een universele bytecode zoals voor Java.

De snelheid van WebAssembly hangt niet alleen af van de virtuele machine waarop de code wordt uitgevoerd, maar ook van de gebruikte compilerinfrastructuur. Een populaire toolchain voor asm.js en WebAssembly is het op LLVM gebaseerde Emscripten, dat C(++)-code compileert tot geoptimaliseerde code voor het web en daarbij ook bijvoorbeeld OpenGL-code naar WebGL omzet.

©PXimport

WebAssembly ontstond vanaf het begin als een samenwerking tussen Mozilla, Microsoft, Google, Apple en anderen, in de schoot van het World Wide Web Consortium. Het is zwaar op asm.js gebaseerd en gebruikt ook inzichten uit het project Portable Native Client (PNaCl), Google’s platformonafhankelijke versie van NaCl. WebAssembly moet het beste van beide werelden verenigen.

Al het werk gebeurt in de WebAssembly Community Group van het W3C. Op 18 juli publiceerde die de WebAssembly Core Specification als een W3C Candidate Recommendation. De verwachting is dat dit als standaard (‘W3C Recommendation’) aangenomen wordt.

De ontwikkeling van WebAssembly

  • **2008 -**Wapenwedloop voor snelheid begint met javascript-engines als V8, TraceMonkey en Nitro
  • 2011**-** Google introduceert Native Client (NaCl)
  • 2013 - Mozilla ondersteunt asm.js in Firefox Nightly
  • 2015 - WebAssembly wordt aangekondigd
  • 2016 - De belangrijkste functies in WebAssembly zijn gedefinieerd
  • 2017 - Alle grote webbrowsers ondersteunen WebAssembly
  • 2018 - De WebAssembly Working Group publiceert drie W3C Candidate Recommendations

Interoperabiliteit

Precies door die samenwerking van in het begin ondersteunden al in 2017 – nog geen twee jaar na de aankondiging van het project – alle grote webbrowsers WebAssembly, zowel op de desktop als mobiel. Voor oudere webbrowsers kun je een .wasm-bestand overigens gewoon compileren naar asm.js. Dat kan automatisch met een zogenoemde ‘polyfill’: javascript-code die het .wasm-bestand op ondersteunde webbrowsers rechtstreeks uitvoert en in het andere geval compileert naar asm.js en de resulterende javascript-code uitvoert. Twijfel je of je browser WebAssembly ondersteunt, kijk dan eens op de website Can I Use.

WebAssembly is geen alles-of-nietsverhaal. Met de WebAssembly javascript-API laad je eenvoudig WebAssembly-modules in javascriptcode in. Je hoeft dus zelf niet eens iets van WebAssembly te kennen om toch in je webapp te kunnen profiteren van de snelheidswinst. Samen met de stijgende populariteit van WebAssembly zullen er ook meer en meer .wasm-bibliotheken opduiken. Zo heeft Microsoft Blazor, waarmee je C#-code rechtstreeks in de webbrowser draait, inclusief gebruik van bestaande .NET-bibliotheken.

©PXimport

Binaire code

Het binaire formaat laat toe om eenvoudiger code in een website te verbergen. Bovendien is een .wasm-bestand gecompileerd, inclusief allerlei optimalisaties, wat de analyse ervan nog complexer maakt. Het mag dan ook niet verbazen dat malware wasm omarmt. Maar het is slechts een kwestie van tijd voor antimalwaresoftware wasm even goed kan analyseren als native Windows-programma’s.

Ook voor nieuwsgierige powerusers klinkt het binaire formaat op het eerste gezicht niet zo interessant: daar kun je immers niet zomaar de broncode van bekijken zoals bij javascript. Maar daar heeft de WebAssembly Working Group iets voor voorzien: er is ook een tekstgebaseerd formaat: .wat. Een .wasm-bestand kan met tools zoals de WebAssembly Binary Toolkit eenvoudig naar .wat omgezet worden en omgekeerd. Ook de browsermakers geven in hun debugtools de mogelijkheid om de broncode van een .wasm-bestand op de webpagina die je bezoekt te bekijken.

▼ Volgende artikel
Waar voor je geld: 5 slimme personenweegschalen voor minder dan 50 euro
© Nexa
Gezond leven

Waar voor je geld: 5 slimme personenweegschalen voor minder dan 50 euro

Bij ID.nl zijn we gek op producten waar je niet de hoofdprijs voor betaalt. Een paar keer per week speuren we daarom binnen een bepaald thema naar zulke deals. Wil je je gewicht goed in de gaten kunnen houden, dan is een personenweegschaal een must. Een digitale weegschaal is zeer nauwkeurig. Wij zochten vijf goed gewaardeerde exemplaren voor minder dan 50 euro.

Een digitale personenweegschaal biedt talrijke voordelen. Veel modellen hebben bijvoorbeeld extra functies zoals het meten van BMI, vetpercentage en spiermassa. Ze zijn gebruiksvriendelijk en vaak uitgerust met geheugen voor meerdere gebruikers. Een digitale weegschaal is eenvoudig af te lezen dankzij een duidelijk digitaal display. Door het moderne en compacte ontwerp past hij goed in elke badkamer. Wij vonden vijf modellen die werden gewaardeerd met een cijfer 8 en hoger op Kieskeurig.nl en die voorzien zijn van handige functies.

Inventum PW708ZW

De Inventum PW708ZW geeft – naast het gewicht – ook inzicht in vetpercentage, vochtpercentage, spiermassa en botmassa. Het apparaat heeft een geheugenfunctie voor maximaal 10 gebruikers, waardoor meerdere personen hun gegevens kunnen bijhouden. Het ontwerp is voorzien van een glazen weegoppervlak met roestvrijstalen accenten en een blauw verlicht LCD-display voor duidelijke aflezing.

Extra meetfuncties: vetpercentage, vochtpercentage, spiermassa en botmassa
App beschikbaar: Nee
Materiaal: Gehard glas met roestvrijstalen accenten
Maximum gewicht: 180 kg

Beurer BF195LE

De Beurer BF195LE is een digitale personenweegschaal die naast het gewicht ook lichaamsvet, lichaamswater, spiermassa, botmassa, BMI en caloriebehoefte (AMR) meet. Hij is uitgerust met een rond, blauw verlicht LCD-display en roestvrijstalen elektroden. Er kunnen gegevens van maximaal 10 gebruikers worden opgeslagen.

Extra meetfuncties: vetpercentage, vochtpercentage, spiermassa, botmassa, BMI en AMR
App beschikbaar: Nee
Materiaal:
Gehard glas met roestvrijstalen elektroden
Maximum gewicht:
180 kg

Medisana BS 440 Connect

Naast het meten van het gewicht kun je op deze weegschaal ook metingen van lichaamsvet, lichaamswater, spiermassa, botmassa, BMI en het basaal metabolisme (BMR) aflezen. De weegschaal maakt gebruik van ITO-elektroden die vrijwel onzichtbaar zijn op het glazen oppervlak, wat bijdraagt aan een strak en modern ontwerp. Met bluetooth-functionaliteit kunnen de meetgegevens draadloos worden gesynchroniseerd met de VitaDock+ app op iOS- en Android-apparaten, zodat je je gegevens makkelijk kunt bijhouden en analyseren.

Extra meetfuncties: vetpercentage, vochtpercentage, spiermassa, botmassa, BMI en BMR
App beschikbaar: Ja
Materiaal: Gehard glas met ITO-elektroden
Maximum gewicht:
180 kg

Medisana BSA42

De Medisana BSA42 kent naast het wegen ook lichaamsanalysefuncties, waaronder metingen van lichaamsvet, lichaamswater, spiermassa, botmassa, BMI en caloriebehoefte (BMR). Het apparaat ondersteunt bluetooth-gegevensoverdracht naar de VitaDock+ app en kan gegevens van maximaal 8 gebruikers opslaan. De weegschaal is voorzien van een groot LCD-display en roestvrijstalen elektroden.

Extra meetfuncties: vetpercentage, vochtpercentage, spiermassa, botmassa, BMI en BMR
App beschikbaar: Ja
Materiaal:
Gehard glas met roestvrijstalen elektroden
Maximum gewicht:
180 kg

Tefal Goodvibes Life BM9620

De Tefal Goodvibes Life BM9620 is een digitale personenweegschaal die 10 lichaamsmetingen biedt, waaronder gewicht, BMI, vetpercentage, spiermassa, botmassa en vochtpercentage. Het apparaat werkt met een app voor het bijhouden van gegevens en ondersteunt een onbeperkt aantal gebruikers. De weegschaal heeft een zwart glazen oppervlak met vier roestvrijstalen sensoren en een wit LED-display.

Extra meetfuncties: vetpercentage, vochtpercentage, spiermassa, botmassa en BMI
App beschikbaar: Ja
Materiaal:
Gehard glas met roestvrijstalen sensoren
Maximum gewicht:
180 kg

▼ Volgende artikel
Bezorgd over je privacy? Zo zet je Meta AI uit in je WhatsApp-chats
© Tashatuvango
Huis

Bezorgd over je privacy? Zo zet je Meta AI uit in je WhatsApp-chats

Wil je Meta AI uitschakelen in WhatsApp? Veel gebruikers zijn niet blij met de plotselinge integratie van de AI-assistent. Gelukkig is er een eenvoudige manier om Meta AI per chat uit te zetten met één slimme instelling. In dit artikel lees je stap voor stap hoe je dat doet.

In dit artikel lees je:
  • Waarom de AI-knop van Meta in WhatsApp voor ophef zorgt
  • Wat Meta AI precies doet en waarom je er geen controle over lijkt te hebben
  • Hoe je Meta AI toch kunt uitschakelen per chat via een verborgen instelling
  • Extra privacyvoordelen van de functie Advanced Chat Privacy
  • Praktische tips om deze instelling overal in te schakelen

Meta AI is stilletjes toegevoegd aan WhatsApp, en niet iedereen is daar blij mee. De blauwe AI-knop verschijnt plotseling in je app, zonder dat je daar zelf om hebt gevraagd. Officieel kun je de functie niet uitschakelen of verwijderen, maar er is tóch een manier om ervoor te zorgen dat Meta AI geen rol speelt in jouw gesprekken. Je hoeft er slechts één instelling voor aan te passen.

Wat is Meta AI en waarom is het omstreden?

Meta AI is een generatieve AI-assistent die je vragen kan beantwoorden, ideeën kan aandragen of uitleg kan geven. In theorie klinkt dat handig, maar in de praktijk zijn veel gebruikers kritisch. De knop is standaard aanwezig in WhatsApp, zonder opt-in of duidelijke controle. Ook al belooft Meta dat persoonlijke berichten versleuteld blijven, het idee dat AI wordt verweven in een platform dat bekendstaat om zijn privacy roept bij velen weerstand op.

©ER | ID.nl

Als je iemand wilt taggen door een @ in te voeren, verschijnt Meta AI in beeld.

Je kunt Meta AI niet verwijderen, maar wel deactiveren

Officieel meldt WhatsApp dat Meta AI niet uitgeschakeld of verwijderd kan worden. De knop blijft zichtbaar, zelfs als je de functie nooit gebruikt. Toch blijkt er nu een manier te zijn om Meta AI per chat uit te schakelen via een vrij nieuwe instelling: Advanced Chat Privacy.

Zo werkt het instellen van Advanced Chat Privacy

Je schakelt Meta AI eenvoudig uit voor elke afzonderlijke chat. Dit doe je als volgt:

  1. Open een willekeurige chat, met een persoon of in een groep.

  2. Tik bovenaan op de naam van de contactpersoon of groep.

  3. Scroll naar beneden tot je Advanced Chat Privacy ziet.

  4. Zet deze instelling aan.

Vanaf dat moment verschijnt er een waarschuwing als je probeert @Meta AI te gebruiken:
"Meta AI not available in this chat." WhatsApp verduidelijkt daarbij dat je Meta AI in die chat niet kunt vermelden, omdat Advanced Chat Privacy is geactiveerd.

Let op: in groepschats moet je mogelijk beheerder zijn om deze instelling te kunnen wijzigen.

©ER | ID.nl

De Geavanceerde privacy voor chats is nieuw. Daar kun je ook de Meta AI uitschakelen.

Meer voordelen dan alleen AI-blokkade

De functie doet meer dan alleen Meta AI uitschakelen. Advanced Chat Privacy:

  • voorkomt dat chats worden gebruikt voor AI-functies
  • voorkomt dat volledige chatgeschiedenissen worden geëxporteerd
  • schakelt automatisch downloaden van media uit, wat extra bescherming biedt tegen malware

Advies: zet het overal aan

Er kleven verder geen nadelen aan het activeren van deze privacy-instelling. Wil je zeker weten dat Meta AI niet meeluistert in jouw gesprekken? Dan is het aanzetten van Advanced Chat Privacy voor al je chats de eenvoudigste en effectiefste oplossing.

Controleer of je WhatsApp up-to-date is, want deze functie wordt geleidelijk uitgerold. Heb je ‘m nog niet? Dan komt hij waarschijnlijk snel beschikbaar.