Client BitTorrent La transmission passe de C à C++

La bibliothèque libtransmission, qui constitue la base du client Transmission BitTorrent, a été traduite en C++. La transmission a toujours des liens avec l'implémentation d'interfaces utilisateur (interface GTK, démon, CLI), écrites en langage C, mais l'assemblage nécessite désormais un compilateur C++. Auparavant, seule l'interface basée sur Qt était écrite en C++ (le client pour macOS était en Objective-C, l'interface Web était en JavaScript et tout le reste était en C).

Le portage a été réalisé par Charles Kerr, chef de projet et auteur de l'interface Transmission basée sur Qt. La principale raison pour laquelle l'ensemble du projet a été transféré en C++ est le sentiment que lorsque vous apportez des modifications à libtransmission, vous devez constamment réinventer la roue, même s'il existe des solutions toutes faites pour des problèmes similaires dans la bibliothèque C++ standard (par exemple, il était nécessaire pour créer vos propres fonctions tr_quickfindFirstK() et tr_ptrArray() en présence de std: :partial_sort() et std::vector()), ainsi que pour fournir à C++ des fonctionnalités de vérification de type plus avancées.

Il est à noter que les développeurs ne se sont pas fixé pour objectif de réécrire immédiatement l'intégralité de libtransmission en C++, mais ont l'intention de mettre en œuvre la transition vers C++ progressivement, en commençant par la transition vers la compilation du projet à l'aide du compilateur C++. Dans sa forme actuelle, le compilateur C ne peut plus être utilisé pour l'assemblage, puisque certaines constructions spécifiques au C++ ont été ajoutées au code, comme le mot-clé « auto » et les conversions de type à l'aide de l'opérateur « static_cast ». La prise en charge des anciennes fonctions C devrait rester pour des raisons de compatibilité, mais les développeurs sont désormais encouragés à utiliser std::sort() au lieu de qsort() et std::vector au lieu de tr_ptrArray. constexpr au lieu de tr_strdup() et std::vector au lieu de tr_ptrArray.

Source: opennet.ru

Ajouter un commentaire