We're on Discord! Please join our server now if you don't want to miss anything! (More info) | Join the UCC4 contest! (More info)

* WalrusIRC & Discord main room

If you have a forum account, have more than 4 posts and are not part of a restricted usergroup, then you can chat in our main Discord server room directly from here and continue using the forums at the same time. Or you can join our server directly and access many more discussion rooms!

Author Topic: YukiOS  (Read 148 times)

0 Members and 1 Guest are viewing this topic.

Offline Juju

  • aka Yuki Kagayaki aka J̵̭͕͇ù̞̭̝̯̦j̴̭̙̗͖͡ù͏͓̲̕
  • CodeWalrus Staff
  • Super User
  • Server Maintenance
  • Moderator
  • Forum Maintenance
  • Original 5
  • CodeWalrus Supporter
  • *
  • Join Date: Nov 2014
  • Location: Inside a walrus
  • Posts: 3265
  • Post Rating Ratio: +39/-2
  • Couch potato
    • jul.savard
    • juju2143
    • @juju2143
    • juju2143
    • @julosoft
    • juju-kun
    • /u/juju2143
    • juju2143
    • @juju2143
    • Juju's shed
  • Gender: Female
  • WalriiPoints: 99999
« on: October 15, 2018, 02:34:59 am »
Yet another thing I started working on that have been on my mind since a while. (I do a lot of stuff lately please stop me)

Basically, it's an operating system that runs in your browser. It consists of a kernel written from scratch in JavaScript that sets up an interface (currently a VT100-like terminal, can later be a canvas to draw on and do OpenGL stuff on kinda like X) and defines a bunch of syscalls (mostly interfaces between the DOM and threads). It then creates a WebWorker (which also defines interfaces between the program and the kernel, think a standard library or a libc) that executes a WebAssembly program (an init program, basically) which can in turn call other programs in their own WebWorkers. The main thread creates every other thread and can therefore keep track of processes like a normal operating system. (Kinda hard to explain, but yeah, if you read the code it's probably simple enough to figure it out.)

Basically (where <=> is a bunch of interfaces between each other): DOM <=> Kernel <=> WebWorkers <=> WebAssembly

WebAssembly binaries can be compiled with LLVM/Clang (see the makefile, target wasm32-unknown-unknown-wasm). In any case, it should import kernel functions (those defined thread-level when calling the binary) and export a main function that will get executed and return a return value.

So, pretty much like a real operating system. Or at least, a framework for multi-threading in C in a webpage.

Check it out on GitHub, right now it only prints some sort of Hello World but I'll put it online when it's going to be a bit more usable: https://github.com/juju2143/YukiOS


- Multithreading
- Keeps track of processes
- Quebec Bill 101-compatible open-source license
- Small binaries written in C (no Emscripten)
- It's in your browser!
- Small and readable source code

To do
- Read user input
- Filesystem
- Graphics
- Other misc. stuff, as needed when porting software

  • Calculators owned: TI-83+ (dead?), Casio Prizm (also dead???)
  • Consoles, mobile devices and vintage computers owned: A lot
Read Zarmina!
In the beginning there was walrii. In the end there will be walrii. All hail our supreme leader :walrii: --Snektron

if you wanna throw money at me and/or CodeWalrus monthly it's here


You can also use the following HTML or bulletin board code to share it on your page or forum signature!

Also do not forget to check our affiliates below.
Planet Casio TI-Planet Calc.news BroniesQC BosaikNet Velocity Games