Safari 27 ispravlja await na najvišem nivou modula, a WebKit je učitavač modula napisao iznova
WebKit je ispravku objavio 2. septembra 2026. Dinamički uvozi modula koji koristi await na najvišem nivou mogli su u Safariju da se završe pogrešnim redoslijedom, pa je uvoznik koji krene prerano nailazio na grešku o pristupu vrijednosti prije inicijalizacije. Uzrok je bio učitavač modula građen po napuštenom prijedlogu WHATWG Loader, a ne po algoritmima iz standarda ECMAScript. WebKit je učitavač napisao iznova, iz JavaScripta u nativni C++, a rezultat stiže u Safariju 27 i u izdanju Safari Technology Preview 251.
Ako je neki modul radio u Chromeu i Firefoxu, a u Safariju se prekidao uz grešku o pristupu vrijednosti prije inicijalizacije, WebKit je sada imenovao uzrok i uklonio ga. Kai Tamkun je 2. septembra 2026. napisao da WebKit za Safari 27 donosi potpunu usklađenost sa specifikacijom za await na najvišem nivou. Ispravka se može isprobati u probnoj verziji Safarija 27 i u izdanju Safari Technology Preview 251.
Šta je bilo pogrešno
Await na najvišem nivou dopušta modulu da zaustavi sopstveno izvršavanje dok se asinhroni posao ne završi, a svaki modul koji ga uvozi mora da sačeka. Safarijev učitavač nije čekao. Uvoz je označavao kao gotov prije nego što se izvršavanje čekanog modula završi, pa je uvoznik mogao da krene dok izvezene vrijednosti koje su mu potrebne još nisu bile inicijalizovane.
U objavi se prolazi kroz tri uzastopna dinamička uvoza istog modula. Trebalo je da se završe onim redom kojim su i zatraženi, prvi pa drugi pa treći. U Safariju su se završavali redom drugi, treći, prvi, a drugi i treći uopšte nisu mogli da pročitaju izvezene vrijednosti nego su završavali greškom o pristupu prije inicijalizacije.
Zašto pisanje iznova, a ne još jedna zakrpa
Učitavač je bio pisan prema prijedlogu WHATWG Loader, koji je kasnije napušten, a ne prema algoritmima za asinhrono izvršavanje modula iz samog standarda ECMAScript. Ta nepodudarnost je razlog zbog kojeg su se greške vraćale: svaka zakrpa je uklanjala posljedicu strukture koja nije odgovarala specifikaciji koju je trebalo da sprovodi.
U januaru 2026. tim je krenuo iznova. Učitavač je prešao s JavaScripta pisanog unutar samog mehanizma na nativni kod u C++-u, uz pseudokod iz specifikacije prenesen doslovno, a zahtjev za spajanje izmjena (pull request) u nacrtu stigao je nekoliko sedmica kasnije. Uz ovakvu izmjenu ne ide nijedna nova mogućnost, a posao je trajao od januara 2026. do probne verzije Safarija 27, objavljene 2. septembra 2026.
Kako su provjerili
Tvrdnju o usklađenosti sa specifikacijom potkrepljuju dvije provjere, i obje su opisane u objavi.
- Alat za nasumično generisanje ulaza (fuzzer) pravio je grafove modula i Safarijev izlaz poredio bajt po bajt s izlazom drugih mehanizama.
- Svi testovi za module iz zbirke test262, zvanične provjere usklađenosti sa standardom ECMAScript, prošli su prije spajanja izmjene.
- WebKit navodi da novi učitavač nije donio nijednu novu grešku u ranije ispravnom ponašanju.
„WebKit za Safari 27 donosi potpunu usklađenost sa specifikacijom“
Povezano
Safari 27.0 donosi MCP server, pa pomoćnik za kod sam upravlja pregledačem
WebKit je spisak mogućnosti objavio 17. septembra 2026. To je najduži spisak koji je taj tim napisao: 83 mogućnosti, prema 58 na prvoj probnoj verziji u junu, i 844 ispravke kvaliteta prema 525 najavljenih na konferenciji WWDC. Za onoga ko gradi uz pomoćnika za pisanje koda najvažniji je Safarijev MCP server, koji agentu predaje DOM, mrežne zahtjeve, snimke ekrana i ispis konzole iz pravog prozora Safarija. Prilagodljivi select pretvara pravi element select u nešto što se u cjelini može stilizovati, a sidrenje pomjeranja zaustavlja skakanje stranice kad se sadržaj učita iznad onoga što čitalac gleda.
WebKit Blogprovjereno
Safari Technology Preview 252 uvodi named-feature() i spoljašnje SVG resurse
Pregledno izdanje objavljeno je 11. septembra 2026. za macOS Golden Gate i macOS Tahoe, a obuhvata izmjene WebKita između 319252@main i 320112@main. Novo je jedanaest mogućnosti, a dvije od njih rade isti posao: kako stilski list, pa zatim i skripta, saznaje šta pregledač ispod njih umije. Funkcija named-feature() pita za ponašanje koje nema svoju sintaksu, a spisak iza nje za sada ima tačno dva zapisa. SVG je uz to dobio spoljašnje resurse, pa referenca kroz url() konačno može da pokaže na filter, masku ili gradijent iz drugog dokumenta.
WebKitprovjereno
Prijedlozi za Interop 2027 primaju se do 23. septembra, a ideja bez testova ne prolazi
Prijem prijedloga za oblasti fokusa Interopa 2027 počeo je 3. septembra 2026. i traje do 23. septembra 2026. Prijedlog se predaje kao prijava u repozitorijumu koda web-platform-tests/interop, a dva uslova odlučuju gotovo sve: tehnologija mora imati zreo standard i mora se moći mjeriti testovima, jer se na tabli rezultata prikazuju upravo rezultati testova. Ono što padne na drugom uslovu upućuje se na Interop Investigations. Rok je dvadeset dana, a dokazi koje dobar prijedlog traži skupljaju se duže od jedne večeri.
WebKitprovjereno

