Kurekebisha Debian kutumia Utekelezaji wa Rust wa coreutils

Sylvestre Ledru, anayejulikana kwa ujenzi wake wa kazi Debian GNU/Linux kwa kutumia mkusanyaji wa Clang, aliripoti jaribio lililofaulu kwa kutumia seti mbadala ya huduma, vifaa vya msingi, iliyoandikwa upya katika lugha ya Rust. Coreutils ni pamoja na huduma kama vile sort, cat, chmod, chown, chroot, cp, date, dd, echo, jina la mpangishaji, id, ln na ls. Kwa hatua ya kwanza ya kuunganishwa kwenye Debian ya toleo la Rust la coreutils, malengo yafuatayo yaliwekwa:

  • Pakiti mbadala ya kutu kwa vifaa vya msingi vya Debian na Ubuntu.
  • Kuanzisha Debian na kompyuta ya mezani ya GNOME kwa kutumia vifaa vya kutu.
  • Kufunga vifurushi 1000 maarufu zaidi kutoka kwa hazina.
  • Jenga kutoka kwa vyanzo vya Firefox, LLVM/Clang na Linux katika mazingira yenye vifaa vya kutu.

Baada ya kuunda zaidi ya viraka 100 vya Rust/coreutils, tuliweza kufikia malengo yote yaliyokusudiwa. Kazi inayoendelea ni pamoja na utekelezaji wa huduma na chaguzi ambazo hazipo, kuboresha ubora na usawa wa nambari, kuunda safu ya majaribio, na kuondoa hitilafu zinazotokea wakati wa kuendesha kitengo cha majaribio kutoka kwa GNU Coreutils (majaribio 141 kati ya 613 yanafanyika kwa mafanikio hadi sasa. )

Wakati wa kuunda kifurushi cha kutu-msingi, iliamuliwa kutochukua nafasi ya kifurushi cha msingi, lakini kutoa uwezo wao wa kufanya kazi sambamba. Chaguzi za matumizi katika lugha ya Rust zimesakinishwa ndani /usr/lib/cargo/bin/ na zinawashwa kwa kuongeza saraka hii kwenye utofauti wa mazingira wa PATH. Kuunda kifurushi cha kutu-msingi ilikuwa ngumu na hitaji la kupakua vitegemezi vyote vya ujenzi kwenye ghala, pamoja na Rust na vifurushi kadhaa vidogo vya crate.

Kuunda picha ya boot haikuwa shida, lakini kurekebisha vifurushi kwa mazingira yenye vifaa vya kutu vilihitaji kazi nyingi, kwani hati nyingi za baada ya kusakinisha huita huduma kutoka kwa seti ya msingi. Idadi kubwa ya shida ilisababishwa na ukosefu wa chaguzi muhimu, kwa mfano, matumizi ya "cp" hayakuwa na chaguzi za "--archive" na "--no-dereference", "ln" haikuunga mkono "- jamaa” chaguo, mktemp haikuauni β€œ-t” , katika kusawazisha "-fs", katika kusakinisha - "--owner" na "-group". Shida zingine zilitokea kwa sababu ya tofauti za tabia, kwa mfano, usakinishaji haukuunga mkono kubainisha /dev/null kama faili ya ingizo, mkdir ilikuwa na chaguo la "--parents" badala ya "-parent", n.k.

Wakati wa kupima mkusanyiko wa besi kubwa za kanuni, hakuna matatizo makubwa yaliyotokea. Wakati wa kujenga Firefox na LLVM/Clang, hati za python na cmake hutumiwa, kwa hivyo kuchukua nafasi ya coreutils hakujawaathiri. Kuunda kerneli ya Linux kulikwenda vizuri, kukiwa na shida mbili tu kupunguzwa: matokeo ya makosa wakati wa kutumia chown na kiunga cha mfano na ukosefu wa chaguo la "-n" katika matumizi ya ln.

Chanzo: opennet.ru

Kuongeza maoni