Así es como se ve el HTML. Entonces, lo que está sucediendo aquí es que está construyendo el front-end y el back-end al mismo tiempo con bun build, y lo hará por adelantado. De esa manera, no necesitas ejecutar el empaquetador en tu servidor de producción porque eso es un poco tonto. Entonces, lo que eso significa es que con bun build ahora, puedes tener bajo demanda, puedes hacer que la construcción ocurra bajo demanda en desarrollo, y luego en producción, lo haces por adelantado. Así es como debería funcionar. Parece bastante obvio que así es como debería funcionar, y simplemente no lo hacía antes, porque todo lleva tiempo. Así que eso es bun. Estamos haciendo JavaScript más simple. Gracias. Gracias.
La primera pregunta es, ¿por qué es bun mucho más rápido al descargar paquetes? ¿No es la velocidad de la red el único factor limitante? Así que esto es un poco sorprendente, pero no es el único factor limitante. Hay muchas cosas que tienen que suceder para instalar paquetes. Tienes que extraer archivos tar, tienes que asegurarte de que también tienes que analizar un montón de JSON. Al principio, cuando estaba perfilando, en las versiones iniciales, cuando estaba como, ok, ¿cómo hacemos realmente un gestor de paquetes que sea realmente rápido? Noté que mucho tiempo en los gestores de paquetes actuales se gastaba analizando JSON. Uno de los trucos que hacemos es que cuando descargamos el manifiesto de NPM, lo serializamos en un formato binario, verificamos si ese manifiesto coincide con el manifiesto del servidor, y cuando lo deserializamos, es efectivamente una copia de memoria, lo que significa que hace muy poco trabajo cuando deserializa los datos reales. Así que básicamente bun no pasa mucho tiempo analizando JSON, o se esfuerza mucho por no pasar tiempo analizando JSON cuando no es estrictamente necesario. Y luego también hay muchas cosas con llamadas al sistema. Pasamos mucho tiempo en cuál es la forma más rápida posible de copiar archivos, cuál es la forma más rápida de, y también cómo usar el menor número de llamadas al sistema. Sí, eso tiene sentido.
Aquí hay otra. Runtime, empaquetador, gestor de paquetes, pruebas, son problemas difíciles de resolver. Otras herramientas típicamente se concentran en solo un problema. ¿Cómo puede bun mantener todo esto? Básicamente, las herramientas que elegimos construir en bun se usan mucho entre sí. Así que el runtime utiliza el transpiler, el ejecutor de pruebas utiliza el transpiler, el gestor de paquetes utiliza partes del transpiler también, incluso solo para el analizador de JSON. Así que parece que es un montón de cosas diferentes, y lo es, pero también todas esas cosas se reutilizan, así que terminamos, eso ahorra mucho trabajo. Sí. Alguien también dice que si bun es un reemplazo para todo, ¿por qué no se usa más ampliamente? Todavía somos bastante nuevos. Honestamente, creo que lo principal aquí es que todavía tenemos problemas con la compatibilidad con node, y por eso estamos trabajando tanto en ello. Y mi expectativa es que solucionemos la compatibilidad con node, pero también, hay un montón de empresas que usan bun en producción hoy en día.
Comments