Show HN: Crazierl – An Erlang Operating System

(crazierl.org)

27 points | by toast0 2 hours ago

3 comments

  • tombert 1 hour ago
    I've thought about doing something like this but I am only very recently getting into low-level OS stuff.

    I can't remember who said this, but they called "Erlang an operating system for your code", and I think that's fairly accurate. When I build an Erlang app, I don't build it the same way as I would with Rust; I have a lot of independent gen_servers that do operate independent from each other.

    The Erlang VM is (roughly) preemptive multitasking, and even each process has its own GC, so it does feel like it could be a natural fit for its own operating system without having to live on top of Linux.

  • lightandlight 34 minutes ago
    > browser-based demo

    Wait, so is the browser running a JavaScript build of Qemu? /

  • mixedbit 2 hours ago
    Is the OS implemented from scratch, or is it a stripped down version of some existing OS?
    • toast0 2 hours ago
      The kernel is pretty much from scratch. It provides a FreeBSD compatible syscall interface for the syscalls that BEAM calls, as well as the FreeBSD runtime loader. I do make healthy use of FreeBSD libraries to provide the OS, you can get an idea of what I pull from the file names in the Makefile [1]. Building an OS is a lot, so I tried to stick to the parts I find fun and interesting. Things like a NIC driver in Erlang [2] (with NIFs to copy to/from device memory). But process / thread creation is original, memory management is original (not necessarily good), time keeping is original, etc. I used existing code and interfaces so I didn't have to write a bootloader, memcpy, and lots of other stuff.

      [1] https://github.com/russor/crazierl/blob/main/Makefile#L23

      [2] https://github.com/russor/crazierl/blob/main/src/rtl_8168.er...