Comment by nindalf
1 day ago
The CEO said
> It's 3M+ lines of code across thousands of files. The rendering engine is from-scratch in Rust with HTML parsing, CSS cascade, layout, text shaping, paint, and a custom JS VM.
"From scratch" sounds very impressive. "custom JS VM" is as well. So let's take a look at the dependencies [1], where we find
- html5ever
- cssparser
- rquickjs
That's just servo [2], a Rust based browser initially built by Mozilla (and now maintained by Igalia [3]) but with extra steps. So this supposed "from scratch" browser is just calling out to code written by humans. And after all that it doesn't even compile! It's just plain slop.
[1] - https://github.com/wilsonzlin/fastrender/blob/main/Cargo.tom...
Why would they think it's a great idea to claim they implemented CSS and JS from scratch when the first thing any programmer would do is to look at the code and immediately find out that they're just using libraries for all of that?! They can't be as dumb as thinking no one would've noticed?!
I guess the answer is that most people will see the claim, read a couple of comments about "how AI can now write browsers, and probably anything else" from people who are happy to take anything at face value if it supports their view (or business) and move on without seeing any of the later comotion. This happens all the time with the news. No one bothers to check later if claims were true, they may live their whole lives believing things that later got disproved.
> They can't be as dumb as thinking no one would've noticed?!
With over 20 years of experience as an adult, and more years of noticing dumb mistakes of adults when I was a teen, I can absolutely assure you that even before LLMs were blowing smoke up their user's backsides and flattering their user's intelligence, plenty of people are dumb enough to make mistakes like this without noticing anything was wrong.
For example, I'm currently dealing with customer support people that can't seem to handle two simultaneous requests or read the documents they send me, even after being ordered to pay compensation by an Ombudsman. This kind of person can, of course, already be replaced by an LLM.
I mean... Cursor is the CEO's first non-internship job. And it was a VSCode Extension that caught fire atop the largest technological groundswell in a few decades.
The default assumption should be that this is a moderately bright, very inexperienced person who has been put way out over his skis.
That tracks with what I'm seeing.
Unfortunately for them, I've seen things go very very wrong in this situation. It's very easy to mistake luck-based financial success for skill-based, especially when it happens fresh out of university.
> Why would they think it's a great idea to claim they implemented CSS and JS from scratch when the first thing any programmer would do is to look at the code and immediately find out that they're just using libraries for all of that?!
Programmers were not the target audience for this announcement. I don’t 100% know who was, but you can kind of guess that it was a mix of: VC types for funding, other CEOs for clout, AI influencers to hype Cursor.
Over-hyping a broken demo for funding is a tale as old as time.
That there’s a bit of a fuck-you to us pleb programmers is probably a bonus.
I don't think he intentionally lied. He just didn't know how to check that and AI wrote
I'm actually impressed by their ignorance. I could never sleep at night knowing my product is built on such brazen lies.
Bullshitting and fleecing investors is a skill that needs to be nurtured and perfected over the years.
I wonder how long this can go on.
Who is the dumb money here? Are VCs fleecing "stupid" pension funds until they go under?
Or is it symptom of a larger grifting economy in the US where even the president sells vaporware, and people are just emulating him trying to get a piece of the cake?
> They can't be as dumb as thinking no one would've noticed?!
Maybe they're just hoping that there's an investor out there who is exactly that dumb.
Yeah, it's
- Servo's HTML parser
- Servo's CSS parser
- QuickJS for JS
- selectors for CSS selector matching
- resvg for SVG rendering
- egui, wgpu, and tiny-skia for rendering
- tungstenite for WebSocket support
And all of that has 3M of lines!
I'm reminded of the viral tweet along the lines of "Claude just one-shotted a 10k LOC web app from scratch, 10+ independent modules and full test coverage. None of it works, but it was beautiful nonetheless."
Thanks for the feedback. I've addressed similar feedback at [0] and provided some more context at [1].
I do want to briefly note that the JS VM is custom and not QuickJS. It also implemented subsystems like the DOM, CSS cascade, inline/block/table layouts, paint systems, text pipeline, and chrome, and I'd push back against the assertion that it merely calls out to external code. I addressed these points in more detail at [0].
[0] https://news.ycombinator.com/item?id=46650998 [1] https://news.ycombinator.com/item?id=46655608
> I do want to briefly note that the JS VM is custom and not QuickJS
It's hard to verify because your project didn't actually compile. But now that you've fixed the compilation manually, can you demonstrate the javascript actually executing? Some of the people who got the slop compiling claimed credibly that it isn't executing any JavaScript.
You merely have to compile your code, run the binary and open this page - http://acid3.acidtests.org. Feel free to post a video of yourself doing this. Try to avoid the embellishment that has characterised this effort so far.
This is from the "official" build - https://imgur.com/fqGLjSA
The "in progress" build has a slightly different rendering but the same result
1 reply →
Also selectors and taffy.
It's also using weirdly old versions of some dependencies (e.g. wgpu 0.17 from June 2023 when the latest is 28 released in Decemeber 2025)
That is because I've noticed the AI just edits the version management files (package.json, cargo.toml, etc) directly instead of using the build tool (npm add, cargo add), so it always hallucinates a random old version that's found in its training set. I explicitly have to tell the AI to use the build tool whenever I use AI.
I was LITERALLY thinking the other day of a niche tool for engineers to help them discover and fix this in the future because at the rate I have seen models version lock dependencies I thought this is going to be a big problem in the future.
6 replies →
It’s interesting that they don’t even know this
1 reply →
Honestly as soon as I saw browser in rust I assumed it had just reproduced the servo source code in part, or utilised its libraries.
I thought they'd plagiarise, not import. Importing servo's code would make it obvious because it's so easy to look at their dependencies file. And yet ... they did. I really think they thought no one would check?
> And yet ... they did. I really think they thought no one would check?
I doubt even they checked, given they say they just let the agents run autonomously.
1 reply →
You know, a good test would be to tell it to write a browser using a custom programming language, or at least some language for which there are no web browsers written.
Write a browser without any access to the internet, is what I'd attempted if I was running this experiment. Just seed it with a bunch of local HTML, CSS and JS files from the various testing suites that exists.
3 replies →
Sounds like it's finally the time to put my matlab license up for good use.
Good idea, I propose Brainfuck
Fortran 90 should fit the bill nicely.
Is it using Servo's layout code or did Cursor write its own layout? That's one of the hardest parts.
It's using layout code from my library (Taffy) for Flexbox and CSS Grid. Servo uses Taffy for CSS Grid, and another open source engine that I work on (Blitz) uses it for Flexbox, CSS Grid, Block and float layout.
The older block/inline layout modes seem to be custom code that looks to me similar but not exactly the same as Servo code. But I haven't compared this closely.
I would note that the AI does not seem to have matched either Servo or Blitz in terms of layout: both can layout Google.com better than the posted screenshot.
It seemingly did but after I saw it define a VerticalAlign twice in different files[1][2][3] I concluded that it's probably not coherent enough to waste time on checking the correctness.
Would be interesting if someone who has managed to run it tries it on some actually complicated text layout edge cases (like RTL breaking that splits a ligature necessitating re-shaping, also add some right-padding in there to spice things up).
[1] https://github.com/wilsonzlin/fastrender/blob/main/src/layou...
[2] https://github.com/wilsonzlin/fastrender/blob/main/src/layou...
[3] Neither being the right place for defining a struct that should go into computed style imo.
Cursor didn't write anything, they used ChatGPT 5.2.
> The JS engine used a custom JS VM being developed in vendor/ecma-rs as part of the browser, which is a copy of my personal JS parser project vendored to make it easier to commit to.
https://news.ycombinator.com/item?id=46650998
It looks like there are two JS backends: quickjs and vm-js (vendor/ecma-rs/vm-js), based on a brief skim of the code. There is some logic to select between the two. I have no idea if either or both of them work.
> is just calling out to code written by humans
We at least it's not outright ripping them off like it usually does.
Very sad to see Paul Graham boosting this slop on X.
To be fair, even if "from scratch" means "download and build Chromium", that's still nontrivial to accomplish. And with how complicated a modern browser is, you can get into Ship of Theseus philosophy pretty fast.
I wouldn't particularly care what code the agents copied, the bigger indictment is the code doesn't work.
So really, they failed to meet the bar of "download and build Chromium" and there's no point to talk about the code at all.
The whole point of Servo is its not impossible to use like Chromium.