operativsystemer og programvare

Web-arkitekt om nyhetene i Javascript 2024: Slutt på tomme løfter

Det er brukbare nyheter i årets oppdatering av Javascript, mener dansk ekspert i Intel – fra det jordnære, som enklere håndtering av emojier, til ting for spesielt interesserte.

Hos brikkegiganten Intel ser man weben som dagens sentrale plattform, og derfor er det viktig at firmaets maskinvare kan yte optimalt, også når teknologiene er HTML, Javascript og CSS, påpeker webarkitekt Kenneth Christiansen.
Hos brikkegiganten Intel ser man weben som dagens sentrale plattform, og derfor er det viktig at firmaets maskinvare kan yte optimalt, også når teknologiene er HTML, Javascript og CSS, påpeker webarkitekt Kenneth Christiansen.

Med sommeren kommer også en rekke nye muligheter med Javascript. Hvert år på denne tiden ferdigstilles nyhetene i språket, som formelt heter Ecmascript, og denne gangen har sju forslag nådd frem til fjerde etappe, som betyr at funksjonaliteten er klar til bruk.

Blant nyhetene er en group-by-metode for objekter og arrays. Det er rett frem – et objekt eller array blir delt opp etter en nøkkel. Det kan se ut som under, og i likhet med de andre eksemplene i denne artikkelen er det hentet fra dokumentasjonen.

Kenneth Christiansen jobber til daglig i Intel fra Danmark, han har tittelen web platform architect og sitter også i en rekke av World Wide Web Consortiums standardiseringsgrupper. Han gir et eksempel på bruken:

– Du har en kjempeliste med navn på elever. Og du vil gjerne sortere dem etter klasse, eller etter høyde, eller kjønn, eller annen metadata du har.»

Group-by er også kjent fra SQL, funksjonelle språk og Javas streams, og nå kan funksjonaliteten altså brukes i Javascript.

Slutt på tomme løfter

En annen nyhet i sommerens Javascript er Promise.withResolvers. Et promise, eller future i andre språk, er det objektet som await-nøkkelordet venter på. Det kapsler inn en operasjon som kan utføres senere eller parallelt i en annen tråd. Det kan være situasjoner hvor man vil bytte ut funksjonene som kalles når promise-objektet skal utføres (resolve) eller når det oppstår en feil (reject). Men det kan være vrient å få tak i funksjonene.

Derfor kommer det nå en enkel statisk metode som skaper en Promise og returnerer de enkelte delene av objektet:

– Du har eksisterende kode, og du vil kanskje bare wrappe det – lage det som et promise, så du kan jobbe med async og await, forklarer Christiansen.

Dette er en nyhet han er sikker på at han vil bruke i fremtiden. Han gir et eksempel:

– Hvis man bare skal teste et eller annet, så er det ofte veldig vanskelig å få alt inn i en funksjon. Noen ganger trenger man bare tilgang til resolve-funksjonen, som kanskje skal gis videre til en annen funksjon.

Dynamiske arraybuffers

Den kanskje mest interessante nyheten denne gangen gjelder arraybuffers, mener Christiansen. Arraybuffers er Javascripts måte å håndtere binære data på. Men størrelsen er låst og kan ikke endres, så man må kopiere data til et nytt array hvis man trenger mer plass. Det samsvarer heller ikke med WebAssembly, hvor en tilsvarende funksjon kan gjøres større.

Dette gir en rekke problemer når WebAssembly-minnet skal samsvare med det på Javascript-siden. Og den nye WebGPU-standarden kan også dra nytte av et dynamisk array, ifølge dokumentasjonen.

Dette kan gjøres bedre i den nye 2024-versjonen, hvor Arraybuffer-klassen har fått en rekke nye metoder:

Arraybuffers søster, SharedArrayBuffer, som brukes til å dele data mellom worker-tråder, får de samme API-metodene.

Vi fortsetter med arraybuffere, for neste nyhet er muligheten til å overføre eierskap til en arraybuffer, som fra én tråd til en annen:

Detached-egenskapen viser om eierskapet er overført eller ikke. Med den nye funksjonen slipper man å lage en defensiv kopi, påpeker Christiansen. Dette gir implementeringer, som nettlesere og Node.js, mulighet til å slippe å kopiere arrayet under disse forholdene. Internt i implementeringen kan man bare gi videre en referanse til arrayet.

Og alt det andre

Blant andre nyheter er gyldige Unicode-strenger, og det handler om at ikke alle sekvenser av såkalte Unicode codepoints (som representeres med 16-bits heltall uten fortegn) er gyldige. Dette kan gi problemer med transformasjoner av tegnsett og også introdusere en sikkerhetsvektor, hvor malware-bytes smugles inn som codepoints. Nyheten består av metodene String.isWellFormed() og String.toWellFormed(), som fikser dette.

Den nye funksjonen Atomics.waitAsync() gir mulighet for finkornet minnehåndtering, noe som imøtekommer behov hos blant andre Mozilla, som står bak Firefox. Ifølge Christiansen er dette noe svært få vanlige utviklere vil jobbe med.

Det er også nye muligheter med regular expressions, som ifølge Christiansen gir bedre muligheter til å jobbe med emojier og andre tegn som strekker seg over mange codepoints.

Nyhetene i Javascript 2024 er ofte allerede implementert mange steder, og på nettstedet Can I Use kan man følge med på utviklingen i nettleserne.

Artikkelen ble først publisert på Version 2 for deres abonnenter. Den er tilgjengelig på norsk for abonnenter av Ekstra gjennom vår samarbeidsavtale.

Powered by Labrador CMS