Ils demandent d'adapter Debian pour utiliser l'implémentation Rust de coreutils

sylvestre ledru (un développeur connu pour son travail de construction de Debian GNU / Linux à l'aide du compilateur Clang) a récemment publié le rapport sur une expérience réussi avec un autre ensemble d'utilitaires, coreutils, réécrit en Rust.

Pour ceux qui ne connaissent pas Coreutils, sachez qu'il inclut des utilitaires tels que sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln et ls. sylvestre ledru mentionner que pour la première étape d'intégration dans Debian de la version coreutils dans Rust, les objectifs suivants ont été fixés:

  • Créez un paquet avec des coreutils Rust alternatifs pour Debian et Ubuntu.
  • Démarrer Debian avec l'environnement de bureau Gnome à l'aide de rust-coreutils.
  • Installez 1000 des packages les plus populaires du référentiel.
  • Construire à partir des sources du noyau Firefox, LLVM / Clang et Linux avec rust-coreutils.

Et avec ça après avoir créé plus de 100 patchs pour Rust / coreutils, tous les objectifs prévus ont été atteints avec succès. Actuellement les travaux en cours mettent en évidence la mise en œuvre des utilitaires et des options manquants, amélioration de la qualité et de la cohérence du code, développement de la suite de tests, correction des bogues qui surviennent lors de l'exécution de la suite de tests GNU Coreutils (141 tests sur 613 fonctionnent avec succès jusqu'à présent).

Mentionnez également que lors de la création du package rust-coreutils, il a été décidé de ne pas remplacer le package coreutils, mais permettez-leur de fonctionner en parallèle. Les versions Rust des utilitaires sont installées dans / usr / lib / cargo / bin / et activées en ajoutant ce répertoire à la variable d'environnement PATH. La création du package rust-coreutils a rendu difficile le téléchargement de toutes les dépendances de build dans le référentiel, y compris Rust et plusieurs petits packages.

J'ai commencé à contribuer à l'alternative Coreutils développée à Rust. Le projet vise à proposer un remplacement direct pour GNU Coreutils basé sur C, et voulait évaluer si cela pouvait être utilisé pour exécuter Debian normal. Similaire à ce que j'ai fait avec clang.debian.net il y a quelques années (reconstruction de l'archive Debian en utilisant clang au lieu de gcc).

J'espère que la plupart des lecteurs savent ce qu'est Coreutils. C'est un ensemble de programmes qui effectuent des opérations simples (copier / déplacer un fichier, modifier les permissions / la propriété, etc.) Même si certaines commandes datent des années 70, elles sont au cœur de Linux, Unix et macOS. Bien que différentes implémentations puissent être trouvées, elles essaient de rester compatibles en termes d'arguments, d'options, etc. Cette implémentation de Coreutils n'est pas différente!

D'autre part, il mentionne qu'il n'y a pas eu de problèmes particuliers lors de la création de l'image de démarrage système, mais l'adaptation des packages à l'environnement rust-coreutils a nécessité beaucoup de travail, car de nombreux scripts post-installation appellent les utilitaires de la suite coreutils, car la plupart des problèmes étaient causés par l'absence d'options nécessaires, par exemple, il mentionne que le l'utilitaire "cp" n'avait pas les options "–archive" et "–no-dereference", tandis que pour "ln" il ne supportait pas "–relative" et l'option mktemp - "-t«, In sync »-fs«, in install - »–owner« et »–group«.

D'autres problèmes sont également survenus en raison de différences de comportementPar exemple, l'utilitaire d'installation ne prenait pas en charge la spécification de / dev / null comme fichier d'entrée, dans mkdir au lieu de «–parent», il y avait une option «–parents», et ainsi de suite.

L'empaquetage dans Debian n'est pas une tâche triviale ou simple. Il nécessite le chargement indépendant de toutes les dépendances dans le fichier. Rust, avec son nouvel écosystème et ses petites boîtes, rend cette tâche encore plus difficile.

Lors du test d'une construction de bases de code volumineuses, il n'y a pas eu de problèmes majeurs. Lors de la compilation de Firefox et LLVM / Clang, des scripts python et cmake sont utilisés, le remplacement de coreutils ne les a donc pas affectés. La construction du noyau Linux était relativement fluide, avec seulement deux problèmes émergents: la sortie d'erreur lorsque chown est utilisé avec un lien symbolique, et l'absence de l'option "-n" dans l'utilitaire ln.

Enfin Si vous souhaitez en savoir plus sur la note, vous pouvez vérifier les détails dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.