Efter en lång, lång väntan på version 6 av Javascript, 14 år, så är det numera en ny version varje år som gäller, se faktaruta. Finns det verkligen nyheter nog att fylla på med för att klara av den lanseringstakten?
Det ska man inte oroa sig, enligt Ashley Grant, en av de ledande utvecklarna av ramverket Aurelia:
– Det krävs inga större nya funktioner för att få ihop en ny version av Javascript. Det finns en process för att hantera alla nya idéer, säger Ashley Grant.
Läs också: Här är språket som utvecklare helst labbar med på fritiden
Det här och mycket annat berättade han om nyligen under ett föredrag på den stora konferensen Devsum i Stockholm, se faktaruta. Han tryckte speciellt på att processen gör det möjligt för vem som helst att komma med förslag till nya funktioner i Javascript. Om många gillar ett förslag så är det troligt att det implementeras i en ny version av språket.
Processen för att hantera förslag är indelad i fem steg, som numreras från noll till fyra.
– Riktiga programmerare börjar räkna på noll, förklarar Ashley Grant.
Den som inte förstår det roliga med det påståendet är kanske ingen riktig programmerare. I korthet handlar det om att det finns två skolor vad gäller att numrera, eller indexera, saker i programmeringsspråk. I den ena (C, Java, C#, Javascript, med flera) börjar man räkna på noll. I den andra (Visual Basic, Pascal, med flera) börjar man på ett.
Det här är bara en av många saker som en del programmerare gillar att tjafsa om. Vilket är ganska konstigt med tanke på att det borde vara uppenbart att det är bäst att börja räkna på ett.
Kort sagt handlar steg noll i processen om att komma fram med nya idéer. Steg fyra innebär att en ny funktion, eller ”feature”, är färdigspecificerad och kan tas in i en kommande ny version av Javascript. Om det är en populär ny funktion så är den i det skedet med största säkerhet redan implementerad i de ledande webbläsarna.
Om en ny funktion kommit till steg fyra i tid för ett viktigt möte i mars så kommer den med största säkerhet med i nästa version av språket. Mötet i fråga hålls av den kommitté som beslutar om Javascript, se faktaruta.
För närvarande finns ingen ny funktion i steg fyra, men det finns gott om intressanta nyheter i de andra stegen. Här Ashley Grants syn på de mest intressanta:
Steg 3: Kandidater
Det fjärde steget (man börjar alltså krångligt nog räkna på noll) i processen innebär att en specifikation för en ny funktion ska vara komplett. Men det kan fortfarande bli mindre ändringar, om det finns en efterfrågan. En ny funktion som är i det fjärde steget ska kunna användas i applikationer och på webbsidor.
Här är de hetaste nyheterna i det fjärde steget:
- Begreppet global. Ibland kan det bli struligt i Javascriptkod när man omväxlande behöver referera till self, window, global, etcetera för att komma åt olika värden. Det nya begreppet global ska täcka in alla, eller åtminstone många, sådana här referenser. Och det ska ge enklare kod.
- Smart tilldelning av egenskapsvärden. Under benämningarna rest och spread införs nya praktiska sätt att tilldela värden för egenskaper för objekt. Ett exempel är att ett värde tilldelas objekt A, ett andra värde till objekt B och ett tredje värde till alla andra objekt i en samling. Nu blir det enklare att uttrycka det i kod.
- Förbättringar av reguljära uttryck (regex). Ett exempel är att det blir enklare att namnge saker.
På tal om regex, har du hört den här: ”Jag hade ett problem som jag skulle lösa med regex, nu har jag två problem”. Det är Ashley Grants beskrivning av den egna relationen till regex.
Läs också: Facebook skruvar upp farten för React – kan bli genombrott för Javascript i mobilen
Han berättar vidare att Simd.js, en lösning för bättre grafikprestanda som fanns i steg tre, har lagts ned. Det beror på att Webassembly löser samma problem.
Steg 2: Utkast
I det tredje steget (återigen, man börjar räkna på noll) ska det finnas ett utkast till en specifikation, med precisa beskrivningar av syntax och semantik. Det kan finnas experimentella implementationer i en del webbläsare. Det är troligt att en ny funktion som finns i steg två tar sig hela vägen till steg fyra och kommer in i Javascriptstandarden.
Här är några exempel på nya funktioner som finns i det tredje steget:
- Bättre hantering av publika egenskaper i klasser.
- Finally för att asynkron hantering med hjälp av löften (promises). Kort sagt en enkel lösning för att städa upp efter kommandon som man inte har kontroll över vad gäller deras utföranden.
- Hantering av metadata med hjälp av decorators. Det innebär att metadata som hör till klasser eller egenskaper för klasser kan visas på ett bra sätt. ”Ungefär som attribut i C#”, förklarar Ashley Grant.
- Privata fält (egenskaper) med prefixet #. Tyvärr innebär det vissa problem eftersom tecknet # används i Typescript, Microsofts turbovariant av Javascript.
Ett programmerarskämt till: ”Slutligen finally”. Det är roligare på engelska: ”Finally finally”.
Steg 1: Förslag
Det andra steget (man börjar alltså räkna på noll) innebär att man propagerar för sina förslag, utser ledande personer som ska arbeta med dem, förklarar vilka lösningar som ska kunna byggas med nya funktioner och publicerar exempel.
I det här skedet är det troligt att det blir stora förändringar av funktionen som byggs. Den kan finnas tillgänglig som betaversion, antagligen med hjälp av en mekanism som kallas ”polyfill”. Det innebär att en ny funktion implementeras i en webbläsare utan att den egentligen är implementerad i webbläsaren. Det görs ofta med hjälp av ett Javascriptbibliotek. Syftet är förstås att kunna testa nya funktioner tidigt under arbetet med att bygga dem.
I det andra steget hittar vi bland annat följande:
- Smartare hantering av export och import mellan moduler. Man ska slippa skapa ”mellanmoduler” som endast används för det.
- Hantering av asynkrona dataströmmar, med en funktion som kallas observable.
Det återstår att se vilka nya funktioner som tar sig hela vägen till Javscriptstandarden Ecmascript. När de väl har gjort det så går det fort tills de implementeras i webbläsare. Ashley Grant refererar till Ecmas statistik över hur mycket av den senaste standardversionen Ecmascript 2016, med tillägg, som har implementerats i de ledande webbläsarna. Andelarna varierar från 76 procent (Microsofts Edge) till 94 procent (Apples Safari).
Den officiella Javascriptstandarden heter Ecmascript och hanteras av standardorganisationen Ecma International (European Computer Manufacturers Association). Arbetsgruppen som sköter arbetet inom Ecma heter TC39 (Technical Committee 39).
Den aktuella Javascriptstandarden heter Ecmascript 2016 och fastställdes i juni 2016. Just nu arbetas det för högtryck med att fastställa Ecmascript 2017.
Devsum är en tvådagars Dotnetkonferens som hålls i Stockholm under veckan. Cirka 600 besökare får lyssna på 67 föredrag, samt delta under ytterligare en dag med nio workshops.