URL: https://linuxfr.org/users/rom1v/journaux/du-reverse-tethering-en-rust Title: Du reverse tethering, en Rust Authors: ®om Date: 2017年09月25日T10:59:07+02:00 License: CC By-SA Tags: rust, reversetethering, android et firefox Score: 44 Bonjour nal, La [dernière fois](https://linuxfr.org/users/rom1v/journaux/du-reverse-tethering-sur-android-sans-root), je t’ai présenté [Gnirehtet](https://github.com/Genymobile/gnirehtet), un outil de _reverse tethering_ pour Android. Eh bien, je l’ai réécrit en [Rust](https://fr.wikipedia.org/wiki/Rust_%28langage%29). _Rust est un langage de programmation développé par [Mozilla Research](https://research.mozilla.org/rust/), utilisé entre autres par [Servo](https://servo.org/), le futur moteur Web de Firefox._ # Gnirehtet 2 Pour l’utilisateur, le principal avantage de cette version _rouillée_ est de ne pas avoir à installer l’[environnement d’exécution Java](https://fr.wikipedia.org/wiki/Environnement_d%27ex%C3%A9cution_Java). Par ailleurs, la gestion de la ligne de commande est maintenant implémentée dans le serveur relais directement plutôt que dans des scripts _shell_, afin d’avoir un comportement plus cohérent entre les différentes plates‐formes. L’utilisation est (preque) la même que la version 1. Pour partager la connexion de l’ordinateur avec un téléphone ou une tablette Android, il suffit d’exécuter : ./gnirehtet run _(bien sûr, adb doit être installé)_ Pour plus de détails : [README](https://github.com/Genymobile/gnirehtet/blob/master/README.md). Le principe de [fonctionnement](https://blog.rom1v.com/2017/03/gnirehtet/#fonctionnement) est exactement le même. J’ai mis à jour la [page développeur](https://github.com/Genymobile/gnirehtet/blob/master/DEVELOP.md) pour prendre en compte la version _Rust_. # Rust Cette réécriture a été pour moi l’occasion d’apprendre Rust, qui utilise [plusieurs concepts intéressants](https://www.rust-lang.org/) : - abstractions sans coût ; - sémantique de mouvement ; - garantie de sûreté de la mémoire ; - fils d’exécution sans accès concurrent ; - généricité avec les traits ; - filtrage par motif ; - inférence de type ; - environnement d’exécution minimal ; - bibliothèques de liaisons (_bindings_) C efficaces. J’ai écrit mes retours sur le langage, en particulier sur les difficultés que peuvent poser les contraintes imposées par les _borrowing rules_, dans un billet de blog : - [_Gnirehtet réécrit en Rust_](https://blog.rom1v.com/2017/09/gnirehtet-reecrit-en-rust/) ; - [_Gnirehtet rewritten in Rust_](https://blog.rom1v.com/2017/09/gnirehtet-rewritten-in-rust/) (version anglaise). La [_nimage_](http://www.commitstrip.com/fr/2015/06/15/when-you-have-no-room-for-error/). # Autres liens - [Reddit](https://www.reddit.com/r/rust/comments/71ks57/gnirehtet_a_reverse_tethering_tool_for_android/) (en anglais) ; - [Hacker News](https://news.ycombinator.com/item?id=15326106) (en anglais) ; - [projet sur GitHub](https://github.com/Genymobile/gnirehtet) (en anglais) ; - [page développeurs](https://github.com/Genymobile/gnirehtet/blob/master/DEVELOP.md) (en anglais). # RIIR Il paraît que certaines personnes demandent aux auteurs de réécrire leur logiciel en Rust. Ça m’a fait sourire, donc je vous le partage : [Have you considered _Rewriting It In Rust?_](https://transitiontech.ca/random/RIIR).

AltStyle によって変換されたページ (->オリジナル) /