So we started shipping WebRender in Firefox a few weeks ago. Completely new rendering engine written in rust, big departure from how we approached rendering before. We are gradually enabling it for different hardware/OS configurations and a couple of million users have it now.

What's kind of blowing my mind, having worked on 3 large-ish rewrites, is that since WebRender shipped, telemetry has reported less crashes per user with WebRender than without.

This is *not* how big rewrites usually go.

If anything, this is a testimony of how rust can help with writing reliable software. There is no way things would have been that smooth from the beginning had we written it in C++.

Show thread

@nical i don't understand why IonMonkey wasn't written in Rust, too

@hirojin IonMonkey was created around June 2011, and at this date Rust was probably still a personal project or too much in its infancy.

Also note that most of what a JIT does has to be unsafe, if you want to have the best performance at all. All JIT code would not inherit any of the safety features of Rust. I take it that it would be quite useful for the interpreter, *maybe* the GC too.


@hirojin @bnjbvr given infinite engineering resources, sure, but in practice you need more than just changing languages to motivate a rewrite of this scale. WebRender took more than two years to get in a shippable state, it has been a costly and risky project, but the new rendering architecture is worth it.

@nical rust seems to help in stability, indeed...

on related : any info on when we could expect WebVR to work on headsets on linux ? (OpenVR/OpenXR ... ? ) (as it seems related)

@Olm_e I have no idea about the status of WebVR related stuff.

@nical ho, ok... thanks, sorry for poking ... was probably misled by one of the last comments there...
we are waiting for so long for this to work on linux while seeing other fancy toy worked on, that it's a bit disapointing ...
(hope things move on at some point)

@Olm_e no worries it's just happening in another team and far from my time zone so I haven't kept track of where they are at

@nical One of my favorite overlooked features of Rust is how you typically have to say the magic "please crash" words to make it crash. I mean in most situations it's pretty much explicitly laid out whether or not a function will panic. Rust actually helped me understand an important concept of computing: software always crashes because we programmed it to crash and not keep on going when something unexpected happens.

@nical plot twist: crash-reporting telemetry is what's crashing. 🙃

On the for real though, kudos, y'all!

@nical many people, in particular Linux users, probably disable crash reports or have them disabled by distro.

@Wolf480pl I know :) the telemetry in question was focused on windows Nvidia users who got WebRender on Firefox stable without opting in. We select a configuration like that one and decide what percentage get WebRender enabled so that we can roll out progressively and so we get apple to apple comparisons. With enough users on that group (two millions here) we get enough statistical evidence regardless of whether some of them happen to disable telemetry.

@nical @akien Awesome. Great work, Nicolas. Now if only Firefox could move *away* from anything related Chrome.

Sign in to participate in the conversation
Gamedev Mastodon

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!