先说一下GUN的历史我们经常把GUN和Linux放在一起讲,以为他们就是天生在一起的,经常将他们混为一谈,所有就有了Gun/Linux这种叫法。其实,GUN指的是应用层的程序体系是GUN体系(遵从GPL标准的那一套),因为当年的RMS构建了整个GNU体系,却没能做出一个完整可用的内核,恰好在那个时候,Linus大神利用GNU的工具链制作出来了一个内核,取名为 Linux,而这个内核最终成为了GNU被用得最广泛的内核。
RMS倡导的理念是Free Software自由软件,认为商业软件是不道德的,必须给用户以自由,所以要使用自由软件。所以才有今天的gcc 编译器以及emacs等等神级软件,创造了除内核以外的全部上层软件,也撰写了GPL通用发布协议,为开源软件的发展打下了坚实的法律基础。
Linux工具链
说到这里,平时我们在使用Linux操作系统的时候,其实是离不开GUN工具链的,你可以不用GCC,用Clang,不用GNU binutils,用LLVM 下的binutils,但是依然绕不过去gmake, gawk, gzip, tar, coreutils, autotools...等等。
特别是想在Windows平台上使用GUN工具链,更是难上加难,也不是没有选择,有人写了GUN在windows系统下的工具集,比如GnuWin,官网是http://gnuwin32.sourceforge.net/, 还有直接native Win32的unxutils,官网是http://unxutils.sourceforge.net/.
问题
但是这些项目都太老了,而且几乎没有人在取更新维护,看unxutils官网最近的一次发布是在2010年。
Rust重写GUN工具链
于是有人发起了用Rust重写通用的(跨平台)的cli项目,包括对GNU coreutils重写等。这个项目叫uutils, github地址:https://github.com/uutils。目前star数为7.5k。
其中https://github.com/uutils/coreutils是核心工具包的实现,目前已经实现了90%的工具,包括经常使用的cat,chmod,du,head,kill,mkdir等等, 具体实现了哪些可以在官方https://github.com/uutils/coreutilsgithub上看到,还有一些todo和Semi-Done实现了一半工具,也可以参与到其中。
写在最后目前Rust重写GUN工具的时机和条件都成熟了,就像当年RMS开发了GUN一样,当有了周边工具集生态后,有人又会用这些工具使用Rust去写内核,然后逐步替代GUN那套生态链。
本文转载自微信公众号「码小菜」,可以通过以下二维码关注。转载本文请联系码小菜公众号。