Fabrice Bellard Releases MicroQuickJS

(github.com)

303 points | by Aissen 1 hour ago

14 comments

  • ddtaylor 38 minutes 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 10 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.
    • simonw 26 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 14 minutes ago
        I used to play around with Textsynth, but not being OSS killed the appeal for me once llama.cpp came around.
    • justmarc 37 minutes ago
      Don't forget his LZEXE from the good old DOS days which was an excellent piece of work at the time.
    • vatsachak 33 minutes ago
      Don't forget his LLM based text compression software that won awards.

      Guy is a genius. I hope he tries Rust someday

    • c0brac0bra 28 minutes ago
      The first two links are broken.
      • ddtaylor 23 minutes ago
        The ffmpeg link was changed apparently, but the QEmu link still works he just redirects to the QEmu homepage.
  • pizlonator 42 minutes 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 27 minutes ago
      He already has a JS engine which doesn’t make these restrictions
  • alcover 1 hour 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.
    • qweqwe14 1 hour 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 54 minutes 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 1 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 52 minutes 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 43 minutes 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 41 minutes ago
              Wow. That's way higher than I thought. Huh!
              • lioeters 36 minutes ago
                It actually gives me hope that we may find a way out of the enshittification of the web.
      • riedel 49 minutes 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 26 minutes ago
        Zero incentive seems a little strong,
      • andrewmcwatters 14 minutes ago
        [dead]
    • born-jre 7 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 37 minutes 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...
    • hinkley 22 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.
    • augustk 47 minutes ago
      And also bring back progressive enhancement.

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

    • afavour 1 hour ago
      So you want 2026 to be the year of Google AMP?
    • dtj1123 44 minutes ago
    • mromanuk 46 minutes ago
      Would be cool to create a MicroBrowser, just to browser stuff that's compatible.
      • lioeters 38 minutes ago
        And Microsoftware running on the Micronet.
    • mewse-hn 1 hour ago
      I can't think of an instance of the web contracting like that. Maybe when Apple decided not to support Adobe Flash.
    • oefrha 48 minutes ago
      You mean like the piece of crap that was WAP?
    • stronglikedan 1 hour 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 15 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 12 minutes ago
          You can just use HTML4 if you want, it's already supported and standardized. Markdown is very much not.
      • makapuf 40 minutes 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 56 minutes ago
        Oh they would care if one shows them much snappier versions of services they use. They just don't know better.
    • speed_spread 48 minutes 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 1 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 50 minutes ago
        I agree. Something componenty like Flash, yes. But it'd be easier to subset what already exists..
    • bArray 1 hour 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 1 hour 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 1 hour ago
        Then you have to deal with os compatibility. That's the main selling point of the Web, it works everywhere.
        • christophilus 1 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 39 minutes 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 4 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.
        • thwarted 1 hour ago
          Except when it doesn't because of browser or platform differences/incompatibilities.
          • ameliaquining 52 minutes 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.
  • ea016 3 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

  • booi 1 hour ago
    If there were a software engineering hall of fame, I nominate Fabrice.
    • textlapse 1 minute 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.

    • IlikeMadison 59 minutes ago
      Bellard it the most genius programmer to ever exist, and the least known compared to other pseudo stars.
    • lacedeconstruct 1 hour 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
    • bArray 1 hour 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 1 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 38 minutes 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.
    • wyldfire 1 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

  • eichin 5 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.)
  • timschumi 1 hour 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 55 minutes ago
      Maybe he just oneshotted it
      • agumonkey 26 minutes ago
        Maybe claude code uses bellard as agent
        • MisterTea 22 minutes ago
          Claude is really Bellard sitting in his kitchen, sipping coffee, casually replying to code requests while getting ready for his day.
  • MattGrommes 54 minutes 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 28 minutes 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)

    • hebejebelus 49 minutes 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.
  • chunkles 46 minutes ago
    Timing really is everything for making the frontpage, I posted this last night and it got no traction.
  • Reubend 32 minutes 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.
  • baudaux 1 hour ago
    I easily managed to build quickJS to WebAssembly for running in https://exaequOS.com . So I need to do the same for MicroQuickJS !
  • zamadatix 1 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 48 minutes ago
      I'm guessing the use of undeclared variables result in an error, instead of implicitly creating a global variable.
    • frabert 51 minutes 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
  • T3RMINATED 1 hour ago
    [dead]
  • simonw 1 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 22 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.)

      • halfmatthalfcat 5 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.

      • colesantiago 13 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 8 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.