5 ms·
One component choosing to use a mature implementation in another browser instead of a rewrite from scratch in rust means very little. We can look at actually s
by gpm 6y ago
One component choosing to use a mature implementation in another browser instead of a rewrite from scratch in rust means very little.
We can look at actually statistics instead of just one random anecdote. For instance, according to [1], there are 2 million lines of rust code in firefox, 6 million lines of C++, and 3 million lines of C. Very roughly speaking that's 20% of the lines of low level language being in Rust.
Firefox only started requiring rust to be built about 3 years ago, this is a pretty breakneck pace of replacing C/C++ with rust.
[1] https://www.openhub.net/p/firefox/analyses/latest/languages_summary https://www.openhub.net/p/firefox/analyses/latest/languages_...
- asjw 6y agoFirefox JS engine is in C++ even though rust has been available for years now, they've said more than once that they have no plans on porting Spidermonkey to Rust. The most recent information I've found is from a Spidermonkey Dev here on HN who said they might even port the Regex engine to Rust That didn't happen either https://news.ycombinator.com/item?id=18988024 https://news.ycombinator.com/item?id=18988024 Something tells me that there's more than meets the eye.
- gpm 6y agoIt seems unlikely that there is any great conspiracy at play here to me... they found a good solution to a problem, they implemented it. Spidermonkey is a highly optimized carefully examined code base, it's not easy to replace wholesale or particularly low hanging fruit to be replaced with rust. Mozilla is working on replacing the wasm compiler, and eventually the compiler for "ion MIR" (an intermediate langauge that js is compiled to), with cranelift, a rust implementation of a compiler backend. See [1] for pretty pictures of this. It's been possible to use this backend to some extent since 2018 [2]. The best place I was able to find in the last 5 minutes to describe the current state of the integration is the doc comment at the top of this file [3]. In other words it looks like spidermonkey is not not being ported, it's just not being entirely ported yet. [1] https://github.com/bytecodealliance/wasmtime/blob/master/cranelift/spidermonkey.md#phase-1-webassembly https://github.com/bytecodealliance/wasmtime/blob/master/cra... [2] https://old.reddit.com/r/rust/comments/9mvnrk/in_firefox_nightly_an_option_has_arrived_to_use/ https://old.reddit.com/r/rust/comments/9mvnrk/in_firefox_nig... [3] https://github.com/mozilla/gecko-dev/blob/master/js/src/wasm/cranelift/src/lib.rs https://github.com/mozilla/gecko-dev/blob/master/js/src/wasm... Edit: Another component of spidermonkey that is being rewritten in rust is the JS parser, that project is called smooshmonkey. You can read about it in the spidermonkey news letters [4] [5] [6], and there's an nice comment describing it at the top of this reddit thread [7] [4] https://mozilla-spidermonkey.github.io/blog/2020/01/10/newsletter-2.html https://mozilla-spidermonkey.github.io/blog/2020/01/10/newsl... [5] https://mozilla-spidermonkey.github.io/blog/2020/03/12/newsletter-3.html https://mozilla-spidermonkey.github.io/blog/2020/03/12/newsl... [6] https://mozilla-spidermonkey.github.io/blog/2020/05/11/newsletter-4.html https://mozilla-spidermonkey.github.io/blog/2020/05/11/newsl... [7] https://old.reddit.com/r/rust/comments/h0ddpi/smooshmonkey_new_rust_js_parser_for_firefox/ https://old.reddit.com/r/rust/comments/h0ddpi/smooshmonkey_n...
- simion314 6y agoI personally would also check if the libraries Firefox uses are Rust, I mean the browsers this days are huge, you have image,audio,video,WebGl,pdf and a ton more features so you need all the dependencies to also be memory safe especially the ones that handle untrusted input.