Fabrice Bellard Releases MicroQuickJS

344 points | by Aissen 2 hours ago

92 comments

  • ddtaylor an hour ago

    Fabrice Bellard is widely considered one of the most productive and versatile programmers alive:

    - FFmpeg: https://bellard.org - QEMU: https://bellard.org/qemu/ - JSLinux: https://bellard.org/jslinux/ - TCC: https://bellard.org/tcc/ - QuickJS: https://bellard.org/quickjs/

    Legendary.

      groundzeros2015 29 minutes ago

      For all the praise he gets here, few seem interested in his methods: writing complete programs, based on robust computer science, with minimal dependencies and tooling.

        drschwabe 5 minutes ago

        When I first read the source for his original QuickJS implementation I was amazed to discover he created the entirety of JavaScript in a single xxx thousand line C file (more or less).

        That was a sort of defining moment in my personal coding; a lot of my websites and apps are now single file source wherever possible/practical.

      simonw 44 minutes ago

      He's also built a closed-source LLM inference engine, which he's been maintaining since the GPT-2 days: https://bellard.org/ts_server/ and https://textsynth.com/

        ronsor 33 minutes ago

        I used to play around with Textsynth, but not being OSS killed the appeal for me once llama.cpp came around.

      justmarc an hour ago

      Don't forget his LZEXE from the good old DOS days which was an excellent piece of work at the time.

        sedatk 15 minutes ago

        Self-decompressing executables felt like magic to me at the time. Fantastic work, overall.

      vatsachak an hour ago

      Don't forget his LLM based text compression software that won awards.

      Guy is a genius. I hope he tries Rust someday

      MontyCarloHall 10 minutes ago

      Whenever someone says there's no such thing as a 10x programmer, I point them to Fabrice and they usually change their mind.

      c0brac0bra an hour ago

      The first two links are broken.

        ddtaylor 41 minutes ago

        The ffmpeg link was changed apparently, but the QEmu link still works he just redirects to the QEmu homepage.

  • pizlonator an hour ago

    This engine restricts JS in all of the ways I wished I could restrict the language back when I was working on JSC.

    You can’t restrict JS that way on the web because of compatibility. But I totally buy that restricting it this way for embedded systems will result in something that sparks joy

      groundzeros2015 an hour ago

      He already has a JS engine which doesn’t make these restrictions

  • alcover 2 hours ago

    I wish for this new year we reboot the Web with a super light standard and accompanying ecosystem with

        - A small and efficient JS subset, HTML, CSS
        - A family of very simple browsers that do just that
        - A new Web that adheres to the above
    
    That would make my year.
      cosmic_cheese 2 minutes ago

      Lots of comments talking about how existing browsers can already do this, but the big benefit that current browsers can't give you is the sheer level of speed and efficiency that a highly restricted "lite web" browser could achieve, especially if the restrictions are made with efficiency in mind.

      The embedded use case is obvious, but it'd also be excellent for things like documentation — with such a browser you could probably have a dozen+ doc pages open with resource usage below that of a single regular browser tab. Perfect for things that you have sitting open for long periods of time.

      keepamovin 2 minutes ago

      [delayed]

      qweqwe14 2 hours ago

      This would never happen because there's zero incentive to do this.

      Browsers are complex because they solve a complex problem: running arbitrary applications in a secure manner across a wide range of platforms. So any "simple" browser you can come up with just won't work in the real world (yes, that means being compatible with websites that normal people use).

        notKilgoreTrout an hour ago

        I have to disagree, AMP showed that even Google had an internal conflict with the results of WHATWG.. It's naturally quite hard to reach agreements on a subset when many parties will prefer to go backwards to everything but there situations like the first iPhone, ebooks, TV browsing, etc, where normal people buy simpler things and groups that use the simpler subset achieve more in total than those stuck in the complex only format.

        (There are even a lot of developers who would inherently drop any feature usage as soon as you can get 10% of users to bring down their stats on caniuse.com to bellow ~90%.)

        alcover an hour ago

        > that means being compatible with websites that normal people use

        No, new adhering websites would emerge and word of mouth would do the rest : normal people would see this fast nerd-web and want rid of their bloated day-to-day monster of a web life.

        One can still hope..

          dmd an hour ago

          Just like all those normal people want rid of their bloated day-to-day monster of a web and therefore go and do something like, say, install an ad blocker?

          Oh right. 99% of people don't do even that, much less switch their life over to entirely new websites.

            lioeters an hour ago

            > 99% of people

            In 2025, depending on the study, it is said that 31.5~42.7% of internet users now block ads. Nearly one-third of Americans (32.2%) use ad blockers, with desktop leading at 37%.

              dmd an hour ago

              Wow. That's way higher than I thought. Huh!

                lioeters an hour ago

                It actually gives me hope that we may find a way out of the enshittification of the web.

            foobarian 11 minutes ago

            I don't care to run an ad blocker because sites are still bloated and slow.

        riedel an hour ago

        I think both wearables and AI assistant could be an incentive on one hand, also towards a more HATEOAS web. However, I guess we haven't really figured out how to replace ad revenue as the primary incentive to make things as complex as possible.

        groundzeros2015 an hour ago

        Zero incentive seems a little strong,

      born-jre 25 minutes ago

      There could be a way: This HTML-lite spec would be subset of current standard so that if you open this HTML lite page in normal browser it would still work. but HTML-lite browser would only open HTML-lite sites, apart from tech itch it could be used in someplace where not full browser is needed, especially if you are control content generation. - TV screens UI - some game engines embed chrome embed thing ( steam store page kind) - some electron apps / lighter cross platform engine - less sucky QML - i think weechat or sth has own xml bashed app froamework thing (so could be useful to people wanting to build everything app app platform - much richer markdown format ?

      dcminter an hour ago

      While we're wishing, can we split CSS into two parts - styling and layout? Also, I'd like to fix the spelling on the "referer" header...

      augustk an hour ago

      And also bring back progressive enhancement.

      https://en.wikipedia.org/wiki/Progressive_enhancement

      hinkley 41 minutes ago

      Years ago I wrote a tiny xhtml-basic browser for a job. It was great. Some of my best work. But then the iPhone came out and xhtml-basic died practically overnight.

      afavour an hour ago

      So you want 2026 to be the year of Google AMP?

      dtj1123 an hour ago
      mromanuk an hour ago

      Would be cool to create a MicroBrowser, just to browser stuff that's compatible.

        lioeters an hour ago

        And Microsoftware running on the Micronet.

      mewse-hn 2 hours ago

      I can't think of an instance of the web contracting like that. Maybe when Apple decided not to support Adobe Flash.

      oefrha an hour ago

      You mean like the piece of crap that was WAP?

      stronglikedan 2 hours ago

      I mean, you can do all that now, so that's not the problem. The problem would be convincing millions of people to switch, when 99.99999% of them couldn't care less.

        vbezhenar 34 minutes ago

        My idea is to use Markdown over HTTP(S). It's relatively easy to implement Markdown renderer, compared to HTML renderer. It's possible to browse that kind of website with HTML browser with very simple wrapper either on client or server side, so it's backwards compatible. It's rich enough for a lot of websites with actually useful content.

        Now I know that Markdown generally can include HTML tags, so probably it should be somewhat restricted.

        It could allow to implement second web in a compatible way with simple browsers.

          coryrc 31 minutes ago

          You can just use HTML4 if you want, it's already supported and standardized. Markdown is very much not.

        makapuf an hour ago

        Maybe you dont need a big enough % to change but a sufficient absolute number, which given internet size might happen with the right 0.00001%

        alcover an hour ago

        Oh they would care if one shows them much snappier versions of services they use. They just don't know better.

      speed_spread an hour ago

      You can already create websites to these standards. Then truncate large parts of webkit and create a new browser. Or base it on Servo.

      duped an hour ago

      I think there needs to be a split between the web browser as a document renderer and link follower, and the web browser as a portable target for GUI applications. But frankly my biggest gripe is that you need HTML, JS, and CSS. Three distinct languages that are extremely dissimilar in syntax and semantics that you need all three of (or some bastard cross compiler for your JSX to convert from one format to them). Just make a decent scripting language and interface for the browser and you don't need that nonsense.

      I understand this has been tried before (flash, silverlight, etc). They weren't bad ideas, they were killed because of companies that were threatened by the browser as a standard target for applications.

        alcover an hour ago

        I agree. Something componenty like Flash, yes. But it'd be easier to subset what already exists..

      bArray 2 hours ago

      And if you find you need more features than that - just build an app, don't make the web browser into some overly bloated app!

        mikepurvis 2 hours ago

        But most "apps" are just webviews running overcomplicated websites in them, many of which are using all the crazy features that the GP post wants to strip out.

        bogdan 2 hours ago

        Then you have to deal with os compatibility. That's the main selling point of the Web, it works everywhere.

          christophilus an hour ago

          And, I don't have to run a binary to try your product. The web has a lot of flaws, but it's a good way to deliver properly sandboxed applications with low hassle on the part of the user. I've built my fair share of native vs web apps, and I vastly prefer working on web apps. As a user, I vastly prefer web apps for most things. Not all things, but most. No, I don't want to install your crappy app on my computer and risk you doing something irresponsible. I'll keep you sandboxed in a browser tab that I can easily "uninstall" by closing.

            zppln an hour ago

            I can't think of a single thing where I prefer a web app over a native alternative, unless it's for one-off use.

              nozzlegear 23 minutes ago

              I have several web apps installed over the native alternatives. Discord is the most prominent one; I've found their native app has been getting shittier by the day over recent months, while the web app remains as snappy as any Safari page. Plus I can run an adblocker and other extensions in the web app which improve the experience.

              wiseowise 16 minutes ago

              Most of the “apps” are 200 MB native monstrosities that could be served by 20 kb of JS.

          thwarted an hour ago

          Except when it doesn't because of browser or platform differences/incompatibilities.

            ameliaquining an hour ago

            The portability of the Web is imperfect, but it's not even in the same galaxy as the portability of native app platforms; there's just no comparison.

  • booi 2 hours ago

    If there were a software engineering hall of fame, I nominate Fabrice.

      IlikeMadison an hour ago

      Bellard it the most genius programmer to ever exist, and the least known compared to other pseudo stars.

      textlapse 20 minutes ago

      His consistency and craftsmanship is amazing.

      Being an engineer and coding at this stage/level is just remarkable- sadly this trade craft is missing in most (big?) companies as you get promoted away into oblivion.

      lacedeconstruct 2 hours ago

      rare occasion where he gained a legendary status based purely on his work, I dont think I ever saw even a written interview with the guy

      wyldfire an hour ago

      There is! ACM grants several awards for scientists and more.

      One such award is the Turing Award [1], given "for contributions of lasting and major technical importance to computer science."

      [1] https://en.wikipedia.org/wiki/Turing_Award

      bArray 2 hours ago

      If there were some form of "developed contributions to computing" award, his name is definitely up there. I think there could be a need for such an award - for people who reliably have created the foundations of modern computing. Otherwise it's almost always things from an academic context, which can be a little too abstract.

      sxp an hour ago

      Between ffmpeg and qemu, I always think of https://xkcd.com/2347/ when I see Fabrice's work. Especially since ffmpeg provides the backbone of almost all video streaming systems today.

        makapuf an hour ago

        Except that ffmpeg and qemu are not maintained by Fabrice. He's one of the greatest programmers but he's not maintaining the internet.

  • ea016 21 minutes ago

    Well, as Jeff Atwood famously said [0], "any application that can be written in JavaScript, will eventually be written in JavaScript". I guess that applies to embedded systems too

    [0] https://en.wikipedia.org/wiki/Jeff_Atwood

  • MattGrommes an hour ago

    I'm not an embedded systems guy (besides using esp32 boards) so this might be a dumb question but does something like this open up the possibility of programming an esp32/arduino board with Javascript, like Micro/Circuit Python?

      halfmatthalfcat an hour ago

      There are already libraries/frameworks that have supported this:

      * espruino (https://www.espruino.com/)

      * elk (https://github.com/cesanta/elk)

      * DeviceScript (Microsoft Research's now defunct effort, https://github.com/microsoft/devicescript)

      15155 4 minutes ago

      Yes. The key enabling feature is a lack of malloc()

      hebejebelus an hour ago

      Sort of related: About ten years ago there was a device called the Tessel by Technical Machine which you programmed with Javascript, npm, the whole nine yards. It was pretty clever - the javascript got transpiled to Lua VM bytecode and ran in the Lua VM on the device (a Cortex M3 I believe). I recently had Claude rewrite their old Node 0.8 CLI tools in Rust because I wasn't inclined to do the javascript archeology needed to get the old tools up and running. Of course then I put the Tessel back in its drawer, but fun nonetheless.

  • timschumi 2 hours ago

    It's unfortunate that he uploaded this without notable commit history, it would be interesting to see how long it takes a programmer of his caliber to bring up a project like this.

    That said, judging by the license file this was based on QuickJS anyway, making it a moot comparison.

      incognito124 an hour ago

      Maybe he just oneshotted it

        agumonkey 44 minutes ago

        Maybe claude code uses bellard as agent

          MisterTea 41 minutes ago

          Claude is really Bellard sitting in his kitchen, sipping coffee, casually replying to code requests while getting ready for his day.

  • eichin 23 minutes ago

    Anyone know how this compares to Espruino? The target memory footprint is in the same range, at least. (I know very little about the embedded js space, I just use shellyplugs and have them programmed to talk to BLE lightswitches using some really basic Espruino Javascript.)

  • chunkles an hour ago

    Timing really is everything for making the frontpage, I posted this last night and it got no traction.

      self_awareness 8 minutes ago

      Some other guy tried it as well after you, also no luck.

      One strategy is to wait for US to wake up, then post, during their morning.

      Other strategy is to post the same thing periodically until there is response.

  • baudaux 2 hours ago

    I easily managed to build quickJS to WebAssembly for running in https://exaequOS.com . So I need to do the same for MicroQuickJS !

  • Reubend an hour ago

    When reading through the projects list of JS restrictions for "stricter" mode, I was expecting to see that it would limit many different JS concepts. But in fact none of the things which are impossible in this subset are things I would do in the course of normal programming anyway. I think all of the JS code I've written over the past few years would work out of the box here.

  • zamadatix an hour ago

    On a phone at the moment so I can't try it out, but in regards to this "stricter mode" it says global variables must be declared with var. I can't tell if that means that's just the only way to declare a global or if not declaring var makes it scoped in this mode. Based on not finding anything skimming through the examples, I assume the former?

      lioeters an hour ago

      I'm guessing the use of undeclared variables result in an error, instead of implicitly creating a global variable.

      frabert an hour ago

      I think it means you can't assign to unbounded names, you must either declare with var for global, or let/const for local

  • simonw an hour ago

    I had Claude Code for web figure out how to run this in a bunch of different ways this morning - I have working prototypes of calling it as a Python FFI library (via ctypes), as a Python compiled module and compiled to WebAssembly and called from Deno and Node.js and Pyodide and Wasmtime https://github.com/simonw/research/blob/main/mquickjs-sandbo...

    PR and prompt I used here: https://github.com/simonw/research/pull/50 - using this pattern: https://simonwillison.net/2025/Nov/6/async-code-research/

      simonw 41 minutes ago

      Down to -4. Is this generic LLM-dislike, or a reaction to perceived over-self-promotion, or something else?

      No matter how much you hate LLM stuff I think it's useful to know that there's a working proof of concept of this library compiled to WASM and working as a Python library.

      I didn't plan to share this on HN but then MicroQuickJS showed up on the homepage so I figured people might find it useful.

      (If I hadn't disclosed I'd used Claude for this I imagine I wouldn't have had any down-votes here.)

        claar 14 minutes ago

        I think many subscribe to this philosophy: https://distantprovince.by/posts/its-rude-to-show-ai-output-...

        Your github research/ links are an interesting case of this. On one hand, late AI adopters may appreciate your example prompts and outputs. But it feels like trivially reproducible noise to expert LLM users, especially if they are unaware of your reputation for substantive work.

        The HN AI pushback then drowns out your true message in favor of squashing perceived AI fluff.

        petercooper 15 minutes ago

        Your tireless experimenting (and especially documenting) is valuable and I love to see all of it. The avant garde nature of your recent work will draw the occasional flurry of disdain from more jaded types, but I doubt many HN regulars would think you had anything but good intentions! Guess I am basically just saying.. keep it up.

        SeanAnderson 6 minutes ago

        I didn't downvote you. You're one of "the AI guys" to me on HN. The content of your post is fine, too, but, even if it was sketch, I'd've given you the benefit of the doubt.

        colesantiago 32 minutes ago

        It is because you keep over promoting AI almost every day of the week in the HN comments.

        In this particular case AI has nothing to do with Fabrice Bellard.

        We can have something different on HN like what Fabrice Bellard is up to.

        You can continue AI posting as normal in the coming days.

          simonw 26 minutes ago

          Forget about the AI bit. Do you think it's interesting that MicroQuickJS can be used from Python via FFI or as a compiled module, and can also be compiled to WebAssembly and called from Node.js and Deno and from Pyodide running in a browser?

          ... and that it provides a useful sandbox in that you can robustly limit both the memory and time allowed, including limiting expensive regular expression evaluation?

          I included the AI bit because it would have been dishonest not to disclose how I used AI to figure this all out.

            alabhyajindal 15 minutes ago

            It's interesting but I don't think it belongs as a comment under this post. I can use LLMs to create something tangential for each project posted on HN, and so can everyone else. If we all started doing this then the comment section will quickly become useless and not on point.

            eichin 16 minutes ago

            Usually I watch your stuff very closely (and positively) because you're pushing the edges of how LLMs can be useful for code (and are a lot more honest/forthwright than most enthusiasts about it Going Horribly Wrong and how much work you need to do to keep on top of it.) This one... looks like a crossbar of random things that don't seem like things anyone would actually want to do? Mentioning the sandboxing bit in the first post would have helped a lot, or anything that said why that particular modes are interesting.

        halfmatthalfcat 24 minutes ago

        I downvoted because I'm tired of people regurgitating how they've done this or that with whatever LLM of the week on seemingly every technical post.

        If you care that much, write a blog post and post that, we don't need low effort LLM show and tell all day everyday.