Tehnologie

Construit în Rust.

Niciun WordPress. Niciun PHP. Niciun framework JavaScript. Acest site web este — de la serverul HTTP până la animația din browser — scris în întregime în Rust, compilat cu siguranță de tip și livrat ca WebAssembly.

Ponderea limbajelor

Măsurat în timpul build-ului din propriul arbore de surse — inclusiv această pagină.

Rust62,9%
TOML26,8%
SCSS10,3%

Ce nu conține

0linii de HTML scris de mână
0linii de JavaScript
0linii de PHP

HTML-ul este generat la execuție din cod Rust. Singurul JavaScript este puntea de încărcare generată de lanțul de instrumente Rust→WebAssembly — din care nu scriem noi nicio linie.

Crate-urile utilizate

Dacă indicați un crate, se afișează explicația detaliată. Un clic îl deschide pe crates.io — registrul oficial de pachete al Rust, inclusiv codul sursă și documentația. Documentarea suplimentară este încurajată în mod explicit.

  • leptosUI fullstack reactiv (SSR + WASM)Leptos este framework-ul fullstack pe care este construit acest site. Interfața este descrisă sub formă de componente reactive în Rust și este atât randată pe server (pentru o livrare inițială rapidă și pentru motoarele de căutare), cât și executată în browser sub formă de WebAssembly. Aceeași bază de cod Rust rulează astfel pe ambele părți — complet fără un frontend JavaScript separat.
  • leptos_routerRutare între paginiRouter-ul Leptos stabilește ce pagină corespunde fiecărei adrese. Schimbarea paginilor are loc în browser fără o reîncărcare completă, astfel încât navigarea rămâne fluidă — în timp ce serverul poate, în plus, livra direct fiecare adresă.
  • leptos_metaTitlu și meta-tag-uri în <head>Gestionează datele din <head>-ul documentului: titlul paginii, meta-descrierea și alte informații de antet. Astfel, fiecare pagină primește informațiile corecte pentru fila de browser, motoarele de căutare și previzualizările de linkuri.
  • serdeSerializarea conținutuluiserde este instrumentul standard din Rust pentru traducerea structurilor de date între tipurile Rust și formate precum TOML. Aici transformă conținutul stocat ca text în obiecte Rust cu tip sigur — și, la nevoie, înapoi.
  • serde_jsonSerializare JSONserde_json este implementarea JSON a serde. Mesajele API-ului criptat sunt transportate ca JSON; acest crate le convertește între structuri Rust și JSON și înapoi.
  • ml-kemÎncapsulare de chei post-cuantică (ML-KEM-1024, FIPS 203)ml-kem (RustCrypto) implementează ML-KEM-1024 conform FIPS 203 — metoda post-cuantică de încapsulare a cheilor standardizată de institutul american de standardizare NIST. Cu aceasta, browserul și serverul convin asupra unui secret comun, care ar trebui să rămână sigur chiar și împotriva viitoarelor calculatoare cuantice. Este baza API-ului nostru criptat suplimentar.
  • kemAbstractizare trait pentru încapsularea cheilor (KEM)Abstractizarea trait suplă (Encapsulate/Decapsulate) prin care folosim ml-kem — menține codul criptografic ușor de înlocuit.
  • chacha20poly1305Criptare autentificată (AEAD)ChaCha20-Poly1305 este o metodă AEAD modernă (criptare autentificată). Criptează fiecare mesaj API și, în același timp, se asigură că acesta nu poate fi modificat neobservat pe parcurs.
  • hkdfDerivare de chei (HKDF)HKDF derivă din secretul ML-KEM brut o cheie de sesiune curată și destinată unui scop precis (RFC 5869) — în loc de a folosi secretul direct. Astfel se obțin separarea domeniilor și o pistă de verificare clară.
  • sha2Hash SHA-512sha2 pune la dispoziție funcția de hash SHA-512 pe care se bazează derivarea de chei a API-ului criptat (HKDF-SHA512).
  • rand_coreAleatoriu criptografic (OsRng)rand_core furnizează sursa de aleatoriu sigură criptografic (OsRng). În browser, aleatoriul provine din Web Crypto API — baza pentru chei și nonce-uri.
  • ed25519-dalekSemnătura cheii serverului (Ed25519)ed25519-dalek certifică cheia post-cuantică a serverului. Fără această semnătură, un sistem intermediar — un CDN, un reverse proxy — ar putea strecura propria cheie și ar citi tot. Browserul dumneavoastră verifică semnătura față de o cheie de verificare compilată în program înainte de a cripta ceva; dacă verificarea eșuează, se oprește. Nu există o revenire la „atunci fără semnătură”.
  • rand_chachaCSPRNG determinist (ChaCha20)rand_chacha produce un flux de numere aleatoare sigur criptografic, după procedeul ChaCha20 — aici în mod deliberat determinist: dintr-o singură valoare de pornire stocată derivă mereu aceeași pereche de chei ML-KEM a serverului. Numai de aceea cheia pe care o preia browserul dumneavoastră se potrivește și cu instanța care decriptează ulterior cererea. Aleatorul real — nonce-urile și cheile de scurtă durată ale sesiunii — vine în schimb de la rand_core.
  • base64Codare Base64base64 codează componentele criptografice binare (cheie, ciphertext, nonce) ca text, pentru a putea fi transmise comod sub formă de JSON.
  • leptos_wasiLeptos SSR ca componentă wasi:httpleptos_wasi conectează randarea pe server și funcțiile de server ale Leptos cu interfața wasi:http. În loc de un server HTTP clasic, partea de server rulează astfel ca o componentă WebAssembly într-un runtime WASI fără ring (wasmtime) — atât frontend-ul, cât și backend-ul sunt un singur program Rust, ambele sub formă de WebAssembly.
  • wasiInterfețe WASI (wasi:http, aleatoriu)Bindările wasi pun la dispoziție interfețele WASI standardizate prin care componenta comunică cu mediul său — cereri HTTP primite (wasi:http), aleatoriu (wasi:random) și acces la fișiere. TLS-ul și rețeaua sunt gestionate de runtime, nu de aplicație.
  • any_spawnerExecutor de future-uri pe un singur firany_spawner furnizează executorul de future-uri care procesează activitatea de randare asincronă a componentei. WASI este (încă) cu un singur fir, de aceea un executor suplu și cooperativ în locul unui runtime cu mai multe fire.
  • wakiClient HTTP prin wasi:httpwaki este clientul HTTP al părții de server — implementat prin wasi:http în loc de o bibliotecă TLS proprie. Astfel, o cerere din formularul de contact este înregistrată ca tichet în sistemul de ticketing, în timp ce criptarea conexiunii revine runtime-ului WASI.
  • tomlCitirea conținutului drept codTOML este un format text suplu și ușor de citit. Conținutul acestui site este stocat sub formă de fișiere TOML; acest crate le citește. Textele pot fi astfel modificate fără a atinge codul programului — conținut drept cod.
  • anyhowTratarea eroriloranyhow simplifică tratarea erorilor în Rust. Surse de erori diferite sunt reunite într-un tip unitar, ceea ce menține codul serverului clar și robust.
  • httpTipuri HTTP de bază (status/anteturi)http oferă tipurile HTTP fundamentale (coduri de stare, anteturi, metode) ca limbaj comun între aplicație și interfața wasi:http.
  • bytesBuffere de octeți eficientebytes pune la dispoziție buffere de octeți eficiente și partajabile — aici pentru corpurile cererilor primite și ale răspunsurilor trimise de componenta WebAssembly.
  • gloo-netCereri HTTP în browsergloo-net efectuează cereri HTTP direct din codul WebAssembly. Cu aceasta, browserul obține cheia publică a serverului și trimite cererile API criptate.
  • console_error_panic_hookPanici în consola browseruluiUn mic utilitar pentru partea de WebAssembly: dacă în codul din browser apare o eroare neașteptată (panică), aceasta este afișată inteligibil în consola de dezvoltare în loc să dispară în tăcere — ceea ce ușurează considerabil depanarea.
  • wasm-bindgenPunte Rust ↔ browserwasm-bindgen face legătura între WebAssembly-ul scris în Rust și funcțiile browserului. Permite codului Rust să apeleze interfețele browserului și invers — baza pentru ca programul să ruleze în general în browser.
  • js-sysPunte Rust ↔ JavaScriptjs-sys reprezintă în Rust tipurile încorporate ale JavaScript — tablouri, obiecte, promisiuni. Prin ele codul WebAssembly ajunge la ceea ce browserul aduce din start: o factură pe care o puneți în instrumentul de verificare ajunge în codul Rust ca tablou de octeți exact pe această punte.
  • web-sysAPI-uri de browser (canvas ș.a.)web-sys pune la dispoziție interfețele de programare ale browserului sub formă de funcții Rust — precum fereastra, documentul sau canvas-ul. Cu acesta, Rust desenează, printre altele, câmpul de cioburi animat direct în browser.

API criptat (post-cuantic)

Criptarea web clasică (RSA, curbe eliptice) este considerată sigură astăzi — până când computere cuantice performante o vor sparge. Cine păstrează deja astăzi trafic interceptat l-ar putea decripta ulterior, retroactiv („harvest now, decrypt later”). De aceea securizăm suplimentar conexiunea dintre browserul dumneavoastră și serverul nostru cu o metodă menită să reziste și computerelor cuantice.

Se utilizează ML-KEM-1024 (FIPS 203) — metoda de schimb de chei post-cuantică standardizată de autoritatea de standardizare din SUA, NIST. Acest strat se află suplimentar peste criptarea TLS deja activă: o plasă dublă de siguranță, nu un înlocuitor.

  1. Încapsularea cheii. Browserul și serverul convin asupra unui secret comun prin ML-KEM-1024 — sigur și împotriva computerelor cuantice, potrivit stadiului actual.
  2. Derivarea cheii. Din acest secret se derivă o cheie de sesiune nouă prin HKDF-SHA512.
  3. Criptare. Fiecare mesaj este criptat autentificat cu ChaCha20-Poly1305. Cheia clientului este legată ferm de conținut — astfel, răspunsul nu poate fi redirecționat pe ascuns.

Următorul handshake rulează chiar acum, în timp real, în browserul dumneavoastră:

Canalul se stabilește…

Cum a ajuns această pagină la dumneavoastră

Această pagină nu a luat naștere undeva într-un cloud. Ea este livrată din propriul nostru birou — de către un gateway Rust pe hardware real. Drumul până acolo este scurt și real: browserul dumneavoastră ajunge direct la una dintre cele trei ancore de internet (nume de cod Caraxes · Meleys · Sunfyre), iar aceasta transmite mai departe cererea către gateway-ul nostru de birou Balerion. Niciun CDN, niciun serviciu edge străin între ele — pe ancore rulează doar intermediarul nostru TCP, care transmite conexiunea mai departe fără a o deschide. Aici se încheie drumul: Balerion este totodată gazda WASI care execută această componentă WebAssembly — ea a randat exact această pagină.

  1. Punct finalbrowserul dumneavoastră
  2. una dintre cele trei ancoreCaraxes · Meleys · Sunfyre
  3. Gateway de birou · execută această paginăBalerion WASI-Host

Se stabilește conexiunea… Fără JavaScript, traseul de mai sus rămâne ca listă — corect, doar fără cifre în timp real.

Cum funcționează totul împreună

  1. Server. Aceeași bază de cod Rust rulează ca o componentă WebAssembly WASI în mediul de execuție wasmtime (țintă wasm32-wasip2) și randează în prealabil fiecare pagină (SSR) — niciun proces de server clasic, nicio bibliotecă criptografică în C.
  2. Conținut. Textele există sub formă de cod și sunt încărcate la pornire într-o bază de date în memorie.
  3. Browser. Același program Rust — compilat în WebAssembly (țintă wasm32-unknown-unknown) — continuă să ruleze în browser și preia pagina (hydration). Schimbările de pagină se derulează lin prin view transitions, complet fără reîncărcare.
  4. Grafică. Rust desenează câmpul de cioburi direct pe un canvas — nicio imagine, niciun videoclip.
  5. Livrare. Fiecare build produce o nouă componentă WebAssembly. Aceasta rulează pe propriul nostru gateway Rust, pe hardware real, în birou — și numai acolo are loc randarea. În fața lui nu se află niciun CDN și niciun serviciu edge; trei ancore de internet operate de noi transmit traficul mai departe fără a-l decripta.

Cât costă build-ul

Măsurat în timpul construirii exact a acestei componente — neestimat și nepreluat dintr-o rulare de test.

Indicatorii sunt disponibili doar în componenta livrată.

Cât de repede s-a încărcat la dumneavoastră

Niciun laborator, nicio valoare medie: aceste trei cifre au fost măsurate de propriul dumneavoastră browser.

…

HTML-ul sosește complet randat de la server — lizibil chiar înainte ca WebAssembly să fie încărcat. De aceea pagina rămâne funcțională chiar și atunci când WASM-ul nu ajunge niciodată.

A construi un site web în Rust este neobișnuit — și exact acesta este scopul. Cine realizează o pagină de prezentare în acest fel vă va construi și sistemele cu aceeași grijă. Dacă doriți tehnologie la acest nivel pentru organizația dumneavoastră: Vorbiți cu noi

Înapoi sus