programmatūra · 5 min · 20.07.2026

JupyterLite 0.8 pāriet uz Rspack, un Pyodide kodols palaiž asyncio pārlūkā

JupyterLite komanda 8. jūlijā izlaida 0.8.1 versiju rīkam, kas darbina pilnu Jupyter darba vidi tikai pārlūkprogrammā, bez neviena servera. Lielākā izmaiņa visā 0.8 sērijā ir būvēšanas sistēmas pāreja no webpack uz Rspack. Izstrādātājiem tomēr var izrādīties svarīgāks atjauninātais Pyodide kodols: tas nes Python 3.13 un ļauj pārlūkā palaist blokējošus asyncio.run() izsaukumus.

JupyterLite ir JupyterLab izdalījums, kas kompilēts uz WebAssembly un darbojas klienta pusē. Servera nav — vietni var novietot uz jebkura statiska hostinga, un Python kods izpildās lietotāja pārlūkā, atsevišķā Web Worker pavedienā. Faili glabājas pārlūka IndexedDB vai localStorage krātuvē. Vide ir salikta no tiem pašiem JupyterLab komponentiem un federētajām paplašinājumu pakotnēm, tāpēc to var iegult lielākā lietotnē vai pielāgot pēc vajadzības. Izmaiņu sarakstā redzams, ka 0.8.0 iznāca 23. jūnijā, bet 0.8.1 ar viena kodola izslēgšanas labojumu sekoja 8. jūlijā.

Būvēšana pārgāja uz Rspack

Versija 0.8.0 pārcēla iekšējo būvēšanu no webpack uz Rspack. Rspack ir ar Rust rakstīts saišņotājs, kas tur webpack savietojamu konfigurāciju, tāpēc esošie JupyterLite projekti pārceļas bez izmaiņām, bet būvēšanas laiks saruka. Lielām paplašinājumu kopām webpack būve bija pazīstams sāpju punkts, un tieši to šī pāreja risina.

Tā pati versija balstās uz JupyterLab 4.6.0 un Notebook 7.6.0, tāpēc pārlūkā tagad pieejamas arī šo laidienu funkcijas: scratchpad konsoles ātriem aprēķiniem, pārvietojama aktivitāšu josla, rediģējami failu pārlūka ceļa elementi un jauns tastatūras saīsņu redaktors. Dialogs «About» tagad rāda, kuras JupyterLab un Notebook versijas ir iekļautas būvējumā, tāpēc pēc kļūdas ziņojuma ir vieglāk saprast, ar ko īsti strādā lietotājs.

REPL var iedot ar saiti

Jaunā rīkjoslas poga ievieto pašreizējo REPL stāvokli — ievades saturu, izvēlēto kodolu, tēmu un opcijas — tieši URL adresē un iekopē to starpliktuvē. Saņēmējs, atverot saiti, redz to pašu konsoli ar to pašu kodu. Tas noder skolotājam, kurš grib parādīt fragmentu, vai kolēģim, kurš ziņo par kļūdu. Startēšanas ekrāns arī pārzīmēts: tagad tā ir Jupyter planēta ar riņķojošiem pavadoņiem, kamēr vide ielādējas.

Failu darbs un labojumi

0.8.0 salaboja vairākas vietas pārlūka failu sistēmā. Failu un mapju izveide kļuva ātrāka un uzticamāka. Labojums #1967 tagad atsaka rakstīšanu mapē, kuras nav, ar skaidru kļūdu, nevis kluso neveiksmi. Labojums #1902 novērš faila divkāršu atvēršanu, startējot vidi ar vaicājuma parametriem. No komplekta izņemts novecojušais @jupyterlite/iframe-extension — tā vietā strādā JupyterLab iebūvētais HTML atveidotājs. Versija 0.8.1 pievienoja vienu labojumu: kodols tagad korekti izslēdzas.

Pyodide kodols: Python 3.13 un JSPI

Pyodide 0.28.0 būvēts ar Python 3.13 un jaunu ABI uz Emscripten 4.0.9 bāzes. Būtiskākā izmaiņa ir JavaScript Promise Integration (JSPI) atbalsts. Līdz šim asinhronu JavaScript kodu pārlūkā bija grūti sasaistīt ar sinhronu Python API — Python gaidīja atbildi, bet pārlūka galvenais pavediens tikmēr nedrīkstēja apstāties. JSPI ļauj veikt izsaukumu, kas no Python skatpunkta izskatās sinhrons, bet no JavaScript puses paliek asinhrons.

Ar JSPI var izpildīt blokējošu Python izsaukumu, neapturot JavaScript galveno pavedienu.

Praksē tas nozīmē, ka asyncio.run() un loop.run_until_complete() tagad strādā tieši pārlūkā. Ja pārlūks atbalsta JSPI, šīs funkcijas ieslēdzas automātiski, un vecais kods, kas gaidīja notikuma cilpu, izpildās bez pārrakstīšanas. Chrome 137, kas iznāca 2025. gada 27. maijā, atbalsta JSPI pēc noklusējuma bez eksperimentāla karoga. Node 24 to prasa ar --experimental-wasm-jspi, Firefox — aiz iestatījuma javascript.options.wasm_js_promise_integration. Pati JSPI par pabeigtu priekšlikumu kļuva 2025. gada 8. aprīlī.

JSPI pamatā ir WebAssembly steka pārslēgšana, un Pyodide 0.28.1 to atjaunināja, lai sader ar galīgo standartu. Pāreja uz Python 3.13 prasīja arī upuri: daļa pakotņu no Pyodide 0.28 izņemtas savietojamības dēļ, tāpēc atsevišķiem projektiem pirms atjaunināšanas jāpārbauda, vai vajadzīgā bibliotēka joprojām ir komplektā.

Kam tas noder

Skaitļošana bez servera der mācībām un dokumentācijai. Kursa autors var ielikt palaižamu piemēru tieši lapā, un students to izpilda pārlūkā, neinstalējot Python un neveidojot kontu. Seminārā vairs nav jātur JupyterHub serveris katram dalībniekam — statiskā lapa iztur jebkuru apmeklētāju skaitu, jo skaitļošana notiek pašu ierīcēs. Ar JSPI pievienošanu pazūd viens no lielākajiem robiem: kods, kas izmanto asyncio, agrāk pārlūkā vai nu nestrādāja, vai prasīja pārrakstīšanu, tagad izpildās bez izmaiņām.

Tā kā faili paliek IndexedDB krātuvē, students var aizvērt cilni un vēlāk atgriezties pie tā paša darba tajā pašā pārlūkā. Vienlaikus tas ir arī ierobežojums: darbs ir piesaistīts konkrētajai iekārtai un pārlūkam, un dzēšot pārlūka datus, dzēšas arī piezīmju grāmatiņas. Xeus Python kodols paliek kā otra iespēja tiem, kam vajag citu pakotņu kopu vai R valodu, bet noklusējuma Pyodide kodols pēc 0.28 ir tas, kas dabū jauno asinhrono uzvedību.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no programmatūrasaistītie