Makepad - Aprovechando Rust + Wasm + WebGL para construir aplicaciones multiplataforma increíbles

Rate this content
Bookmark

En esta charla mostraré Makepad, una nueva pila de UI que utiliza Rust, Wasm y WebGL. A diferencia de otras pilas de UI, que utilizan un enfoque híbrido, todo el renderizado en Makepad se realiza en la GPU. Esto permite aplicaciones altamente pulidas y visualmente impresionantes que hasta ahora no han sido posibles en la web. Debido a que Makepad utiliza Rust, las aplicaciones se ejecutan tanto de forma nativa como en la Web a través de wasm. Las aplicaciones de Makepad pueden ser muy pequeñas, del orden de solo unos pocos cientos de kilobytes para wasm, hasta unos pocos megabytes con nativo. Nuestro objetivo es desarrollar Makepad en la pila de UI de elección para aplicaciones multiplataforma ligeras y de alto rendimiento. Tenemos la intención de enviar con nuestra propia aplicación de diseño e IDE.

FAQ

MakePad es una plataforma que permite construir interfaces de usuario utilizando WebAssembly y Rust, ofreciendo una pila de renderizado completamente revisada para funcionar eficientemente tanto en plataformas web como nativas.

MakePad fue creado como respuesta a las limitaciones de JavaScript para manejar aplicaciones complejas y de alto rendimiento como IDEs y herramientas de diseño, donde JavaScript mostraba deficiencias en manejo de CPU y rendimiento en tiempo real.

Rust proporciona un rendimiento superior eliminando las interrupciones del recolector de basura y permitiendo un control más fino sobre la gestión de memoria, lo cual es crucial para aplicaciones de alto rendimiento y complejas.

Sí, MakePad planea tener una liberación de código abierto en crates, que es el NPM para Rust, permitiendo a los usuarios instalar y utilizar la plataforma fácilmente.

MakePad puede ejecutarse en plataformas web y como aplicación de escritorio nativa en sistemas operativos como Mac, Windows y Linux, aprovechando tecnologías como Metal, DirectX y OpenGL respectivamente.

Con MakePad se pueden desarrollar interfaces de usuario avanzadas, aplicaciones de diseño visual, y también es compatible con tecnologías emergentes como AR y VR.

Los planes futuros incluyen el lanzamiento de una herramienta de diseño para facilitar la creación visual de UI y expandir las capacidades de MakePad para incluir soporte móvil y otras mejoras en su funcionalidad y accesibilidad.

Rik Arends
Rik Arends
22 min
16 Jun, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Bienvenido a MakePad, una nueva forma de construir UI para web y nativo usando WebAssembly y Rust. JavaScript no es adecuado para aplicaciones complejas como IDEs y herramientas de diseño. Rust, un nuevo lenguaje de programación, se utilizó para reimaginar MakePad, dando como resultado una plataforma rápida y eficiente. MakePad ofrece edición en vivo, alto rendimiento de CPU y la capacidad de cargar componentes de instrumentos nativos. El futuro de MakePad incluye una versión de código abierto, una herramienta de diseño y soporte para importar modelos 3D.

1. Introducción a MakePad

Short description:

Bienvenidos a mi charla sobre MakePad, una nueva forma de construir UI para web y nativo utilizando WebAssembly y Rust. Fundé cloud9 IDE, una empresa para construir un IDE web. Pasé seis años rehaciendo toda la pila de renderizado del navegador en WebGL y JavaScript. El resultado es Makepad JavaScript, una revisión completa de la pila de renderizado en WebGL, que permite la codificación en vivo y aplicaciones interactivas de alto rendimiento.

Muy bien, bienvenidos a mi charla. Voy a hablar sobre MakePad. Es una nueva forma de construir UI para web y nativo utilizando WebAssembly y Rust.

Entonces, quiero comenzar este viaje hace mucho, mucho tiempo, quizás antes de que algunos de ustedes todavía estuvieran en la escuela primaria incluso. Fundé cloud9 IDE, es una empresa para construir un IDE web. Teníamos un editor de código basado en HTML llamado Ace, era uno de los dos en ese momento. Y, entonces estaba en medio del mundo HTML construyendo lo que se consideraba una aplicación compleja, un IDE, ¿verdad? Todos estaban haciendo páginas web, algunas aplicaciones web, pero el IDE con el editor de código se consideraba una aplicación web compleja.

Entonces, en ese momento estaba trabajando en el editor y recuerdo que estábamos trabajando en el plegado de código y quería que el plegado de código se animara. Es algo muy simple, ya sabes, las computadoras son rápidas, pueden animarlo, pero no importa lo que intenté, no pude hacerlo con HTML y CSS. Simplemente, hiciéramos lo que hiciéramos, era entrecortado y era horrible. Entonces en ese momento WebGL acababa de ser lanzado y comencé a investigar el uso de WebGL para renderizar UI, renderizar editores. Y me di cuenta de que tenía por delante una tarea enorme para reinventar la UI en WebGL. Entonces, dejé Cloud9 y comencé el viaje de rehacer toda la pila de renderizado del navegador en WebGL y JavaScript.

Y pasé seis años en eso. Probablemente construí tantas, seis o siete iteraciones completamente nuevas intentando hacer esto. Y quiero mostrarles el resultado de esos seis años aquí. Y eso es Makepad JavaScript. Esto es Makepad JavaScript. Es una revisión completa de la pila de renderizado en WebGL. Y puedes hacer, veamos, puedes codificar en vivo. Todo esto es codificable en vivo. Así que veamos si puedo cambiar el color del texto aquí. También puedo, veamos, tengo un poco de retroalimentación en el audio. Sí. Entonces fue realmente rápido. Podrías tener, esto son 50,000 círculos interactivos en un navegador. Estaba utilizando multi-threading. Entonces esta aplicación que se ejecuta aquí se estaba ejecutando en un hilo de trabajador y envió la lista de visualización al hilo principal del navegador. Por lo tanto, podrías tener cualquier número de aplicaciones ejecutándose al mismo tiempo, siempre y cuando tuvieras trabajadores. Y podrías hacer cosas interactivas muy, muy geniales.

2. Desafíos con la Estabilidad y el Poder de la CPU

Short description:

Todo esto funciona en un iPhone 6, y en algún momento, incluso logré que se ejecutara en sí mismo. Sin embargo, había un gran problema. Cuando trabajaba en la aplicación durante más de 30 minutos, Chrome se bloqueaba. Era inestable y no podía usar mis propias herramientas de desarrollo. El verdadero problema es que JavaScript no tiene suficiente potencia de CPU para todas las tareas. Este es un callejón sin salida.

Todo esto también funciona en un iPhone 6, creo, todavía, si lo cargas en Safari. Y en algún momento, incluso logré que se ejecutara en sí mismo. Y esto es genial. Todo esto está bien.

Pero tenía un gran problema. Tenía un gran problema. En ese momento, en Chrome, cuando trabajaba en la aplicación durante más de 30 minutos, Chrome simplemente se bloqueaba. Simplemente se bloqueaba, y no sabía por qué. Y habiendo lidiado con errores del navegador antes, a veces tardan años. A veces nunca se resuelven. Usualmente cuando estás como, sí, hago LiveCode en Chrome durante media hora, y recargo en caliente un trabajador, eso es un error. Dicen, OK, probablemente eres la única persona en el mundo que hace eso. Así que buena suerte con eso. Así que eso fue muy deprimente. Y aguanta.

Así que no era estable. Eso realmente era un problema porque quería usarlo yo mismo. Si no puedo usar mis propias herramientas de desarrollo para mis propias cosas, entonces las herramientas de desarrollo son malas. Sin embargo, había un problema real, porque tal vez podría haber solucionado esto. Podría haberlo solucionado yo mismo o haber presionado para siempre para que alguien más lo hiciera. Pero el verdadero problema es que no te queda potencia de CPU si haces todo esto en JavaScript. El hilo del trabajador se limita al 100% si usas el editor, el resaltado de sintaxis. Todo eso es simplemente demasiado pesado para hacerlo en tiempo real con JavaScript. Y eso significaba que estaba mirando hacia adelante. Veo AR, VR, interfaces de usuario. Veo pantallas de alta frecuencia de cuadros. Los últimos max son 120 hertz. Así que ya no tienes esos 16 milisegundos. Estás bajando a 8 o menos. Así que es un callejón sin salida.

QnA

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
Rust es un nuevo lenguaje para escribir código de alto rendimiento, que puede ser compilado a WebAssembly, y ejecutado dentro del navegador. En esta charla se te guiará sobre cómo puedes integrar Rust, dentro de una aplicación Vue, de una manera que es sencilla y fácil. Con ejemplos de cómo interactuar con Rust desde JavaScript, y algunas de las trampas a tener en cuenta.
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
La neurotecnología es el uso de herramientas tecnológicas para entender más sobre el cerebro y permitir una conexión directa con el sistema nervioso. La investigación en este campo no es nueva, sin embargo, su accesibilidad para los desarrolladores de JavaScript sí lo es.En los últimos años, los sensores cerebrales se han puesto a disposición del público, con herramientas que hacen posible que los desarrolladores web experimenten construyendo interfaces controladas por el cerebro.A medida que esta tecnología evoluciona y desbloquea nuevas oportunidades, vamos a analizar uno de los últimos dispositivos disponibles, cómo funciona, las posibilidades que abre y cómo empezar a construir tu primera aplicación controlada por la mente usando JavaScript.
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á
Descubre cómo aprovechar el aprendizaje automático en JavaScript utilizando TensorFlow.js en el navegador y más allá en esta charla rápida. Inspírate a través de un montón de prototipos creativos que empujan los límites de lo que es posible en el navegador web moderno (las cosas han avanzado mucho) y luego da tus primeros pasos con el aprendizaje automático en minutos. Al final de la charla, todos entenderán cómo reconocer un objeto de su elección que luego se puede utilizar de cualquier manera creativa que puedas imaginar. Se asume familiaridad con JavaScript, pero no se requiere experiencia en aprendizaje automático. ¡Ven y da tus primeros pasos con TensorFlow.js!
Creando lo Imposible: Virtualización X86 en el Navegador con WebAssembly
JSNation 2022JSNation 2022
21 min
Creando lo Imposible: Virtualización X86 en el Navegador con WebAssembly
WebAssembly es una característica del navegador diseñada para brindar un rendimiento predecible y alto a las aplicaciones web, pero sus capacidades a menudo son mal entendidas.
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 V8/Chrome.
WebVM es nuestra solución para ejecutar eficientemente binarios x86 sin modificaciones en el navegador y muestra lo que se puede hacer con WebAssembly hoy en día. Se discutirá una descripción general 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.
La improbable amistad entre React y Rust
React Advanced Conference 2023React Advanced Conference 2023
26 min
La improbable amistad entre React y Rust
Abrazando WebGPU y WebXR con Three.js
JSNation 2024JSNation 2024
27 min
Abrazando WebGPU y WebXR con Three.js
En el panorama en constante evolución de las tecnologías web, la introducción de WebGPU y WebXR representa un gran avance, prometiendo redefinir los límites de lo que es posible en las experiencias web en 3D. Esta charla se sumerge en el corazón de estas nuevas tecnologías, guiada por la biblioteca Three.js.
Comenzamos explorando WebGPU, una API de gráficos de próxima generación que ofrece un rendimiento y eficiencia mejorados para renderizar gráficos 3D directamente en el navegador. Demostraremos cómo Three.js se está adaptando para aprovechar todo su potencial, desbloqueando oportunidades sin precedentes para que los desarrolladores creen experiencias interactivas visualmente impresionantes.
En la transición al ámbito inmersivo, nos adentramos en WebXR, una tecnología que abre la puerta a experiencias de realidad virtual y realidad aumentada directamente desde la web. Mostraremos cómo Three.js permite a los creadores construir experiencias inmersivas.