RSS

Video's van de Ada Devroom van Fosdem 2022

Afgelopen weekend was er weer Fosdem. Dit is een jaarlijks evenement waarbij allerhande vrije software hackers praatjes geven over hun favoriete onderwerpen. Fosdem is heel groot en vindt normaal gesproken plaats op het terrein van de Université libre de Bruxelles. Het was in de pre-corona jaren altijd een geweldige samenkomst van programmeurs en andere open source enthousiastelingen van over de hele wereld. Dit jaar was Fosdem volledig virtueel en konden de bezoekers zich weer onderdompelen in een keur aan developer rooms over uiteenlopende onderwerpen.

Ada had - zoals gebruikelijk - op zondag ook zo’n devroom en de video’s daarvan staan nu online. Voor nieuwkomers kan ik het praatje Introduction to Ada for Beginning and Experienced Programmers van Jean-Pierre Rosen aanraden.

Zelf was ik bijzonder geïnteresseerd in Max Rezniks praatje over AdaWebPack. Zoals ik eerder had geschreven zou ik graag Ada in de webbrowser willen gebruiken, zodat ik kan ontsnappen aan het juk van JavaScript en AdaWebPack helpt je daarbij. AdaWebPack maakt gebruik van GNAT-LLVM om Ada te kunnen compileren naar WebAssembly (WASM). Het afgelopen jaar ben ik meer over WASM gaan lezen en ik begin het idee te krijgen dat deze aanpak de toekomst heeft. De performance is bijzonder goed en de specificatie is ook nog eens helder en vrij bondig. Naast de mogelijkheden voor het web denk ik dat het de potentie heeft om ook JVM van de troon te stoten als het gaat om gemakkelijk cross-platform ontwikkelen.

Reznik legt in zijn praatje uit hoe AdaWebPack werkt. Ze konden de GNAT runtime niet gebruiken, aangezien die uit gaat van een POSIX-omgeving. Dit werkt niet in WASM, dus daarom hebben ze gekozen om een Bare Board Runtime te gebruiken. De implicaties hiervan zijn dat er geen ondersteuning is voor lokale exceptions, nested subprograms, tasks en projected objects. Dat is iets waar ik wel mee kan leven en het is ook wel prettig dat je WASM binary niet de grote GNAT runtime hoeft mee te torsen.

Naast de runtime biedt AdaWebPack ook packages voor aanvullende WASM api’s, waaronder bindings voor de Web API. Dit is erg nuttig, want je kunt dan DOM-manipulatie doen vanuit Ada. Je kunt elementen in het webdocument opzoeken, aanpassen en er ook event listeners aanhangen zodat je kunt reageren op muiskliks, toetsenbordinput..etc. Voor de interoperabiliteit met JavaScript is er de package WASM.Objects. Naast al dit handigs zijn er ook nog koppelingen voor WebGL, websockets en voor XMLHttpRequests.

Reznik beschrijft ook nog een paar afgeleide werken die gebruik maken van de functionaliteit van AdaWebPack. Zo is er het project AdaGL dat bindings biedt voor zowel OpenGL als WebGL, ergo: je kunt in 1 klap een applicatie bouwen die zowel werkt in een webbrowser als op een desktop. Dit kan erg leuk zijn voor game development.

De komende dagen ga ik nog wat andere video’s bekijken van Fosdem. Ik ben erg benieuwd naar het praatje van Stefan Hild getiteld: Ada Looks Good, Now Program a Game Without Knowing Anything. Dat klinkt als een geweldig plan!