Rust project startup kit

SagXD@lemy.lol to Programmer Humor@programming.dev – 725 points –
33

How about a federated link aggregator?

With a comment section?

Let me on the Linux kernel irq I can redo the whole thing!

So I watched a few guides and did all that... what now? Would you think a shopping list app is doable for my knowledge after this? It looks really hard compared to NorgurOS... :(

For people who don't know, there is already a fully Rust OS: https://www.redox-os.org/

Microkernel too which is pretty cool.

I have heard about Redox. What's the difference between a microkernel and a kernel? Does redox use the linux kernel? Or has the guy written that in rust too?

Well, think microkernels as the bare minimum. They give you just enough to write your own OS on top of that: only the bare essentials run in kernel space, whilst everything else runs in user space and has to communicate with the kernel. Compare this to a monolithic kernel, like the Linux kernel: here, the whole operating system is run in kernel space, which means that data doesn’t need to be moved between user and kernel space: this makes the OS faster, but at the cost of modularity. Redox doesn’t use the Linux kernel, it uses its own microkernel written in Rust.

Edit: A good example would be driver. In a microkernel, these run separately from the kernel and interact with it when needed. In a monolithic kernel, these drivers would be included in the kernel itself. They both have their pros and cons: if you’re interested, feel free to look it up.

Does that mean on a microkernel you'd essentially have double the amount of code execution for a driver (i.e. driver makes a call to the kernel, kernel verifies and then executes rather than the driver just executing the call) meaning double the latency? Seems like it would cause a lot of problems.

Nowhere near double, the kernel can be extremely sparse on it’s side, but there is a small latency hit

thanks for the explanation! I was thought it had something to do with linux since the lead dev works for System76.

No problem! Actually, System76 is currently working on rewriting the COSMIC desktop in Rust (or really, just writing a new DE in Rust). It’s a pretty ambitious project that should hopefully get released some time this year. I wouldn’t be surprised if the lead redox dev was working on it too: low-level Rust knowledge is exactly what they need.

Yeah, I am waiting for a new blog post from them of that.

lots and lots more IPC. So lots and lots of context switches. So worse performance

This actually wrong way to do it, here the pro way:

1.Start writing a game/app/engine/os.

2.Write dozen utility packages for it.

3.Write high-level packages for #2

4.Write a "light-weight" version of #3 when disgusted with bloat of #3.

5.repeat #2 with more modern rust code.

you have been looking at my private github repos and are clearly a witch

Don't forget to upload them all to crates.io. Add them to the list of useless crates that no one will ever use.

I'm in this picture and I don't like it. Also, you forgot:

1.5 Get completely wrapped around the axle by writing tooling to support said game engine art assets.

Small science projects:

  • Baking soda and vinegar volcano

  • Moon landing

  • Splitting the atom

I love how simple and small scale splitting an atom sounds. Then you get to doing it…

Splitting individual atoms isn't that difficult, you just need a neutron supply and some material (paraffin wax works) to slow them down and it will eventually happen at least with uranium. Doing it reliably and efficiently is a much harder problem.

It's a matter of perspective. If the game is Tic-Tac-Toe and the system a basic RISC SOC with open firmware this might be a fun project :P

To be fair, a simple operating system project is not that hard to implement.

Point in case: Ben Eater recently uploaded a video where his "BIOS" consists of two I/O functions and compiles into less than 250 bytes. Double that if you count his port of WOZMON. We can argue later if that constitutes an operating system - I mean, it's not POSIX compliant but it does operate.

https://www.youtube.com/watch?v=0q6Ujn_zNH8

Edit: watch that space. The venerable MS BASIC is on the way after this.