HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

The Truth about Rust/WebAssembly Performance

Greg Johnston2 HN recommenders · recommended in 2 months, 2023-2026
YouTube
218K views · 3 years ago · talk · dated

Leptos creator Greg Johnston examines Rust/WebAssembly frontend frameworks against JavaScript frameworks using the JS framework benchmark. He argues that WASM is no longer too slow for DOM-heavy rendering.

Cited as evidence that DOM access is not the bottleneck for WebAssembly, and as an explanation of signals-based updates versus virtual DOM.

Web developmentC, C++, Rust, Go & systems languagesSoftware performance & optimization#webassembly#rust#leptos#dom#benchmarks#signals

8 comments from Hacker News

@tcfhgj2026 · in “Making WebAssembly a first-class language on the Web”

> no DOM access meant the only viable use cases were compute-heavy workloads like codecs and crypto, no, it didn't mean that, because the overhead is not a deal breaker: 1) you don't have to do the glue code (libs can do it for you) 2) there's overhead due to glue, but the overhead is so small that WASM web frameworks easily can compete with fast JS frameworks in DOM heavy scenarios. Source: Analysis of the creator of Leptos (a web framework based on WASM): ▶ this video

CitesView on HN
@tcfhgj2026 · in “Farewell Rust”

the JS layer is slow, indeed, but it shouldn't be that much slower that it meaningfully impacts frontend apps A demonstration of that by the creator of Leptos: ▶ this video

CitesView on HN
@jbjohns2024 · in “Platform Strategy and Its Discontents”

The founder of Leptos makes a pretty good argument [1] that the bottleneck for WASM isn't really the DOM and that they are already faster than some popular JS frameworks even with the current constraints. [1] ▶ this video

CitesView on HN
@nanaian2024 · in “Web browser as GUI, with your preferred language in the backend”

Wasm threads via SharedArrayBuffer have been a thing for like 5 years. In Rust you can use wasm-bindgen-rayon, for instance. DOM access is and has always been easily achieved through imports. It's performant, too: ▶ this video

CitesView on HN
@azemetre2023 · in “Snappy UIs with WebAssembly and Web Workers”

Have you seen the video posted in the parent, by the creator of leptos (a rust webassembly framework)? ▶ this video The benchmarks being displayed have leptos beating react in nearly every category.

CitesView on HN
@rapnie2023 · in “Snappy UIs with WebAssembly and Web Workers”

> if anyone tells you they need to use WebAssembly to make the UI snappy I'd advise you interrogate that assertion thoroughly. Get prepared to be blown away by Makepad [0]. I have no affiliation with them, but just watched their most recent conference presentation [1]. The slides were made with Makepad itself and included, embedded, a full-blown IDE, a synthesizer app, a Mandelbrot to zoom in endlessly, and more. All running at 120fps. The presentation is for the most part live-coding with this setup. What they want to do is bring coders and designers closer together, and while some code is in Rust they developed a DSL for the GUI parts that is close to how Figma works. These GUI's can run anywhere. And I couldn't help thinking "Why would people have complicated stacks to create Web 2.0 apps for the Google Web, when they have this?", in other words an opportunity to break out of the browser straitjacket. Btw. WebAssembly/WebGL isn't the only way in which Makepad is available. And while running well in the browser for a time, there were issues to be solved here (addressed in the presentation). And tbh this isn't a real answer to your assertion. Greg Johnston, creator of Leptos, has made a video with performance comparisons [2]. [0] link [1] link [2] ▶ this video

CitesView on HN
@theironhammer2023 · in “Ask HN: Real world Svelte speed difference compared to virtual DOM frameworks?”

▶ this video This video might be helpful. Leptos uses Signals, borrowing ideas from SolidJS to update the DOM. There's no VirtualDOM like React. Svelte also doesn't use a VDOM. When there's a state change React has to rerender the entire VDOM tree and the diff it with the real DOM, whereas using the Signals model those frameworks make the change directly in the real DOM. I'm not sure how Svelte manipulates the DOM exactly but I it's similar to how it's done with Frameworks that use Signals such as Leptos and SolidJS. I would say Developer velocity is key if you're a developer. Svelte is a big winner here as it's mental model is easier to understand than React's.

RecommendsView on HN
@pdpi2023 · in “Can Rust Beat JavaScript in 2023?”

Greg Johnston, author of the Leptos framework, did a pretty good video about this a few weeks ago[0]. The TLDR is (of course): it depends. WASM has no native access to the DOM, so all DOM manipulations from wasm-land have to go through JS bindings with all the (de)serialisation costs that go with crossing the language boundary. That eats up a lot of whatever performance gains you'd see from rust-on-wasm for pure compute. 0. ▶ this video

RecommendsView on HN
Servo Architecture: Safety and Performance45:05

Servo Architecture: Safety and Performance

linux conf au 2017 - Hobart, Australia
12K views • 9 years ago
A 10x faster TypeScript13:45

A 10x faster TypeScript

Microsoft Developer
608K views • 1 year ago
Rust at speed — building a fast concurrent database52:54

Rust at speed — building a fast concurrent database

Jon Gjengset
225K views • 7 years ago
Chrome vs Firefox vs Safari vs Servo WebRender0:14

Chrome vs Firefox vs Safari vs Servo WebRender

Jake Archibald
121K views • 10 years ago
Fastest browser engine by far at 500 FPS! Servo Webrender - CSS on the GPU part 2: Demo13:44

Fastest browser engine by far at 500 FPS! Servo Webrender - CSS on the GPU part 2: Demo

𝓖𝓷𝓸𝓶𝓮💫𝓢𝓪𝓷𝓮
13K views • 10 years ago
Progressive Performance (Chrome Dev Summit 2016)35:42

Progressive Performance (Chrome Dev Summit 2016)

Chrome for Developers
34K views • 10 years ago
Fastest browser engine by far at 500 FPS! Servo Webrender - CSS on the GPU part 1: Rust15:00

Fastest browser engine by far at 500 FPS! Servo Webrender - CSS on the GPU part 1: Rust

𝓖𝓷𝓸𝓶𝓮💫𝓢𝓪𝓷𝓮
19K views • 10 years ago
CheerpX: a WebAssembly-based x86 virtual machine in the browser, Yuri Iozzelli37:11

CheerpX: a WebAssembly-based x86 virtual machine in the browser, Yuri Iozzelli

WebAssembly NA
7K views • 6 years ago
High Performance Web Sites and YSlow1:00:34

High Performance Web Sites and YSlow

Google TechTalks
90K views • 18 years ago
Speed Up Your JavaScript56:23

Speed Up Your JavaScript

Google TechTalks
136K views • 17 years ago
CppCon 2014: Chandler Carruth "Efficiency with Algorithms, Performance with Data Structures"1:13:41

CppCon 2014: Chandler Carruth "Efficiency with Algorithms, Performance with Data Structures"

CppCon
235K views • 12 years ago
Lars Bergstrom - Beyond Safety and Speed: How Rust Fuels Team Productivity22:19

Lars Bergstrom - Beyond Safety and Speed: How Rust Fuels Team Productivity

Rust Nation UK
18K views • 2 years ago
RailsConf 2011: Aaron Patterson, "Double Dream Hands: So Intense!"47:34

RailsConf 2011: Aaron Patterson, "Double Dream Hands: So Intense!"

O'Reilly
26K views • 15 years ago
Servo: Building a Parallel Browser43:29

Servo: Building a Parallel Browser

Linux.conf.au 2015 -- Auckland, New Zealand
23K views • 11 years ago
Keynote: What is a Component (and Why)? - Luke Wagner, Distinguished Engineer, Fastly29:51

Keynote: What is a Component (and Why)? - Luke Wagner, Distinguished Engineer, Fastly

The Linux Foundation
7K views • 3 years ago
CppCon 2017: Chandler Carruth “Going Nowhere Faster”1:00:58

CppCon 2017: Chandler Carruth “Going Nowhere Faster”

CppCon
113K views • 9 years ago
code::dive conference 2014 - Scott Meyers: Cpu Caches and Why You Care1:16:58

code::dive conference 2014 - Scott Meyers: Cpu Caches and Why You Care

NOKIA Technology Center Wrocław
231K views • 11 years ago
Breaking the 1000ms Time to Glass Mobile Barrier45:49

Breaking the 1000ms Time to Glass Mobile Barrier

InfoQ
104K views • 13 years ago
RustConf 2016 - A Modern Editor Built in Rust by Raph Levien36:16

RustConf 2016 - A Modern Editor Built in Rust by Raph Levien

Confreaks
43K views • 10 years ago
Charlie Marsh: uv: An Extremely Fast Python Package Manager40:34

Charlie Marsh: uv: An Extremely Fast Python Package Manager

Jane Street
107K views • 2 years ago