# Źródła i modyfikacje komponentów zewnętrznych

Kod Pyodide i Hiwire objęty MPL-2.0, wraz z odpowiednimi modyfikacjami, jest udostępniany na warunkach [Mozilla Public License 2.0](licenses/Pyodide-314.0.7-MPL-2.0.txt). Odrębne noty i licencje pozostałych składników zachowują moc.

## Pobieranie źródeł

- [Źródła i modyfikacje dla użytego Pyodide 314.0.7](sources/pyodide-314.0.7-qlc-source-materials.zip).
- [Oryginalne źródła Pyodide 314.0.7](sources/pyodide-314.0.7.tar.gz).
- [Oryginalne źródła Hiwire](sources/hiwire-6a1e672.tar.gz), commit `6a1e67280a15d929ebeceee54a6358c9c8d5f697`.
- [Czytelne metadane Pyodide](sources/upstream-metadata/pyodide-lock.json), wydanie recipes `314-20260911`.

Archiwum obejmuje źródła upstream z ich licencjami, zmienione czytelne pliki TypeScript i poprawkę, oryginalne wejścia JavaScript oraz odpowiadające im zmodyfikowane części loadera. Zawiera też źródła pomocniczego modułu obsługi błędów JSPI i jego plik Wasm. Oryginalne źródła upstream mogą zawierać własne narzędzia i testy; nie są one odrębnymi funkcjami aplikacji.

## Modyfikacje Pyodide

Zmiany przygotowane dla Python IDE przez Mariusza Smółkę dotyczą ładowania interpretera:

1. Biblioteka standardowa może być przekazana jako tablica bajtów.
2. Bajty Wasm są przekazywane do funkcji inicjalizującej moduł.
3. Inicjalizacja wymaga przekazanych bajtów Wasm, zamiast rozpoczynać pobieranie tego pliku przez interpreter.
4. Eksporty loadera i kodu assembly są opakowane jako fabryki funkcji.
5. Usunięto odnośnik do mapy źródeł z wynikowego loadera.

Sześć dokładnych transformacji (w tym dwie osobne zmiany eksportów) znajduje się w [transformations.json](sources/loader-changes/transformations.json). Czytelna postać zmian jest dostępna jako [poprawka TypeScript](sources/loader-changes/readable-reference.patch). Kod interpretera Wasm i archiwum biblioteki standardowej nie zostały przez te zmiany zmodyfikowane.

## Korzystanie ze źródeł

Po rozpakowaniu archiwum zmienione pliki TypeScript znajdują się w `sources/loader-changes/readable-reference/`, a oryginalne źródła w dołączonym archiwum upstream. Pliki `*.modified-factory-body.txt` zawierają wynikowe części funkcji, nie samodzielne moduły.

Polecenie `node sources/loader-changes/rebuild-vendor.cjs` odtwarza sześć transformacji z oryginalnych wejść i porównuje wyniki z dołączonymi plikami. [Sumy źródeł i wyników](sources/loader-changes/source-hashes.json) identyfikują te materiały. [Stałe wydania i moduł pomocniczy](sources/loader-changes/release-inputs.json) opisują powiązane wejścia loadera.
