14 ms·
Fabrice Bellard Releases MicroQuickJS
- booi 10mo agoIf there were a software engineering hall of fame, I nominate Fabrice.
- bArray 10mo agoIf 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 10mo agorare 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 10mo agoHe 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-du-bpg-discute-de-son-format https://www.macplus.net/depeche-82364-interview-le-createur-... https://www.mo4tech.com/fabrice-bellard-one-man-is-worth-a-team-of-100.html 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 10mo agoHe has probably has no time for interviews and just focuses on working on his many projects.
- appreciatorBus 10mo agoI often think the world would be a better place if more people in the tech industry follow this philosophy.
- hn_throwaway_99 10mo agoI 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 10mo agoThere 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 https://en.wikipedia.org/wiki/Turing_Award
- svat 10mo agoPossibly more relevant is the "ACM Software System Award": https://en.wikipedia.org/w/index.php?title=ACM_Software_System_Award&oldid=1311883831 https://en.wikipedia.org/w/index.php?title=ACM_Software_Syst...
- AtlasBarfed 10mo agoLinux and Torvalds hasn't gotten one?
- hn_throwaway_99 10mo agoThe 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 10mo agoFabrice is certainly very skilled in CS, but his achievements are more in software implementation IMO. AIUI the Turing award is primarily CS focused.
- sxp 10mo agoBetween ffmpeg and qemu, I always think of https://xkcd.com/2347/ https://xkcd.com/2347/ when I see Fabrice's work. Especially since ffmpeg provides the backbone of almost all video streaming systems today.
- makapuf 10mo agoExcept that ffmpeg and qemu are not maintained by Fabrice. He's one of the greatest programmers but he's not maintaining the internet.
- treavorpasan 10mo agoI suppose that if he were to maintain any of these projects, we would never see the new frontiers he has been conquering.
- IlikeMadison 10mo agoBellard it the most genius programmer to ever exist, and the least known compared to other pseudo stars.
- textlapse 10mo agoHis 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.
- baudaux 10mo agoI easily managed to build quickJS to WebAssembly for running in https://exaequOS.com https://exaequOS.com . So I need to do the same for MicroQuickJS !
- MobiusHorizons 10mo agoI'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 10mo agoIt 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 10mo agoIs 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 10mo agoMaybe 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
- timschumi 10mo agoIt'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 10mo agoMaybe he just oneshotted it
- agumonkey 10mo agoMaybe claude code uses bellard as agent
- MisterTea 10mo agoClaude is really Bellard sitting in his kitchen, sipping coffee, casually replying to code requests while getting ready for his day.
- oblio 10mo agoA 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 10mo agoThis explains a lot. Opus 4.5 gives you access to Bellard after his second cup of coffee.
- deafpolygon 10mo agoIs Bellard the “Chuck Norris” of Programming?
- StopDisinfo910 10mo ago
- alcover 10mo agoI 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 10mo agoI 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 10mo agoOh they would care if one shows them much snappier versions of services they use. They just don't know better.
- makapuf 10mo agoMaybe 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 10mo agoMy 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 10mo agoYou can just use HTML4 if you want, it's already supported and standardized. Markdown is very much not.
- zamadatix 10mo agoOn 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 10mo agoI think it means you can't assign to unbounded names, you must either declare with var for global, or let/const for local
- lioeters 10mo agoI'm guessing the use of undeclared variables result in an error, instead of implicitly creating a global variable.
- MobiusHorizons 10mo agoit 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 10mo agoClarification 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-sandbox/README.md https://github.com/simonw/research/blob/main/mquickjs-sandbo... PR and prompt I used here: https://github.com/simonw/research/pull/50 https://github.com/simonw/research/pull/50 - using this pattern: https://simonwillison.net/2025/Nov/6/async-code-research/ https://simonwillison.net/2025/Nov/6/async-code-research/
- simonw 10mo agoDown 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 10mo agoIt 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 10mo agoForget 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.
- T3RMINATED 10mo ago[dead]
- MattGrommes 10mo agoI'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?
- redfloatplane 10mo agoSort 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.
- niutech 10mo agoThere are still Espruino JS devices.
- halfmatthalfcat 10mo agoThere are already libraries/frameworks that have supported this: * espruino (https://www.espruino.com/ https://www.espruino.com/) * elk (https://github.com/cesanta/elk https://github.com/cesanta/elk) * DeviceScript (Microsoft Research's now defunct effort, https://github.com/microsoft/devicescript https://github.com/microsoft/devicescript)
- niutech 10mo agoAnd also Duktape (https://duktape.org https://duktape.org)
- 15155 10mo agoYes. The key enabling feature is a lack of malloc()
- cxr 10mo ago
- chunkles 10mo agoTiming really is everything for making the frontpage, I posted this last night and it got no traction.
- self_awareness 10mo agoSome 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.
- Wowfunhappy 10mo agoI suspect it's just random luck, not timing.
- pizlonator 10mo agoThis 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 10mo agoHe already has a JS engine which doesn’t make these restrictions
- pizlonator 10mo agoYeah 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 10mo ago> 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.
- ddtaylor 10mo agoFabrice Bellard is widely considered one of the most productive and versatile programmers alive: - FFmpeg: https://bellard.org https://bellard.org - QEMU: https://bellard.org/qemu/ https://bellard.org/qemu/ - JSLinux: https://bellard.org/jslinux/ https://bellard.org/jslinux/ - TCC: https://bellard.org/tcc/ https://bellard.org/tcc/ - QuickJS: https://bellard.org/quickjs/ https://bellard.org/quickjs/ Legendary.
- bborud 10mo agoAnd that’s just his open source work.
- justmarc 10mo agoDon't forget his LZEXE from the good old DOS days which was an excellent piece of work at the time.
- sedatk 10mo agoSelf-decompressing executables felt like magic to me at the time. Fantastic work, overall.
- phatskat 10mo agoReading about APE similarly sparkled me - the amount of ingenuity and sheer amazingness (if not perhaps a touch of depravity) that goes into these kinds of endeavors is awe inspiring.
- lioeters 10mo agoI 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 10mo agoDon't forget his LLM based text compression software that won awards. Guy is a genius. I hope he tries Rust someday
- Reubend 10mo agoWhen 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 10mo agoI 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#:~:text=Date:%20only%20Date.now()%20is%20supported. https://github.com/bellard/mquickjs/blob/main/README.md#:~:t...
- Reubend 10mo agoGood catch. I didn't realize that there was a longer list of restrictions below the section called "Stricter mode", and it seems like a lot of String functions I use are missing too.
- MobiusHorizons 10mo ago> String functions: codePointAt, replaceAll, trimStart, trimEnd. As I read it, these are supported es5 extensions, not missing as part of stricter mode.
- Lockal 10mo agoGlad to see a project of Fabrice Bellard on github, finally. I know many great opensource projects exist without public development (notably, sqlite), but is always disappointing to have no public bug tracker, no patch submission, no commit history, contact by email, tarballs (even with a signature, tooling for signed downloads never received any development), etc.
- eichin 10mo agoAnyone 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.)
- throwaway81523 10mo agoI haven't used Espruino but I spent a while perusing the source code. At least at the time, the implementation strategy was very slow. I lost interest in it in favor of Lua and Micropython.
- ea016 10mo agoWell, 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 https://en.wikipedia.org/wiki/Jeff_Atwood
- tacone 10mo agoSounds a bit like rule 35 of the Internet.
- deleted 10mo ago[deleted]
- arendtio 10mo agoWell, 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-riscv.cfg&mem=256 https://bellard.org/jslinux/vm.html?cpu=riscv64&url=fedora33...
- kzrdude 10mo agoAnd thanks to that we can run Linux in a PDF as well..
- tombert 10mo agoFabrice is an absolute legend. Most people would be content with just making QEMU, but this guy makes TinyC and FFmpeg and QuickJS and MicroQuickJS and a bunch of other huge projects. I am envious that I will never anywhere near his level of productivity.
- mtlynch 10mo agoPeople 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 10mo agoThat 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 10mo agoI wonder how do you not understand this was a joke. Did you not fully read it? Or it's just not obvious enough?
- voxelghost 10mo agoWhen you code with butterflies, you code at the speed of flight. https://www.xkcd.com/378/ https://www.xkcd.com/378/
- andoando 10mo agoDoesn'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 10mo agoIt'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 10mo agoLove it! Needing only 10K of RAM, it looks like a much better solution to CircuitPython (can squeeze into 32K).
- antirez 10mo agoIf 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 10mo agoIt 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%20language%20skin https://hn.algolia.com/?type=comment&prefix=true&query=cxr%2...> 2. <https://old.reddit.com/r/Oberon/comments/1pcmw8n/is_this_sacrilege/nt18w18/?context=3 https://old.reddit.com/r/Oberon/comments/1pcmw8n/is_this_sac...>
- nine_k 10mo agoNot "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 10mo agoPeople fight about tab sizes all the time though.
- 10mo ago
- p0w3n3d 10mo agoI wonder when does he have time to do those marvellous things
- diimdeep 10mo agoI find frustrating that imagination of very smart, talented and capable people is captured by JavaScript language, surely they could have done better.
- foresto 10mo agoI 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 https://github.com/yt-dlp/yt-dlp/wiki/EJS (Note that Bellard's QuickJS is already a supported option.)
- silverwind 10mo agoLikely not, given that it only implements ES5.
- qbane 10mo agoNot 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.
- deleted 10mo ago[deleted]
- AndyKelley 10mo agoThat's a great idea, but if they did, then YouTube could retaliate by specifically using features that MicroQuickJS does not support.
- foresto 10mo agoOf course... The arms race is eternal. :)
- leptons 10mo agoThere's no reason it has to be lightweight, what it has to do is solve Youtube challenges without workarounds due to limited Javascript syntax.
- notorandit 10mo agoThis guy is incredible. Lzexe, Qemu, TinyCC to name just a few gems.
- dangoodmanUT 10mo agothis would be a killer replacement for micro/circuitpython for embedded devices, assuming there's an elegant TS->MQJS transpile
- idle_zealot 10mo agoIt 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 10mo agoIt’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.
- curtisblaine 10mo agoI don't think you can transpile arbitrary TS in mqjs's JS subset. Maybe you can lint your code in such a way that certain forbidden constructs fail the lint step, but I don't think you can do anything to avoid runtime errors (i.e. writing to an array out of its bonds).
- simonw 10mo agoIf 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 https://tools.simonwillison.net/microquickjs It's a variant of my QuickJS playground here: https://tools.simonwillison.net/quickjs https://tools.simonwillison.net/quickjs The QuickJS page loads 2.28 MB (675 KB transferred). The MicroQuickJS one loads 303 KB (120 KB transferred).
- azakai 10mo agoLooks like those sizes could be improved significantly, as the builds include names etc. I would suggest linking with emcc -O3 (and maybe even adding --closure 1 ) edit: actually the QuickJS playground looks already optimized - just the MicroQuickJS one could be improved.
- simonw 10mo agoNice. Got it down from 229KB to 148KB! Thanks for the tips. https://github.com/simonw/research/pull/5 https://github.com/simonw/research/pull/5 Thats now live on https://tools.simonwillison.net/microquickjs https://tools.simonwillison.net/microquickjs
- julenx 10mo agoThanks for sharing! The link to the PR looks like a wrong paste. I found https://github.com/simonw/tools/pull/181 https://github.com/simonw/tools/pull/181 which seems to be what was intended to be shared instead.
- kamranjon 10mo agoI was interested to try Date.now() since this is mentioned as being the only part of the Date implementation that is supported but was surprised to find it always returns 0 for your microquickjs version - your quickjs variant appears to return the current unix time.
- 10mo ago
- anita_ 10mo ago[dead]
- yeasku 10mo agoI wonder if AI is so good why dont we have this kind of software released by people here who yap about it.
- theandrewbailey 10mo ago> 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 10mo agoHard because of web compatibility. The good news is that it would probably not matter much for chromium's memory footprint anyway...
- nmz 10mo agoThis makes me wonder, is there analysis of the syntax and if so can't it pick the lightest implementation? I see how light dillo is on the same page as chrome and I don't know why a web browser of the caliber of chrome does so much worse than a browser worked by a handful of people.
- jumbledoor 10mo ago[dead]
- jgrizou 10mo agoWhat is the difference with https://www.espruino.com/ https://www.espruino.com/ ?
- mrmagoo17 10mo agoThis is a hell of a Christmas present, Mr. Santa Bellard!
- bmc7505 10mo agoInteresting. I wonder if mqjs would make it feasible to massively parallelize JavaScript on the GPU. I’m looking for a way to run thousands of simultaneous JS interpreters, each with an isolated heap and some shared memory. There are some research projects [1, 2] in this direction, but they are fairly experimental. [1]: https://github.com/SamGinzburg/VectorVisor https://github.com/SamGinzburg/VectorVisor [2]: https://github.com/beehive-lab/ProtonVM https://github.com/beehive-lab/ProtonVM
- noduerme 10mo ago>> Arrays cannot have holes. Writing an element after the end is not allowed: a = [] a[0] = 1; // OK to extend the array length a[10] = 2; // TypeError If you need an array like object with holes, use a normal object instead Guess I'm a bit fuzzy on this, I wouldn't use numeric keys to populate a "sparse array", but why would it be a problem to just treat it as an iterable with missing values undefined? Something to do with how memory is being reserved in C...? If someone jumps from defining arr[0] to arr[3] why not just reserve 1 and 2 and inform that there's a memory penalty (ie that you don't get the benefit of sparseness)?
- aapoalas 10mo agoGuidance towards correct usage: eg. If you allow `a[10] = 2` and just make the Array dense, the user might not even realise the difference and will assume it's sparse. Next they perform `a[2636173747] = 3` and clog up the entire VM memory or just plain crash it from OOM. Since it's likely that the small indexes appear in testing and the large indexes appear in production, it is better to make the misunderstanding an explicit error and move it "leftwards" in time, so that it doesn't crash production at an inopportune moment.
- noduerme 10mo agoSo it's guidance. Does V8 just treat those as an object?
- aiddun 10mo agoVery excited about this. I was programming an ESP32 for a project recently and was like, computer chips are fast enough, why can't I just write TypeScript?
- rounce 10mo agoThere is already Espruino[0], it’s more free in terms of syntactic support but it’s also bigger. 0: https://www.espruino.com/ESP32 https://www.espruino.com/ESP32
- rcarmo 10mo agoNow all we need is a Fennel-like LISP on top.
- g947o 10mo agoLooks like the real "JavaScript: The Good Parts"
- aapoalas 10mo agoAs a fellow (but way junior) JavaScript engine developer I'm really happy to see the stricter mode, and especially Arrays being dense while Objects don't treat indexed properties specially at all: it is my opinion that this is where we should drive JavaScript towards, slow and careful though it may be. In my engine Arrays are always dense from a memory perspective and Objects don't special case indexes, so we're on the same page in that sense. I haven't gotten around to creating the "no holes" version of Array semantics yet, and now that we have an existing version of it I believe I'll fully copy out Bellard's semantics: I personally mildly disagree with throwing errors on over-indexing since it doesn't align with TypedArrays, but I'd rather copy an existing semantic than make a nearly identical but slightly different semantic of my own.
- t43562 10mo agoSounds like a competitor for Micropython on all those little RP2350 and ESP boards.
- keepamovin 10mo agoFabrice, Mr Bellard, O Indefatigable One, if you are reading this, I would love for you to make a JavaScript that compiles to assembly and works across Windows PE, macOS and Linux. Surrendering the various efficiencies of the V8 JIT bytecode in favor of AOT is entirely acceptable for the concision, speed and the chance to "begin again" that this affords. In fact, I believe you may already be working on such an idea! If you are not (highly doubtful) I encourage you to ponder it, and if we are so lucky and the universe wills it, you shall turn the hand of your incomparable craftsmanship upon this worthy goal, and doubtless such a magnificent creation shall be realized by you in a surprisingly short amount of time!
- nektro 10mo agoyou might be interested in the future of https://porffor.dev/ https://porffor.dev/
- keepamovin 10mo agoOh, this is excellent! I'm so happy with this. This is EXCELLENT! and what a beautiful website. Is this your project? So cool. Where did the name come from? I am so stoked and glad that we are going to have a JS to native binary compiler. The best thing ever! I was going to set up an AI automation to run on this against the autotests, but as I got started, I felt - why not just create a new language where I can pick my own concurrency paradigms and syntax? So I went with that instead. So glad someone is doing this. What more do you know about this proejct, kind person?
- aapoalas 10mo agoThis is Oliver Medhurst' project: https://goose.icu/ https://goose.icu/ It has stable funding and a full-time development team of 1.
- franze 10mo agoFeel free to check out this MicroQickJS WASM port (100% Claude Code generated) Demo Page https://mquickjs-claude-code.franzai.com/ https://mquickjs-claude-code.franzai.com/ Show HN https://news.ycombinator.com/item?id=46376296 https://news.ycombinator.com/item?id=46376296
- polyrand 10mo agoNot sure about the impact of these, I guess it depends on the context where this engine is used. But there seems to be already exploits for the engine: https://x.com/itszn13/status/2003707921679679563 https://x.com/itszn13/status/2003707921679679563 https://x.com/itszn13/status/2003808443761938602 https://x.com/itszn13/status/2003808443761938602
- conoro 10mo agoAs a long-time Espruino user I was immediately interested. At first glance Espruino has broader coverage including quite a bit of ES6 and even up to parts of ES2020. (https://www.espruino.com/Features https://www.espruino.com/Features). And obviously has a ton of libraries and support for a wide range of hardware. For a laugh, and to further annoy the people annoyed by @simonw's experiments, I got Cursor to butcher it and run as a REPL on an ESP32-S3 over USB-Serial using ESP-IDF. Blink is now running so my work here is done :-) led.init(48) function blink() { led.rgb(0, 0, 255) setTimeout(function() { led.off(); setTimeout(blink, 500) }, 500) } blink()
- tracker1 10mo agoSound like this would have been a good option for PLJS in PostgreSQL (currently using QuickJS), not sure if it'd be appropriate to consider a switch or if that would/could improve availability... IMO interaction with JSON(B) and other json and objects being the biggest usefulness.
- noreplydev 10mo agohow anyone explore extending the stdlib for hardware specific features?
- itsangaris 10mo agoIs there a static analyzer/linter associated with this environment that can flag potential runtime issues upfront?
- stackedinserter 10mo agoIt gives me strong ffserver flashbacks.
- ProofHouse 10mo agohttps://textarea.my/#7dsxaiNbEEDRvFcxWzEIb0ArEAgFkjLtHwYzMHm_P8F_dU8kjNSc6govrs_98bk_bp-_H6_38_7-vJ6P1_v2_Nwf79fz9X7-fHMcnzM_Pr4u18fxdXxdLz9_XS_H9-3PY-_H63O7vx7P9-t5HMft87h_Hp_bz-PH5fj-ut4fx_Xy_XW9fCORyH9PPv789v5f6V9bvC0SiUQikUgkEolE_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 https://textarea.my/#7dsxaiNbEEDRvFcxWzEIb0ArEAgFkjLtHwYzMHm...
- yoan9224 10mo agobellard is basically proof that the "10x engineer" exists. ffmpeg, qemu, quickjs, and now this... all from one person. the fact that he can optimize a js engine down to 10kb of ram is wild. would love to see this on esp32 boards
- vkdelta 10mo agoWhat use-cases do you think it would help on esp32?
- fcoury 10mo agoJust published a rust wrapper if anyone plan on embedding it like I do: https://github.com/fcoury/mquickjs-rs https://github.com/fcoury/mquickjs-rs
- artemonster 10mo agoI wonder what "hurr durr gotos are bad" crowd would say. Anyone?
- rurban 10mo agoAnd most importantly, it brought him out to interact with the public. He answered PR's!
- pvtmert 10mo agoThis is going to be one of the most upvoted submissions on HN
- throwaway81523 10mo agoOld thread but I just saw it. My first question is whether it's sane to want to target Typescript or Purescript to it.