VulCode
Plazer w przeglądarce: co komunikator pobiera na starcie, a co dopiero, gdy jest potrzebne
Technologia

Plazer w przeglądarce: co komunikator pobiera na starcie, a co dopiero, gdy jest potrzebne

Rdzeń szyfrowania w Ruście jako WebAssembly, podzielony na część startową i resztę, oraz efekty kamery pobierane przy pierwszym użyciu: liczby z pomiaru wersji webowej

DualFroz - VulCode CEODualFroz - VulCode CEO·24 października 2026·2 min czytania

Plazer szyfruje prywatne rozmowy i grupy rdzeniem w Ruście, tym samym co w aplikacjach natywnych, a do przeglądarki rdzeń trafia jako WebAssembly. Szyfrowanie, głos, wideo z efektami tła i ustawienia serwera to dużo kodu, więc przeglądarka pobiera każdą część dopiero wtedy, gdy jest potrzebna. Liczby poniżej pochodzą z pomiaru wersji webowej: zimny start w Chromium bez pamięci podręcznej, każdy plik skompresowany osobno przez gzip -9.

Co i kiedy pobiera przeglądarka

CzęśćPo kompresjiKiedy
Ekran logowania po polsku, z fontem110 kB w 25 plikachprzy pierwszym wejściu
Rdzeń szyfrowania, część startowa536 kBprzy każdym starcie po zalogowaniu
Rdzeń szyfrowania, reszta239 kBprzy logowaniu hasłem, rejestracji, parowaniu urządzenia, prywatnych grupach i wysyłce w szyfrowanych rozmowach
Rozmyte albo podmienione tło kamery3,76 MB: silnik MediaPipe w WebAssembly, model i kod efektugdy ktoś pierwszy raz włączy efekt tła

Sam efekt tła waży 34 razy więcej niż ekran logowania, a kto nie włączy efektu tła, nie pobierze z niego ani bajtu.

Podział według linkera

O tym, co trafia do reszty rdzenia, nie decydują nazwy funkcji. Skrypt podziału czyta relokacje, które linker rust-lld zostawia z flagą --emit-relocs: wywołania, indeksy funkcji w tablicach i adresy danych. Funkcja przechodzi do reszty tylko wtedy, gdy nie prowadzi do niej żadna ścieżka startowa, więc start nigdy nie trafi na brakujący kod. Potem wasm-split z pakietu Binaryen przenosi te funkcje, a wasm-opt optymalizuje każdą część osobno. Pole wiadomości w szyfrowanej rozmowie zaczyna pobierać resztę przy pierwszym wpisanym słowie, więc wysyłka rzadko na nią czeka, a test end-to-end pilnuje, żeby sam start reszty nie pobierał.

Jak powstawał Plazer, opisuje case study, a aplikacje webowe na zamówienie strona aplikacji webowych i PWA.