• 0 Posts
  • 55 Comments
Joined 1 year ago
cake
Cake day: August 20th, 2023

help-circle






  • There’s a Pareto effect when it comes to them, in that you can cover a large proportion of use cases with a small amount of work, but the more special cases consume proportionately more effort. For a MVP, you could restrict support to standard USB and SATA devices, and get a device you can run headless, tethered to the network through a USB Ethernet adapter. For desktop support, you’d need to add video display support, and support for the wired/wireless networking capabilities of common chipsets would be useful. And assuming that you’re aiming only for current hardware (i.e. Intel/AMD boards and ARM/RISC-V SOCs), there are a lot of legacy drivers in Linux that you don’t need to bring along, from floppy drives to the framebuffers of old UNIX workstations. (I mean, if a hobbyist wants to get the kernel running on their vintage Sun SPARCstation, they can do so, but it won’t be a mainstream feature. A new Linux-compatible kernel can leave a lot of legacy devices behind and still be useful.)


  • Drew DeVault recently wrote a simple but functional UNIX kernel in a new systems programming language named Hare in about a month, which suggests that doing something similar in Rust would be equally feasible. One or two motivated individuals could get something up which is semi-useful (runs on a common x86 PC, has a console, a filesystem, functional if not necessarily high-performance scheduling and enough of the POSIX API to compile userspace programs for), upon which, what remained would be a lot of finishing work (device drivers, networking, and such), though not all of it necessary for all users. Doing this and keeping the goal of making it a drop-in replacement for the Linux kernel (as in, you can have both and select the one you boot into in your GRUB menu; eventually the new one will do enough well enough to replace Linux) sounds entirely feasible, and a new kernel codebase, implemented in a more structured, safer language sounds like it could deliver a good value proposition over the incumbent.



  • “Hand-written assembly” is not more powerful than any other Turing-complete language (including Perl and Python), just more painfully slow and prone to human error to write. (Perhaps if you have a special case requiring speed (such as the processing being done in a tight loop in a financial trading app and the results needing to beat rival trading systems by milliseconds or something equally esoteric), it’d make sense, but in that case, a modern compiler (for, say, C/C++/Rust or similar) would yield comparable results, and if a lot is riding on those milliseconds, you’d eschew code and build a FPGA that pulls the data out of memory buffers in hardware or similar.)

    So these days, the only use case for hand-writing assembly language (other than low-level OS/firmware programming or compiler development) is performative Feats Of Strength, where the challenge is the point. And in that case, you’d be trying to do something heroically challenging, like writing an Atari 2600 demake of Baldur’s Gate or something.