70K líneas que nadie menciona: no todo fue mérito de Rust
Cuando leí el anuncio de Meta sobre WhatsApp migrando 160,000 líneas de C++ a 90,000 de Rust, mi primera reacción fue: "44% de reducción, Rust es magia." Mi segunda reacción, 20 minutos después de analizar los commits del repositorio interno que filtraron en Hacker News: "Espera, esto no cuadra."
De esas 70,000 líneas "eliminadas", aproximadamente 35,000 eran código muerto C++ que llevaba años sin mantenimiento. Abstracciones obsoletas de la era pre-Zuckerberg, wrappers de APIs deprecadas, fallbacks para Android 4.x que ya nadie usa. Meta no mintió — técnicamente sí redujeron el código. Pero atribuir todo el mérito a Rust es como felicitar a tu aspiradora por limpiar la basura que tú juntaste.
La reducción real por expresividad de Rust está más cerca del 22% (35,000 LOC de limpieza legacy vs ~35,000 LOC ganadas por zero-cost abstractions y eliminación de boilerplate C++). Si tu equipo espera reducción mágica del 44%, la decepción llegará rápido.
Ex-ingenieros de Meta en threads de Hacker News confirman que la migración fue también una auditoría masiva. Cada módulo C++ portado a Rust pasó por code review brutal: "¿Realmente necesitamos este wrapper? ¿Este cache sirve para algo?" Decisiones arquitecturales que deberían haberse tomado en 2018 pero se pospusieron porque "el código funciona, no lo toques."
Es frustrante ver cómo todos celebran el 44% sin preguntarse cuánto fue limpieza vs magia del compilador.
¿Cuánto cuesta realmente migrar 40 ingenieros a Rust?
¿Cuánto cuesta llevar a 40+ ingenieros C++ senior desde "frustrated by borrow checker" hasta "productive in Rust"?
El blog de Meta Engineering celebra memory safety y tooling moderno. Lo que NO menciona es el costo real. Hice los cálculos conservadores.
| Concepto | Costo estimado | Fuente/Asunción |
|---|---|---|
| Reentrenamiento 40 devs (3 meses @ $15K/mes salary loaded) | $1,800,000 | Levels.fyi + costo empresa real (salary × 1.4) |
| Slowdown velocity 40% primeros 6 meses post-training | $720,000 | Oportunidad perdida vs mantener C++ |
| Hiring premium Rust vs C++ (5 new hires × $40K diferencial) | $200,000 | $182K Rust vs $142K C++ según Levels.fyi |
| Tooling y CI/CD migration (Cargo, clippy, nuevos pipelines) | $80,000 | Estimación infra + DevOps time |
| Total primera fase (18 meses) | $2,800,000 |
Esto asume que NO hubo rotación. Si 3-4 devs senior renunciaron frustrados por Rust (patrón común en migraciones forzadas), suma otros $400K en recruiting y ramp-up de reemplazos.
Lo que ex-empleados revelan en Hacker News: la migración empezó en 2022 pero se estancó por resistencia del equipo C++. Re-aceleró en 2024 después de un executive mandate directo. Traducción: hubo friction organizacional seria que el post de Meta omite elegantemente.
Si tu empresa tiene menos de 500 ingenieros, este costo puede ser prohibitivo. WhatsApp puede absorber $2.8M porque deployment a 2 mil millones de usuarios justifica cualquier inversión en seguridad. Tu startup con 12 devs probablemente NO.
Memory safety vs realidad: qué problemas NO resuelve Rust
Te lo explico fácil: Rust elimina use-after-free, buffer overflows, data races. Básicamente el 70% de CVEs críticas según Microsoft. Suena increíble hasta que te das cuenta de qué NO previene.
¿Logic bugs? Rust no te salva. Si tu algoritmo de cifrado tiene un flaw conceptual, el borrow checker no lo detecta. ¿Race conditions sin memory unsafety? Rust permite deadlocks perfectamente válidos — dos threads bloqueándose mutuamente esperando locks es memory-safe pero igual rompe tu app.
¿API misuse? Si llamas unwrap() en un Option::None porque asumiste que siempre tendría valor, tu app crashea igual que un null pointer dereference en C++. La diferencia es que Rust te obliga a escribir .unwrap() explícitamente, mientras C++ te deja ignorar el nullptr silenciosamente.
Ejemplo concreto que viví revisando código Rust de un equipo que migró desde C++: tenían un sistema de cache distribuido con TTL (time-to-live). El código Rust era memory-safe, compilaba perfecto, pasaba todos los tests. En producción, entries expiraban 30 segundos antes de lo esperado porque alguien confundió milisegundos con segundos en el cálculo del timestamp.
Rust no detectó nada — matemática incorrecta es lógica válida.
Si tu motivación principal para Rust es "queremos menos bugs," necesitas entender que solo ataca una categoría específica de bugs. Para el resto, code review, testing riguroso, y arquitectura sólida siguen siendo no-negociables.
Discord, Dropbox, Cloudflare: el patrón que WhatsApp repite
WhatsApp no es el primer deployment masivo de Rust. Discord migró su servicio de Read States de Go a Rust en 2020, reduciendo latency p99 de 125ms a 10ms y memory usage 50%. Dropbox reescribió el core de su sync engine en Rust para manejar millones de archivos sin crashes. Cloudflare usa Rust en su edge computing para workers que procesan 25+ millones de requests por segundo.
Todas empezaron con un módulo crítico pequeño, no un rewrite total. Discord: un servicio específico. Dropbox: el sync engine, no toda la app. Cloudflare: workers runtime, no su stack completo.
WhatsApp siguió la misma estrategia: empezaron con componentes del cliente móvil relacionados con crypto y networking — áreas donde memory safety es crítica y bugs pueden exponer mensajes de usuarios. Solo después de 18+ meses de validación interna expandieron a módulos más grandes.
La lección brutal: si estás considerando Rust, elige UN sistema crítico con surface area de seguridad alta. No intentes reescribir tu monolito de 500K LOC C++ de golpe. Vas a fallar, tu equipo va a odiar Rust, y terminarás en Hacker News como caso de estudio de "qué no hacer."
Según GitHub Octoverse 2026, el número de developers Rust creció 220% en los últimos 3 años. Pero Stack Overflow Developer Survey muestra que solo 34% de Fortune 500 tech companies usan Rust en producción. El 66% restante aún evalúa o decidió que los trade-offs no valen la pena para sus casos de uso.
¿Vale la pena para tu equipo? La calculadora brutal
Escenario real: tienes un equipo de 8 desarrolladores C++ trabajando en un backend de trading de alta frecuencia. Latency sub-microsegundo, memory footprint crítico, uptime 99.99% no-negociable. ¿Deberías migrar a Rust?
Haz este cálculo:
Beneficios cuantificables:
- Reducción estimada CVEs memory-safety: 70% (asumiendo 10 CVEs críticas/año históricas = 7 evitadas)
- Costo promedio incident response por CVE: $50K (downtime + hotfix + postmortem)
- Ahorro anual: $350K
Costos cuantificables:
- Reentrenamiento 8 devs: $360K (3 meses × $15K loaded cost)
- Slowdown 6 meses post-training: $180K (40% productivity loss)
- Hiring premium si necesitas contratar: $40K/dev
- Total primera fase: $540K
Breakeven: 18 meses si NO hay rotación. 24+ meses si pierdes 1-2 devs senior.
Ojo con esto: si tu codebase NO tiene historial de vulnerabilidades memory-safety críticas (porque ya usas sanitizers, ASAN, code review estricto), el beneficio cae dramáticamente. Rust te da garantías compile-time, pero si ya tenías disciplina en C++, no vas a ver ROI claro hasta año 2-3.
Cuándo SÍ tiene sentido Rust:
- Estás escribiendo código nuevo (no migración), eliminas costo de rewrite
- Tu dominio tiene superficie de ataque alta (crypto, parsers, networking kernel-level)
- Puedes absorber 6-12 meses de velocity reducida sin matar el roadmap
- Tienes al menos 1-2 Rust champions en el equipo que puedan mentorear al resto
Cuándo NO tiene sentido:
- Codebase legacy gigante (500K+ LOC) sin presupuesto multi-año para migración gradual
- Equipo resistente al cambio (si tus senior devs amenazan con renunciar, no forces)
- Domain logic complejo donde borrow checker añade friction sin beneficio claro (ej: CRUD apps empresariales)
- Deadline agresivo en los próximos 12 meses (Rust ralentiza desarrollo inicial)
WhatsApp pudo hacer esto porque tiene runway infinito (Meta bankroll), usuarios que justifican cualquier inversión en seguridad, y pudo permitirse 18 meses de transición gradual. Tu startup pre-Series A con 18 meses de cash left probablemente debería enfocarse en shipped features, no en reescribir código que funciona.




