Addasu Debian i ddefnyddio gweithrediad Rust o coreutils

Adroddodd Sylvestre Ledru, sy'n adnabyddus am ei waith yn adeiladu Debian GNU/Linux gan ddefnyddio'r casglwr Clang, am arbrawf llwyddiannus gan ddefnyddio set amgen o gyfleustodau, coreutils, wedi'u hailysgrifennu yn yr iaith Rust. Mae Coreutils yn cynnwys cyfleustodau fel sort, cath, chmod, chown, chroot, cp, dyddiad, dd, adlais, enw gwesteiwr, id, ln ac ls. Ar gyfer y cam cyntaf o integreiddio i Debian o fersiwn Rust o coreutils, gosodwyd y nodau canlynol:

  • Pecynnu dewis amgen Rust i coreutils ar gyfer Debian a Ubuntu.
  • Cychwyn Debian gyda bwrdd gwaith GNOME gan ddefnyddio rust-coreutils.
  • Gosod y 1000 o becynnau mwyaf poblogaidd o'r ystorfa.
  • Adeiladu o ffynonellau cnewyllyn Firefox, LLVM/Clang a Linux mewn amgylchedd gyda rhwd-coreutils.

Ar Γ΄l creu mwy na 100 o glytiau ar gyfer Rust/coreutils, roeddem yn gallu cyflawni'r holl nodau a fwriadwyd yn llwyddiannus. Mae'r gwaith parhaus yn cynnwys gweithredu cyfleustodau ac opsiynau coll, gwella ansawdd ac unffurfiaeth y cod, datblygu'r gyfres brawf, a dileu damweiniau sy'n digwydd wrth redeg y gyfres brawf o GNU Coreutils (mae 141 o brofion allan o 613 yn rhedeg yn llwyddiannus hyd yn hyn ).

Wrth greu'r pecyn rhwd-coreutils, penderfynwyd peidio Γ’ disodli'r pecyn coreutils, ond i ddarparu'r gallu iddynt weithio ochr yn ochr. Mae opsiynau cyfleustodau yn yr iaith Rust wedi'u gosod yn / usr / lib / cargo / bin / ac yn cael eu gweithredu trwy ychwanegu'r cyfeiriadur hwn at y newidyn amgylchedd PATH. Cymhlethwyd creu'r pecyn rhwd-coreutils gan yr angen i lawrlwytho'r holl ddibyniaethau adeiladu i'r ystorfa, gan gynnwys Rust a phecynnau crΓ’t bach amrywiol.

Nid oedd creu delwedd gychwyn yn broblem, ond roedd angen llawer o waith i addasu'r pecynnau ar gyfer amgylchedd gyda rhwd-coreutils, gan fod llawer o sgriptiau Γ΄l-osod yn galw cyfleustodau o'r set coreutils. Achoswyd y nifer fwyaf o broblemau gan y diffyg opsiynau angenrheidiol, er enghraifft, nid oedd gan y cyfleustodau β€œcp” yr opsiynau β€œ--archive” a β€œ--no-dereference”, nid oedd β€œln” yn cefnogi'r opsiynau β€œ- opsiwn cymharol", nid oedd mktemp yn cefnogi "-t", wrth gysoni "-fs", yn install - "--owner" a "-group". Cododd problemau eraill oherwydd gwahaniaethau mewn ymddygiad, er enghraifft, nid oedd y cyfleustodau gosod yn cefnogi nodi /dev/null fel ffeil mewnbwn, roedd gan mkdir yr opsiwn β€œ--parents” yn lle β€œ-parent”, ac ati.

Wrth brofi'r cynulliad o seiliau cod mawr, ni chododd unrhyw broblemau mawr. Wrth adeiladu Firefox a LLVM/Clang, defnyddir sgriptiau python a cmake, felly nid oedd ailosod coreutils yn effeithio arnynt. Aeth adeiladu'r cnewyllyn Linux yn gymharol esmwyth, gyda dim ond dwy broblem yn codi: allbwn gwall wrth ddefnyddio chown gyda chyswllt symbolaidd a diffyg opsiwn β€œ-n” yn y cyfleustodau ln.

Ffynhonnell: opennet.ru

Ychwanegu sylw