Rust重寫Gug工具鏈
先說一下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那套生態鏈。
本文轉載自微信公眾號「碼小菜」,可以通過以下二維碼關注。轉載本文請聯系碼小菜公眾號。