11 ms·
JSLinux Now Supports x86_64
- AlecMurphy 6mo agoIf anyone is interested, I made some modifications last month to get TempleOS running on the x86_64 JSLinux: https://ring0.holyc.xyz/ https://ring0.holyc.xyz/
- zb3 6mo agoWow, thanks for this, this is exactly what v86 was missing! Runs faster than my demo: https://zb3.me/qemu-wasm-test/jspi-noffi/ https://zb3.me/qemu-wasm-test/jspi-noffi/ Even though it has no JIT. Truly magic :)
- sylware 6mo agoI am almost sure it was done so carefully that you can extract it from the abominations which are the whatng cartel web engines with a direct to OS abstraction layer that with only some little amount of work.
- petcat 6mo agoI've always been fascinated by this, but I have never known what it would be useful for. Does anyone know of any practical use cases?
- varun_ch 6mo agoMaybe if you’ve got some ancient software that’s missing source code and only runs with X Y and Z conditions, you could continue to offer it on the web and build around it like that? Not sure if that would be practical at all, but could be interesting
- maxloh 6mo agoMy college professor used it to teach us the Linux command line We have Windows PCs in the classroom.
- jgtrosh 6mo agoSimilarly I've used it for technical interviews.
- omoikane 6mo agoI use bellard.org/jslinux to test compilation of strange code sometimes[1], since it came with compilers that are different versions from what I have installed locally, and it's easier to open up a browser than starting a VM. [1] For example: https://www.ioccc.org/2020/yang/index.html#:~:text=tcc%200.9.25%20on-,JSLinux,-Output%20of%20Mile https://www.ioccc.org/2020/yang/index.html#:~:text=tcc%200.9... https://www.ioccc.org/2018/yang/index.html#:~:text=tcc%200.9.25%20on-,JS/Linux,-Nuko%20compiles%20without https://www.ioccc.org/2018/yang/index.html#:~:text=tcc%200.9...
- s-macke 6mo agoMost such emulators have Internet access on the IP level. Therefore, this is a very cheap way to test anything on the Internet. apk add nmap nmap your.domain.com However, the speed is heavily throttled. You can even use ssh and login to your own server. It can also be used as a very cheap way to provide a complete build environment on a single website, for example to teach C/C++. Or to learn the shell. You don't have to install anything.
- toast0 6mo agoI use a similar emulator (v86) as a way to share my hobby OS. Approximately zero people, even my friends, are going to boot my hobby OS on real hardware; I did manage to convince some of them to run it in qemu, but it's difficult. A browser environment shows the thing quite well; and easy networking is cool too. My hobby OS itself is not very useful, but it's fun if you're in the right mood.
- redleader55 6mo agoAgentic workloads create and then run code. You don't want to just run that code in a "normal" environment like a container, or even a very well protected VM. There are other options, ofc - eg. gvisor, crossvm, firecracker, etc, but this one is uncommon enough to have a small number of attackers trying to hack it.
- srdjanr 6mo agoWhat's wrong with a well protected VM? Especially compared to something where the security selling point is "no one uses it" (according to your argument; I don't know how secure this actually is)
- g947o 6mo agoNothing, but "there are already working options" does not necessarily mean we shouldn't try new (and sometimes weird) things
- TacticalCoder 6mo agoYeah but GP was answering to a comment saying "you don't want to run code in a well protected VM". Which is of course complete non sense to say and GP was right to question it.
- cloudfudge 6mo agoGP says "You don't want to just run that code in ... even a very well protected VM." Why?
- redleader55 6mo agoBecause unless you can fund several teams - kernel, firmware(bios,etc), GPU drivers, qemu, KVM, extra hardening(eg. qemu runs under something like bpfilter) + a red team, security through obscurity is cheaper. The attack surface area is just too large.
- postalrat 6mo agoSome sort of web based archive of applications/etc where you can boot them up in your browser.
- peterburkimsher 6mo agoThat’s what I’d like to use it for as well, but it’s difficult to do so because there’s no way to edit the disk image. Any advice on how to create a JSLinux clone with a specific file pre-installed and auto-launching would be much appreciated!
- shirro 6mo agoWe are a playful species. People enjoy play. If we didn't have to work for a living but still enjoyed food security that is all most of us would do. But we are also a very exploitative species, some more than others. Companies have made billions of dollars on top of Fabrice Bellard's works, qemu, ffmpeg etc. These companies don't have any imagination. Their management has no vision. They could not create anything new and wonderful if they tried. People like Fabrice do and we are all richer for it. If your asking about the practical use you are likely in the exploitative mindset which is understandable on HN. The hacker/geek mindset enjoys this for what it is.
- kristianp 6mo agohttps://infinitemac.org/ https://infinitemac.org/ is an example of a good use: users can try out old versions of Mac OS, to see what's changed and what software used to be available for old versions. It doesn't use JSLinux, but other emulators [1] [1] https://blog.persistent.info/2025/03/infinite-mac-os-x.html https://blog.persistent.info/2025/03/infinite-mac-os-x.html
- Towaway69 6mo agoI guess for the author its learning about how Linux can be ported to the browser. For us, it's more of a nice amusement. But then again, I've never understood why Buddhist monks create sand mandalas[1] and then let them be blown away (the mandalas not the monks!). I think one should see it from the authors PoV instead of thinking "what is in it for me". If I were to use this, then to create digital sand mandalas in the browser! ;) [1]: https://en.wikipedia.org/wiki/Sand_mandala https://en.wikipedia.org/wiki/Sand_mandala
- maxloh 6mo agoUnfortunately, he didn't attach the source code for the 64-bit x86 emulation layer, or the config used to compile the hosted image. For a more open-source version, check out container2wasm (which supports x86_64, riscv64, and AArch64 architectures): https://github.com/container2wasm/container2wasm https://github.com/container2wasm/container2wasm
- zamadatix 6mo agohttps://github.com/copy/v86 https://github.com/copy/v86 might be a more 1:1 fully open sourced alternative.
- maxloh 6mo agoNot really. x86_64 is not supported yet: https://github.com/copy/v86/issues/133 https://github.com/copy/v86/issues/133
- deleted 6mo ago[deleted]
- deleted 6mo ago[deleted]
- zamadatix 6mo agoSure, and there are probably some other things lacking, but JSLinux supports a lot more than CLI Linux userspace on x86-64 too. E.g. compare to lack of graphical interface https://github.com/container2wasm/container2wasm/issues/196 https://github.com/container2wasm/container2wasm/issues/196 It looks like container2wasm uses a forked version of Bochs to get the x86-64 kernel emulation to work. If one pulled that out separately and patched it a bit more to have the remaining feature support it'd probably be the closest overall. Of course one could say the same about patching anything with enough enthusiasm :).
- zoobab 6mo ago"he didn't attach the source code for the 64-bit x86 emulation layer" It's not open source? If that's the case, it should be in his FAQ.
- wolttam 6mo agoI can launch this thing and start making arbitrary connections out to port 25 on the internet from some random IP? Hmm.
- deleted 6mo ago[deleted]
- maxloh 6mo agoFrom the "Technical notes" page: > Access to Internet is possible inside the emulator. It uses the websocket VPN offered by Benjamin Burns (see his blog). The bandwidth is capped to 40 kB/s and at most two connections are allowed per public IP address. Please don't abuse the service. https://bellard.org/jslinux/tech.html https://bellard.org/jslinux/tech.html
- Lockal 6mo agoA somewhat better solution via tailnet you can find in https://webvm.io/ https://webvm.io/
- notorandit 6mo agoIncredible guy!
- westurner 6mo agoHow do TinyEmu and JSLinux compare to linux-wasm? From "Show HN: Amla Sandbox – WASM bash shell sandbox for AI agents" (2026) https://news.ycombinator.com/item?id=46825119 https://news.ycombinator.com/item?id=46825119 : >>> How to run vscode-container-wasm-gcc-example with c2w, with joelseverin/linux-wasm? >> linux-wasm is apparently faster than c2w From "Ghostty compiled to WASM with xterm.js API compatibility" https://news.ycombinator.com/item?id=46118267 https://news.ycombinator.com/item?id=46118267 : > From joelseverin/linux-wasm: https://github.com/joelseverin/linux-wasm https://github.com/joelseverin/linux-wasm : >> Hint: Wasm lacks an MMU, meaning that Linux needs to be built in a NOMMU configuration From https://news.ycombinator.com/item?id=46229385 https://news.ycombinator.com/item?id=46229385 : >> There's a pypi:SystemdUnitParser.
- westurner 6mo agoUBY: touchscreen: How to scroll the scrollback
- blackhaz 6mo agoSorry for the off-topic, but what a bliss to see Windows 2000 interface. And what an absolute abomination from hell pretty much all the modern UIs are.
- shevy-java 6mo agoYeah. Microsoft really went downhill UI-wise.
- MBCook 6mo agoThey’re hardly the only ones.
- cheema33 6mo agoIs that even remotely relevant to JSLinux?
- diabllicseagull 6mo agowin2000 brings back so many good memories.
- stavros 6mo agoMy god that interface feels like home.
- simonw 6mo agoThe thing I most want to use this (or some other WASM Linux engine) for is running a coding agent against a virtual operating system directly in my browser. Claude Code / Codex CLI / etc are all great because they know how to drive Bash and other Linux tools. The browser is probably the best sandbox we have. Being able to run an agent loop against a WebAssembly Linux would be a very cool trick. I had a play with v86 a few months ago but didn't quite get to the point where I hooked up the agent to it - here's my WIP: https://tools.simonwillison.net/v86 https://tools.simonwillison.net/v86 - it has a text input you can use to send commands to the Linux machine, which is pretty much what you'd need to wire in an agent too. In that demo try running "cat test.lua" and then "lua test.lua".
- jraph 6mo agoSimon, this HN post didn't need to be about Gen AI. This thing is really inescapable those days.
- simonw 6mo agoParallel thread: https://news.ycombinator.com/item?id=47311484#47312829 https://news.ycombinator.com/item?id=47311484#47312829 - "I've always been fascinated by this, but I have never known what it would be useful for." I should have replied there instead, my mistake.
- darig 6mo ago[dead]
- stavros 6mo agoI don't know man, I didn't see anyone say "this post didn't need to be about <random topic>", HN has just become allergic to LLMs lately. I'm excited about them and I think discussion on how to combine two exciting technologies are exactly what I'd like to see here.
- bakugo 6mo ago
- shevy-java 6mo agoHe builds epicness.
- jccx70 6mo ago[dead]
- jccx70 6mo ago[dead]
- stjo 6mo agoI love how nonchalantly demonstrates his custom terminal emulator and javascript engine.
- brucehoult 6mo agoOut of interest I tried running my Primes benchmark [1] on both the x86_64 and x86 Alpine and the riscv64 Buildroot, both in Chrome on M1 Mac Mini. Both are 2nd run so that all needed code is already cached locally. x86_64: localhost:~# time gcc -O primes.c -o primes real 0m 3.18s user 0m 1.30s sys 0m 1.47s localhost:~# time ./primes Starting run 3713160 primes found in 456995 ms 245 bytes of code in countPrimes() real 7m 37.97s user 7m 36.98s sys 0m 0.00s localhost:~# uname -a Linux localhost 6.19.3 #17 PREEMPT_DYNAMIC Mon Mar 9 17:12:35 CET 2026 x86_64 Linux x86 (i.e. 32 bit): localhost:~# time gcc -O primes.c -o primes real 0m 2.08s user 0m 1.43s sys 0m 0.64s localhost:~# time ./primes Starting run 3713160 primes found in 348424 ms 301 bytes of code in countPrimes() real 5m 48.46s user 5m 37.55s sys 0m 10.86s localhost:~# uname -a Linux localhost 4.12.0-rc6-g48ec1f0-dirty #21 Fri Aug 4 21:02:28 CEST 2017 i586 Linux riscv64: [root@localhost ~]# time gcc -O primes.c -o primes real 0m 2.08s user 0m 1.13s sys 0m 0.93s [root@localhost ~]# time ./primes Starting run 3713160 primes found in 180893 ms 216 bytes of code in countPrimes() real 3m 0.90s user 3m 0.89s sys 0m 0.00s [root@localhost ~]# uname -a Linux localhost 4.15.0-00049-ga3b1e7a-dirty #11 Thu Nov 8 20:30:26 CET 2018 riscv64 GNU/Linux Conclusion: as seen also in QEMU (also started by Bellard!), RISC-V is a *lot* easier to emulate than x86. If you're building code specifically to run in emulation, use RISC-V: builds faster, smaller code, runs faster. Note: quite different gcc versions, with x86_64 being 15.2.0, x86 9.3.0, and riscv64 7.3.0. [1] http://hoult..rg/primes.txt http://hoult..rg/primes.txt
- dmitrygr 6mo agoMIPS (the arch of which RISCV is mostly a copy) is even easier to emulate, unlike RV it does not scatter immediate bits al over the instruction word, making it easier for an emulator to get immediates. If you need emulated perf, MIPS is the easiest of all
- brucehoult 6mo agoThat's a very small effect in the overall decoding of an instruction even in a pure interpretive emulator, and undetectable in a JIT. Also MIPS code is much larger.
- cxplay 6mo agoThere seems to be an issue with DNS. Did I miss something?
- testifye 6mo agoI've been using the x86_64 Alpine jslinux browser image in Chrome for the last 4 hours - pulling code down via git, building several large packages from source, editing and altering code, and running their test suites. This VM may be 50 times slower than native, but it is rock solid - worked perfectly and is stable. It's simply remarkable.
- joey5403 6mo agohow can I install a openclaw in the jslinux.
- hashkitly 6mo agoAmazing work by Fabrice Bellard as always. The x86_64 support opens up so many possibilities for running modern Linux distributions in the browser.
- bonzini 6mo agoWow, with AVX512 too?? Now I really want to add it to QEMU. :) (For APX I have patches at https://lore.kernel.org/qemu-devel/20260301144218.458140-1-pbonzini@redhat.com/T/ https://lore.kernel.org/qemu-devel/20260301144218.458140-1-p... but I have never tested them on system emulation).
- lxgr 6mo agoIs JSLinux still an interpreter, or does it JIT compile these days? Or are modern JS JITs so good that this is no longer a relevant distinction, i.e. is the performance of a JITted x86 interpreter effectively equivalent to a JITting x86-to-Javascript translator where the result is then itself JIT interpreted?
- bvrmn 6mo agoI bet Fabrice could write JSAndroid which would provide no lag emulation experience.
- akomtu 6mo agoI'm sure he could implement JSWindows that would be faster than the Microsoft's version.
- lasgawe 6mo agoDidn’t know this was possible! Isn’t this open source? I’d like to see how it works. I assume this runs on top of pure WebAssembly.