Vai al contenuto
Tecnologie · Rust

Sviluppo in Rust e migrazione da C/C++, un modulo alla volta

Scriviamo Rust da molto prima che diventasse di moda. Lo usiamo dove si guadagna il suo posto: servizi in cui contano la latenza e i costi infrastrutturali, codice sensibile per la sicurezza e C e C++ legacy che deve diventare sicuro senza fermare l’azienda. In tutti gli altri casi le diremo che un linguaggio più diffuso è la scelta migliore.

Perché lo scegliamo

Ragioni di ingegneria, non di moda: la stessa prova che ogni strumento del nostro stack deve superare.

Sicurezza della memoria senza garbage collector

Il compilatore esclude use-after-free, buffer overflow e data race prima che il codice vada in produzione: le classi di bug dietro la maggior parte delle correzioni di sicurezza nei grandi codebase C e C++.

Prestazioni da C, latenza prevedibile

Nessuna pausa del runtime e nessuna allocazione nascosta. I servizi Rust richiedono in genere una frazione della CPU e della memoria dei sistemi che sostituiscono, e la differenza si vede direttamente nella bolletta cloud.

Stabile da dieci anni, e ormai mainstream

Rust 1.0 è uscito nel 2015. Microsoft, Cloudflare, Meta e GitHub lo usano in produzione su larga scala: supera la stessa prova di affidabilità nel tempo di ogni altro strumento del nostro stack.

Refactoring di cui fidarsi

Un sistema di tipi rigoroso e un compilatore che spiega i propri errori fanno sì che anche le modifiche più ampie arrivino senza regressioni: la proprietà che rende meno costoso possedere sistemi destinati a durare.

Quando ne sconsigliamo l’uso

Uno strumento che consigliamo per tutto è uno strumento su cui abbiamo smesso di ragionare. Tre casi in cui la risposta è un’altra.

Un tipico prodotto CRUD o un portale

Form, dashboard e flussi di lavoro aziendali raramente toccano i limiti che Rust elimina. TypeScript o .NET li consegnano più in fretta e i suoi futuri assunti li conoscono già - veda Next.js e .NET.

Un sistema stabile che nessuno deve modificare

Riscrivere C++ funzionante fine a se stesso raramente rientra. Se il codice è stabile, abbastanza sicuro ed economico da far girare, lo lasci dov’è - e scriva in Rust i nuovi moduli solo quando c’è un motivo per mettere mano a quell’area.

Una riscrittura big-bang

Sostituire tutto in una volta è il modo in cui le migrazioni muoiono. Spostiamo un modulo alla volta dietro un’interfaccia stabile - lo stesso approccio del nostro lavoro di modernizzazione dei sistemi legacy.

Come si svolge una migrazione

Si comincia con una diagnosi: mappiamo quali moduli causano crash, correzioni di sicurezza e costi cloud, e li ordiniamo per ritorno dell’investimento. Poi ogni modulo si sposta dietro un’interfaccia stabile, con i test esistenti - e quelli nuovi - a dimostrare che il comportamento non è cambiato prima di spostare il traffico. La traduzione assistita dall’AI accelera la parte meccanica; agli ingegneri restano le interfacce, i confini unsafe e la revisione. La fatturazione segue le milestone accettate, come per ogni progetto.

Domande frequenti

Dovremmo riscrivere in Rust il nostro codebase C++?

Di solito non tutto in una volta. Si parte dai moduli che causano più correzioni di sicurezza, crash o costi infrastrutturali, li si riscrive dietro un'interfaccia stabile e si lascia che siano i risultati a decidere fin dove spingersi.

Quanto dura una migrazione a Rust?

Un singolo modulo o servizio richiede in genere settimane, non anni. La traduzione assistita dall'AI ha reso molto più rapida la parte meccanica; il tempo va nei test, nelle interfacce e nella verifica che il comportamento non sia cambiato.

Rust può convivere con il nostro codice esistente?

Sì. Rust chiama ed è chiamato da C e C++ tramite FFI, e gira come servizio separato accanto a qualsiasi altra cosa. Gran parte del nostro lavoro in Rust vive dentro sistemi scritti per lo più in altri linguaggi.

Sarà difficile assumere sviluppatori Rust in futuro?

Il bacino è più piccolo di quello di TypeScript o Java, ma cresce in fretta, e da anni Rust è in cima ai sondaggi degli sviluppatori come linguaggio più apprezzato. Documentiamo tutto ciò che consegniamo, così che il suo team possa prenderlo in carico.

Si chiede se Rust valga la pena per il suo sistema?

La diagnosi è gratuita: guardiamo il codice, mettiamo in ordine i candidati e le diciamo con onestà se la risposta è lasciarlo com'è.