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
Hoe werkt de Quooker Cube en wat kun je er allemaal mee?
© Quooker
Huis

Hoe werkt de Quooker Cube en wat kun je er allemaal mee?

De Quooker is niet voor niets populair: je tapt er direct koud, warm en kokend water uit, gewoon uit één kraan. Met de Quooker Cube komen daar nog twee mogelijkheden bij: daarmee krijg je ook de beschikking over gekoeld gefilterd water en gekoeld bruiswater direct uit de kraan. Maar hoe werkt dat precies? Wat komt er kijken bij het onderhoud? En wat kun je er in de praktijk allemaal mee?

In dit artikel krijg je antwoord op 6 veelgestelde vragen over de Quooker Cube:
  • Wat voegt de Cube toe aan een Quooker?
  • Hoe werkt de Quooker Cube precies?
  • Hoe werken kraan, boiler en Cube samen?
  • Onderhoud: hoe zit het met het filter en de CO₂-cilinder?
  • Wat zijn de voordelen van een Quooker Cube?
  • Kun je de Cube later nog toevoegen aan je bestaande Quooker?

Het oorspronkelijke Quooker-systeem bestaat uit een kraan en een reservoir dat kokend water levert. Dat reservoir, de PRO3 of COMBI, verwarmt water tot 100 graden en houdt het op temperatuur. De kraan zelf geeft daarnaast ook koud en warm leidingwater. Met de Cube voeg je gekoeld bruisend en gefilterd water toe aan dit aanbod. Daarmee levert de kraan voortaan vijf soorten water, zonder dat je iets anders hoeft te installeren.

De Cube is een compacte box die je in het keukenkastje bij de bestaande Quooker plaatst. Hij heeft een eigen koelsysteem, een aansluiting voor een CO₂-cilinder en een ingebouwd waterfilter. In combinatie met de juiste kraan – zoals de Quooker Fusion of Flex – kun je via een aparte bediening kiezen voor gekoeld plat of bruisend water.

Hoe werkt de Quooker Cube precies?

De Cube heeft drie belangrijke onderdelen:

  1. Het koelblok
    De Cube koelt het water tot ongeveer 5 graden lager dan de normale temperatuur van je koude kraanwater (die normale temperatuur is in Nederland meestal tussen de 10 en 15 graden Celcius, afhankelijk van het seizoen). Dat gebeurt volledig automatisch, zodra je kiest voor gekoeld of bruisend water.

  2. Het CO₂-patroon
    Voor het bruiswater maakt de Cube gebruik van een CO₂-cilinder (koolzuurpatroon). Eén patroon is goed voor zo'n 60 liter bruiswater. De koolzuur wordt onder druk toegevoegd aan het gekoelde water, vergelijkbaar met het principe van een Sodastream. De cilinders zijn eenvoudig te vervangen.

  3. Het filter
    Het geïntegreerde Hollow Fibre Active Carbon-filter zuivert het water van onder andere bacteriën, pesticiden en chloor. Het zorgt niet alleen voor een betere smaak, maar is ook nuttig als je het water gebruikt voor babyvoeding of koken. Het filter gaat twaalf maanden of 3500 liter mee. Daarna moet het vervangen worden. Je krijgt een geluidssignaal wanneer het daar tijd voor is.

©Quooker

Eén CO₂-cilinder staat gelijk aan 60 literflessen bruiswater.

Hoe werken kraan, boiler en Cube samen?

Het mooie van het Quooker-systeem is dat alles samenkomt in één kraan. De bediening is intuïtief: voor kokend water druk en draai je aan de ring, voor bruisend of gekoeld water gebruik je een combinatie van drukken. Elke waterstroom heeft een eigen bediening en beveiliging, zodat je je niet snel vergist.

De kraan is verbonden met twee reservoirs: één voor warm en kokend water, en één – de Cube – voor gekoeld en bruisend water. Beide systemen werken onafhankelijk, maar worden centraal bediend. Omdat het leidingwerk slim is aangelegd, komt er nooit een mengsel van water uit de kraan: je krijgt precies wat je vraagt.

Onderhoud: hoe zit het met het filter en de CO₂-cilinder?

Een CO₂-patroon is goed voor ongeveer zestig liter bruiswater. Hoe vaak je het moet vervangen hangt dus af van je verbruik. De cilinder zit aan de voorkant van de Cube en is eenvoudig te verwisselen. Je draait de oude los en bevestigt een nieuwe. De Cube geeft zelf aan wanneer het patroon leeg raakt, meestal met een knipperend lichtje of een kort piepsignaal.

Het filter moet ongeveer één keer per jaar worden vervangen, afhankelijk van de samenstelling van het leidingwater en je gebruik. Ook dit onderdeel zit aan de voorzijde van de Cube en kan zonder speciaal gereedschap worden losgehaald en vervangen. Zowel de filter als de CO₂-patronen zijn los verkrijgbaar bij Quooker en andere aanbieders.

Wat zijn de voordelen van een Quooker Cube?

De uitbreiding naar gekoeld gefilterd en bruisend water lijkt misschien luxe, maar in de praktijk is het verrassend handig. Je hoeft geen flessen spa of ander merk bruiswater meer te kopen, te koelen of op te bergen. Drinkwater tap je altijd fris uit de kraan, ook op warme dagen. En omdat het gefilterd is, smaakt het beter – vooral als je in een regio woont met veel kalk in het water.

Ook in de keuken merk je het verschil. Gefilterd water is prettig voor het zetten van koffie of thee, omdat het minder aanslag geeft en de smaak ten goede komt. Bij koken – denk aan rijst, pasta of soep – gebruik je schoner water. En voor babyvoeding of flesjes voelt het goed om water te gebruiken waarvan je weet dat het gezuiverd is.

Bruiswater is bovendien een fijne extra tijdens een diner of op een feestelijke tafel. Je maakt eenvoudig zelf limonade of cocktails, zonder dat je flessen hoeft te openen of ruimte in de koelkast hoeft vrij te maken. Het water komt gekoeld uit de kraan, direct klaar om te drinken of te mixen.

©Quooker

Kun je de Cube toevoegen aan je bestaande Quooker?

In veel gevallen wel. De Cube is ontworpen als uitbreiding op het bestaande systeem en kan worden aangesloten op de meeste recente Quooker-kranen, zoals de Fusion, Flex of Front. Quooker zelf geeft aan dat toevoegen kan bij kranen en reservoirs die geproduceerd zijn na oktober 2017. Oudere modellen zonder dubbele aansluiting zijn meestal niet geschikt. In dat geval kun je de Cube niet los installeren en is vervanging van de kraan nodig.

De aansluiting zelf is relatief eenvoudig. Je plaatst de unit in het keukenkastje, koppelt de waterleidingen en sluit het CO₂-patroon aan. De kraan herkent automatisch dat er een Cube is aangesloten, en activeert de extra functies. Als je twijfelt of jouw systeem geschikt is, kun je dit checken via het serienummer of contact opnemen met Quooker. Je witgoed- of keukenspecialist kan je ook verder helpen.

Tot slot

De Quooker Cube maakt een toch al slimme kraan nóg veelzijdiger. Zonder extra ruimte op het aanrecht en zonder extra apparaten in huis, krijg je direct toegang tot vijf soorten water. Of je nu thee zet, een flesje voor de baby vult, bruiswater serveert of gewoon een glas koel drinkwater wilt: alles komt uit één kraan, met één handbeweging. En dat maakt het dagelijks leven een stuk makkelijker.

▼ Volgende artikel
Je tuin in augustus: dit doe je nu voor een kleurrijke herfst
© Ju_see
Huis

Je tuin in augustus: dit doe je nu voor een kleurrijke herfst

Augustus is de maand waarin je voluit kunt genieten van je tuin. Bloemen staan in bloei, het groen is uitbundig en de tuin bruist van het leven. Juist nu is het slim om vooruit te kijken. Met een paar eenvoudige aanpassingen geniet je niet alleen nu nog langer van je tuin, maar ook in de herfst en zelfs het volgende voorjaar.

Dit artikel in het kort: 🌼 Knollen en bollen planten 🌼 Laatste keer stikstofmest 🌼 Bloemen wegknippen, planten stekken 🌼 Controleren op schimmel en bladluis 🌼 Gazon bijhouden en herstellen 🌼 Bomen en hagen snoeien

Lees ook: Van januari tot en met december tuinieren

Tijd voor knollen en bollen

Wil je ook in het najaar kleur in de tuin? Plant dan nu herfstbloeiende soorten zoals sternbergia, herfstkrokus, herfsttijloos en cyclamen. Ook coniferen kun je vanaf half augustus planten of verplaatsen. Deze struiken stoppen vroeg in het jaar met groeien, dus dit is het ideale moment. Zorg wel dat je voldoende grond rond de wortels meeneemt en plant alleen als je de komende weken thuis bent. Nieuwe aanplant heeft namelijk veel water nodig.

Een laatste stikstofboost

Augustus is het moment voor een laatste stikstofbemesting. Daarna moet je overstappen op najaarsmest. Stikstof stimuleert de groei, maar planten moeten zich vanaf september juist voorbereiden op rust. Voor bloeiende planten in potten of bakken kun je tot half augustus nog om de twee weken vloeibare mest geven. Hortensia's hebben baat bij speciale hortensiamest voor een rijke bloei en gezonde groei.

Oost west, tuin mest!

Geef je planten wat extra liefde en voeding

Bloemen wegknippen, planten stekken

Verwijder uitgebloeide bloemen van rozen, dahlia's, lathyrus (ook bekend als pronkerwt of sweet pea) en andere zomerbloeiers. Zo steken de planten hun energie niet in zaadvorming, maar in nieuwe knoppen. Je verlengt er de bloei aanzienlijk mee. Geef hoge planten wat steun, zeker bij wind of regen, en zorg bij droogte voor extra water, vooral bij dorstige soorten zoals hortensia's. Haal lelijke bladeren en oude stelen van bijvoorbeeld geraniums weg. Augustus is ook een goed moment om stekken te nemen. Daarmee vul je in het voorjaar gemakkelijk kale plekken. En vergeet het onkruid niet te wieden – dat groeit in de zomer net zo hard mee.

©Nedopekin Yuriy

Vocht = kans op schimmel

In augustus worden de nachten vochtiger, en dat merk je aan de planten. Schimmel ligt op de loer. Controleer regelmatig het blad en verwijder aangetaste delen meteen. Besproei de rest van de plant eventueel met bladmeststof om de weerstand te verhogen. Ook bladluis is nu nog erg actief. Zie je een plaag opkomen, spuit de beestjes dan weg met een harde straal water.

Gazon bijhouden en herstellen

Maai het gras regelmatig, maar laat bij aanhoudende droogte liever iets langer. Zo voorkom je dat het gras verbrandt. Geef bij droog weer eens per week langdurig water, zodat het diep in de bodem trekt. Augustus is ook het moment om kale plekken bij te zaaien. Doe dit bij voorkeur halverwege de maand. Ook het gazon mag nu voor de laatste keer stikstof krijgen, daarna is het tijd voor najaarsvoeding.

Lees ook: Is het gras bij de buren groener? Zo pak je kale plekken in het gazon aan

🍎 🍐 Appels en peren

Heb je een appel- of perenboom? Dan is dit de maand om de eerste vruchten te plukken. Als de steeltjes makkelijk loslaten van de tak, zijn ze rijp. Plukken kan dus nu al beginnen.

Bomen en hagen snoeien

Augustus is een geschikte maand om hagen en bepaalde bomen te snoeien. Denk aan conifeer, buxus, taxus en liguster, maar ook aan walnoot, berk en esdoorn. Door ze in model te snoeien houd je ze strak en stimuleer je nieuwe scheutvorming. Let op: snoei nooit tot op het kale hout, behalve bij taxus. Lavendel mag je voor maximaal een derde terugsnoeien – bloeit hij nog door tot oktober, stel het snoeien dan uit tot na de winter. Ook de klimhortensia en blauweregen kun je nu bijwerken: verwijder uitgebloeide delen en knip uitlopers terug tot 15 cm vanaf het oude hout. Eenmalig bloeiende rozen kun je na de bloei terugsnoeien; dat zorgt voor sterke twijgen die klaar zijn voor de winter. Snoei bij voorkeur niet als het boven de 25 graden is of in de volle zon – dat kan schade geven aan het blad en de bast.

Lees ook: Welke snoeischaar voor welke snoeiklus?

©Таня Микитюк