[HN Gopher] JSLinux
___________________________________________________________________
JSLinux
Author : TechTechTech
Score : 348 points
Date : 2025-04-14 06:27 UTC (1 days ago)
(HTM) web link (www.bellard.org)
(TXT) w3m dump (www.bellard.org)
| skerit wrote:
| I can't seem to get the Linux VMs running (I'm just getting a
| CORS error when it tries to fetch the little text file at
| `https://vfsync.org/u/os/buildroot-riscv64/head` for example),
| but the Windows 2000 one does work. Quite smoothly even.
| dvdkon wrote:
| It only allows bellard.org, not www.bellard.org. Changing the
| domain loads the same webpage, but with CORS working as
| intended.
| cardiffspaceman wrote:
| The TEMU column is not shopping links.
| tombert wrote:
| Fabrice is amazing. The amount of stuff this guy has built is
| utterly incredible.
|
| If I built any one of the things he's built (ffmpeg, qemu, tinyc)
| I would never stop bragging about it. Instead, he just keeps
| hacking on other cool stuff.
| wruza wrote:
| Yeah why don't we learn what he wants and just give it to him,
| in return he'll properly rewrite all the broken shit we have.
| Phones, operating systems, desktop environments, countries,
| appstores, etc.
| ForOldHack wrote:
| This is literally a brilliant idea. This guy needs a
| Macarthur grant now. Even if he rewrites half of all the
| broken shit we have, (and takes all of 20 years to do it) the
| world will be a better place. Except for _ which will always
| be a ___ hole.
| ForOldHack wrote:
| Redmond.
|
| This guy should have had a Macarthur grant a decade ago.
|
| The list of brilliant stuff he has done is longer than my
| arm, and I have long arms.
| melvinroest wrote:
| Just writing a comment here to support this idea as much as
| I can on HN.
|
| I also upvoted all the comments mentioning that he should
| have a grant. In my opinion, he really should have.
| throwaway2037 wrote:
| As I understand, he was born in France, so probably a
| French national. According to Wiki
| (https://en.wikipedia.org/wiki/MacArthur_Fellows_Program),
| he needs to be a citizen or resident of the US to qualify.
| Bummer. Better idea: Get some crypto-bros to donate 5-10B
| USD in Bitcoin into a foundation so we can create the
| international version.
| keepamovin wrote:
| There's enough money on HN (the demographics) that some
| wealthy benefactors in a WhatsApp group could just donate
| it to him. No excuses, get behind ICs.
|
| Of course, back in Renaissance days it was the ICs/artists
| job to court benefactors -- though sometimes they did
| approach unsolicited.
|
| Maybe he already has patronage but he doesn't want to flash
| it around...
| yason wrote:
| I can imagine he wouldn't be interested in any of that. The
| joy of hacking only emerges when there are no external
| demands. That's why work sucks and you need to pay people to
| work for your demands.
| IggleSniggle wrote:
| Yup. I can't even enjoy hacking if the taskmaster is MYSELF
| phanimahesh wrote:
| Yes! I'm looking for ways to trick myself or otherwise
| convince myself to make progress on any of the bazillion
| totally awesome ideas I keep accumulating. Or one of the
| many projects I start and abandon midway
| throwaway889900 wrote:
| Sounds like you need an Alex Horne.
| underdeserver wrote:
| Wait, countries?
| 6510 wrote:
| A lot of countries picked the low hanging fruit but the
| trees are very tall.
|
| When making an application one should look from the user
| perspective.
|
| Say you want to start a business. You edit the profile
| page, check the entrepreneur box, it goes into a kind of
| _supper pursuit mode_ with menus folding out, you fill out
| the company name, >>click<< the button to generate a bank
| number, a tax number, a registration number, a phone
| number, a domain name, hosting, etc If you sell something
| it goes into the bank account and sales tax or vat is
| subtracted. You press the add employee button, pick a
| standard contract and fill out the hours per week. Salaries
| will come out of your government bank account with income
| tax subtracted automatically. The generated website lists
| your products and services and is aggregated into a
| complete country-wide db with everything in it and a
| glorious search interface. Investors can log in on the
| website automatically. Upload the business plan if you have
| one so that AI can give you free money.
|
| Real estate listings pop up, the right machines to buy,
| office equipment, potential employees...
|
| An agenda is generated with a list of people the AI thinks
| you should be talking to. Check the box to plan the
| appointments.
|
| Add music, sound effects and animations to everything as if
| we are 5 years old.
| benterix wrote:
| > in return he'll properly rewrite all the broken shit we
| have
|
| Probably that's exactly what he doesn't want.
| danielEM wrote:
| 100% agree, would like to meet that guy one day
| ForOldHack wrote:
| Please - anyone - announce a talk he is going to give. I
| would listen to him. I just heard Vint Cerf speak on martian
| probe networking.
| NetOpWibby wrote:
| I know what I'm listening to when I wake up
| dingdingdang wrote:
| I know for a fact that ppl are serious on hn when they
| post in their sleep without any fanfare whatsoever
| p0w3n3d wrote:
| I love this guy. Half of the world's android development has
| been made easier due to his courtesy, and it's getting more
| (his qemu is ubiquitous)
| xorcist wrote:
| Also the same person who wrote LZEXE, which might be familiar
| to people who used DOS.
| jorvi wrote:
| Don't forget VLC! Probably his most well-known project.
| tuananh wrote:
| i thought it's Jean Baptiste Kempf ?
| jorvi wrote:
| You are right, I have my Frenchies mixed up.
| amiga386 wrote:
| I think you mean FFmpeg
| jebarker wrote:
| I'd love to know how he chooses what to work on. I wonder if he
| just follows his interest?
| rmac wrote:
| Kohei Tokunaga has the next generation of this
|
| https://ktock.github.io/container2wasm-demo/
|
| with emscripten Browser networking via fetch, or a Posix compat
| websocket proxy
|
| https://ktock.github.io/container2wasm-demo/amd64-debian-was...
| maxloh wrote:
| Fun fact: it is based on TinyEMU too.
|
| https://github.com/container2wasm/container2wasm?tab=readme-...
| roschdal wrote:
| JSLinux is too slow to be used for anything.
|
| Where is the complete source code for this?
| ofrzeta wrote:
| On the TinyEMU page? https://bellard.org/tinyemu/
| roschdal wrote:
| Where can I find the source code and instructions about how
| to make the Linux distro which runs here?
| jeroenhd wrote:
| JSLinux runs any disk image reachable over the network. You
| can find the Alpine sources over at
| https://github.com/alpinelinux. The Fedora sources are over
| at https://src.fedoraproject.org/. I don't think the script
| to package the pre-built images is documented somewhere,
| but it's all standard Linux you can install yourself in a
| virtual machine if you want.
|
| The Windows 2000 sources are probably leaked somewhere on
| Github, or you could apply for a job with Microsoft maybe.
| I managed to get ReactOS to boot in JSLinux once by
| installing it into a standard QEMU image and splitting the
| image into chunks as required by the emulator code. You
| need quite a fast CPU to run a full, modern OS at
| acceptable speeds, though.
| jgtrosh wrote:
| I find it perfect for technical interviews over screen sharing,
| since we test for some basic degree of ease on remote linux
| systems.
| s-macke wrote:
| This emulator does basically the same but is much more speed
| optimized. It uses the OpenRISC architecture and even has
| networking. For what do you want to use such an emulator?
|
| [0] https://github.com/s-macke/jor1k
| Imustaskforhelp wrote:
| Wow this is absolutely great!
| someoneontenet wrote:
| My dream is have a in browser nixos vm on wasm. If I could have a
| bare vm, I can bootstrap it easily with a nixos config. From
| there I can start thinking about running web services in browser
| tabs instead of physical hardware.
| londons_explore wrote:
| Pretty sure this is possible already... What's stopping you?
| someoneontenet wrote:
| I've tried to set this up and get a little bogged down on
| some of the finer points of compiling nixos to wasm. It's not
| very straightforward unfortunately :/
| pveierland wrote:
| Considering the extremes of prolific developers gives interesting
| contrast to dogmas such as "functions/files should never be above
| x lines", where `quickjs.c` is 50k lines and has functions that
| are hundreds of lines long:
|
| https://github.com/bellard/quickjs/blob/master/quickjs.c
|
| (Obviously different approaches suits different circumstances.)
| lifthrasiir wrote:
| The answer is simple: Bellard _can_ recall all 50K lines of
| context, while most can 't. I too happen to have a larger
| working memory and only later realized that my threshold for
| files and functions is way higher than most others. The dogma
| is only required when the file is to be read and written by
| multiple people.
| spookie wrote:
| tbh working on one file is most often much more ergonomic for
| me. Depends entirely on the sw architecture of course.
| p0w3n3d wrote:
| Tbh I've lived already through at least three different
| dogmas contradicting each other. Those are sometimes behaving
| like a fashion
| lifthrasiir wrote:
| I would say that dogmas are normally born out of necessity
| before they become dogmatic, so it is beneficial to analyze
| and extract core values out of dogmas instead of entirely
| ignoring them. In this particular case we can conclude that
| the threshold should be determined _per team_ , because
| some team may have a member whose working memory is
| exceptionally smaller than the average. (Ultimately this
| shouldn't surprise anyone because the coding convention has
| to be per team anyway.)
| p0w3n3d wrote:
| I never ignored them and usually followed them. They
| always have reason but sometimes there appears another
| reason that longs for a solution contradicting the
| previous dogma.
|
| E.g. monolith -> modular monolith -> microservices
| 2b3a51 wrote:
| https://bellard.org/qemacs/
|
| Has written his own editor, presumably to support preferred
| working style, using emacs idiom for UI.
| Timwi wrote:
| I have written long methods and will do so again and I
| wouldn't say it's because I have larger working memory or
| some other supposedly superior attribute. Some methods are
| just a long series of steps that you can just write one after
| another. Reading it from top to bottom is exactly as
| difficult/confusing/whatever as reading them as separate
| methods would be (assuming you put short comments in the same
| places where you would otherwise break it up). I think people
| just don't want inexperienced programmers to do that because
| they'll end up with tons of mutable state spanning the whole
| thing, and it's easier to tell them to break it up into
| methods than to explain what you mean by mutable state and
| limited scope.
| lifthrasiir wrote:
| Of course that's a legitimate case of longer files or
| functions, but I found that I was generally able to follow
| much larger functions, so comfortable with writing larger-
| than-average code in general.
|
| Also I should note that longer code doesn't mean less
| abstraction; it rather means that abstraction is done
| without separate functions and files, and ordering and
| visual cues can (and probably should heavily) be used
| instead. Apparently this is not enough for most others
| though, as I have received multiple complaints in spite of
| such readability efforts.
| dmd wrote:
| I feel like this is an underrated superpower. I don't have it
| - my digit span[0] is about 3, well below normal, so I've
| always felt that while I'm pretty smart (and managed to get a
| scientific PhD at an Ivy, so my brain's doing /something/
| right), I've always felt like I'm driving a Ferrari but the
| windows are all blacked out and I'm looking through a tiny
| hole.
|
| [0] https://en.wikipedia.org/wiki/Memory_span
| wiseowise wrote:
| Because people you're working with are not Fabrice. It is
| easier to say "don't do X at all" than explain when it is safe
| to break the rule.
|
| Also, this would depend on language of choice. JVM, for
| example, might not inline function above certain threshold of
| bytecode instructions.
| saghul wrote:
| I work on that codebase (we forked it off to QuickJS-ng) and
| while daunting at first, it's somewhat easy to work with, with
| the right editor! Many of them choke on such a large file,
| alas.
|
| While it being a very large file, it's sorted somewhat
| semantically, so it's easy to work on adding a new iterator
| method, for example, since they are all close to each other.
| txdv wrote:
| I think this person creates these marvels entirely by himself.
| There is no need for collaboration rules.
| larschdk wrote:
| Rather one long function than does one thing well than multiple
| function that are strongly coupled and difficult to reason
| about. Programmers who apply dogmas can be harmful.
| worewood wrote:
| Case in point: .NET's garbage collector which is a single 54k
| loc C++ file.
| klarko wrote:
| In the age of advanced IDEs/text editors with goto definition,
| find references/usage, fuzzy search, etc, what is even the
| point of multiple files?
|
| I never navigate by files in my code bases, it's all based on
| search and "jump to" type navigation.
| tombl wrote:
| Fabrice does a great job at building these self-contained pieces
| of software which often grow to have lives of their own. As a
| lesser known example, JSLinux's terminal emulator was forked a
| few times and is now known as xterm.js, which has become the
| predominant web embeddable terminal emulator.
|
| This all comes full circle, because now I'm building a true
| successor to JSLinux that's way faster because I've natively
| compiled the kernel/userspace to wasm, and of course I'm using
| xterm.js for the terminal emulation.
|
| If you like buggy demos that probably shouldn't be shared yet,
| you should check out https://linux.tombl.dev, but note that it's
| currently just a busybox shell and nothing else, so I hope you're
| good with `echo *` instead of `ls`.
| fsiefken wrote:
| Awesome, I suppose it's more energy efficient then jslinux and
| can be run on iOS, it might be a good alternative for A-Shell
| or iSH. I tried it on my a MacBook, but the keyboard input
| doesn't register.
| tombl wrote:
| Thanks for pointing this out, I've deployed a fix. One of my
| goals for the project is to create a useful computing
| environment on top of any arbitrary locked down platform, so
| I'd love to turn it into an iOS app at some point.
| LoganDark wrote:
| Dreamcast web browser? :)
| agumonkey wrote:
| is there any command working ? ps, cat, vi, ed .. they all
| crash (I don't know enough about embedding busybox to know what
| to do)
| pantalaimon wrote:
| This produces attempted to munmap
| ------------[ cut here ]------------ WARNING: CPU:
| 3 PID: 36 at kernel/exit.c:812 0x00000000 CPU: 3
| PID: 36 Comm: sh Not tainted 6.1.132 # Stack:
| at vmlinux.o.__warn (https://linux.tombl.dev/dist/vmlinux-
| NLTKI6YG.wasm:wasm-function[278]:0x17655) at
| vmlinux.o.warn_slowpath_fmt
| (https://linux.tombl.dev/dist/vmlinux-NLTKI6YG.wasm:wasm-
| function[279]:0x1772b) at vmlinux.o.do_exit
| (https://linux.tombl.dev/dist/vmlinux-NLTKI6YG.wasm:wasm-
| function[329]:0x1985e) at
| vmlinux.o.task_entry_inner
| (https://linux.tombl.dev/dist/vmlinux-NLTKI6YG.wasm:wasm-
| function[154]:0x12249) at vmlinux.o.task_entry
| (https://linux.tombl.dev/dist/vmlinux-NLTKI6YG.wasm:wasm-
| function[153]:0x12155) at self.onmessage
| (https://linux.tombl.dev/dist/worker-MHWHWELT.js:151:53)
| ---[ end trace 0000000000000000 ]---
|
| on any command
| tombl wrote:
| yep, that's to be expected, this is a very wip demo. I'm
| implementing exec() support now, so currently only shell
| builtins work.
| jerf wrote:
| "I'm implementing exec() support now"
|
| Bah. Details, details _dismissive hand wave_.
|
| It's just minimalism, right? I hear it's all the rage.
| remram wrote:
| Leave it as an exercise to the reader.
| all2 wrote:
| I had to implement exec() on Unix V6 for my OS course at
| uni.
| ebiester wrote:
| I mean, "demos that shouldn't be shared" from the root
| comment implies that it isn't done, right?
| tombl wrote:
| I'm effectively lying to the kernel about the environment
| it's executing in, and trying to convince it that it's
| running on the kind of hardware it expects, when in
| reality it's running inside a very different environment.
|
| Since I map guest threads 1:1 to host threads in JS, and
| architecture-specific code manages the loading/unloading
| of programs, the exec syscall is exercising these lies in
| a way that they're not currently equipped to handle.
|
| What I'm currently doing is improving those lies to the
| point where exec stops noticing they're lies and just
| starts functioning as expected.
| chjj wrote:
| This brings back memories. I haven't looked at it in a while,
| but I'm glad to see the fork[1] of my fork[2] from 12 years ago
| is still thriving. Looks like it's been mostly rewritten.
| Probably for the better.
|
| [1] https://github.com/xtermjs/xterm.js [2]
| https://github.com/chjj/term.js
| apitman wrote:
| I like to say Fabrice creates side projects that others spend
| their entire careers maintaining.
|
| I knew about QEMU, ffmpeg, his LTE stuff, and QuickJS. I had no
| idea xterm.js started with him too.
| simonw wrote:
| He's also been hacking on a (closed source) LLM inference
| server since the GPT-2 days: https://bellard.org/ts_server/
| DyslexicAtheist wrote:
| for now I get a kernel panic due to NoScript.
|
| But does this support recursion? I'd like to run JSLinux in my
| browser and then point its Browser to
| https://www.bellard.org/jslinux/ which then starts another
| JSLinux which opens the browser on JSLinux which ...
|
| JSLinux isn't another Linux but a landmark of postmodern
| philosophy, and OP most def forgot to credit Baudrillard.
|
| crazy cool.
| jeroenhd wrote:
| If you host your own OS image that auto-starts a browser that
| runs JSLinux and a config file like
| https://www.bellard.org/jslinux/alpine-x86.cfg, you can create
| such a link yourself. CORS may be your biggest enemy, there's
| no reason JSLinux can't do what you're proposing (albeit
| extremely slowly).
| dxroshan wrote:
| Fabrice is an amazing programmer, and does cool things. He is an
| inspiration to us all.
| ridruejo wrote:
| JSLinux was our inspiration for creating Endor
| (https://endor.dev) and his qemu work is also powering a lot of
| other Wasm-related browser projects
| pveierland wrote:
| Are there any open details on how the VM / container / WASM-
| native approaches are implemented?
| ridruejo wrote:
| Not right now, we should write a blog post, but we are still
| behind on the docs. VM and containers use V86, while wasm-
| native are generated using Emscripten.
| pveierland wrote:
| Cool, thanks for the answer - Would make for an interesting
| read!
| NetOpWibby wrote:
| I just spent an hour playing Solitaire in Windows 2000
| throwaway2037 wrote:
| Does anyone know how Fabrice Bellard gets paid? This guy's output
| of open source project is simply stunning. Is there anyone in his
| class? It is hard to compare. I assume that someone like VMWare
| would try to hire him, or Google to work on video codecs, V8,
| Chromium rendering, or ffmpeg.
| throwaway2037 wrote:
| Ok, it looks like he runs his own company:
| https://www.amarisoft.com/company/about-us
| keepamovin wrote:
| I have to say there are some extremely talented, creative and
| productive "software artists" or ICs coming out of France. Not
| sure if that's a French thing (the Ecoles or whatever) or
| something else, but it's noticable.
| justin66 wrote:
| Can you name some that invite comparison with FB?
| keepamovin wrote:
| I'd do less comparison and more recognition. Some of these
| are kind of old or from the past and I'm no expert and the
| list is very incomplete but:
|
| Jean Ichbiah - big contributor to Ada
|
| Alain Colmerauer - creator of Prolog
|
| Jean-Marie Hullot - iCal, iSync, NeXTSTEP GUI builder, CTO of
| Applications at Apple in early 2000s
|
| Philippe Kahn - founder of Borland, inventor of first camera-
| phone
|
| Olivier Fourdan - creator of Xfce, big contributor to Wayland
| wavemode wrote:
| Laurent Gomila - creator of SFML
|
| Jean-Baptiste Kempf - creator of VLC
| _hyn3 wrote:
| Willy Tarreau - creator of HA Proxy
| fuzztester wrote:
| Some of the people at INRIA who created Caml and OCaml.
|
| https://en.m.wikipedia.org/wiki/OCaml
|
| Bertrand Meyer, creator of Eiffel.
|
| https://en.m.wikipedia.org/wiki/Eiffel_(programming_languag
| e...
| ptsneves wrote:
| Bootlin is a French company and they are a major open source
| contributor. I worked with them and I recommend them.
|
| French tech used to have a reputation for Renault old car
| quality, but I did not see it. Even in Renault and Citroen I
| came to admire them. On the other hand working with German SE
| is hard because they are incredibly set on not invented here.
| My generalisation for whatever it is worth.
|
| In general the issue of Europe tech scene is simple: we suck at
| selling and optimise for resource efficiency(competitive salary
| means never pay above rate no matter what). Americans optimise
| for growth and will risk paying for higher so they can amortise
| costs with growth.
|
| On a final note, where I come from there is lots of sneer that
| France is a dump due to immigration. While that is a point of
| view, it is definitely true they have also brain drained their
| colonies and have very capable productive individuals coming
| from there. Myself I had my master's tutor from cot-de-Ivoir
| and in bootlin also worked with top of the shelf engineers that
| have non francophone names.
| smusamashah wrote:
| There aren't many VMs that can run in browser
|
| https://copy.sh/v86/
|
| https://webvm.io/
|
| https://bellard.org/jslinux/
|
| https://jamesfriend.com.au/pce-js/ (https://github.com/jsdf/pce)
|
| https://www.pcjs.org/ (lots of hardware and OSes)
| (https://github.com/jeffpar/pcjs)
|
| Mac OS
|
| https://infinitemac.org/
| (https://blog.persistent.info/2023/03/infinitemac-dot-org.htm...)
|
| https://jamesfriend.com.au/projects/basiliskii/BasiliskII-wo...
|
| https://jamesfriend.com.au/pce-js/pce-js-apps/
| DrNosferatu wrote:
| Is this list just 16bit?
| lxgr wrote:
| At least v86 supports 32 bit x86 OSes too.
| DrNosferatu wrote:
| https://taws.ch/ (Amiga OS)
|
| https://amiga.oszx.co/
|
| https://www.file-hunter.com/AMIGA/
|
| https://www.file-hunter.com/MSX/ (MSX! via WebMSX)
| smusamashah wrote:
| Is the UI of OS an emulation? First link says it's a
| simulation not an emulator.
| DrNosferatu wrote:
| - What about a WASM flavor of this, Fabrice? ;)
| haunter wrote:
| Not by him but it does exist
|
| https://ktock.github.io/container2wasm-demo/
| Maksadbek wrote:
| Fabrice Bellard is a real coding monster!
| sylware wrote:
| Good.
|
| Only wayland RISC-V 64bits binaries from now on, even for the
| web.
|
| We don't need anything else anymore.
| patwolf wrote:
| I played around in Windows 2000 for the first time in 20 years. I
| know nostalgia can be blinding, but I would go back to that UI in
| a heartbeat. The uncluttered taskbar, the simple start menu that
| isn't full of useless recommendations and ads--such a joy!
| Tepix wrote:
| Related:
|
| " _Windows 2000 Server named peak Microsoft. Readers say it 's
| all been downhill since Clippy_"
|
| https://www.theregister.com/2025/04/11/windows_2000_best_mic...
|
| https://news.ycombinator.com/item?id=43653421
| edoceo wrote:
| The reason I've been on Xfce since at least 2010, it still
| works the same.
|
| I feel like open-source inherently has alignment with users and
| blockers to enshitification
| pengaru wrote:
| It helps but is no panacea:
| https://arstechnica.com/information-
| technology/2012/09/ubunt...
| steeleduncan wrote:
| I don't remotely want to use Windows 2000 again, but it is
| interesting to see a version of Windows where the UI was
| consistent. Currently it is a mishmash of four generations of
| GUI toolkits, some UI is in one style, some UI is another, etc,
| etc
| shepherdjerred wrote:
| I've found Windows 11 to actually look quite consistent/good
| -- nearly as good as macOS.
| jsd1982 wrote:
| I tried to install Visual Basic 6 on it but couldn't get past
| SSL errors in the installed Firefox version to even download
| the ISO. Sad.
| a3f wrote:
| We are using JSLinux over at https://barebox.org/webdemo to let
| potential users see the conveniences of the bootloader's shell
| without having to flash it to actual hardware.
|
| I am glad to see all the forks mentioned here, need to see which
| one runs bareDOOM best and if any have working sound perhaps..
| a3f wrote:
| https://barebox.org/demo being the correct link..
| slt2021 wrote:
| Fabrice Bellard is the Chuck Norris of software engineering
| gamebak wrote:
| This is amazing! But beware admin, it seems that the RAM can be
| hijacked and increased...
| slackfan wrote:
| Ah, the destroy all software talk is coming true!
| babuloseo wrote:
| I use ffmpeg to create transcript with a popular video sharing
| site.
___________________________________________________________________
(page generated 2025-04-15 23:01 UTC)