Η μετάδοση προγράμματος-πελάτη BitTorrent αλλάζει από C σε C++

Η βιβλιοθήκη libtransmission, η οποία είναι η βάση του προγράμματος-πελάτη Transmission BitTorrent, έχει μεταφραστεί σε C++. Η μετάδοση εξακολουθεί να έχει δεσμεύσεις με την υλοποίηση διεπαφών χρήστη (διεπαφή GTK, δαίμονας, CLI), γραμμένα στη γλώσσα C, αλλά η συναρμολόγηση απαιτεί πλέον μεταγλωττιστή C++. Προηγουμένως, μόνο η διεπαφή που βασίζεται σε Qt ήταν γραμμένη σε C++ (ο πελάτης για το macOS ήταν σε Objective-C, η διεπαφή ιστού ήταν σε JavaScript και όλα τα άλλα ήταν σε C).

Η μεταφορά πραγματοποιήθηκε από τον Charles Kerr, τον επικεφαλής του έργου και συγγραφέα της διεπαφής Transmission που βασίζεται στο Qt. Ο κύριος λόγος για τη μετάβαση ολόκληρου του έργου σε C++ είναι η αίσθηση ότι όταν κάνετε αλλαγές στη libtransmission πρέπει συνεχώς να ανακαλύπτετε ξανά τον τροχό, παρόλο που υπάρχουν έτοιμες λύσεις για παρόμοια προβλήματα στην τυπική βιβλιοθήκη C++ (για παράδειγμα, ήταν απαραίτητο για να δημιουργήσετε τις δικές σας συναρτήσεις tr_quickfindFirstK() και tr_ptrArray() παρουσία των std: :partial_sort() και std::vector()), καθώς και παρέχοντας στην C++ πιο προηγμένες δυνατότητες ελέγχου τύπων.

Σημειώνεται ότι οι προγραμματιστές δεν θέτουν ως στόχο να ξαναγράψουν αμέσως ολόκληρο το libtransmission σε C++, αλλά σκοπεύουν να εφαρμόσουν τη μετάβαση στη C++ σταδιακά, ξεκινώντας από τη μετάβαση στη μεταγλώττιση του έργου χρησιμοποιώντας τον μεταγλωττιστή C++. Στην τρέχουσα μορφή του, ο μεταγλωττιστής C δεν μπορεί πλέον να χρησιμοποιηθεί για συναρμολόγηση, καθώς ορισμένες δομές ειδικά για τη C++ έχουν προστεθεί στον κώδικα, όπως η λέξη-κλειδί «auto» και οι μετατροπές τύπων χρησιμοποιώντας τον τελεστή «static_cast». Η υποστήριξη για παλαιότερες συναρτήσεις C σχεδιάζεται να παραμείνει για συμβατότητα, αλλά οι προγραμματιστές ενθαρρύνονται τώρα να χρησιμοποιούν std::sort() αντί για qsort() και std::vector αντί για tr_ptrArray. constexpr αντί για tr_strdup() και std::vector αντί για tr_ptrArray.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο