Rust重寫Gug工具鏈
先說一下GUN的歷史我們經(jīng)常把GUN和Linux放在一起講,以為他們就是天生在一起的,經(jīng)常將他們混為一談,所有就有了Gun/Linux這種叫法。其實(shí),GUN指的是應(yīng)用層的程序體系是GUN體系(遵從GPL標(biāo)準(zhǔn)的那一套),因?yàn)楫?dāng)年的RMS構(gòu)建了整個(gè)GNU體系,卻沒能做出一個(gè)完整可用的內(nèi)核,恰好在那個(gè)時(shí)候,Linus大神利用GNU的工具鏈制作出來了一個(gè)內(nèi)核,取名為 Linux,而這個(gè)內(nèi)核最終成為了GNU被用得最廣泛的內(nèi)核。
RMS倡導(dǎo)的理念是Free Software自由軟件,認(rèn)為商業(yè)軟件是不道德的,必須給用戶以自由,所以要使用自由軟件。所以才有今天的gcc 編譯器以及emacs等等神級軟件,創(chuàng)造了除內(nèi)核以外的全部上層軟件,也撰寫了GPL通用發(fā)布協(xié)議,為開源軟件的發(fā)展打下了堅(jiān)實(shí)的法律基礎(chǔ)。
Linux工具鏈
說到這里,平時(shí)我們在使用Linux操作系統(tǒng)的時(shí)候,其實(shí)是離不開GUN工具鏈的,你可以不用GCC,用Clang,不用GNU binutils,用LLVM 下的binutils,但是依然繞不過去gmake, gawk, gzip, tar, coreutils, autotools...等等。
特別是想在Windows平臺(tái)上使用GUN工具鏈,更是難上加難,也不是沒有選擇,有人寫了GUN在windows系統(tǒng)下的工具集,比如GnuWin,官網(wǎng)是http://gnuwin32.sourceforge.net/, 還有直接native Win32的unxutils,官網(wǎng)是http://unxutils.sourceforge.net/.
問題
但是這些項(xiàng)目都太老了,而且?guī)缀鯖]有人在取更新維護(hù),看unxutils官網(wǎng)最近的一次發(fā)布是在2010年。
Rust重寫GUN工具鏈
于是有人發(fā)起了用Rust重寫通用的(跨平臺(tái))的cli項(xiàng)目,包括對GNU coreutils重寫等。這個(gè)項(xiàng)目叫uutils, github地址:https://github.com/uutils。目前star數(shù)為7.5k。
其中https://github.com/uutils/coreutils是核心工具包的實(shí)現(xiàn),目前已經(jīng)實(shí)現(xiàn)了90%的工具,包括經(jīng)常使用的cat,chmod,du,head,kill,mkdir等等, 具體實(shí)現(xiàn)了哪些可以在官方https://github.com/uutils/coreutilsgithub上看到,還有一些todo和Semi-Done實(shí)現(xiàn)了一半工具,也可以參與到其中。
寫在最后目前Rust重寫GUN工具的時(shí)機(jī)和條件都成熟了,就像當(dāng)年RMS開發(fā)了GUN一樣,當(dāng)有了周邊工具集生態(tài)后,有人又會(huì)用這些工具使用Rust去寫內(nèi)核,然后逐步替代GUN那套生態(tài)鏈。
本文轉(zhuǎn)載自微信公眾號(hào)「碼小菜」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系碼小菜公眾號(hào)。