当前位置: 首页 > 科技观察

Rust重写Gug工具链

时间:2023-03-17 01:23:05 科技观察

先说说GUN的历史吧。我们经常把GUN和Linux放在一起说,认为它们是天生的,经常混淆,所以有了Gun/Linux这个名字。GUN其实指的是应用层的程序系统就是GUN系统(符合GPL标准的那种),因为当年RMS构建了整个GNU系统,却没能做出一个完整可用的内核。当时,Linus使用GNU工具链创建了一个名为Linux的内核,这个内核最终成为GNU使用最广泛的内核。RMS倡导的理念是FreeSoftware。它认为商业软件是不道德的,必须给用户自由,所以应该使用免费软件。这就是为什么今天的gcc编译器、emacs等神级软件,创造了除内核之外的所有上层软件,还编写了GPL通用发布协议,为开源软件的发展奠定了坚实的法律基础。说起Linux工具链,我们在使用Linux操作系统的时候,其实离不开GUN工具链。你可以在LLVM下使用GCC、Clang、GNUbinutils和binutils,但你仍然无法绕过它。gmake、gawk、gzip、tar、coreutils、autotools等。尤其是想在Windows平台上使用GUN工具链,更是难上加难,别无选择。有人在windows系统下写了一个GUN的工具集,比如GnuWin。官网是http://gnuwin32.sourceforge.net/,还有unxutils直接原生Win32,官网是http://unxutils.sourceforge.net/。问题是这些项目太老了,几乎没有人更新维护。unxutils官网最新发布见2010年。Rust重写了GUN工具链,于是有人发起了用Rust重写通用(跨平台)cli项目,包括GNUcoreutils的重写。这个项目叫做uutils,github地址:https://github.com/uutils。目前的星星数是7.5k。其中,https://github.com/uutils/coreutils是核心工具包的实现。目前已经实现了90%的工具,包括经常使用的cat、chmod、du、head、kill、mkdir等,具体实现是怎样的?在官方https://github.com/uutils/coreutilsgithub上可以看到,里面有一些实现了一半工具的todos和Semi-Done,大家也可以参与其中。写在最后。目前Rust改写GUN工具的时机和条件已经成熟,就像当年RMS开发GUN一样。当有外围工具集的生态系统时,一些人会利用这些工具来使用Rust编写内核,然后逐渐取代它们。GUN的生态链。本文转载自微信公众号“码小菜”,可通过以下二维码关注。转载本文请联系码小菜公众号。