Rust: co w nim budujemy i dlaczego
Rust piszemy tam, gdzie błąd kosztuje najwięcej: rdzeń platformy hostingowej, kryptografia komunikatora, serwer licencji i narzędzia, które działają latami na cudzych maszynach.
Rust na prawdziwych zrzutach
Projekty z tej strony na ekranach z portfolio i case studies, każdy z krótkim opisem i drogą do pełnego.
Plazer: rdzeń MLS
Szyfrowanie grup według RFC 9420, kompilowane też do WebAssembly.
Kiedy Rust, a kiedy coś innego
Technologia ma pasować do miejsca, w którym kod będzie działał, i do zespołu, który go przejmie. Ostateczny wybór zapada przy wycenie, razem z Tobą.
Wybieramy Rust
Rdzeń z pieniędzmi i uprawnieniami
API, sklep, rozliczenia i KSeF w rdzeniu Flaem są w Ruście. Błąd i brak wartości są tu częścią typu, więc kod musi je jawnie obsłużyć, zanim trafi na serwer.
Jedna kryptografia dla wszystkich aplikacji
Rdzeń Plazera z szyfrowaniem MLS to jedna biblioteka w Ruście: przeglądarka dostaje ją jako WebAssembly, aplikacje natywne przez UniFFI. Protokół ma jedną implementację, a nie osobną w każdym języku.
Zapytania sprawdzane przy kompilacji
W rdzeniu Flaem sqlx porównuje zapytania SQL ze schematem bazy już przy budowaniu. Literówka w nazwie kolumny albo zły typ wychodzi przed wdrożeniem, a nie na produkcji.
Kod, który czyta dane od obcych
Serwer licencji z tokenami Ed25519 i protokół komunikatora przyjmują dane z sieci od każdego. Bezpieczny Rust nie dopuszcza przepełnienia bufora ani użycia zwolnionej pamięci, więc ta klasa luk znika z kodu.
Narzędzia w terminalu
vulp obsługuje wiele repozytoriów z jednego terminala, z interfejsem w ratatui. Program to jeden plik binarny: użytkownik niczego nie doinstalowuje, a narzędzie startuje od razu.
Lekkie aplikacje desktopowe
Gyred w Dioxusie i studio w Tauri korzystają z przeglądarki systemu, zamiast dołączać własną. Program otwarty przez cały dzień zostawia pamięć innym aplikacjom, a cięższą pracę wykonuje kod w Ruście.
Wybieramy coś innego
Strona firmowa albo landing
Stronę firmową budujemy w TypeScripcie i React z prerenderem: treść jest w pierwszym HTML, a tekst czy sekcję poprawi potem każdy programista webowy. Rust niczego tu nie dodaje, a zawęża grono osób, które mogą pracować nad stroną.
Prototyp do sprawdzenia pomysłu
Gdy model danych zmienia się codziennie, kompilator Rusta każe przy każdej zmianie poprawić wszystkie zależne miejsca. Prototyp piszemy w TypeScripcie, a do Rusta przenosimy to, co się obroni.
Panel z dziesiątkami ekranów
Panel Flaem jest w React i TypeScripcie nad API w Ruście. Interfejs zmienia się najczęściej, a ekosystem Reacta ma gotowe biblioteki formularzy, tabel i wykresów.
Agent na tysiącach maszyn
Agent VPS i demon kontenerów Flaem są w Go. Agent potrzebuje głównie sieci, limitów czasu i ponawiania, a prosty kod w Go szybciej się kompiluje i łatwiej go przejąć.
Bot Discord albo skrypt operacyjny
Bot VulCode i skrypty diagnostyczne są w Pythonie. Poprawka to edycja pliku na serwerze, bez kompilacji i wydawania nowej wersji.
Dodatek do cudzego systemu
System gospodarza ładuje dodatki we własnym języku: moduł do WHMCS piszemy w PHP, plugin Minecraft w Javie, a plugin do SCP: Secret Laboratory w C#. Rust nie ma tam wstępu.
Rust w porównaniu, punkt po punkcie
Każda potrzeba w jednym wierszu, a obok siebie to, co w tej sprawie daje każda z dwóch kolumn.
Długo działający serwis z pieniędzmi
Kryptografia w przeglądarce
Szybka strona firmowa
Narzędzie w terminalu
Ciężkie obliczenia w serwisie
Ludzie do utrzymania kodu
Pierwsza wersja
Rust w całym naszym kodzie
Ile linii napisaliśmy w Rust i jaką część wszystkiego, co napisaliśmy, to stanowi. Liczymy linie dodane w commitach naszych repozytoriów, osobno dla każdego języka.
Biblioteki, na których stoją te projekty
Z plików zależności naszych repozytoriów. Przy każdej jedno zdanie o tym, do czego jej używamy.
tokio, axum, tonic
Serwer HTTP i gRPC w rdzeniu Flaem.
sqlx
Zapytania do PostgreSQL sprawdzane przy kompilacji.
mls-rs
Protokół MLS w rdzeniu Plazera.
ed25519-dalek, aes-gcm, argon2
Podpisy, szyfrowanie i hasła.
ratatui, clap, git2
Interfejs terminala i operacje git w vulp.
Tauri, Dioxus
Aplikacje desktopowe.
Nasze zmiany w cudzych projektach w Rust
10 przyjętych zmian w 6 repozytoriach. Opiekunowie tych projektów przejrzeli nasz kod i włączyli go do swojego.
Tydzień po tygodniu
Udział języków w naszych zmianach
- Rust10 8,0%
- Go33 26%
- PHP32 26%
- JavaScript25 20%
- C#11 8,8%
- Perl i JavaScript6 4,8%
- Python6 4,8%
- TypeScript2 1,6%
- SonicLekki silnik wyszukiwania w Ruście, alternatywa dla Elasticsearch, która działa w kilku megabajtach pamięci.5 przyjętych zmian21 357 gwiazdek na GitHubie
- ZedSzybki edytor kodu w Ruście od twórców Atoma i Tree-sittera, z pracą zespołową na żywo.1 przyjęta zmiana91 587 gwiazdek na GitHubie
- PagefindWyszukiwarka dla stron statycznych w Ruście, która wysyła do przeglądarki tylko potrzebne fragmenty indeksu.1 przyjęta zmiana5511 gwiazdek na GitHubie
- instaBiblioteka testów migawkowych dla Rusta.1 przyjęta zmiana2974 gwiazdki na GitHubie
- rssBiblioteka Rusta do czytania i zapisu kanałów RSS.1 przyjęta zmiana504 gwiazdki na GitHubie
- configparserProsty parser plików konfiguracyjnych INI w Ruście bez zależności.1 przyjęta zmiana87 gwiazdek na GitHubie
Inne technologie i gdzie działa ich kod
Każda ma swoją stronę z projektami na prawdziwych ekranach i porównaniem z alternatywami.
Pytania o Rust
Odpowiedzi o Rust, naszych projektach i liczbach na tej stronie.
Czytaj dalej
Opisy projektów z tej strony i przegląd wszystkich technologii.
Projekt w Rust?
Opisz, co chcesz zbudować. Odpiszemy w godzinę i powiemy wprost, czy ta technologia jest dobrym wyborem.





