onnodige code weg, waaronder service_worker.js, we doen voor nu toch geen caching
functies verwijderd die niks toevoegen, zoals debounceLazy
Een extra mode-python.js nodig om python mode te ondersteunen voor de Ace editor
herstructurering voor Python implementatie (todo#7090489015)
In plaats van 1 WorkerAPI die altijd wordt aangeroepen is er nu een aparte worker-api.js die o.b.v. een gegeven taal (i.e. py of c) de corresponderende worker inlaad (voordeel is dat wasm bestanden van python alleen worden ingeladen wanneer de worker wordt ingeladen en hetzelfde voor C).
static/wasm/ had eerst alleen wasm bestanden voor C, nu twee aparte sub-mapjes py en c_cpp met de benodigde bestanden die door de wasm lib in de worker worden ingeladen.
nieuwe static/js/workers met een clang.worker.js en py.worker.js, elke worker bevat alle code die voor het compileren gebruikt wordt. Overigens extenden deze twee een "abstract" BaseAPI, mocht er ooit een derde taal bij komen, dan geeft de BaseAPI aan welke functies en api options geïmplementeerd moeten worden.
Een taal wordt gedetecteerd o.b.v. de eerste bestandsnaam die in de tabs key zit die ik vanuit de config krijg. Als het eerste bestand eindigt op .c dan wordt de "clang worker" gebruikt, en voor .py krijg je de "python worker".
Voor Python wordt pyodide gebruikt. Ik heb de wasm bestanden gedownload, zodat we niet afhankelijk zijn van andere websites, maar dit zorgt wel voor twee extra grote bestanden:
static/wasm/py/pyodide.asm.wasm (8.58 MB)
static/wasm/py/python_stdlib.zip (8.47 MB)
Voor de duidelijkheid: pyodide heeft static/wasm/py/pyodide-lock.json nodig, dus het klopt inderdaad dat er een package-lock.json in staat. Zonder dit kan ik pyodide niet werkend krijgen.
We gebruiken nu Pyodide 0.24.1 (laatste versie is 0.25.0) met Python v3.11.3 (ik print dit altijd naar de console, wanneer de worker is gestart, mocht je het vergeten. Misschien kunnen we dit in de term printen? Kan misschien fijn zijn voor studenten om te weten.)
Deze pull request bevat:
Structure
en table of contents, zie hierservice_worker.js
, we doen voor nu toch geen cachingdebounceLazy
mode-python.js
nodig om python mode te ondersteunen voor de Ace editorWorkerAPI
die altijd wordt aangeroepen is er nu een aparteworker-api.js
die o.b.v. een gegeven taal (i.e.py
ofc
) de corresponderende worker inlaad (voordeel is dat wasm bestanden van python alleen worden ingeladen wanneer de worker wordt ingeladen en hetzelfde voor C).static/wasm/
had eerst alleen wasm bestanden voor C, nu twee aparte sub-mapjespy
enc_cpp
met de benodigde bestanden die door de wasm lib in de worker worden ingeladen.static/js/workers
met eenclang.worker.js
enpy.worker.js
, elke worker bevat alle code die voor het compileren gebruikt wordt. Overigens extenden deze twee een "abstract"BaseAPI
, mocht er ooit een derde taal bij komen, dan geeft deBaseAPI
aan welke functies en api options geïmplementeerd moeten worden.Een taal wordt gedetecteerd o.b.v. de eerste bestandsnaam die in de
tabs
key zit die ik vanuit de config krijg. Als het eerste bestand eindigt op.c
dan wordt de "clang worker" gebruikt, en voor.py
krijg je de "python worker".Voor Python wordt pyodide gebruikt. Ik heb de wasm bestanden gedownload, zodat we niet afhankelijk zijn van andere websites, maar dit zorgt wel voor twee extra grote bestanden:
static/wasm/py/pyodide.asm.wasm
(8.58 MB)static/wasm/py/python_stdlib.zip
(8.47 MB)Voor de duidelijkheid: pyodide heeft
static/wasm/py/pyodide-lock.json
nodig, dus het klopt inderdaad dat er een package-lock.json in staat. Zonder dit kan ik pyodide niet werkend krijgen.We gebruiken nu Pyodide 0.24.1 (laatste versie is 0.25.0) met Python v3.11.3 (ik print dit altijd naar de console, wanneer de worker is gestart, mocht je het vergeten. Misschien kunnen we dit in de term printen? Kan misschien fijn zijn voor studenten om te weten.)