Remix.run Logo
9fwfj9r 2 days ago

It's a great move. The early development of Rust aimed to support Servo. However, it's still disappointing that the script engine uses SpiderMonkey, which is purely C++.

drzaiusx11 2 days ago | parent | next [-]

It's best not to try and eat the elephant in one bite, which is perhaps where this project went wrong initially. Maybe this is a symptom of learning from past mistakes rather than a flaw.

saghm 2 days ago | parent [-]

My understanding is that the original intent of Servo was to be a way to develop features and port them over to Firefox itself (which did happen with at least a few features), and the relatively slower pace of developer is more due to Mozilla laying off everyone who was working on it. (Yes, presumably many of the same people are involved, but I would expect that being able to work on something full time without needing another source of income will end up making progress faster than needing to find time outside of work and balance between other things in life, ideally in a way that avoids burnout).

drzaiusx11 2 days ago | parent [-]

My understanding was that from day one the desire was to make a complete "web rendering & layout engine" and only pivoted to shipping smaller sub-components like Stylo (stylesheets) when it appeared to be "taking too long." I followed the project from the early days through the layoffs, but I may be misremembering things.

saghm 2 days ago | parent [-]

Interesting, it's certainly possible I was never aware of the super early days.

swiftcoder 2 days ago | parent | prev | next [-]

There are what, 5+ rust javascript engines that claim to be production-ready? Bolting one of those on in place of spider monkey seems like a reasonable future direction

mort96 2 days ago | parent | next [-]

What do you mean by "production ready" here exactly? In a web browser context, the JS engine is expected to have a high performance optimising JIT compiler. Do the existing Rust JS engines have that?

8NNTt8z3QvLT8tp 2 days ago | parent | next [-]

There's something to be said for the security benefits of not having a JIT though. Especially if you've used Rust for the engine you should have pretty solid security.

px43 2 days ago | parent [-]

Yeah, having a code section that is writable and executable is a huge no-no from a security standpoint. JIT is a fundamentally insecure concept, just in general. By definition it's trading security for speed.

epcoa 2 days ago | parent [-]

lol

mort96 a day ago | parent [-]

I mean they're right.

swiftcoder 2 days ago | parent | prev [-]

I honestly don't know, but they do say "production ready" on their marketing pages, so...

For an example of what I mean, see JetCrab: https://jetcrab.com

CryZe 2 days ago | parent | next [-]

This doesn't implement a JS engine, it's just a wrapper around boa.

mort96 2 days ago | parent | prev [-]

That page says:

> Complete JavaScript execution pipeline from source code parsing to bytecode execution.

So it's a bytecode interpreter, not a JIT.

It might still be production ready for a bunch of use cases. I may use it as a scripting layer for some pluggable piece of software or a game. I wouldn't consider it appropriate for a "production ready web browser" which intends to compete with Firefox and Chrome.

EDIT: Also for some reason all its components are called v8_something? That's pretty off putting, you can't just take another project's name like that.. and from the author's Reddit comments it seems to be mostly AI slop anyway. I'm guessing Claude wrote the "production ready" part on the website, I wouldn't trust it.

siwatanejo 14 hours ago | parent | prev | next [-]

wait, Servo is a js engine? I thought it was only about rendering websites

nicoburns 2 days ago | parent | prev | next [-]

They're all more than 10x slower than SpiderMonkey.

depr 2 days ago | parent | prev [-]

They may be production-ready in some sense but they're not ready to be put in Firefox, and/or they are v8 bindings.

tialaramex 2 days ago | parent | prev [-]

I mean SpiderMonkey works, and presumably is fairly self-contained, so I can see why replacing that isn't attractive unless you believe you can make it significantly better in some way.