Wybór ten nie jest absolutną oceną obu ram. To kompromis architektoniczny, udokumentowany tutaj na podstawie tego, co zweryfikowaliśmy w kodzie i rejestrach publicznych, a nie na niezmierzonych wynikach wydajności.
Najważniejsze
Axum nie tworzy niczego zastrzeżonego: opiera się na tower::Service w zakresie oprogramowania pośredniczącego, na Hyper w zakresie transportu i zabrania jakiegokolwiek kodu unsafe. Actix-web zawiera własny system oprogramowania pośredniego (Logger, Session, CORS), natywny protokół HTTP/2 i sam cytuje benchmark TechEmpower Framework jako dowód szybkości. Na crates.io Axum ma dziś ponad 436 milionów pobrań w porównaniu do około 78 milionów w przypadku Actix-web – pomimo prawie czterech lat różnicy wieku na jego niekorzyść. Aurabase wybrał Axum do kompozycji Tower, zweryfikowanej w jedenastu prawdziwych repozytoriach Cargo.toml, a nie ze względu na niezmierzoną wydajność.
Dwa frameworki, ta sama baza Tokio
Zarówno Axum, jak i Actix-web działają w Tokio, referencyjnym asynchronicznym środowisku wykonawczym w Rust. Plik README Actix-web stwierdza to bez ogródek — „Pełna kompatybilność z Tokio” — a jego oficjalny przykładowy kod nie wykorzystuje żadnego aktora z historycznego frameworka actix: wystarczy klasyczna procedura obsługi async fn z adnotacją #[get(...)]. Zamieszanie „Actix-web koniecznie wymaga aktorów” nie odpowiada już obecnemu API.
Axum narodził się na bezpośredniej orbicie Tokio: repozytorium należy do organizacji GitHub tokio-rs, a jego oficjalna dokumentacja jest jednoznaczna — „axum jest zaprojektowane do współpracy z Tokio i Hyper. Niezależność środowiska wykonawczego i warstwy transportowej nie jest celem, przynajmniej na razie. »
Nie jest to zatem wybór między dwoma konkurującymi środowiskami wykonawczymi, ale między dwoma sposobami budowania interfejsu API HTTP na tym samym silniku asynchronicznym. To porównanie obejmuje cztery weryfikowalne obszary – model oprogramowania pośredniego, deklarowane bezpieczeństwo pamięci, natywną powierzchnię HTTP, adopcję mierzoną na crates.io i GitHub – następnie wyjaśnia, wraz z kodem pomocniczym, dlaczego rdzeń Rust Aurabase wybrał Axum.
Kompozytowa wieża oprogramowania pośredniego a system zintegrowany
Axum nie buduje żadnych własnych systemów oprogramowania pośredniczącego. Opiera się całkowicie na tower::Service: przekroczeniach limitów czasu, śledzeniu, kompresji, autoryzacji — wszystko jest dostępne „za darmo” za pośrednictwem ekosystemu Tower, zgodnie z własnym plikiem README. Oprogramowanie pośrednie napisane dla aplikacji Hyper lub Tonic może być ponownie użyte tak samo, jak w aplikacji Axum, bez konieczności adaptacji.
Actix-web podąża odwrotną ścieżką: osadza swój własny system oprogramowania pośredniego (Logger, Session, CORS itp.), udokumentowany w podręczniku użytkownika, z własnym powiązanym klientem HTTP (awc). Jest to bardziej zintegrowana platforma — mniej części do złożenia, ale także mniej bezpośredniego ponownego użycia z resztą ogólnego ekosystemu asynchronicznego Rust.
Routing opiera się na tej samej, jawnej logice kompozycji. Axum twierdzi, że ma „bezmakrowe API” do deklarowania tras — Router::new().route(...) pozostaje zwykłą wartością Rusta — gdzie Actix-web opiera się na dedykowanych makrach metodą HTTP (#[get(...)]) umieszczonych bezpośrednio nad procedurą obsługi. Dwa style wypowiedzi, a nie różnica w umiejętnościach.
Komponowanie Axuma ma swoją cenę: musisz dodać tower-http, aby uzyskać CORS, ograniczenie rozmiaru kompresji lub zapytania, gdy Actix-web dostarcza je wewnętrznie. Gotowa do użycia integracja kontra jawna kompozycja — prawdziwy kompromis, a nie wada po jednej stronie.
Zero uznane za niebezpieczne, dwa różne MSRV
Axum twierdzi, że w swoim kodzie źródłowym znajduje się #![forbid(unsafe_code)]: 100% frameworku jest napisane w bezpiecznym Rust, bez luk. Actix-web nie zamieszcza równoważnego stwierdzenia w swoim pliku README — nie oznacza to, że framework jest niebezpieczny, a jedynie, że projekt nie prezentuje publicznie takiej gwarancji.
Obydwa frameworki ustalają inną minimalną wersję Rusta: Axum jest kompatybilny z Rustem 1.80, Actix-web wymaga Rusta 1.88. Węższe okno dla Actix-web, co może mieć znaczenie, jeśli Twój zestaw narzędzi utknął na starszej wersji.
Co każdy z nich wysyła natywnie
Actix-web wyświetla bezpośrednio w swojej skrzynce dużą przestrzeń HTTP: HTTP/1.x i HTTP/2, WebSockets, kompresja przezroczysta (br, gzip, deflate, zstd), TLS przez OpenSSL lub Rustls. Wszystko jest ze sobą spójne, bez dodatkowych zależności do wyboru.
Axum celowo pozostaje minimalne: routing, ekstraktory, obsługa błędów — reszta (kompresja, CORS, ograniczanie żądań, śledzenie) pochodzi z tower-http, skrzynki towarzyszącej z tego samego ekosystemu. Na przykład Aurabase włącza tylko funkcje cors, trace, compression-gzip, request-id, timeout i limit tower-http — celowy wybór, a nie cały pakiet.
Co możemy sprawdzić, a czego nie publikujemy ponownie
Actix-web twierdzi, że jest szybki, cytując dokładne źródło zewnętrzne: „Jedna z najszybszych dostępnych platform internetowych według TechEmpower Framework Benchmark” (okrągłe r21, kompozytowe), z bezpośrednim linkiem do techempower.com we własnym pliku README. Jest to rodzaj wyceny, którą możesz sam zweryfikować.
Axum nie przedstawia żadnego porównywalnego twierdzenia. Jego plik README ogranicza się do skromniejszego stwierdzenia — „axum to stosunkowo cienka warstwa na wierzchu Hyper i dodaje bardzo niewiele narzutu” — z dwoma linkami do testów porównawczych społeczności zewnętrznych, a nie oficjalnymi danymi projektu.
Aurabase nie publikuje obecnie żadnych ilościowych porównań Axum z Actix-web na własnym obciążeniu produkcyjnym. Liczba, której sami nie zmierzyliśmy, nigdy nie zostanie tutaj ponownie opublikowana jako argument dotyczący produktu — zobacz naszą powtarzalną metodologię testów porównawczych, stworzoną właśnie w celu publikowania weryfikowalnej metody, a nie samej liczby.
Co mówią crates.io i GitHub w chwili pisania tego tekstu
Na crates.io, Axum pobrał łącznie 436 464 896, w tym 109 000 226 w ciągu ostatnich 90 dni. Actix-web gromadzi łącznie 78 074 020 pobrań, w tym 9 730 975 w tym samym ostatnim oknie (crates.io, dostęp 23 sierpnia 2026 r.). W tym momencie różnica jest wyraźna: obecnie Axum pobiera około 11 razy więcej aktualnych pobrań niż Actix-web.
Paradoks: Actix-web jest starszym z nich i jest publikowany na crates.io od października 2017 r. w porównaniu z lipcem 2021 r. dla Axum. Na GitHubie różnica w popularności jest mniejsza — 26 931 gwiazdek dla tokio-rs/axum w porównaniu z 24 793 dla actix/actix-web (GitHub, dostęp: 23 sierpnia 2026 r.) — a Actix-web utrzymuje więcej forków (1880 w porównaniu do 1462), co oznacza, że historyczna baza autorów jest nadal aktywna.
Actix-web jest daleki od porzucenia: jego wersja 4.15.0 została opublikowana 21 sierpnia 2026 r., trzy dni przed napisaniem tego artykułu. W kolejce zgłoszeń GitHub Axum wyświetla 75 otwartych zgłoszeń w porównaniu do 192 w przypadku Actix-web — sygnał konserwacji, który należy czytać z ostrożnością: historia dłuższa o prawie cztery lata powoduje wydłużenie kolejki, nie jest to dowód na mniej staranny projekt.
Sam plik README firmy Axum ostrzega, że jego gałąź main przygotowuje wersję 0.9 z przełomowymi zmianami — stabilna gałąź opublikowana na crates.io pozostaje 0.8.x. Jeśli zaczynasz dzisiaj, przypnij dokładną wersję, zamiast podążać za domyślną gałęzią repozytorium.
Dlaczego Axum, zweryfikowane w kodzie
Główny obszar roboczy Aurabase Cargo zawiera jedenaście usług. Dziesięć z nich opiera się bezpośrednio na Axum — od bramy API (aura-gateway) po natywny silnik AI (aura-ai), w tym uwierzytelnianie i przechowywanie. Jedenasty, aura-migrator, to narzędzie do migracji CLI bez serwera HTTP: po prostu nie ma z czego wybierać. Brak Cargo.toml w repozytorium — ani żaden wpis w katalogu głównym Cargo.lock — deklaruje actix-web, nawet w zależności przechodniej; i żaden plik .rs nie zawiera instrukcji use actix_web::.
Ten wybór nie jest kosmetyczny: brama Aurabase (aura-gateway) łączy swoje oprogramowanie pośrednie z tower::ServiceBuilder i Layer Tower — TraceLayer, TimeoutLayer, RequestBodyLimitLayer — uzupełnione wewnętrznymi warstwami poprzez axum::middleware::from_fn dla identyfikatora żądania, uwierzytelniania i nagłówków bezpieczeństwa. To jest dokładnie ten model kompozycji, który podkreśla plik README firmy Axum: oprogramowanie pośrednie Tower jest układane, testowane i ponownie wykorzystywane niezależnie od reszty routera.
Tutaj sprawdzana jest wybrana architektura — rzeczywista zależność, rzeczywisty skład oprogramowania pośredniczącego. Nie deklaruje się żadnego ilościowego wzrostu wydajności: zobacz poprzednią sekcję dotyczącą tego, czego nie publikujemy ponownie.
Axum i Actix-web, obok siebie
| Oprogramowanie pośrednie | Skład wieży::Serwis, nic zastrzeżonego | Zintegrowany system (Logger, Sesja, CORS) |
|---|---|---|
| Bezpieczeństwo pamięci | zadeklarowano zakaz (unsafe_code). | Brak równoważnej deklaracji |
| MSRV | Rdza 1,80 | Rdza 1,88 |
| Licencja | MIT | Apache-2.0 LUB MIT |
| Natywny protokół HTTP | Trasowanie + ekstraktory; reszta przez tower-http | HTTP/1.x, HTTP/2, kompresja, zintegrowany TLS |
| pobrania crates.io (łącznie) | 436 464 896 | 78 074 020 |
| Pobieranie crates.io (90 dni) | 109 000 226 | 9 730 975 |
| Gwiazdy GitHuba | 26 931 | 24 793 |
| Od tego czasu na crates.io | lipiec 2021 | Październik 2017 |
| Używany przez Aurabase | Tak — 10 z 11 usług Rust | Nie — żadnych zależności, bezpośrednich ani przechodnich |
Źródła: API crates.io (/api/v1/crates/axum, /api/v1/crates/actix-web) i API GitHub, dostęp 23 sierpnia 2026 r. W pozostałych oficjalnych plikach README tokio-rs/axum i actix/actix-web.
Kto powinien wybrać co
Uruchamiasz modułowy, wielousługowy backend Rusta. Axum idealnie pasuje — jego kompozycja typu Tower ułatwia współdzielenie oprogramowania pośredniego między usługami, tak jak robi to Aurabase między dziesięcioma usługami HTTP.
Masz istniejącą i działającą bazę kodu Actix-web. Nie ma pośpiechu z migracją. Actix-web pozostaje aktywnie utrzymywany i obsługuje protokoły HTTP/2, WebSockets i kompresję natywnie, bez dodatkowych zależności.
Chcesz, aby jak najwięcej funkcji HTTP było dostarczonych w jednej skrzynce, bez konieczności samodzielnego montażu tower-http. Actix-web bezpośrednio odpowiada na tę potrzebę.
Udostępniasz już oprogramowanie pośrednie Tower innym usługom Hyper lub Tonic (gRPC). Axum ponownie wykorzystuje te warstwy takimi, jakie są – to argument, który przeważył w Aurabase.