· 6 min de lectura · Por Grover Cordova

Rust vs. Go: cómo elegir sin fanatismos

Diferencias reales entre Rust y Go en rendimiento, memoria, concurrencia, productividad y contratación, con criterios para decidir en tu equipo.

Rust y Go se comparan todo el tiempo, y es normal: ambos son modernos, compilan a binarios nativos y se usan para servicios de red. Pero nacieron para resolver problemas distintos. Elegir bien depende menos del lenguaje que de tu problema.

La diferencia de fondo

Go se diseñó para que equipos grandes escriban servicios concurrentes con poco esfuerzo: un lenguaje pequeño, compilación rápida y un recolector de basura que se encarga de la memoria.

Rust se diseñó para dar el control de C++ con garantías de seguridad: sin recolector, con un compilador que comprueba mucho más antes de ejecutar. Esa exigencia es su costo, y también su beneficio.

Go: simplicidadCompila muy rápidoSe aprende en poco tiempoRecolector de basuraGorrutinas muy directasRust: garantíasSin recolector de basuraBajo uso de memoriaMás errores al compilarLlega a embebidos y navegador
No es una competencia: cada uno optimiza algo distinto.
AspectoGoRust
MemoriaRecolector de basuraPropiedad, sin recolector
Seguridad de memoriaSíSí, salvo en unsafe
Carreras de datosPosibles; hay detector en ejecuciónNo compilan en Rust seguro
Valores nulosExiste nilOption, comprobado al compilar
ErroresValores que se revisan por convenciónResult, y el compilador avisa si lo ignoras
Velocidad de compilaciónMuy rápidaMás lenta
Curva de aprendizajeDías o semanasSemanas o meses
BinarioIncluye el entorno de ejecuciónSin entorno de ejecución obligatorio
Uso en embebidosLimitadoMuy adecuado

Rendimiento: lo que importa de verdad

En tareas limitadas por CPU, Rust suele sacar ventaja. Pero la diferencia que más se nota en producción no suele estar en el promedio, sino en la memoria y en la latencia de cola.

La guía oficial del recolector de Go es muy clara sobre esto: el recolector usa el 25 % de la CPU durante el marcado, y puede obligar a las rutinas a ayudarlo si se asigna mucha memoria. Si tu servicio guarda muchos datos en memoria, ese trabajo crece. Fue justo el caso de Discord.

Para ver el orden de magnitud, en nuestro microservicio de ejemplo medimos Rust, Go, Node.js y Python con el mismo endpoint.

Ahora bien, si tu servicio pasa casi todo el tiempo esperando a la base de datos, lo que ganes en el lenguaje apenas se notará. Mide antes. Astro lo mostró en 2026: al cambiar su compilador de Go a Rust ganó cerca de un 6 % en la compilación de su documentación, porque ese paso rara vez era el cuello de botella.

Concurrencia: dos filosofías

Go tiene una de sus mejores ideas en las gorrutinas: lanzar una tarea es tan simple como escribir go.

go procesar(pedido) // simple y directo

Rust usa async y await, normalmente con Tokio. Es más explícito, tiene más conceptos y más detalles que aprender. Lo que recibes a cambio es que el compilador impide compartir datos de forma insegura entre hilos.

use std::thread;

fn main() {
    let pedido = String::from("A-100");

    // `move` transfiere el dato al hilo: el compilador
    // no permite que el hilo original lo siga usando.
    let hilo = thread::spawn(move || println!("Procesando {pedido}"));

    hilo.join().unwrap();
}

En Go, compartir un mapa entre gorrutinas sin protección compila sin aviso, y puede fallar en producción. Por eso existe go test -race, que es muy útil, pero solo detecta las carreras que ocurren durante la prueba. En Rust, ese error no llega a compilar.

Productividad: menos diferencia de la que se cree

Lo habitual es asumir que Go siempre será más productivo. Los datos disponibles son más matizados. En la conferencia Rust Nation 2024, Lars Bergstrom, de Google, comentó que los equipos de Rust eran tan productivos como los de Go en reescrituras comparables, y el doble que los de C++.

Conviene leer esto con prudencia: es una charla, no un estudio publicado, y Google no es una empresa promedio. Lo razonable es asumir que Go gana al inicio y que la distancia se reduce cuando el equipo domina Rust. Compilar sigue siendo más lento: en la encuesta interna de Google, solo algo más del 40 % consideraba aceptable la velocidad del compilador.

Contratación y ecosistema

Aquí Go suele llevar ventaja. Hay más perfiles disponibles, y cualquier persona con experiencia en backend aprende el lenguaje rápido. Su biblioteca estándar cubre muy bien HTTP y JSON, y buena parte de la infraestructura en la nube, como Kubernetes o Docker, está escrita en Go.

Rust exige formar a tu equipo o competir por menos perfiles. En cambio, llega a lugares donde Go no entra con facilidad: embebidos, navegador, sistemas operativos y bibliotecas para otros lenguajes.

Cuándo elegir cada uno

Elige Go si:

  • Tu prioridad es entregar servicios de red rápido, con un equipo que rota o crece.
  • La lógica de negocio pesa más que el rendimiento.
  • Tu latencia objetivo se mide en decenas de milisegundos o más, y no tienes grandes cachés en memoria.
  • Trabajas en el ecosistema de Kubernetes.

Elige Rust si:

  • El p99 o la memoria son requisitos del negocio.
  • Haces trabajo intensivo de CPU: procesar datos, comprimir, analizar, cifrar.
  • Procesas datos no confiables en la ruta crítica.
  • Necesitas llegar a embebidos, WebAssembly o bibliotecas para Python o Node.js.
  • Un fallo sale muy caro, y prefieres pagar esa seguridad en tiempo de desarrollo.

No tienes que elegir uno solo. Muchas empresas combinan ambos: Go para la mayoría de servicios y Rust para los pocos componentes donde cada milisegundo o cada gigabyte cuenta.

La pregunta correcta

No es "¿cuál es mejor?", sino "¿qué problema tengo, y cuánto me cuesta?". Si aún no lo sabes, mide primero.

Fuentes

  1. A Guide to the Go Garbage CollectorThe Go Authors
  2. Data Race DetectorThe Go Authors
  3. Why Discord is switching from Go to RustDiscord, 2020
  4. Rust fact vs. fiction: 5 Insights from Google's Rust journey in 2022Google Open Source, 2023
  5. Rust Twice As Productive As C++I Programmer, sobre la charla de Lars Bergstrom, 2024
  6. The Rust Programming Language: Fearless ConcurrencyThe Rust Project

Construye mejor software.

Seguridad, eficiencia y oficio, con fuentes y en español.