ไคลเอนต์ BitTorrent การส่งผ่านเปลี่ยนจาก C เป็น C++

ไลบรารี libtransmission ซึ่งเป็นพื้นฐานของไคลเอ็นต์ Transmission BitTorrent ได้รับการแปลเป็นภาษา C++ แล้ว การส่งสัญญาณยังคงเชื่อมโยงกับการใช้งานส่วนต่อประสานผู้ใช้ (อินเทอร์เฟซ GTK, daemon, CLI) ซึ่งเขียนด้วยภาษา C แต่ตอนนี้แอสเซมบลีต้องใช้คอมไพเลอร์ C ++ ก่อนหน้านี้ เฉพาะอินเทอร์เฟซแบบ Qt เท่านั้นที่เขียนด้วยภาษา C++ (ไคลเอ็นต์สำหรับ macOS อยู่ใน Objective-C เว็บอินเทอร์เฟซอยู่ใน JavaScript และทุกอย่างอื่นๆ อยู่ใน C)

การย้ายพอร์ตดำเนินการโดย Charles Kerr หัวหน้าโครงการและผู้เขียน Transmission interface ที่อิงจาก 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

เพิ่มความคิดเห็น