La reescritura experimental de Bun en Rust alcanza 99.8% de compatibilidad de pruebas en Linux x64 glibc
(twitter.com/jarredsumner)- La reescritura en Rust de Bun supera el 99.8% del conjunto de pruebas existente en entornos Linux x64 glibc
- La base de código es “básicamente la misma base de código”, y al pasar a Rust el compilador puede hacer cumplir el ciclo de vida de los tipos y permitir usar destructores cuando se necesitan
- Las partes inseguras quedan más claras con unsafe en Rust, lo que tiene el efecto de impulsar la refactorización
- La razón de la reescritura fue que se cansaron de dedicar mucho tiempo a preocuparse y corregir fugas de memoria, crashes y problemas de estabilidad, y querían que el lenguaje ofreciera herramientas más sólidas para evitarlo
- La escala total se expresó como una reescritura de 960,000 LOC, y tras pasar el conjunto de pruebas en Linux, otras plataformas serán el siguiente objetivo
Estado de la reescritura en Rust
- La reescritura en Rust de Bun supera el 99.8% del conjunto de pruebas existente en entornos Linux x64 glibc
- La base de código es “básicamente la misma base de código”, y al cambiarla a Rust el compilador puede hacer cumplir el ciclo de vida de los tipos y permitir usar destructores en el momento necesario
- Las partes inseguras se vuelven más explícitas con unsafe en Rust, lo que también impulsa la refactorización
- Entre los motivos de la reescritura está que se cansaron de pasar mucho tiempo preocupándose y corrigiendo fugas de memoria, crashes y problemas de estabilidad, y querían que el lenguaje ofreciera herramientas más fuertes para prevenir este tipo de problemas
- La escala total se describió como una reescritura de 960,000 LOC, y el código ya funciona en la práctica, pasa el conjunto de pruebas en Linux y pronto apuntará también a otras plataformas
Próxima información a publicar y respuestas sobre la compilación
- El significado para Bun, los benchmarks, el uso de memoria, la mantenibilidad futura y el proceso real de la reescritura se tratarán en una entrada de blog aparte
- El proceso de reescritura no fue simplemente decir “claude, rewrite bun in rust. make no mistakes”, y el trabajo para llegar a un estado que funcionara de principio a fin comenzó hace 6 días
- Se menciona que, si hubiera sido totalmente manual, habría implicado una cantidad enorme de trabajo
- El tiempo de compilación es básicamente similar al de la versión actual en Zig, que usa un compilador Zig más rápido, y se afirma que si hubieran usado el compilador Zig upstream, el port a Rust habría compilado más rápido
- El rendimiento se tratará en una entrada de blog aparte
- Sobre el siguiente paso de reemplazar la propia libc por la versión en Rust frankenlibc, se dice que antes de eso harán su propia libc
1 comentarios
Comentarios en Hacker News
Ya había algo sobre esto hace 4 días: https://news.ycombinator.com/item?id=48019226
Una persona que trabaja en Bun dijo que era su propia rama, que en ese momento el hilo era una sobrerreacción a código que no funcionaba, que aún no habían decidido hacer el rewrite y que había altas probabilidades de que todo el código terminara descartándose
Dijo que quería ver cómo era una versión funcional, cómo quedaban el rendimiento y la mantenibilidad, y qué tan difícil era pasar la suite de tests de Bun para comparar lado a lado la versión en Rust y la versión en Zig
cargo checkarrojaba más de 16,000 errores del compilador y ni siquiera podía mostrar el número de versión ni ejecutar JavaScriptNo esperaba que funcionara tan rápido, ni que el rendimiento fuera tan competitivo, y los detalles saldrán en una entrada de blog
Debí haberlo esperado después de la adquisición por Anthropic, pero igual me decepciona. No me opongo a la tecnología de modelos de lenguaje a gran escala en sí, pero me repugna la forma en que estas empresas de “IA” han ganado poder al devorar la industria del software y la sociedad en general, creando dependencias muy poco sanas
Hay que mirar varios movimientos hacia adelante y preparar stacks de software y comunidades sin slop. Eso incluye a Zig y su ecosistema. Aunque nosotros y las futuras generaciones no podamos vivir por completo sin slop, es más importante que nunca garantizar una cultura de computación sostenible con libertad como valor real
Es muy impresionante que lo hayan logrado tan rápido. Yo llevo 5 meses en un proyecto parecido de portar TypeScript a Rust, y no tengo Mythos ni acceso ilimitado a tokens
Aun así, ya estoy cerca de una tasa de aprobación de casi 100%, y al momento de escribir esto va en 99.6%: https://tsz.dev
Rust es muy apto para escribir código con modelos de lenguaje a gran escala. Gracias a su sistema de tipos estricto, se evitan muchas tonterías que en otros lenguajes sí podrían pasar
Pero escribir código con modelos de lenguaje a gran escala no elimina la necesidad de una visión de diseño ni del juicio para evaluar trade-offs al construir un proyecto. Por eso Jarred y su equipo son las personas adecuadas para aprovechar y usar enormes cantidades de código generado con modelos de lenguaje a gran escala
Por otro lado, Rust es un lenguaje complejo y pequeños cambios pueden obligar a hacer refactors en código muy distante, generando avalanchas de refactorización. Si la arquitectura inicial es mala o insuficiente, conforme el modelo vaya expandiendo gradualmente el codebase como suele hacerlo, el riesgo de que todo se vuelva espagueti es grande
Me preocupa que al final termine siendo un programa que compila y corre, pero que ningún humano pueda leer o mantener
Sin Mythos, eso fue todo lo que dieron 8 cuentas de Codex de $200 al mes
También ahí vi las ventajas de Rust, y con base en mi experiencia con Postgres creo que se pueden tomar buenas decisiones de diseño en varias partes que durante mucho tiempo le han costado a la gente en pg. Me entusiasma que, gracias a la IA, mejorar software complejo de maneras que antes no eran prácticas se vuelva más posible
[0] https://github.com/malisper/pgrust
[1] https://malisper.me/the-four-horsemen-behind-thousands-of-po...
Incluso mantener o establecer límites limpios deja de ser un estado de concentración y se convierte en una revisión dolorosa, y al final uno cae en modo de postergación
No tengo una base súper sólida, pero ya no quiero seguir vinculado con Bun. Es más bien una corazonada, pero no logro confiar ni apoyarlo
Forkearon Zig para aprovechar rewrites con LLM, e hicieron cosas como compilación no determinista que el equipo de Zig claramente no quería
Ahora parecen estar quejándose mientras hacen un rewrite con LLM en Rust. Puede que hayan llegado hasta aquí justamente porque la filosofía de diseño de Zig forzaba decisiones difíciles pero correctas, y existe la posibilidad real de que el rewrite en Rust sea el comienzo de la caída
Es un juicio más político que técnico, pero Bun parece completamente sostenido por Claude. No me sorprendería que el siguiente mensaje de marketing de Anthropic fuera: “Claude Mythos reescribe en Rust un runtime JS líder de 950K LOC”
El hilo de Twitter enlazado presenta fundamentos técnicos claros
Trabajar en el ecosistema JS/NPM ya implica depender muchísimo de una fe pura en dependencias no verificadas, y no veo por qué eso cambiaría antes o después de un rewrite con LLM. Si cumple el objetivo original y el contrato de API, ¿cuál es la diferencia? Además, dudo que la gente estuviera leyendo con tanto cuidado el código fuente anterior
Siempre fue esa idea de aplastar a cada competidor existente siendo mejores, más rápidos y más fuertes, pero era demasiado obvio que jamás iban a seguir el Keep It Simple Stupid
También estaba claro que, en el futuro cercano, solo lo veríamos en producción real en startups de YC que se irían incendiando una por una como si les hubieran echado acelerante. Ahora parece que ya pasaron el punto de no retorno
Anthropic compró Bun en un intento algo tonto de resolver sus propios problemas de “rendimiento”. Al parecer no se dieron cuenta de que el problema era que el código ya era bastante malo desde el principio
Aun así, al menos trajeron desarrolladores realmente capaces, así que quizá eso ayudó un poco
Pero en el proceso Bun dejó de parecer un proyecto público y se volvió algo más cercano a una herramienta interna de Anthropic, y ahora está bastante mal enfocado y sobreprotegido por dinero de IA
Ojalá se pueda rescatar aunque sea parte del esfuerzo invertido en Bun cuando se desinfle la burbuja. No parece que Anthropic vaya a mantenerlo a largo plazo. No son una empresa que venda soporte de runtimes, ni tienen el tamaño de Google como para mantener un runtime de lado
Dejando de lado por un momento la intervención de IA, me parece un buen cambio
Bun tenía muchísimos crashes y bugs de memoria usando Zig, a diferencia de Deno que está basado en Rust
Claro, si el port de Bun a Rust tiene mucho
unsafe, no se va a resolver todo por arte de magia, pero igual debería mejorarEl hecho de que las partes feas se vean más claramente con
unsafe, empujando a refactorizarlas, hace pensar que no es solo un tema del lenguaje sino también algo que Bun en parte se causó a sí mismoSi fuera así, ¿no significaría que es prácticamente imposible hacer software de alta calidad con esa herramienta? Se han hecho muchas cosas de buena calidad en C/C++, así que me pregunto qué estaría haciendo mal Zig
unsafequeda señalado con claridad, es más fácil de encontrar y se genera de forma natural una lista de problemas a resolverEsto tomó 6 días. Aunque al final no termine siendo un resultado importante, muestra cómo se están conectando ahora y en adelante los tokens y la cantidad de trabajo
Será más difícil competir con personas o empresas que tengan más recursos de cómputo. Ellos simplemente podrán hacer cosas que yo no puedo
Si puedes usar el codebase terminado como ejemplo y validarlo con la suite de tests, es mucho más fácil iterar hacia el objetivo deseado. El modelo ya puede ver cuál es la meta y cómo se implementó una vez, así que es un problema mucho más sencillo que empezar desde una especificación
Metes capital, las construyes con técnicas escalables bien entendidas, conectas la electricidad y sale valor
El punto es que, igual que la electricidad no terminó convirtiéndose en eso en el mundo moderno, no necesariamente va a surgir una separación entre “los que tienen y los que no tienen”
Lo que se ve hasta ahora es más bien “wow, ¡ahora soy un ingeniero 10x!” soltando mucho más código, pero sin una dirección clara ni buen gusto. La mayor parte del trabajo actual basado en modelos de lenguaje a gran escala solo parece ruido
No sé si ya probaste Qwen 3.6 27b, pero lo que puede hacer para su tamaño es una locura. Si manejas bien el contexto, en proyectos pequeños ya se puede hacer vibe coding al 100%
Estos modelos también van a bajar por competencia de precios, igual que el cómputo
Mucha gente está aceptando esto tal cual, pero gran parte fue posible gracias a una suite de tests extensa y exhaustiva, muy por encima del estándar, que ya se había construido antes
Cuando luego se haga marketing de esto, estaría bien que también dijeran cuánto esfuerzo humano hubo en diseñar y curar la suite de tests que hizo posible esta velocidad
Las suites de tests funcionan casi como un entorno ideal para la generación actual de modelos de lenguaje a gran escala. Una suite de tests suficientemente completa se vuelve una especificación que el agente puede implementar de la manera que quiera, y aquí eso fue en Rust
En proyectos con tests tan bien hechos como Bun, dependiendo del caso, hasta parecería posible tirar por completo el código fuente y dejar acceso solo a los tests para reimplementar todo desde cero
Si parte de la responsabilidad también recae en la suite de tests, me pregunto qué implicaría eso para el port a Rust
¿Y hay que ignorar las cientos de miles de horas invertidas en la arquitectura original y en la suite de tests que lo hizo posible?
Vale la pena verlo como un caso de advertencia sobre ports a Rust hechos con IA
https://blog.katanaquant.com/p/your-llm-doesnt-write-correct...
El compilador C hecho con Claude code pasó el 100% de los tests de gcc, pero ni siquiera pudo ejecutar
hello worldSi solo les das tests lógicos, no van a considerar para nada la velocidad. Si incluyes tests que midan velocidad y les pides alcanzar cierto rendimiento, también harán eso
Es la misma clase de error que cometen en otros contextos. No tienen contexto de sentido común sobre las cosas que un humano considera importantes. Si no fuerzas los límites, los ignoran
Qué época tan increíble para estar vivo
Las dinámicas fundamentales de la industria y de la profesión cambiaron en muy poco tiempo, prácticamente de la noche a la mañana
Algunos días me emociona sentir que ahora hay demasiadas cosas que puedo hacer; casi cualquier cosa que quiera se puede construir de inmediato, y el 100% de lo que soñaba hacer con software puede volverse realidad
Otros días me da miedo lo que va a pasar con el mercado laboral
De repente se puede obtener muchísimo con muy poco, y la cantidad de software que el mundo necesita tiene un límite
¿Van a quebrar todas las empresas cuyo modelo principal de negocio es vender software?
¿Qué pasa si solo ciertas empresas o gobiernos tienen acceso a los mejores modelos?
¿100 empresas con mil millones de tokens podrán crear un producto mejor que un vendor especializado con 100 mil millones de tokens?
Vendors de software y SaaS como los de “generador de logos” sí están muertos, pero a menos que la próxima generación de modelos de lenguaje a gran escala venga con un sistema de ticketing incorporado, los vendors de ticketing deberían estar bien. Podría bajar la necesidad de personal, pero no es seguro
La idea era que, comparado con la cantidad de gente entrando, no había tanto trabajo para repartir, y el colapso reforzó esa narrativa
Pero incluso siendo estudiante en ese momento, era evidente que el alcance del software era prácticamente infinito. Casi cualquier trabajo cognitivo que hacemos a mano puede hacerse con software. Una vez intenté enumerar esas cosas y enseguida me di cuenta de que había muchísimo por hacer
Además, entendí que cada nueva forma de hacer el trabajo también hace aparecer muchas más cosas que antes ni imaginábamos. Las posibilidades eran incontables, y estaba claro que la narrativa de la “saturación” venía de una falta de imaginación y de comprensión de lo que es el software
Por eso sabía que este campo nunca se iba a saturar. Era imposible quedarse sin cosas que convertir en software
Pero ahora se siente distinto. Vamos a seguir creando software nuevo, sí, pero ahora me pregunto si la velocidad de escribir software puede llegar a superar nuestra velocidad para imaginar trabajo nuevo por hacer
El público al menos podrá ayudarse con modelos rezagados respecto a la frontera
Como mínimo, es interesante ver que este tipo de intentos avance
Lo primero que me pregunto es qué tan buena y qué tan completa es la suite de tests para empezar. No lo digo por desacreditar, pero incluso si saliera 100% en todas las plataformas, me pregunto cuánta confianza tendría el equipo de Bun para hacer la migración
Después de lo de Ubuntu coreutils la semana pasada, la idea de un rewrite en Rust con 99.8% de compatibilidad en tests me dejó una impresión realmente mala
Hice clic en el tuit enlazado y me recorrió un escalofrío; ahora cuando veo estas cosas siento exactamente lo contrario. Casi me dan ganas de salir corriendo