Le module evdev, abréviation de event device, est un morceau du noyau Linux. Il prend en charge les « entrées » de manière générale, même si son champ exact est un peu flou. Il gère les claviers, les souris, les joysticks, les tablettes graphiques, les écrans tactiles et même le fait que le bouton d’allumage de l’ordinateur ait été enfoncé. En revanche, il ne s’occupe pas des caméras, des micros, ou des entrées des périphériques réseau.
Si un programme a besoin de communiquer avec un de ces périphériques — par exemple, un jeu vidéo dirigé au joystick — la personne qui le développe utilisera généralement la bibliothèque libevdev, ou un autre programme qui utilise lui-même libevdev. Comme la quasi-totalité des bibliothèques système, elle est écrite en C.
Le projet Rust libevdev a pour but de réécrire cette bibliothèque en Rust. L’idée n’est bien évidemment pas de calquer le code C et son fonctionnement exact, mais d’écrire une bibliothèque qui joue le même rôle que libevdev, tout en offrant une API plus sûre et plus pratique que l’actuelle, voire ayant un fonctionnement globalement plus sécurisé.
Par ailleurs, cela constitue une bonne occasion de faire découvrir Rust à ceux qui ne le connaîtraient pas encore. En particulier, de montrer aux amateurs de programmation système que Rust est un concurrent sérieux pour C et C++. C’est pourquoi, tout au long du développement, j’écrirai une série d’article visant à enseigner Rust à ceux qui connaissent déjà C et s’intéressent à la programmation système.
L’introduction de ce « journal de développement » se trouve ici, et voici la liste des chapitres déjà écrits.
À chaque chapitre du journal est associée une branche du dépot GitHub, appelée chapitreN
, contenant l’état du code complet à l’issue de ce chapitre. Vous pouvez la télécharger à l’aide des boutons situés en haut de chaque chapitre. La branche master
, quant à elle, contient la dernière version en date.
Le lien vers la documentation situé en haut à droite ne fonctionne pas encore, le code n’étant pas assez avancé pour justifier d’être documenté.
Dans la mesure où le développement suit la logique du journal de bord, qui a lui-même une visée pédagogique, proposer des fonctionnalités supplémentaires ou une méthode plus efficace de coder un passage donné n’est sans doute pas pertinent. N’hésitez cependant pas à faire des retours, par le biais des issues de GitHub ou de l’adresse de contact située plus bas, dans un des cas suivants.
Par ailleurs, il n’y a aucune raison que seuls les francophones puissent découvrir la puissance de Rust en programmation système. Par conséquent, vous pouvez proposer des traductions dans d’autres langues, aussi bien du site que du journal (et de la documentation quand elle existera).
Pour cela, vous pouvez télécharger la source de chaque page à l’aide du bouton situé en haut de celle-ci, et la modifier à votre convenance. Elle utilise une version légèrement modifiée de ReStructuredText : ne vous étonnez donc pas si le rendu n’est pas le même chez vous que sur le site.
Pour me contacter si vous n’avez pas de compte GitHub ou si vous ne souhaitez pas l’utiliser, vous pouvez m’écrire à l’adresse dοmіnuѕ.саrnufеx@tеlаdіаі.rе
. Attention ! Ne faites pas de copier-coller : j’utilise une technique de fourbe pour tromper les robots, et l’adresse ne fonctionnera pas si vous ne la tapez pas vous-même.