[HN Gopher] Fabrice Bellard Releases MicroQuickJS
       ___________________________________________________________________
        
       Fabrice Bellard Releases MicroQuickJS
        
       Author : Aissen
       Score  : 632 points
       Date   : 2025-12-23 17:33 UTC (5 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | baudaux wrote:
       | I easily managed to build quickJS to WebAssembly for running in
       | https://exaequOS.com . So I need to do the same for MicroQuickJS
       | !
        
         | MobiusHorizons wrote:
         | I'm curious what practical purpose you could have for running a
         | js execution engine in an environment that already contains a
         | (substantially faster) js execution engine? Is it just for the
         | joy of doing it (if so good for you, absolutely nothing wrong
         | with that).
        
           | baudaux wrote:
           | It allows, for example, to create bindings as I did for
           | raylib graphics library. exaequOS can run any program that
           | can be built to WebAssembly It will soon support WASI p1 and
           | p2. So many programming languages will be possible for
           | creating programs targeting exaequOS
        
             | MobiusHorizons wrote:
             | Is there not a way to use the browser native js execution
             | environment for that? You lose a non-trivial amount of
             | performance running js inside quickjs inside of wasm vs the
             | browser native js engine. I wouldn't be surprised if that's
             | 10 or even 20 times slower, and of course requires loading
             | more code into the browser (slower startup, more ram
             | usage). Maybe you don't care about that, but all of that is
             | pretty orthogonal to the environments I an embedded engine
             | like this is intended for.
        
               | baudaux wrote:
               | Maybe with plugins. The WebAssembly way is cross
               | platform. You would be very surprised with the
               | performances of WebAssembly. I have built a Fibonacci
               | test program in Rust that runs faster when built to Wasi
               | than the native target on my MacBook
        
           | JoshTriplett wrote:
           | WebAssembly also runs in places other than the web, where
           | there isn't a JavaScript interpreter at hand. It'd be nice to
           | have a fast JavaScript engine that integrates _inside_ the
           | WebAssembly sandbox, and can call and be called by other
           | languages targeting WebAssembly.
           | 
           | That way, programs that embed WebAssembly in order to be
           | scriptable can let people use their choice of languages,
           | including JavaScript.
        
       | timschumi wrote:
       | 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 wrote:
         | Maybe he just oneshotted it
        
           | agumonkey wrote:
           | Maybe claude code uses bellard as agent
        
             | MisterTea wrote:
             | Claude is really Bellard sitting in his kitchen, sipping
             | coffee, casually replying to code requests while getting
             | ready for his day.
        
               | oblio wrote:
               | A sort of reverse code golf where he doesn't care what he
               | sends as all that code will never touch his prod code
               | bases.
        
               | christophilus wrote:
               | This explains a lot. Opus 4.5 gives you access to Bellard
               | after his second cup of coffee.
        
             | khazhoux wrote:
             | "You're right! I apologize for the confusion. I am, in
             | fact, Fabrice Bellard. Comment allez-vous?"
        
         | k4rli wrote:
         | It does say "public repository of..." implying there's a non-
         | public one with real history. Not sure why not upload the main
         | one though.
        
       | booi wrote:
       | If there were a software engineering hall of fame, I nominate
       | Fabrice.
        
         | bArray wrote:
         | 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.
        
         | lacedeconstruct wrote:
         | 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
        
           | throw-qqqqq wrote:
           | He is a private man that does not like the spotlight IIUC. He
           | refuses most requests for interviews, but they do exist.
           | 
           | https://www.macplus.net/depeche-82364-interview-le-
           | createur-...
           | 
           | https://www.mo4tech.com/fabrice-bellard-one-man-is-worth-
           | a-t... (few quotes, more like a profile piece)
           | 
           | He keeps a low profile and let his work speak for itself.
           | 
           | He really is brilliant.
        
             | userbinator wrote:
             | He has probably has no time for interviews and just focuses
             | on working on his many projects.
        
           | hn_throwaway_99 wrote:
           | I think this is such an important point. I know all about
           | Bellard's main works. I actually have no idea what he looks
           | like, I've also never seen an interview with him, and I've
           | never read about his specific philosophies when it comes to
           | different software engineering topics. In a world of never-
           | ending bloviations from "influencers" and "thought leaders"
           | it's so awesome to see a real example of true excellence.
        
         | wyldfire wrote:
         | 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
        
           | svat wrote:
           | Possibly more relevant is the "ACM Software System Award": ht
           | tps://en.wikipedia.org/w/index.php?title=ACM_Software_Syst...
        
             | AtlasBarfed wrote:
             | Linux and Torvalds hasn't gotten one?
        
           | hn_throwaway_99 wrote:
           | The Turing Award is given for breakthroughs in computer
           | science, not for "most productive programmer of all time",
           | and it wouldn't be appropriate for Ballard.
        
           | senbrow wrote:
           | Fabrice is certainly very skilled in CS, but his achievements
           | are more in software implementation IMO.
           | 
           | AIUI the Turing award is primarily CS focused.
        
         | sxp wrote:
         | 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 wrote:
           | Except that ffmpeg and qemu are not maintained by Fabrice.
           | He's one of the greatest programmers but he's not maintaining
           | the internet.
        
             | treavorpasan wrote:
             | I suppose that if he were to maintain any of these
             | projects, we would never see the new frontiers he has been
             | conquering.
        
         | IlikeMadison wrote:
         | Bellard it the most genius programmer to ever exist, and the
         | least known compared to other pseudo stars.
        
         | textlapse wrote:
         | 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.
        
       | alcover wrote:
       | 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.
        
         | stronglikedan wrote:
         | 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.
        
           | alcover wrote:
           | Oh they would care if one shows them much snappier versions
           | of services they use. They just don't know better.
        
           | makapuf wrote:
           | 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%
        
           | vbezhenar wrote:
           | 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 wrote:
             | You can just use HTML4 if you want, it's already supported
             | and standardized. Markdown is very much not.
        
             | sunshine-o wrote:
             | I believe this is the way we might get out of this mess.
             | 
             | With a markdown over HTTP browser I could already almost
             | browse Github through the READMEs and probably other
             | websites.
             | 
             | Markdown is really a loved and now quite popular format. It
             | is sad gemini created a separate closed format instead of
             | just adopting it.
        
           | billforsternz wrote:
           | A few too many 9s there I think. You're estimating that only
           | 1 person in every 10 million could care less. So less than 50
           | such people in the USA for example
        
         | bArray wrote:
         | 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 wrote:
           | 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 wrote:
           | Then you have to deal with os compatibility. That's the main
           | selling point of the Web, it works everywhere.
        
             | thwarted wrote:
             | Except when it doesn't because of browser or platform
             | differences/incompatibilities.
        
               | ameliaquining wrote:
               | 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.
        
             | christophilus wrote:
             | 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 wrote:
               | 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 wrote:
               | 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 wrote:
               | Most of the "apps" are 200 MB native monstrosities that
               | could be served by 20 kb of JS.
        
         | qweqwe14 wrote:
         | 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).
        
           | alcover wrote:
           | > 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 wrote:
             | 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 wrote:
               | > 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 wrote:
               | Wow. That's way higher than I thought. Huh!
        
               | lioeters wrote:
               | It actually gives me hope that we may find a way out of
               | the enshittification of the web.
        
               | foobarian wrote:
               | I don't care to run an ad blocker because sites are still
               | bloated and slow.
        
           | notKilgoreTrout wrote:
           | 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%.)
        
           | riedel wrote:
           | 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 wrote:
           | Zero incentive seems a little strong,
        
         | mewse-hn wrote:
         | I can't think of an instance of the web contracting like that.
         | Maybe when Apple decided not to support Adobe Flash.
        
           | fireflies_ wrote:
           | Arguably XSLT
        
           | bdcravens wrote:
           | In the earlier days of the web, there were a lot more plugins
           | you'd install to get around on most websites: not just Flash,
           | but things like PDF viewers, Real Video, etc. You'd regularly
           | have to install new codecs, etc. To say nothing of the days
           | when there were some sites you'd have to use a different
           | browser for. A movement towards more of a standards-driven
           | web (in the sense of de facto, not academic, standards) is
           | what made most of this possible.
        
         | duped wrote:
         | 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 wrote:
           | I agree. Something componenty like Flash, yes. But it'd be
           | easier to subset what already exists..
        
           | foobarchu wrote:
           | I think this is the ideal direction mainly because a lot of
           | the webs current tech problems stem from websites that don't
           | need app-level features using them. I was in web dev at the
           | advent of SPA-style navigation and understand why everyone
           | switched to it, but at the same time I feel like it's the
           | source of many if not most bugs an performance issues that
           | frustrate the average user.
        
         | afavour wrote:
         | So you want 2026 to be the year of Google AMP?
        
         | oefrha wrote:
         | You mean like the piece of crap that was WAP?
        
         | speed_spread wrote:
         | You can already create websites to these standards. Then
         | truncate large parts of webkit and create a new browser. Or
         | base it on Servo.
        
         | augustk wrote:
         | And also bring back progressive enhancement.
         | 
         | https://en.wikipedia.org/wiki/Progressive_enhancement
        
         | mromanuk wrote:
         | Would be cool to create a MicroBrowser, just to browser stuff
         | that's compatible.
        
           | lioeters wrote:
           | And Microsoftware running on the Micronet.
        
         | dtj1123 wrote:
         | What about https://geminiprotocol.net/
        
         | dcminter wrote:
         | 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 wrote:
         | 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.
        
         | born-jre wrote:
         | 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 ?
        
           | zero_bias wrote:
           | It's called WML/WAP
        
             | AtlasBarfed wrote:
             | I think we can do better than a 15x15 text window
        
         | keepamovin wrote:
         | Do it, man. Call it "MicroWeb" or whatever. Write an agent,
         | make it "viewable with regular browsers". I think this could be
         | cool.
        
         | cosmic_cheese wrote:
         | 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.
        
           | alcover wrote:
           | That's it. Plus they would work neatly on old
           | computers/phones.
        
           | zem wrote:
           | someone should embed it into dillo!
        
         | aziis98 wrote:
         | I would actually merge html and js in a single language and
         | bring the layout part of css too (something like having grid
         | and flexbox be elements themselves instead of display styles,
         | more typst kind of showed this is possible in a nice way) and
         | keep css only for the styling part.
         | 
         | Or maybe just make it all a single lispy language
        
         | 1313ed01 wrote:
         | Not likely to happen. There is geminiprotocol with gemtext
         | though for those of us that are fine with that level of
         | simplicity.
         | 
         | Work towards an eventual feature freeze and final
         | standardisation of the web would be fantastic though, and a
         | huge benefit to pretty much everyone other than maybe the
         | Chrome developers.
        
       | zamadatix wrote:
       | 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?
        
         | frabert wrote:
         | I think it means you can't assign to unbounded names, you must
         | either declare with var for global, or let/const for local
        
         | lioeters wrote:
         | I'm guessing the use of undeclared variables result in an
         | error, instead of implicitly creating a global variable.
        
         | MobiusHorizons wrote:
         | it also talks about the global object not being a place to add
         | properties. So how you might do `window.foo = ...` or
         | `globalThis.foo = ...` to make something from the local context
         | into a global object. in this dialect I guess you would have to
         | reserve any global objects you wanted to set with a `var` and
         | then set them by reference eg                   // global.
         | initialized by SomeConstructor         var fooInstance
         | class SomeConstructor {            constructor(...) {
         | fooInstance = this;            }            static
         | getInstance(...) {               if (fooInstance != null)
         | return fooInstance;               return new
         | SomeConstructor(...);            }         }
        
       | simonw wrote:
       | _Clarification added later_ : One of my key interests at the
       | moment is finding ways to run untrusted code from users (or
       | generated by LLMs) in a robust sandbox from a Python application.
       | MicroQuickJS looked like a very strong contender on that front,
       | so I fired up Claude Code to try that out and build some
       | prototypes.
       | 
       | 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 wrote:
         | 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.)
        
           | colesantiago wrote:
           | 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 wrote:
             | 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.
        
               | eichin wrote:
               | 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.
        
               | simonw wrote:
               | Yeah, I failed completely to explain the context here.
               | 
               | I'm currently on a multi-year side-quest to find safe
               | ways to execute untrusted user-provided code in my Python
               | and web applications.
               | 
               | As such, I pay _very_ close attention to any new language
               | or library that looks like it might be able to provide a
               | robust sandbox.
               | 
               | MicroQuickJS instantly struck me as a strong candidate
               | for that, and initial protoyping has backed that up.
               | 
               | None of that was clear from my original comment.
        
               | Imustaskforhelp wrote:
               | I had been in a similar boat and here are some softwares
               | that I recommend or would discuss with you
               | 
               | https://github.com/libriscv/libriscv (I talked with the
               | author of this project, amazing author fwsgonzo is
               | amazing) and they told me that this has the least latency
               | out of any sandbox at only minor consequence of
               | performance that they know of
               | 
               | Btw for sandboxing, kvm itself feels good too and I had
               | discussed it with them in their discord server when they
               | had mentioned that they were working on a minimal kvm
               | server which has since been open sourced
               | (https://github.com/varnish/tinykvm)
               | 
               | Honestly Simon, Deno hosting/the way deno works is
               | another good interesting tidbit for sandboxing. I wish
               | something like deno's sandboxing capabilities came to
               | python perhaps since python fans can appreciate it.
               | 
               | I will try to look more into your github repository too
               | once I get more free.
        
               | claar wrote:
               | Ah, reading this comment makes your original post 10x
               | more interesting. I guess this is "start with why" in
               | action. :)
        
               | AtlasBarfed wrote:
               | It is depressing the age of llm coding power came during
               | python and JavaScript.
               | 
               | Unfortunately it means those languages will be the
               | permanent coding platforms.
        
               | justatdotin wrote:
               | > Unfortunately it means those languages will be the
               | permanent coding platforms.
               | 
               | not really,
               | 
               | I suspect training volume has a role in debugging a
               | certain class of errors, so there is an advantage to
               | python/ts/sql in those circumstances: if, as an old boss
               | once told me, you code by the bug method :)
               | 
               | The real problems I've had that hint at training data vs
               | logic have been with poorly documented old versions of
               | current languages.
               | 
               | To me, the most amazing capability is not the code they
               | generate but the facility for natural language analysis.
               | 
               | my experience is that agent tools enable polyglot systems
               | because we can now use the right tool for the job, not
               | just the most familiar.
        
               | alabhyajindal wrote:
               | 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.
        
               | Imustaskforhelp wrote:
               | Offtopic but I went to your website and saw that you
               | created hackernews-mute and recently I was commenting
               | about how one must have created such an extension and
               | ranted about it. So kudos for you to have created it
               | earlier on.
               | 
               | Maybe we HN users have minds in sync :)
               | 
               | https://news.ycombinator.com/item?id=46359396#46359695
               | 
               | Have a nice day! Awesome stuff, would keep an eye on your
               | blog, Does your blog/website use mataroa by any chance as
               | there are some similarities even if they are both
               | minimalist but overall nice!
        
               | alabhyajindal wrote:
               | Thank you! I don't use Mataroa but I can see the
               | similarities. My current blog setup is a Python script
               | that parses content written in markdown and emits HTML.
               | The CSS is inspired by the other minimal blogs I see
               | here.
               | 
               | Thanks a lot for checking out my blog/project. Have a
               | great day!
        
               | KomoD wrote:
               | I have something like that but as a userscript and with a
               | toggle, it works pretty well for my needs.
               | 
               | Maybe someone finds it useful:
               | https://paste.ubuntu.com/p/rD6Dz7hN2V/
        
               | Imustaskforhelp wrote:
               | Awesome stuff :D
               | 
               | Thanks for sharing it.
        
               | keeganpoppen wrote:
               | but there _is_ signal in what people are inspired to do
               | upon seeing a new project-- why not simply evaluate the
               | interestingness level of these sorts of mashups on their
               | own terms? it actually feels _very_ "hacker"-y to go out
               | and show people possibilities like this. i have no
               | particular comment on how "interesting" the derivative
               | projects are in this case, but i have a feeling if his
               | original post had been framed more like "i think it's
               | super interesting how easy it is to use via FFI on
               | various runtimes X & Y (oh btw in the spirit of full
               | transparency: i used ai to help me. and you can see more
               | details at <link>). especially because i think everyone
               | who peruses HN with some regularity is likely to know of
               | simon's work in at least some capacity, and i am--
               | speaking only for myself-- essentially always interested
               | in any sort of project he embarks on, especially his llm-
               | assisted experiments and stuff. but hey-- at the end of
               | the day, all of this value judgment is realized as
               | plainly as possible with +1 / -1 (up- and down-vote) and
               | i guess it just is what it is. if number bad, HN no like.
               | shrug.
        
               | alabhyajindal wrote:
               | I agree that there is signal, and that phrasing his
               | original post as you pointed out would have been better.
               | 
               | My issue is that the cost, in terms of time, for these
               | experiments have really gone down with LLMs. Earlier, if
               | someone played around with the posted project, we knew
               | they spent a reasonable amount of time on it, and thus
               | care about the subject. With LLMs, this is not the case.
        
               | rpdillon wrote:
               | Software system is released, comments talk about how to
               | integrate it with other software systems. Seems on-topic.
        
               | Imustaskforhelp wrote:
               | Simon although I find it interesting. And I respect you
               | in this field. I still feel like the reason people call
               | out AI usage or downvote in this case is that in my
               | honest opinion, it would be also more interesting to see
               | people actually write the code and more so (maintain) it
               | as well and create a whole community/github project
               | around microquickjs wasm itself
               | 
               | I read this post of yours
               | https://simonwillison.net/2025/Dec/18/code-proven-to-
               | work/ and although there is a point that can be made that
               | what you are doing isn't a job and I myself create
               | prototypes of code using AI, long term (in my opinion)
               | what really matters are the maintainance and claim (like
               | your article says in a way, that I can pin point a person
               | whose responsible for code to work)
               | 
               | If I find any bug right now, I wouldn't blame it on you
               | but AI and I have varying amount of trust on it
               | 
               | My opinion on the matter is that for prototyping AI can
               | be considered good use but long term it definitely isn't
               | and I am sure that you share a similar viewpoint.
               | 
               | I think that AI is so contrasting that there stops
               | existing any nuance. Read my recent comment (although
               | warning, its long)
               | (https://news.ycombinator.com/item?id=46359684)
               | 
               | Perhaps you can build a blog post about the nuance of AI?
               | I imagine that a lot of people might share a similar
               | aspect of AI policy where its okay to tinker with it. I
               | am part of the new generation and trust be told I don't
               | think that there becomes much incentives long term unless
               | someone realizes things of not using AI because using AI
               | just feels so lucrative for especially the youngsters.
               | 
               | I am 17 years old and I am going to go into a decent
               | college with (might I add immense competition to begin
               | with) when I have passion about such topics but only to
               | get dissuaded because the benchmark of solving
               | assignments etc. are done by AI and the signal ratio of
               | universities themselves are reducing but they haven't
               | reduced to the point that they are irrelevant but rather
               | that you need to have a university to try to get a job
               | but companies have either freezed hiring which some point
               | out with LLM's
               | 
               | If you ask me, Long term to me it feels like more people
               | might associate themselves with hobbyist computing and
               | even using AI (to be honest sort of like pewdiepie)
               | without being in the industry.
               | 
               | I am not sure what the future holds for me (or for any of
               | us as a matter of fact) but I guess the point I am trying
               | to state is that there is nuance to the discussion from
               | _both sides_
               | 
               | Have a nice day!
        
           | halfmatthalfcat wrote:
           | 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.
        
             | simonw wrote:
             | Here you go:
             | https://simonwillison.net/2025/Dec/23/microquickjs/
        
               | halfmatthalfcat wrote:
               | No I mean post it as an HN post and if anybody cares to
               | see it, they'll upvote that and comment in there. That,
               | instead of pigging backing on other posts to get
               | visibility.
        
               | simonw wrote:
               | I genuinely don't think it's interesting enough to
               | warrant a top level post. It's interesting enough to be
               | in a comment though!
        
           | petercooper wrote:
           | 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.
        
           | claar wrote:
           | 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.
        
             | simonw wrote:
             | Yeah, I agree that it's rude to show AI output to people...
             | in most cases (and 100% if you don't disclose it.)
             | 
             | My simonw/research GitHub repo is deliberately separate
             | from everything else I do because it's entirely AI-
             | generated. I wrote about that here:
             | https://simonwillison.net/2025/Nov/6/async-code-
             | research/#th...
             | 
             | This particular case is a very solid use-case for that
             | approach though. There are a ton of important questions to
             | answer: can it run in WebAssembly? What's the difference to
             | regular JavaScript? Is it safe to use as a sandbox against
             | attacks like the regex thing?
             | 
             | Those questions can be answered by having Claude Code
             | crunch along, produce and execute a couple of dozen files
             | of code and report back on the results.
             | 
             | I think the knee-jerk reaction pushing back against this is
             | understandable. I'd encourage people not to miss out on the
             | substance.
        
               | lossolo wrote:
               | And again you're linking to your site. Maybe try pasting
               | the few relevant sentences instead of constantly pushing
               | your content in almost every comment. That's what people
               | find annoying. Maybe link to other people's stuff more,
               | or just write what you think here on HN.
               | 
               | If someone wants to read your blog, they will, they know
               | it exists, and some people even submit your new articles
               | here. There's no need to do what you're doing. Every day
               | you're irritating more people with this behavior, and
               | eventually the substance won't matter to them anymore, so
               | you're acting against your own interests.
               | 
               | Unless you want people to develop the same kind of ad
               | blindness mechanism, where they automatically skip
               | anything that looks like self promotion. Some people will
               | just see a comment by simonw and do the same.
               | 
               | A lot of people have told you this in many threads, but
               | it seems you still don't get it.
        
               | rpdillon wrote:
               | Counterpoint to the sibling comment: posting your own
               | site is fine. Your contributions are substantial, and
               | your site is a well-organized repository of your work.
               | Not everything fits (or belongs) in a comment.
               | 
               | I'd chalk up the -4 to generic LLM hate, but I find
               | examples of where LLMs do well to be useful, so I
               | appreciated your post. It displays curiosity, and is
               | especially defensible given your site has no ads, loads
               | blazingly fast, and is filled with HN-relevant content,
               | and doesn't even attempt to sell anything.
        
               | gaigalas wrote:
               | > can it run in WebAssembly?
               | 
               | You can safely assume so. Bellard is the creator of
               | jslinux. The news here would be if it _didn't_.
               | 
               | > What's the difference to regular JavaScript?
               | 
               | It's in the project's README!
               | 
               | > Is it safe to use as a sandbox against attacks like the
               | regex thing?
               | 
               | This is not a sandbox design. It's a resource-constrained
               | design like cesanta/mjs.
               | 
               | ---
               | 
               | If you vibe coded a microcontroller emulation demo,
               | perhaps there would be less pushback.
        
           | SeanAnderson wrote:
           | 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.
        
           | garganzol wrote:
           | Thank you for sharing.
           | 
           | A lot of HN people got cut by AI in one way or another, so
           | they seem to have personal beefs with AI. I am talking about
           | not only job shortages but also general humbling of the
           | bloated egos.
        
             | foobarchu wrote:
             | > I am talking about not only job shortages but also
             | general humbling of the bloated egos.
             | 
             | I'm gonna give you the benefit for the doubt here. Most of
             | us do not dislike genAI because we were fired or "humbled".
             | Most of us dislike it because a) the terrible environmental
             | impacts, b) the terrible economic impacts, and c) the
             | general non-production-readiness of results once you get
             | past common, well-solved problems
             | 
             | Your stated understanding comes off a little bit like "they
             | just don't like it because they're jealous".
        
           | alex_suzuki wrote:
           | I think the people interacting with this post are just more
           | likely to appreciate the raw craftsmanship and talent of an
           | individual like Bellard, and coincidentally might be more
           | critical of the machinery that in their perception devalues
           | it. I count myself among them, but didn't downvote, as I
           | generally think your content is of high quality.
        
         | MobiusHorizons wrote:
         | What is the purpose of compiling this to web assembly? What web
         | assembly runtimes are there where there is not already an
         | easily accessible (substantially faster) js execution
         | environment? I know wasmtime exists and is not tied to a js
         | execution engine like basically every other web assembly
         | implementation, but the uses of wasmtime are not restricted
         | from dependencies like v8 or jsc. Usually web assembly is used
         | for providing sandboxing something a js execution environment
         | is already designed to provide, and is only used when the code
         | that requires sandboxing is native code not javascript. It
         | sounds like a good way to waste a lot of performance for some
         | additional sandboxing, but I can't imagine why you would ever
         | design a system that way if you could choose a different
         | (already available and higher performance) sandbox.
        
           | simonw wrote:
           | I want to build features - both client- and server-side -
           | where users can provide JavaScript code that I then execute
           | safely.
           | 
           | Just having a WebAssembly engine available isn't enough for
           | this - something has to take that user-provided string of
           | JavaScript and execute it within a safe sandbox.
           | 
           | Generally that means you need a JavaScript interpreter that
           | has itself been compiled to WebAssembly. I've experimented
           | with QuickJS itself for that in the past - demo here:
           | https://tools.simonwillison.net/quickjs - but MicroQuickJS
           | may be interesting as a smaller alternative.
           | 
           | If there's a better option than that I'd love to hear about
           | it!
        
             | MobiusHorizons wrote:
             | This is generally the purpose of JavaScript execution
             | environments like v8 or jsc (or quickjs although I
             | understand not trusting that as a sandbox to the same
             | degree). They are specifically intended for executing
             | untrusted scripts (eg web browsers). Web assembly's
             | sandboxing comes from js sandboxing, since it was
             | originally a feature of the same programs for the same
             | reasons. Wrapping one sandbox in another is what I'm
             | surprised by.
        
               | simonw wrote:
               | Running v8 itself as a sandbox is non-trivial, at least
               | embedded in a Python or Node.js or similar application.
               | 
               | The web is littered with libraries that half do that and
               | then have a note in the README that says "do not rely on
               | this as a secure sandbox".
        
       | MattGrommes wrote:
       | 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?
        
         | hebejebelus wrote:
         | 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.
        
         | halfmatthalfcat wrote:
         | 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 wrote:
         | Yes. The key enabling feature is a lack of malloc()
        
         | cxr wrote:
         | That's been possible with Moddable/Kinoma's XS engine, which is
         | standards compliant with ES6 and beyond.
         | 
         | <https://www.moddable.com/faq#comparison>
         | 
         | If you take a look at the MicroQuickJS README, you can see that
         | it's not a full implementation of even ES5, and it's
         | incompatible in several ways.
         | 
         | Just being able to run JS also isn't going to automatically
         | give you any bindings for the environment.
        
       | chunkles wrote:
       | Timing really is everything for making the frontpage, I posted
       | this last night and it got no traction.
        
         | self_awareness wrote:
         | 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.
        
       | pizlonator wrote:
       | 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 wrote:
         | He already has a JS engine which doesn't make these
         | restrictions
        
           | pizlonator wrote:
           | Yeah QuickJS is great.
           | 
           | I bet MQJS will also be very popular. Quite impressive that
           | bro is going to have two JS engines to brag about in addition
           | to a lot of other very useful things!
        
             | alexdowad wrote:
             | > Quite impressive...
             | 
             | Yes, quite! Monsieur Bellard is a legend of computer
             | programming. It would be hard to think of another
             | programmer whose body of public work is more impressive
             | than FB.
             | 
             | Unfortunate that he doesn't seem to write publicly about
             | how he thinks about software. I've never seen him as a
             | guest on any podcast either.
             | 
             | I have long wondered who the "Charlie Gordon" who seems to
             | collaborate with him on everything is. Googling the name
             | brings up a young ballet dancer from England, but I doubt
             | that's the person in question.
        
         | jacobp100 wrote:
         | Since you're on the topic, what ever happened to the multi
         | threading stuff you were doing on JSC? Did it stop when you
         | left Apple? Is the code still in JSC or did it get taken out?
        
           | pizlonator wrote:
           | I never really started on it other than writing up how to do
           | it
        
       | ddtaylor wrote:
       | 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.
        
         | justmarc wrote:
         | Don't forget his LZEXE from the good old DOS days which was an
         | excellent piece of work at the time.
        
           | sedatk wrote:
           | Self-decompressing executables felt like magic to me at the
           | time. Fantastic work, overall.
        
           | lioeters wrote:
           | I remember LZEXE from those olden days. When I discovered the
           | author of FFmpeg and QEMU also created LZEXE, I was so
           | impressed. I've been using his software for my entire
           | computing career.
           | 
           | It's similar to the respect I have for the work of Anders
           | Hejlsberg, who created Turbo Pascal, with which I learned to
           | program; and also C# and TypeScript.
        
         | vatsachak wrote:
         | Don't forget his LLM based text compression software that won
         | awards.
         | 
         | Guy is a genius. I hope he tries Rust someday
        
           | hsaliak wrote:
           | peak hacker news comment lol
        
             | vatsachak wrote:
             | I've only been here for a month. I guess I'm learning well
        
           | elevation wrote:
           | Fabrice, if you're reading this, please consider replacing
           | Rust instead with your own memory safe language.
           | 
           | The design intent of Rust is a powerful idea, and Rust is the
           | best of its class, but the language itself is under-
           | specified[1] which prevents basic, provably-correct
           | optimizations[0]. At a technical level, Rust could be amended
           | to address these problems, but at a social level, there are
           | now too many people who can block the change, and there's a
           | growing body of backwards compatibility to preserve. This
           | leads reasonable people to give up on Rust and use something
           | else[0], which compounds situations like [2] where projects
           | that need it drop it because it's hard to find people to work
           | on it.
           | 
           | Having written low-level high-performance programs, Fabrice
           | Bellard has the experience to write a memory safe language
           | that allows hardware control. And he has the faculties to
           | assess design changes without tying them up in committee. I
           | covet his attentions in this space.
           | 
           | [0]: https://databento.com/blog/why-we-didnt-rewrite-our-
           | feed-han...
           | 
           | [1]: https://blog.polybdenum.com/2024/06/07/the-
           | inconceivable-typ...
           | 
           | [2]: https://daniel.haxx.se/blog/2024/12/21/dropping-hyper/
        
             | Lerc wrote:
             | I think of Rust might trigger a new generation of languages
             | that are developed with the hindsight of rust.
             | 
             | The principle of zero cost abstractions avoids a slow slide
             | of compromising abstraction cost, but I think there could
             | be small cost abstractions that would make for a more
             | pragmatic language. Having Rust to point at to show what
             | performance you could be achieving would aid in avoiding
             | bloating abstractions.
        
         | c0brac0bra wrote:
         | The first two links are broken.
        
           | ddtaylor wrote:
           | The ffmpeg link was changed apparently, but the QEmu link
           | still works he just redirects to the QEmu homepage.
        
         | simonw wrote:
         | 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 wrote:
           | I used to play around with Textsynth, but not being OSS
           | killed the appeal for me once llama.cpp came around.
        
             | brabel wrote:
             | I thought Bellard might be behind even llama.cpp (that
             | would be completely expected for Bellard) but it's actually
             | another great who's done that: Georgi Gerganov:
             | https://github.com/ggerganov
        
         | groundzeros2015 wrote:
         | 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 wrote:
           | 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.
        
             | zdragnar wrote:
             | I honestly think the single file thing is best reserved for
             | C, given how bad the language support for modularity is.
             | 
             | I've had the inverse experience dealing with a many
             | thousand line "core.php" file way back in the day helping
             | debug an expressionengine site (back in the php 5.2ish
             | days) and it was _awful_.
             | 
             | Unless you have an editor which can create short links in a
             | hierarchical tree from semantic comments to let you
             | organize your thoughts, digging through thousands of lines
             | of code all in the same scope can be exceptionally painful.
        
               | antirez wrote:
               | C has no problems splitting programs in N files, to be
               | honest.
               | 
               | The reason FB (and myself, for what it is worth) often
               | write single file large programs (Redis was split after N
               | years of being a single file) is because with enough
               | programming experience you know one very simple thing:
               | complexity is not about how many files you have, but
               | about the internal structure and conceptually separated
               | modules boundaries.
               | 
               | At some point you mainly split for compilation time and
               | to better orient yourself into the file, instead of
               | having to seek a very large mega-file. Pointing the
               | finger to some program that is well written because it's
               | a single file, strlongly correlates to being not a very
               | expert programmer.
        
               | uecker wrote:
               | I split to enforce encapsulation by defining interfaces
               | in headers based on incomplete structure types. So it
               | helps me with he conceptually separated module
               | boundaries. Super fast compilation is another benefit.
        
               | sfpotter wrote:
               | C's support for modularity is actually rather strong.
               | This PDF gives a good overview of the basic techniques
               | available:
               | http://www.metamodulaire.org/Computing/modular-c.pdf
               | 
               | It may not be immediately obvious how to approach
               | modularity since it isn't directly accomplished by
               | explicit language features. But, once you know what
               | you're doing, it's possible to write very large programs
               | with good encapsulation, that span many files, and which
               | nevertheless compile quite rapidly (more or less
               | instantaneously for an incremental build).
               | 
               | I'm not saying other languages don't have _better_
               | modularity, but to say that C 's is bad misses the mark.
        
             | kvemkon wrote:
             | SQLite 3.51.1                 $ wc -l ...       265908
             | sqlite-amalgamation-3510100/sqlite3.c
             | 
             | Is there any as large as possible single source (or normal
             | with amalgamation version) more or less meaningful project
             | that could be compiled directly with rustc -o executable
             | src.rs? Just to compare build time / memory consumption.
        
               | qznc wrote:
               | SQLite is only deployed as a single file but the original
               | sources are multiple files. They call it "The
               | Amalgamation".
               | 
               | https://sqlite.org/src/doc/trunk/README.md
        
               | kvemkon wrote:
               | Yes, that's why I've asked about possible rust support of
               | creating such version of normal project. The main issue,
               | I'm unaware of comparably large rust projects without
               | 3rdparty dependencies.
        
               | nine_k wrote:
               | From my daily-use utilities, ripgrep and bat seem to have
               | zero dependencies.
        
               | kvemkon wrote:
               | Looking at Cargo.toml, ripgrep seems to have some
               | dependencies and bat has a lot.
        
               | nine_k wrote:
               | The sqlite3.c file is generated from more finely-grained
               | real sources, see
               | https://www.sqlite.org/src/doc/trunk/README.md
        
           | benterix wrote:
           | Because he choose the hardest path. Difficult problems, no
           | shortcuts, ambitious, taking time to complete. Our
           | environment in general is the opposite of that.
        
             | groundzeros2015 wrote:
             | We spend a lot of time doing busy work that's part of the
             | process but doesn't actually move the needle. We write a
             | lot of code that manages abstractions, but doesn't do a
             | lot. All of this busy work feels like progress, but it's
             | avoiding the hard work of actually writing working code.
             | 
             | We underestimate how inefficient working in teams is
             | compared with individuals. We don't value skill and
             | experience and how someone who understands a problem well
             | can be orders of magnitude more productive.
        
           | nxobject wrote:
           | I agree: he loves to "roll your own" a lot. Re: minimal
           | dependencies - the codebase has a software FP implementation
           | including printing and parsing, and some home-rolled math
           | routines for trigonometric and other transcendental
           | functions.
           | 
           | Honestly, it's a reminder that, for the time it takes, it's
           | incredibly fun to build from scratch and understand through-
           | and-through your own system.
           | 
           | Although you have to take detours from, say, writing a
           | bytecode VM, to writing FP printing and parsing routines...
        
           | pjc50 wrote:
           | This is like Feynman's method for solving hard scientific
           | problems: write down the question, think very hard, write
           | down the answer.
           | 
           | It doesn't necessarily translate to people who are less
           | brilliant.
        
             | chrisweekly wrote:
             | Yeah, "Step 1: draw 2 circles. Step 2: draw the rest of the
             | fucking owl"
        
         | MontyCarloHall wrote:
         | Whenever someone says there's no such thing as a 10x
         | programmer, I point them to Fabrice and they usually change
         | their mind.
        
           | rossant wrote:
           | Perhaps closer to 100x actually.
        
             | attractivechaos wrote:
             | You can call 1000 averaged programmers and see if they can
             | write MicroQuickJS using the same amount of time, or call
             | one averaged programmer and see if he/she can write
             | MicroQuickJS to the same quality is his/her life time. 10X,
             | 100X or 1000X can't measure the productivity for someone
             | like Fabrice Bellard.
        
               | thechao wrote:
               | If you're in a room with 100 physicists and Feynman, the
               | accumulated wisdom of Feynman is your best bet.
        
         | didip wrote:
         | For real. The GOAT is at it again!
        
         | encom wrote:
         | For all the praise he's receiving, I think his web design
         | skills have gone overlooked. bellard.org is fast, responsive
         | and presents information clearly. Actually I think the fancier
         | the website, the shittier the software. Examples: Tarsnap -
         | minimal website, brilliant software. Discord - Whitespacey,
         | animation-heavy abomination of a website. Software: hundreds of
         | MB of JS slop, government wiretap+botnet for degenerates.
         | 
         | The math checks out.
        
         | mightybyte wrote:
         | He's also won the International Obfuscated C Code Contest 3
         | times.
         | 
         | https://www.ioccc.org/authors.html#Fabrice_Bellard
        
         | rasz wrote:
         | Funny how people know Fabrice for all the software stuff but
         | none of the hardware antics:
         | 
         | played with implementing analog modem DSP in software in 1999
         | (linmodem is ~50-80% there, sadly never finished)
         | 
         | probably leading to
         | 
         | played with implementing SDR (again DSP) using VGA output to
         | transmit DVB-T/NTSC/PAL in 2005
         | 
         | probably leading to
         | 
         | Amarisoft SDR 5G base station, commercial product started in
         | 2012 - his current job https://www.amarisoft.com/company/about-
         | us
        
           | userbinator wrote:
           | I was going to mention the last one, and his ASN.1 compiler
           | which is likely related to his telco work:
           | 
           | https://bellard.org/ffasn1/
        
       | Reubend wrote:
       | 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.
        
         | MobiusHorizons wrote:
         | I was surprised by this one that only showed up lower in the
         | document:
         | 
         | - Date: only Date.now() is supported. [0]
         | 
         | I certainly understand not shipping the js date library
         | especially in an embedded environment both for code-size, and
         | practicality reasons (it's not a great date library), but that
         | would be an issue in many projects (even if you don't use it,
         | libraries yo use almost certainly do.
         | 
         | https://github.com/bellard/mquickjs/blob/main/README.md#:~:t...
        
       | eichin wrote:
       | 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.)
        
       | ea016 wrote:
       | 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
        
         | tacone wrote:
         | Sounds a bit like rule 35 of the Internet.
        
         | arendtio wrote:
         | Well, wasn't Fabrice Bellard the guy who built a virtual
         | machine with JS so that you could run Linux within the browser?
         | 
         | https://bellard.org/jslinux/vm.html?cpu=riscv64&url=fedora33...
        
       | mtlynch wrote:
       | People talk about how productive Fabrice Bellard is, but I don't
       | think anyone appreciates _just_ how productive he is.
       | 
       | Here's the commit history for this project
       | 
       | b700a4d (2025-12-22T1420) - Creates an empty project with an MIT
       | license
       | 
       | 295a36b (2025-12-22T1432) - Implements the JavaScript engine, the
       | C API, the REPL, and all documentation
       | 
       | He went from zero to a complete JS implementation in just _12
       | minutes_!
       | 
       | I couldn't do that even if you gave me twice as much time.
       | 
       | Okay, but seriously, this is super cool, and I continue to be
       | amazed by Fabrice. I honestly do think it would be interesting to
       | do an analysis of a day or week of Fabrice's commits to see if
       | there's something about his approach that others can apply
       | besides just being a hardworking genius.
        
         | tremon wrote:
         | That doesn't mean anything. I quite often start with writing a
         | proof-of-concept, and only initialize the git repository when
         | I'm confident the POC will actually lead to something useful.
         | Common sense says that those files already existed at the time
         | of the first commit.
        
           | mordnis wrote:
           | I wonder how do you not understand this was a joke. Did you
           | not fully read it? Or it's just not obvious enough?
        
         | andoando wrote:
         | Doesn't say much. Probably had it largely written down and put
         | it together. I don't think it'd even be humanely possible to do
         | that in 12 minutes.
        
         | ronsor wrote:
         | It's funny how many people replying here just got whooshed.
         | This comment is satire; they don't actually think Bellard wrote
         | everything in 12 minutes.
        
       | schappim wrote:
       | Love it! Needing only 10K of RAM, it looks like a much better
       | solution to CircuitPython (can squeeze into 32K).
        
       | antirez wrote:
       | If this had been available in 2010, Redis scripting would have
       | been JavaScript and not Lua. Lua was chosen based on the
       | implementation requirements, not on the language ones... (small,
       | fast, ANSI-C). I appreciate certain ideas in Lua, and people love
       | it, but I was never able to _like_ Lua, because it departs from a
       | more Algol-like syntax and semantics without good reasons, for my
       | taste. This creates friction for newcomers. I love friction when
       | it opens new useful ideas and abstractions that are worth it, if
       | you learn SmallTalk or FORTH and for some time you are lost, it
       | 's part of how the languages are different. But I think for Lua
       | this is not true enough: it feels like it departs from what
       | people know without good reasons.
        
         | cxr wrote:
         | It wouldn't fix the issue of semantics, but "language
         | skins"[1][2] are an underexplored area of programming language
         | development.
         | 
         | People go through all this effort to separate parsing and
         | lexing, but never exploit the ability to just plug in a
         | different lexer that allows for e.g. "{" and "}" tokens instead
         | of "then" and "end", or vice versa.
         | 
         | 1. <https://hn.algolia.com/?type=comment&prefix=true&query=cxr%
         | 2...>
         | 
         | 2. <https://old.reddit.com/r/Oberon/comments/1pcmw8n/is_this_sa
         | c...>
        
           | nine_k wrote:
           | Not "never exploit"; Reason and BuckleScript are examples of
           | different "language skins" for OCaml.
           | 
           | The problem with "skins" is that they create variety where
           | people strive for uniformity to lower the cognitive load.
           | OTOH transparent switching between skins (about as easy as
           | changing the tab sizes) would alleviate that.
        
             | cibyr wrote:
             | People fight about tab sizes all the time though.
        
               | dbdr wrote:
               | That's precisely the point of using tabs for indentation:
               | you don't need to fight over it, because it's a local
               | display preference that does not affect the source code
               | at all, so everyone can just configure whatever they
               | prefer locally without affecting other people.
               | 
               | The idea of "skins" is apparently to push that even
               | further by abstracting the concrete syntax.
        
               | lucketone wrote:
               | > you don't need to fight over it, because it's a local
               | display preference
               | 
               | This has limits.
               | 
               | Files produced with tab=2 and others with tab=8, might
               | have quite different result regarding nesting.
               | 
               | (pain is still on the menu)
        
             | brabel wrote:
             | > OTOH transparent switching between skins (about as easy
             | as changing the tab sizes) would alleviate that.
             | 
             | That's one of my hopes for the future of the industry:
             | people will be able to just choose the code style and even
             | syntax family (which you're calling skin) they prefer when
             | editing code, and it will be saved in whatever is the
             | "default" for the language (or even something like the
             | Unison Language: store the AST directly which allows cool
             | stuff like de-duplicating definitions and content-
             | addressable code - an idea I first found out on the amazing
             | talk by Joe Armstrong, "The mess we're in" [1]).
             | 
             | Rust, in particular, would perhaps benefit a lot given how
             | a lot of people hate its syntax... but also Lua for people
             | who just can't stand the Pascal-like syntax and really need
             | their C-like braces to be happy.
             | 
             | [1] https://www.youtube.com/watch?v=lKXe3HUG2l4
        
               | nine_k wrote:
               | Also consider translation to non-English languages,
               | including different writing and syntax systems (e.g.
               | Arabic or Japanese).
               | 
               | Some languages have tools for more or less
               | straightforward skinning.
               | 
               | Clojure to Tamil: https://github.com/echeran/clj-
               | thamil/blob/master/src/clj_th...
               | 
               | C++ to distorted Russian:
               | https://sizeof.livejournal.com/23169.html
        
           | procaryote wrote:
           | Lowering the barrier to create your own syntax seems like a
           | bad thing though. C.f. perl.
        
           | rao-v wrote:
           | One day Brython (python with braces allowing copy paste code
           | to autoindent) will be well supported by LSPs and world peace
           | will ensure
        
           | kevin_thibedeau wrote:
           | VB.Net is mostly a reskin of C# with a few extras to smooth
           | the transition from VB.
        
         | IshKebab wrote:
         | Not to mention the 1-based indexing sin. JavaScript has a lot
         | of WTFs but they got that right at least.
        
           | idle_zealot wrote:
           | Does it count as 0-indexing when your 0 is a floating point
           | number?
        
             | krackers wrote:
             | Actually in JS array indexing is same as property indexing
             | right? So it's actually looking up the string '0', as in
             | arr['0']
        
               | idle_zealot wrote:
               | Huh. I always thought that JS objects supported string
               | and number keys separately, like lua. Nope!
               | [Documents]$ cat test.js       let testArray = [];
               | testArray[0] = "foo";       testArray["0"] = "bar";
               | console.log(testArray[0]);
               | console.log(testArray["0"]);       [Documents]$ jsc
               | test.js       bar bar       [Documents]$
        
               | aidenn0 wrote:
               | They do, but strings that are numbers will be
               | reinterpreted as numbers.
               | 
               | [edit]                 let testArray = [];
               | testArray[0] = "foo";       testArray["0"] = "bar";
               | testArray["00"] = "baz";       console.log(testArray[0]);
               | console.log(testArray["0"]);
               | console.log(testArray["00"]);
        
           | chrisweekly wrote:
           | Except for Date.
        
           | coliveira wrote:
           | If you can't deal with off-by-one errors, you're not a
           | programmer.
        
           | nine_k wrote:
           | This indeed is not Algol (or rather C) heritage, but Fortran
           | heritage, not memory offsets but indices in mathematical
           | formulae. This is why R and Julia also have 1-based indexing.
        
             | IshKebab wrote:
             | And MATLAB. Doesn't make it any better that other languages
             | have the same mistake.
        
         | rweichler wrote:
         | I read this comment, about to snap back with an anecdote how I
         | as a 13 year old was able to learn Lua quite easily, and then I
         | stopped myself because that wasn't productive, then pondered
         | what antirez might think of this comment, and then I realized
         | that antirez wrote it.
        
           | aidenn0 wrote:
           | I think the older you are the harder Lua is to learn. GP
           | didn't say it made wrong choices, just choices that are
           | gratuitously different from other languages in the Algol
           | family.
        
         | brabel wrote:
         | > it feels like it departs from what people know without good
         | reasons.
         | 
         | Lua was first released in 1993. I think that it's pretty
         | conventional for the time, though yeah it did not follow Algol
         | syntax but Pascal's and Ada's (which were more popular in
         | Brazil at the time than C, which is why that is the case)!
         | 
         | Ruby, which appeared just 2 years later, departs a lot more,
         | arguably without good reasons either? Perl, which is 5 years
         | older and was very popular at the time, is much more
         | "different" than Lua from what we now consider mainstream.
        
           | rwmj wrote:
           | We had a lot problems embedding Ruby in a multithreaded C
           | program as the garbage collector tries to scan memory between
           | the threads (more details here: https://gitlab.com/nbdkit/nbd
           | kit/-/commit/7364cbaae809b5ffb6... )
           | 
           | Perl, Python, OCaml, Lua and Rust were all fine (Rust wasn't
           | around in 2010 of course).
        
           | zeckalpha wrote:
           | Pascal and Ada are Algol syntaxed relative to most languages.
        
         | rwmj wrote:
         | Out of interest, was Tcl considered? It's the original
         | embeddable language.
        
           | andrewshadura wrote:
           | Wasn't the original Redis prototype written _in_ Tcl?
        
             | dontdoxxme wrote:
             | Yes, previously:
             | https://news.ycombinator.com/item?id=35989909
             | 
             | The Redis test suite is still written in Tcl:
             | https://news.ycombinator.com/item?id=9963162 (although more
             | recently antirez said somewhere he wished he'd written it
             | in C for speed)
        
           | rogerbinns wrote:
           | In 1994 at the second WWW conference we presented "An API to
           | Mosaic". It was TCL embedded inside the (only![1]) browser at
           | the time - Mosaic. The functionality available was
           | substantially similar to what Javascript ended up providing.
           | We used it in our products especially for integrating help
           | and preferences - for example HTML text could be describing
           | color settings, you could click on one, select a colour from
           | the chooser and the page and setting in our products would
           | immediately update. In another demo we were able to print
           | multiple pages of content from the start page, and got a
           | standing ovation! There is an alternate universe where TCL
           | could have become the browser language.
           | 
           | For those not familiar with TCL, the C API is flavoured like
           | main. Callbacks take a list of strings argv style and an argc
           | count. TCL is stringly typed which sounds bad, but the data
           | comes from strings in the HTML and script blocks, and the
           | page HTML is also text, so it fits nicely and the C callbacks
           | are easy to write.
           | 
           | [1] Mosaic Netscape 0.9 was released the week before
        
         | spacechild1 wrote:
         | > it feels like it departs from what people know without good
         | reasons.
         | 
         | Lua is a pretty old language. In 1993 the world had not really
         | settled on C style syntax. Compared to Perl or Tcl, Lua's
         | syntax seems rather conventional.
         | 
         | Some design decisions might be a bit unusual, but overall the
         | language feels very consistent and predictable. JS is a mess in
         | comparison.
         | 
         | > because it departs from a more Algol-like syntax
         | 
         | Huh? Lua's syntax is actually very Algol-like since it uses
         | keywords to delimit blocks (e.g. if ... then ... end)
        
           | lioeters wrote:
           | > consistent and predictable
           | 
           | That's what matters to me, not how similar Lua is to other
           | languages, but that the language is well-designed in its own
           | system of rules and conventions. It makes sense, every part
           | of it contributes to a harmonious whole. JavaScript on the
           | other hand.
           | 
           | When speaking of Algol or C-style syntax, it makes me imagine
           | a "Common C" syntax, like taking the best, or the least
           | common denominator, of all C-like languages. A minimal subset
           | that fits in your head, instead of what modern C is turning
           | out to be, not to mention C++ or Rust.
        
             | procaryote wrote:
             | Is modern C really much more complicated than old C? C++ is
             | a mess of course.
        
               | lioeters wrote:
               | I don't write modern C for daily use, so I can't really
               | say. But I've been re-learning and writing C99 more these
               | days, not professionally but personal use - and I
               | appreciate the smallness of the language. Might even say
               | C peaked at C99. I mean, I'd be crazy to say that C-like
               | languages after C99, like Java, PHP, etc., are all
               | misguided for how unnecessarily big and complex they are.
               | It might be that I'm becoming more like a caveman
               | programmer as I get older, I prefer dumb primitive tools.
        
           | lucketone wrote:
           | I known for very long time that c (and co) inherited the
           | syntax from algol.
           | 
           | But only after long time I tried to check what Algol actually
           | looked like. To my surprise, Algol does not look anything
           | like C to me.
           | 
           | I would be quite interested in the expanded version of "C has
           | inherited syntax from Algol"
           | 
           | Edit: apparently the inheritance from Algol is a formula:
           | lexical scoping + value returning functions (expression
           | based) - parenthesitis. Only last item is about visual part
           | of the syntax.
           | 
           | Algol alternatives were: cobol, fortan, lisp, apl.
        
             | spacechild1 wrote:
             | The use of curly braces for delimiting blocks of code
             | actually comes from BCPL.
             | 
             | Of course, C also inherited syntax from Algol, but so did
             | most languages.
        
         | norir wrote:
         | I don't love a good deal of Lua's syntax, but I do think the
         | authors had good reasons for their choices and have generally
         | explained them. Even if you disagree, I think "without good
         | reasons" is overly dismissive.
         | 
         | Personally though, I think the distinctive choices are a boon.
         | You are never confused about what language you are writing
         | because Lua code is so obviously Lua. There is value in this.
         | Once you have written enough Lua, your mind easily switches in
         | and out of Lua mode. Javascript, on the other hand, is filled
         | with poor semantic decisions which for me, cancel out any
         | benefits from syntactic familiarity.
         | 
         | More importantly, Lua has a crucial feature that Javascript
         | lacks: tail call optimization. There are programs that I can
         | easily write in Lua, in spite of its syntactic verbosity, that
         | I cannot write in Javascript because of this limitation.
         | Perhaps this particular JS implementation has tco, but I doubt
         | it reading the release notes.
         | 
         | I have learned as much from Lua as I have Forth (SmallTalk
         | doesn't interest me) and my programming skill has increased
         | significantly since I switched to it as my primary language.
         | Lua is the only lightweight language that I am aware of with
         | TCO. In my programs, I have banned the use of loops. This is a
         | liberation that is not possible in JS or even c, where TCO
         | cannot be relied upon.
         | 
         | In particular, Lua is an exceptional language for writing
         | compilers. Compilers are inherently recursive and thus
         | languages lacking TCO are a poor fit (even if people have been
         | valiantly forcing that square peg through a round hole for all
         | this time).
         | 
         | Having said all that, perhaps as a scripting language for
         | Redis, JS is a better fit. For me though Lua is clearly better
         | than JS on many different dimensions and I don't appreciate the
         | needless denigration of Lua, especially from someone as
         | influential as you.
        
           | lioeters wrote:
           | > as my primary language
           | 
           | I'd love to hear more how it is, the state of the library
           | ecosystem, language evolution (wasn't there a new major
           | version recently?), pros/cons, reasons to use it compared to
           | other languages.
           | 
           | About tail-calls, in other languages I've found sometimes a
           | conversion of recursive algorithm to a flat iterative loop
           | with stack/queue to be effective. But it can be a pain, less
           | elegant or intuitive than TCO.
        
             | alexdowad wrote:
             | Lua isn't my primary programming language now, but it was
             | for a while. My personal experience on the library
             | ecosystem was:
             | 
             | It's definitely smaller than many languages, and this is
             | something to consider before selecting Lua for a project.
             | But, on the positive side: With some 'other' languages I
             | might find 5 or 10 libraries all doing more or less the
             | same thing, many of them bloated and over-engineered. But
             | with Lua I would often find just one library available, and
             | it would be small and clean enough that I could easily read
             | through its source code and know exactly how it worked.
             | 
             | Another nice thing about Lua when run on LuaJIT: extremely
             | high CPU performance for a scripting language.
             | 
             | In summary: A better choice than it might appear at first,
             | but with trade-offs which need serious consideration.
        
           | xonix wrote:
           | Re: TCO
           | 
           | Does the language give any guarantee that TCO was applied? In
           | other words can it give you an error that the recursion is
           | not of tail call form? Because I imagine a probability of
           | writing a recursion and relying on it being TCO-optimized,
           | where it's not. I would prefer if a language had some form of
           | explicit TCO modifier for a function. Is there any language
           | that has this?
        
             | stellartux wrote:
             | Sounds a bit like Clojure's "recur".
             | https://clojuredocs.org/clojure.core/recur
        
             | ZiiS wrote:
             | At least in Lua then the rule is simply 'last thing a
             | function dose' this is unambiguous. `return f()` is always
             | a tail call and `return f() + 1` never is.
        
             | draven wrote:
             | Scala has the @tailrec annotation which will raise a
             | _warning_ if the function can't be TCO'd
        
             | alexisread wrote:
             | Although it's a bit weird, Able Forth has the explicit word
             | ~
             | 
             | https://github.com/ablevm/able-forth/blob/current/forth.scr
             | 
             | I do prefer this as it keeps the language more regular
             | (fewer surprises)
        
           | shawn_w wrote:
           | >Lua is the only lightweight language that I am aware of with
           | TCO.
           | 
           | Scheme is pretty lightweight.
        
           | unclad5968 wrote:
           | > I do think the authors had good reasons for their choices
           | and have generally explained them
           | 
           | I'm fairly certain antirez is the author of redis
        
         | garganzol wrote:
         | JavaScript in 2010 was a totally different beast,
         | standartization-wise. Lots of sharp corners and blank spaces
         | were still there.
         | 
         | So, even if an implementation like MicroQuickJS existed in
         | 2010, it's unlikely that too many people would have chosen JS
         | over Lua, given all the shortcomings that JavaScript had at the
         | time.
        
         | hnlmorg wrote:
         | Lua only departs from norms if you've had a very narrow
         | experience with other programming languages.
         | 
         | Frankly, I welcome the fact that Redis doesn't use JavaScript.
         | It's an abomination of a language. The fewer times I need to
         | use it the better.
        
         | zeckalpha wrote:
         | Redis' author also made jimtcl, so I don't think the lack of a
         | small engine was the gap
        
           | debugnik wrote:
           | You're replying to Redis' author.
        
       | p0w3n3d wrote:
       | I wonder when does he have time to do those marvellous things
        
       | diimdeep wrote:
       | I find frustrating that imagination of very smart, talented and
       | capable people is captured by JavaScript language, surely they
       | could have done better.
        
       | foresto wrote:
       | I wonder if this could become the most lightweight way for yt-dlp
       | to solve YouTube Javascript challenges.
       | 
       | https://github.com/yt-dlp/yt-dlp/wiki/EJS
       | 
       | (Note that Bellard's QuickJS is already a supported option.)
        
         | silverwind wrote:
         | Likely not, given that it only implements ES5.
        
         | qbane wrote:
         | Not likely:
         | 
         | > It only supports a subset of Javascript close to ES5 [...]
         | 
         | I have not read the code of the solver, but solving YouTube's
         | JS challenge is so demanding that the team behind yt-dlp
         | ditched their JS emulator written in Python.
        
       | notorandit wrote:
       | This guy is incredible. Lzexe, Qemu, TinyCC to name just a few
       | gems.
        
       | dangoodmanUT wrote:
       | this would be a killer replacement for micro/circuitpython for
       | embedded devices, assuming there's an elegant TS->MQJS transpile
        
         | idle_zealot wrote:
         | It looks like if you write the acceptable MQJS subset of
         | JS+types, then run your code through a checker+stripper that
         | doesn't try to inject implementations of TS's enums and such it
         | should just work?
        
         | halfmatthalfcat wrote:
         | It's not even the languages or runtimes that inhibit embedded
         | adoption but the software to hardware tooling. Loader scripts,
         | HAL/LL/CMSIS, flashing, etc. They all suck.
        
       | simonw wrote:
       | If anyone wants to try out MicroQuickJS in a browser here's a
       | simple playground interface for executing a WebAssembly compiled
       | version of it: https://tools.simonwillison.net/microquickjs
       | 
       | It's a variant of my QuickJS playground here:
       | https://tools.simonwillison.net/quickjs
       | 
       | The QuickJS page loads 2.28 MB (675 KB transferred). The
       | MicroQuickJS one loads 303 KB (120 KB transferred).
        
       | yeasku wrote:
       | I wonder if AI is so good why dont we have this kind of software
       | released by people here who yap about it.
        
       | theandrewbailey wrote:
       | > It compiles and runs Javascript programs with as low as 10 kB
       | of RAM.
       | 
       | Just in time for RAM to become super expensive. How easy would it
       | be to shove this into Chromium and Electron?
        
         | jraph wrote:
         | Hard because of web compatibility.
         | 
         | The good news is that it would probably not matter much for
         | chromium's memory footprint anyway...
        
       ___________________________________________________________________
       (page generated 2025-12-23 23:00 UTC)