Creando lo Imposible: Virtualización X86 en el Navegador con WebAssembly

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

WebAssembly es una característica del navegador diseñada para llevar un rendimiento alto y predecible a las aplicaciones web, pero sus capacidades a menudo se malinterpretan.


Esta charla explorará cómo WebAssembly es diferente de JavaScript, desde el punto de vista tanto del desarrollador como del motor del navegador, con un enfoque particular en la implementación de V8/Chrome.


WebVM es nuestra solución para ejecutar eficientemente binarios x86 no modificados en el navegador y muestra lo que se puede hacer con WebAssembly hoy en día. Se discutirá una visión general de alto nivel de los componentes del proyecto, incluido el motor JIT, la capa de emulación de Linux y el backend de almacenamiento, seguido de demostraciones en vivo.

This talk has been presented at JSNation 2022, check out the latest edition of this JavaScript Conference.

FAQ

Alessandro Pignotti es el fundador y CTO de Leaning Technologies, una empresa especializada en soluciones compiladas a JavaScript y WebAssembly.

Leaning Technologies ha lanzado tres productos principales: Chirp, una herramienta en C++ y un compilador de JavaScript y WebAssembly; ChirpJ, una máquina Java completa que puede ejecutarse en el navegador; y ChirpX, una tecnología más genérica que puede ejecutar código binario de forma segura en el navegador.

ChirpX es una tecnología desarrollada por Leaning Technologies que permite ejecutar de forma segura código binario en el navegador. Se utiliza para virtualizar aplicaciones completas directamente en el navegador sin necesidad de preprocesamiento o metadatos especiales.

WebVM es un experimento dentro de ChirpX que permite convertir la tecnología en un producto comercializable, facilitando la ejecución de sistemas virtualizados completos como Bash o Python directamente en el navegador.

ChirpX puede facilitar un entorno de aprendizaje sin mantenimiento donde los estudiantes pueden iniciar aplicaciones sin preocuparse por la compatibilidad con sus sistemas operativos, lo que es especialmente útil en el contexto educativo.

Es teóricamente posible implementar la llamada al sistema de Windows y ejecutar una pila completa de Windows usando la tecnología de Leaning Technologies, aunque se enfrentan a restricciones de licencia con Microsoft.

Las tecnologías desarrolladas por Leaning Technologies, como ChirpX y WebVM, son compatibles con cualquier navegador moderno, incluyendo Chrome, Firefox y Safari.

Los planes futuros para ChirpX incluyen la implementación del servidor completo de X.Org en el navegador y encontrar una forma de mapear OpenGL directamente a WebGL, lo que podría reducir significativamente la sobrecarga de ejecución.

Alessandro Pignotti
Alessandro Pignotti
21 min
16 Jun, 2022

Comments

Sign in or register to post your comment.
Video Summary and Transcription
ChirpX es una tecnología para ejecutar de forma segura código binario en el navegador, escrito en C++ y compilado a JavaScript WebAssembly. Puede ejecutar un sistema completamente virtualizado en el navegador, incluyendo Bash y otros lenguajes como Python y JavaScript. ChirpX apunta a la escalabilidad y la capacidad de trabajar con grandes bases de código, soportando multiprocesamiento y multihilo. Utiliza un motor de ejecución de dos niveles con un intérprete y un motor JIT. Los planes futuros incluyen ejecutar el servidor completo X.Org en el navegador e implementar la llamada al sistema de Windows. WebVM, la tecnología subyacente, tiene un sistema de archivos virtual respaldado por Cloudflare.

1. Introducción a ChirpX

Short description:

Soy Alessandro Pignotti, fundador y CTO de Leaning Technologies. Nos especializamos en soluciones compiladas a JavaScript y compiladas a WebAssembly. Hemos lanzado tres productos diferentes: Chirp, ChirpJ y ChirpX. ChirpX es una tecnología para ejecutar de forma segura código binario en el navegador. Es genérico, robusto y escalable. Lo escribimos en C++ y lo compilamos a JavaScript WebAssembly usando Chirp.

Así que, hola a todos. Y me gustaría comenzar agradeciendo a la organización por invitarme aquí y darme la oportunidad de compartir algo de la tecnología que construimos para ustedes. Y especialmente hoy, es un día especial para mí, porque es mi cumpleaños. Y muchas gracias por venir aquí a celebrarlo conmigo, lo aprecio mucho.

Así que soy Alessandro Pignotti, fundador y CTO de Leaning Technologies. Nací y crecí en Roma, y me mudé a Pisa para mis estudios, y luego me mudé aquí en 2014. Y he sido un orgulloso habitante de Ámsterdam desde entonces. Si lo desean, pueden seguirme en Twitter, pero les recomendaría no contener la respiración mientras esperan que publique algo.

Entonces, ¿qué hacemos? Somos una pequeña empresa que se especializa en el nicho de soluciones compiladas a JavaScript y compiladas a WebAssembly. En este pequeño nicho, creo que hacemos cosas bastante interesantes. Y a lo largo de los años, hemos lanzado tres productos diferentes. Uno de ellos fue Chirp, que es una herramienta de C++, compilador de JavaScript y WebAssembly. El segundo fue ChirpJ, que no es solo un compilador para Java, realmente. Es más como una máquina Java completa que puede ejecutarse en el navegador. Y podemos usarlo para ejecutar incluso aplicaciones Java completamente gráficas en el navegador ahora mismo. Y luego decidimos dar un paso más allá. Y creamos ChirpX. Y ChirpX no es solo un producto, realmente. Ahora mismo, lo consideramos más como una tecnología. Es una solución muy genérica que hará un montón de cosas diferentes. Y como primer experimento para ver cómo podemos hacer de esto eventualmente un producto que podamos vender, construimos WebVM, que es solo una de las posibles cosas que podemos construir con esto. Y hablaremos sobre eso. Porque, ya saben, cada uno de estos productos probablemente requerirá su propia charla de un par de horas. Tenemos 20 minutos, así que necesitamos cortar e ir al grano. Entonces, ChirpX es una tecnología para ejecutar de forma segura código binario en el navegador, ¿de acuerdo? Y hay tres ideas principales que seguimos al hacer esto. Queríamos construir algo que fuera genérico, robusto y escalable. Creo que pueden tener su propia intuición sobre lo que significan estos términos, pero me adentraré más tarde sobre lo que quiero decir exactamente al usar estas palabras. Y en términos prácticos, lo que ChirpX es, es una aplicación de C++ que escribimos desde cero. La escribimos nosotros mismos, y la compilamos a JavaScript WebAssembly usando Chirp, usando nuestro otro producto, para que pueda ejecutarse en el navegador. Y sé que es agradable hablar sobre las cosas, pero también es agradable ver cómo las cosas realmente funcionan en la práctica.

2. Running Full Virtualized System in Browser

Short description:

Ahora demostraré que podemos ejecutar un sistema completamente virtualizado en el navegador. Actualmente, tengo Bash, el shell, ejecutándose desde una distribución Debian en el navegador. Escribiré un binario desde cero y lo probaré. Quiero devolver un código de error en lugar del código de finalización exitoso habitual para ver si el shell puede manejarlo. Después de compilar el código usando GCC, el sistema carga los datos requeridos desde la red. La ejecución se completa y podemos probar si funciona como se espera.

Y todos me recomendaron no hacer una demostración en vivo, pero, ya saben, ¿quién soy yo para seguir buenos consejos? Intentemos esto. Así que lo que me gustaría hacer, me gustaría demostrarles que podemos ejecutar un sistema completamente virtualizado en el navegador. Y lo que tengo aquí ahora mismo es Bash, el shell, ejecutándose desde una distribución Debian en el navegador. Para probarlo, puedo, por ejemplo, listar un sistema de archivos y hay un montón de cosas que puedes esperar de un sistema real en ejecución.

Pero me gustaría demostrar que realmente puedo ejecutar un binario que nunca se ha visto antes. Y a través de eso, supongo que simplemente escribiré uno. Y no sé ustedes, pero cuando quiero escribir un binario desde cero, lo primero que hago es abrir mi editor de texto. Así que... Es increíblemente difícil escribir correctamente en el escenario. Así que tenemos Vim, está funcionando, y ahora puedo escribir un caso de prueba muy pequeño. Y lo que está sucediendo ahora mismo es que todo esto está ejecutándose desde los binarios XSAT que ejecutas en tu propia computadora. Y planeo hacer una palabra L muy simple. Para hacer algo que no sea completamente trivial, en realidad quiero, en lugar de devolver el habitual retorno cero o código que le dirá al sistema que el ejecutable se completó exitosamente, quiero devolver un código de error. Quiero ver si el shell puede manejar eso. Así que probemos esto. Genial.

Ahora quiero compilar esto. Para compilar código C++. Código C, en realidad, por supuesto usaré GCC. Y también podemos habilitar algunas optimizaciones porque nunca se sabe. Y esto parece correcto. Bien. ¿Qué está pasando en el fondo aquí? Así que GCC es un ejecutable bastante grande, y actualmente el sistema está cargando los datos requeridos desde la red. Y estos datos vienen en bloques porque esto es en realidad una implementación completa de X2 que se ejecuta desde un dispositivo de disco que está respaldado por un CDN. Está respaldado por Cloudflare. Y esta ejecución está realmente completada. Podemos probar si esto incluso puede ejecutarse. Hace lo que esperamos que haga. Verifiquemos el código de error. Es lo que esperamos.

3. Compiling C++ WebAssembly

Short description:

Podemos compilar C++ WebAssembly y demostrar que no es una versión especial de GCC. El tipo de archivo es ELF, un formato binario para archivos ejecutables. Incluso podemos volcar y examinar el código binario.

Así que esto es bastante interesante, creo, pero tal vez lo dije yo mismo antes, ¿verdad? Podemos compilar C++ WebAssembly, así que tal vez pienses que hay algún truco aquí. Que tal vez esta es una versión especial de GCC que puede generar mágicamente código que se ejecuta nativamente en el navegador. Y me gustaría demostrarte que este no es el caso. Que a través de eso realmente podemos preguntar al sistema. Entonces, ¿cuál es el tipo de archivo que acabamos de ejecutar? El sistema dice que es ELF, que es un formato binario de archivo ejecutable. Así que Linux 32-bit intel x86, que es lo que esperamos. Y como última prueba, incluso podemos mostrar el código en sí. Podemos volcar este programa que construimos. Podemos echar un vistazo y este es código binario, que es lo que esperarías.

4. Running C++ and Other Languages in Browser

Short description:

Hay otras formas de ejecutar código C++ en el navegador. También podemos probar Python y JavaScript. ChirpX es capaz de manejar ejecutables sofisticados generando código en tiempo de ejecución. Construir algo genérico significa usar binarios sin preprocesamiento o herramientas especiales.

Y bien, pero, quiero decir, hay otras formas de ejecutar código C++ en el navegador. Entonces, ¿por qué vamos a optar por toda esta complejidad? Y el problema es que es complicado, realmente. Así que es cierto que puedes compilar C++ en el navegador. No está claro que puedas compilar cualquier aplicación sin intervención manual. Pero incluso dejando esto de lado, el punto es que esta es una solución extremadamente genérica, ¿verdad?

Así que ahora podemos intentar algo completamente diferente. Probemos Python. Así que lo que he hecho ahora, he configurado el intérprete de Python y puedo realmente escribir comandos directamente en la consola una vez más. Haré lo mismo que he hecho antes. Hola. Esto también es bastante fácil. Puedo devolver otro código, que se mostrará en pantalla. Y, OK, Python es agradable, pero también es un ejecutable relativamente simple. Es solo un intérprete en general, no hace mucho más que eso. Así que probemos algo más divertido. Probemos si podemos intentar ejecutar JavaScript. Y también abriré de nuevo Vim. También abriré una vez más y escribiré mi caso de prueba simple, que está mal escrito. Y además, para no hacer algo completamente obvio, voy a habilitar la opción de imprimir código. Así que lo que hace esta opción es que realmente imprime todo el código nativo que Node.js y realmente el motor interno, que es V8, el mismo motor que se usa en Chrome, está generando solo para ejecutar este pequeño ejemplo. Ten en cuenta que lo que estás viendo no es algo que suceda especialmente porque se está ejecutando en este entorno virtualizado. Esto sucede cada vez que inicias Node.js. Y lo que encontré interesante es que lo que esto te muestra es que ChirpX es realmente capaz de manejar un ejecutable bastante sofisticado, porque este código se está generando en tiempo de ejecución. Esto nunca antes había sido visto por el motor. Simplemente se ha generado, leído en memoria y eventualmente ejecutado. Entonces, ¿cómo construimos algo? Oh, por cierto, este es un sitio web en vivo. Si quieres jugar con esto, puedes ir y jugar con eso, y si tienes errores, puedes reportarlos en GitHub, y los miembros de mi equipo se encargarán de ellos. Así que intentemos definir esta terminología que hemos estado usando antes. Al construir algo genérico, quiero decir que queremos hacer algo que no requiera ningún preprocesamiento, ningún metadato especial. No deberíamos tener un compilador especial o opciones de compilación especiales, no deberíamos tener bibliotecas especiales, nada de esto. Lo que hacemos es que tomamos los binarios tal como salen de los paquetes de Debian y los usamos.

5. Running Code in the Browser

Short description:

Rápido significa poder ejecutar Node.js y manejar código que se genera, modifica o elimina en tiempo de ejecución. Apuntamos a la escalabilidad y la capacidad de trabajar con grandes bases de código, apoyando la multiprocesamiento, multihilo y miles de archivos. Chirpx es un entorno del lado del cliente en el navegador, comenzando con Bash como el proceso padre y generando subprocesos independientes como GCC y Python. Para abordar el desafío de distinguir el código de los datos, utilizamos un motor de ejecución de dos niveles con un intérprete y un motor JIT. El motor JIT genera código optimizado basado en los metadatos construidos por el intérprete. El sistema interactúa con el navegador a través de llamadas al sistema implementadas en un ABI compatible con Linux. Ejecutar todo en el JIT puede parecer más eficiente, pero hay razones para el enfoque actual.

Rápido significa poder ejecutar Node.js, ya que necesitamos poder dar una situación donde el código no solo se genera en tiempo de ejecución, sino que también se cambia en tiempo de ejecución, tal vez modificado en el lugar, o tal vez simplemente eliminado y puesto en otro lugar. Esto también sucede al ejecutar código con V8, porque el código en sí es recolector de basura y se mueve por la memoria con el tiempo.

Y luego queríamos construir algo escalable. Lo que esto significa es que, aunque les mostré solo un montón de palabras amarillas, esto puede funcionar en bases de código mucho más grandes. Queríamos construir algo que pueda trabajar con programas en el mundo real, lo que significa que queremos apoyar la multiprocesamiento, multihilo, miles de archivos, y todo tipo de características que son efectivamente utilizadas por programas que son reales, no solo juguetes.

Para darles una idea de lo que hemos visto hasta ahora, Chirpx es este entorno en el que toda la ejecución ocurre. Y es todo del lado del cliente. Todo está en el navegador. No hay un componente del lado del servidor haciendo la ejecución por nosotros. Esto no es un truco. Y lo primero que se inicia es Bash. Así que Bash es el proceso padre. Y luego Bash en sí puede generar subprocesos, procesos hijos, y les mostré GCC y Python, y todos estos son completamente independientes de otros espacios. Tienen su propio código y tienen sus propios datos.

Pero el problema es que, desde el punto de vista del sistema, realmente no sabemos qué es código y qué es datos. Estas dos cosas son solo bytes. Es solo datos antiguos en memoria. Y para resolver este problema, tenemos en realidad un motor de ejecución de dos niveles. El primer nivel es un intérprete, y el segundo nivel es un motor JIT real que puede generar código altamente optimizado. Y el intérprete es capaz de ejecutar código sin ninguna información. Comenzará desde la primera instrucción y la pasará a la siguiente y así sucesivamente. Y mientras hace esto, también construirá los metadatos internamente sobre cómo está estructurado el código. Y con eso, ahora es posible activar el motor JIT para generar código optimizado y robusto a partir de esto.

Y eventualmente, todas estas aplicaciones necesitarán llegar al navegador de alguna manera porque necesitamos mostrar texto en pantalla, por ejemplo. Y esto sucede como se esperaría en un sistema nativo a través de llamadas al sistema. Y las llamadas al sistema, las implementamos nosotros mismos. Así que lo que han visto hasta ahora no es un kernel de Linux. Es un ABI compatible con Linux, por lo que puede ejecutar cualquier ejecutable de Linux, pero no es Linux en sí. Y la llamada al sistema es el lugar donde nos detenemos e implementamos la llamada al sistema manualmente para que puedan interactuar con el navegador. Y ahora podrían preguntarse por qué no ejecutamos todo en el JIT, ya que es más probablemente más eficiente.

6. JIT Compilation and ChirpX Features

Short description:

La compilación JIT es una inversión de tiempo de ejecución, que se compensa en el futuro con un código del sistema más rápido. Gracias al intérprete, podemos construir metadatos y generar código JIT para bloques de código calientes. ChirpX soporta el conjunto de instrucciones X86, con planes para optimizar MMX y SSC usando la extensión de WebAssembly. También soporta la mayoría de los sistemas de archivos y manejo de procesos. La persistencia se realiza localmente usando index.db, asegurando la privacidad. ChirpX permite entornos de cero mantenimiento para la educación, entornos de desarrollo completamente basados en la web, documentación en vivo para cualquier lenguaje de programación y acceso a aplicaciones de ingeniería de alta exigencia.

Y el problema allí es que esto en realidad no es necesariamente el caso. La forma en que lo veo, la compilación JIT es prácticamente una inversión, y quieres asegurarte de recuperar tu inversión. Es realmente una inversión de tiempo de ejecución. Pagas algo de tiempo de ejecución ahora con la esperanza de que en el futuro el código del sistema se ejecute más rápido para que en general también ejecutes más rápido.

Y solo JIT y todo sería ineficiente. Así que en realidad, gracias al intérprete, podemos construir estos metadatos. Construimos lo que llamamos el gráfico de flujo de control del programa. Y luego, cuando los bloques de código se vuelven suficientemente calientes, se ejecutan una cantidad suficiente de tiempo, comenzamos a generar código JIT solo a partir de eso. Y solo de los subs que se ejecutan un número suficientemente alto de veces. Y de esta manera podemos lograr tanto un buen rendimiento en tiempo de ejecución como sin exceder el recurso del navegador en términos de código compilado.

Entonces, ¿qué podemos hacer con esta cosa? En términos de características, lo que tenemos ahora es que tenemos un soporte bastante completo para el conjunto de instrucciones X86. Soportamos X87, pero no es tan rápido. MMX y SSC están ambos soportados, pero actualmente están escalarizados. Así que los expandimos a las operaciones escalares equivalentes, lo cual es por supuesto más lento y nuestros planes en el futuro son por supuesto usar la extensión de WebAssembly para poder reducir esta brecha. A nivel del sistema operativo, tenemos soporte para la mayoría de los sistemas de archivos y manejo de procesos Los datos provienen de un backend de disco que es una implementación de X2. Y hemos elegido usar X2 porque será posible para nosotros extenderlo en el futuro para soportar más extensiones y alcanzar el nivel X3 y X4 sin tener que reescribir todo desde cero.

En términos de persistencia, esto es bastante interesante. Si cambias un archivo en esta VM, se quedará allí. La persistencia es local. Se realiza usando index.db, lo cual es genial porque preserva la privacidad. Así que no vamos a mirar tus datos. Son tuyos y se almacenarán en tu máquina. Y con esta cantidad limitada de características, ya podemos hacer un montón de cosas interesantes. En el contexto de la educación, por ejemplo, haría posible que las escuelas establezcan un entorno de cero mantenimiento que los estudiantes puedan iniciar sin tener que preocuparse de si esto funcionará en su computadora o tal vez hoy la configuración XS no está funcionando correctamente. Para desarrolladores como nosotros, podría hacer posible no solo tener IDEs basados en la web. Esto hará posible tener un entorno de desarrollo completamente basado en la web donde realmente puedes construir y ejecutar todo el pipeline en el cliente. Esto será útil en la documentación, para tener documentación en vivo para cualquier lenguaje de programación, no solo para lenguajes de programación que ya pueden ejecutarse en el navegador. Y esto también puede ser útil para abrir la web a una nueva categoría de aplicaciones, en particular, aplicaciones de ingeniería de alta exigencia como programas de diseño asistido por computadora. Usualmente, este tipo de aplicaciones no tienen realmente el código fuente completo disponible, ni siquiera para el desarrollador. Porque usan componentes binarios que son vendidos por otras compañías.

7. Running Binary Systems and Future Plans

Short description:

Gracias a este sistema, puedes ejecutar sistemas binarios sin tener el código. En el futuro, planeamos hacer que el servidor completo de X.Org se ejecute en el navegador y mapear OpenGL directamente a WebGL. Con soporte de red, nuestro objetivo es tener entornos de desarrollo completos accesibles en todo el mundo. Nuestro objetivo es ejecutar un entorno de escritorio completamente virtualizado en una pestaña, permitiendo a los usuarios acceder a sus datos desde cualquier lugar.

Y gracias a este sistema, no importa que no tengas el código. Puedes ejecutar el sistema binario tal como está. Fundamentalmente, no te importa. Y esto es lo que tenemos ahora.

¿Y qué hay del futuro? Bueno, por supuesto, una cosa en mi mente es el gaming. Y para hacer eso, primero necesitamos tener algún tipo de soporte gráfico. Todavía estamos llegando allí. Y el plan es realmente hacer que el servidor completo de X.Org se ejecute en el navegador. Lo creas o no, esto puede funcionar. Hice un prototipo hace algunos meses y es totalmente posible. Y luego necesitamos encontrar una manera de mapear OpenGL directamente a WebGL. Y lo curioso es que con esta configuración, es bastante posible que la sobrecarga no sea ni siquiera tan alta. Porque, por supuesto, la virtualización implica una sobrecarga en términos de ejecución de CPU. Pero dado que mapearemos OpenGL directamente a WebGL, la sobrecarga allí probablemente será mucho menor. Y con soporte de red, que es un tema completamente complicado, podríamos ser capaces de tener entornos de desarrollo completos donde puedas iniciar una pequeña aplicación web incluyendo código del lado del servidor desde tu pestaña del navegador, que luego es accesible desde todo el mundo por otras personas con su propio navegador. Y mi objetivo personal es llegar al punto donde podamos ejecutar un entorno de escritorio completamente virtualizado en una pestaña para que puedas acceder al sitio web, iniciar sesión y tener tus datos. Cierras la pestaña, has terminado, puedes continuar tu trabajo en otro lugar con tu propio sistema. Y esto es todo, realmente.

No dudes en ponerte en contacto. Y de hecho estamos contratando, estamos buscando un pasante en este momento. Así que si estás interesado o conoces a alguien que podría estar interesado en trabajar con nuestra tecnología, hay un espacio. Gracias. Gracias, muchas gracias, Alessandro.

Y veamos si tenemos algunas preguntas en Slido. ¿Podría ver esto en la pantalla, por favor? Sí, creo que tenemos algunas de ellas, al menos esto es lo que veo. Está bien, no hay problema. Lo leeré desde mi teléfono móvil. Sí, básicamente, la primera pregunta es muy similar a mi pregunta inicial. ¿Es o será posible ejecutar aplicaciones de Windows en el navegador desde el archivo .exe? Por ejemplo, navegador, como mencioné. Así que, para ejecutar fundamentalmente, el problema es que implementamos llamadas al sistema.

8. Running Windows Stack and WebVM File System

Short description:

Es posible implementar la llamada al sistema Windows y ejecutar una pila completa de Windows. Sin embargo, el tema de las licencias es complicado ya que no tenemos una licencia de Microsoft para usar todos los DLLs. La autocompletación y otras características están disponibles en la línea de comandos. La tecnología no es actualmente de código abierto, pero esto podría cambiar en el futuro. El WebVM tiene un sistema de archivos virtual respaldado por Cloudflare, utilizando un sistema de archivos basado en bloques que descarga bloques bajo demanda.

Y es, en teoría, posible implementar la llamada al sistema Windows y ejecutar una pila completa de Windows. Ahora, la parte complicada de eso es la concesión de licencias. No tenemos licencia de Microsoft para usar todos los DLLs de Windows. Ahora lo que puedes hacer es ejecutar Wine. También, ejecutar la Capa de Emulación de Windows para Linux para ejecutar las aplicaciones de Windows sobre eso. Bastante justo.

La siguiente. ¿Tenemos autocompletado u otras limitaciones? Quiero decir, ¿en la línea de comandos? Bueno, no, es un bush real. Es exactamente lo que obtendrás para tu propio sistema. Así que, si el autocompletado está configurado correctamente, también lo obtendrás.

La siguiente pregunta es, ¿es todo de código abierto? Por supuesto que no lo es. Así que, la cuestión es que esto podría cambiar con el tiempo. Como decía, actualmente todavía estamos tratando de averiguar cuál será la comercialización de esta tecnología. Y ahora mismo nos parece que mantenemos más caminos abiertos manteniéndolo propietario. Pero esto podría cambiar en el futuro. Honestamente no lo sabemos. Hasta ahora solo será para que nosotros veamos el código. Pero nos gustaría que ustedes probaran eso, si les gusta.

De acuerdo. Dijiste que WebVM tiene un sistema de archivos virtual respaldado por Cloudflare. ¿Carga los archivos de manera perezosa o precarga toda la VM de una vez? ¿Funciona bien, después de todo? Así que, el backend está almacenado por un CDN, por Cloudflare. Pero no está basado en archivos. Está basado en bloques. Es un dispositivo de bloques. Así que, es un sistema de archivos basado en bloques muy tradicional. Y cada bloque se descarga bajo demanda. Solo cuando es necesario. Y esto significa que realmente podemos soportar imágenes de disco bastante grandes. La imagen que has visto hasta ahora es de 2 gigas. Pero esto es principalmente por limitaciones técnicas.

QnA

WebVM Offline Mode and System Access

Short description:

Planeamos hacer posible llegar mucho más alto en términos de tamaño. ¿Existe un modo offline? Ahora mismo, no hay un modo offline real, pero estamos trabajando en ello. ¿Puedes ejecutar el comando top? Puedes ejecutar top, pero solo obtendrás información sobre el sistema virtualizado. WebVM actualmente interesa a los sectores de educación e ID basados en la web, con el objetivo de atraer a los entusiastas de los juegos.

Y planeamos hacer posible llegar mucho, mucho más alto en términos de tamaño. Genial.

Así que, la siguiente pregunta es... ¿Existe un modo offline? Entonces, demostraste este sitio web. Como Playground. ¿Es de alguna manera posible ejecutar estas cosas geniales cuando estás desconectado? Entonces, si preguntas si yo y mi computadora podemos tener una configuración offline, sí, por supuesto. Pero aún no está disponible para el público. Todavía es parte del hecho de que aún necesitamos entender exactamente qué vamos a ofrecer, cuáles serán las APIs, y ese tipo de cosas. Así que, ahora mismo no hay un modo offline real. Pero es lo que es. Estamos trabajando en ello. Genial.

Tomemos esta. ¿También tienes acceso al sistema de alguna manera? Por ejemplo, ¿puedes ejecutar el comando top? Bueno, puedes ejecutar top. Pero solo obtendrás la información. Para ser justos, aún no puedes ejecutar top. Idealmente, podrás ejecutar top. Pero solo obtendrás información sobre el sistema virtualizado. Por supuesto, nunca puedes acceder a la realidad del sistema subyacente. ¿Verdad? Esto es seguro. Esto no es un agujero de seguridad en tu sistema. Genial.

La pregunta es quién es y para qué se usa WebVM ahora mismo. En términos de clientes, aún no tenemos uno. Pero tenemos socios con los que estamos tratando de trabajar para intentar construir el primer producto. Y el principal interés que tenemos es del sector educativo y del sector de ID basados en la web. Estas son las personas que parecen ser las más interesantes ahora mismo. Pero mi objetivo personal es tener a algunas personas de juegos a bordo. Suena bien. Y tomemos esta. Y creo que esta será la última pregunta.

Lunch Break and Device Requirements

Short description:

Durante el descanso para el almuerzo, puedes usar cualquier navegador y dispositivo, como Chrome, Firefox o Safari. Gracias por sus preguntas, y siéntase libre de acercarse al escenario si tiene más. ¡Disfrute de su descanso de una hora para el almuerzo!

Y ahora tenemos un descanso para el almuerzo.

¿Qué tipo de navegadores y dispositivos se requieren? Cualquiera. Chrome, Firefox, Safari funcionarán. Eso es fácil.

Muchas gracias por sus preguntas. Dejaré algunas monedas en el escenario. Si tiene alguna pregunta, siéntase libre de venir y tomar. Y ahora tenemos un descanso de una hora para el almuerzo. Se necesitan algunas calorías. Gracias.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Utilizando Rust desde Vue con WebAssembly
Vue.js London Live 2021Vue.js London Live 2021
8 min
Utilizando Rust desde Vue con WebAssembly
Top Content
In this Talk, the speaker demonstrates how to use Rust with WebAssembly in a Vue.js project. They explain that WebAssembly is a binary format that allows for high-performance code and less memory usage in the browser. The speaker shows how to build a Rust example using the WasmPack tool and integrate it into a Vue template. They also demonstrate how to call Rust code from a Vue component and deploy the resulting package to npm for easy sharing and consumption.
Haciendo JavaScript en WebAssembly Rápido
JSNation Live 2021JSNation Live 2021
29 min
Haciendo JavaScript en WebAssembly Rápido
Top Content
WebAssembly enables optimizing JavaScript performance for different environments by deploying the JavaScript engine as a portable WebAssembly module. By making JavaScript on WebAssembly fast, instances can be created for each request, reducing latency and security risks. Initialization and runtime phases can be improved with tools like Wiser and snapshotting, resulting in faster startup times. Optimizing JavaScript performance in WebAssembly can be achieved through techniques like ahead-of-time compilation and inline caching. WebAssembly usage is growing outside the web, offering benefits like isolation and portability. Build sizes and snapshotting in WebAssembly depend on the application, and more information can be found on the Mozilla Hacks website and Bike Reliance site.
Construyendo Interfaces Controladas por el Cerebro en JavaScript
JSNation Live 2021JSNation Live 2021
27 min
Construyendo Interfaces Controladas por el Cerebro en JavaScript
Top Content
Learn how to build brain-controlled interfaces using JavaScript and brain sensors. Understand the functions of different parts of the brain and how they relate to sensor placement. Explore examples of calm and focus detection, as well as the Kinesis API for mental commands. Discover the applications of brain-controlled interfaces, such as scrolling web pages and password-less authentication. Understand the limits and opportunities of brain control and the potential for using brain sensors in medical applications.
TensorFlow.js 101: Aprendizaje automático en el navegador y más allá
ML conf EU 2020ML conf EU 2020
41 min
TensorFlow.js 101: Aprendizaje automático en el navegador y más allá
TensorFlow.js enables machine learning in the browser and beyond, with features like face mesh, body segmentation, and pose estimation. It offers JavaScript prototyping and transfer learning capabilities, as well as the ability to recognize custom objects using the Image Project feature. TensorFlow.js can be used with Cloud AutoML for training custom vision models and provides performance benefits in both JavaScript and Python development. It offers interactivity, reach, scale, and performance, and encourages community engagement and collaboration between the JavaScript and machine learning communities.
Unreal Engine en WebAssembly/WebGPU
JS GameDev Summit 2022JS GameDev Summit 2022
33 min
Unreal Engine en WebAssembly/WebGPU
Top Content
Alex Saint-Louis, co-founder of Wunder Interactive, shares the mission of bringing Unreal Engine to the browser, enabling cross-platform 3D applications and games. They are working on a WebGPU back end for Unreal Engine to push the limits of 3D on the web. Wunder Interactive has improved compression, built their own asset file system, and offers powerful tools for game developers. They are utilizing modern web technologies like WebAssembly, WebGL, and WebGPU, and plan to support other engines like Unity and Godot. The team aims to transform the industry by bringing console-quality games to the browser and providing an alternative distribution path. They are excited to bring Unreal Engine 5 to the web with WebGPU support and are working on WebXR support for cross-platform 3D experiences, including VR.
Ampliando los límites de la codificación de video en navegadores con WebCodecs
JSNation 2023JSNation 2023
25 min
Ampliando los límites de la codificación de video en navegadores con WebCodecs
Top Content
This Talk explores the challenges and solutions in video encoding with web codecs. It discusses drawing and recording video on the web, capturing and encoding video frames, and introduces the WebCodecs API. The Talk also covers configuring the video encoder, understanding codecs and containers, and the video encoding process with muxing using ffmpeg. The speaker shares their experience in building a video editing tool on the browser and showcases Slantit, a tool for making product videos.