sweetbbak / go-moreutils

coreutils with some more modern features. Written in go. Thanks to u-root, the golang unix lib and gnu coreutils for showing me what to do. These may be handy to use but 100% parity is not guaranteed or aimed for, just use toyobx/busybox at that point.
16 stars 0 forks source link

This is really cool. Would problems appear if I make this a part of my system? #1

Open xplshn opened 10 months ago

xplshn commented 10 months ago

Does go-moreutils have minimum Unix compliance? For example, on Void Linux, which is my distro, lots of init scripts that are part of the init(/etc/runit/*) rely on non POSIX (bloat)"features" from the GNU coreutils, and so in my journey to replace them with Toybox+Ubase+Sbase I've found lots of shit and things that are poorly implemented in both the GNU Coreutils and its direct replacemenets.

Do you plan on having support for most flags of the commands you implemented?

sweetbbak commented 10 months ago

Thanks, I appreciate it! I'd like to aim for having compliance with the other coreutils, and so far I've implemented a decent amount of these tools with the typical flags that you would see in something like GNU coreutils, but at this point its definitely far from being on par with those tools.

I don't think I'd be able to recommend it quite yet. I hope one day in the future for it to be a fairly viable replacement and add some additional nice things to each tool that add some extra features and conveniences, while also not breaking backwards compatibility.

https://github.com/u-root/u-root is a good one as well that implement a Unix user land in entirely Go, and you can boot it up from qemu/kvm. You can see all of the coreutils they have implemented here https://github.com/u-root/u-root/tree/main/cmds/core - they are definitely a lot further ahead than I am.

I haven't looked to far into runit besides just playing around with Void in a VM for a little bit, but I'll look into it a little bit more and see what they have going on. I'd also like to find a way to make a minimally functional system from scratch, including an init system and package manager while only relying only on the kernel. Mostly for fun and learning, but I also want to make something that can be useful on its own and to find a way to allow these tools to co-exist with other coreutils to improve some of the areas that Ive noticed are complicated or tedious.

xplshn commented 10 months ago

I am making progress towards making a system based on Void, since its VERY flexible, it has no boundaries and since RUNIT is mostly scripts, you can make the system do whatever you want, currently I run a frankenstain that has the GNU BS at /usr/bin, however my /etc/profile points the system to use /opt/AltSys, which contains an assortment of Unix utilities with no extra bloat from GNU. Or at least they do mark what is or not standard(toybox), I currently have Toybox+Ubase+Sbase. I really want to try your project however it might break my system, and my hardware is not good enough for running VMs, so I have to test things bare metal