BitTorrent müştəri Transmissiyası C-dən C++-a keçir

Transmission BitTorrent müştərisinin əsasını təşkil edən libtransmission kitabxanası C++ dilinə tərcümə edilmişdir. Transmissiya hələ də C dilində yazılmış istifadəçi interfeyslərinin (GTK interfeysi, daemon, CLI) həyata keçirilməsi ilə bağlayır, lakin indi montaj üçün C++ kompilyatoru tələb olunur. Əvvəllər yalnız Qt əsaslı interfeys C++ dilində yazılmışdı (macOS üçün müştəri Objective-C-də, veb-interfeys JavaScript-də, qalan hər şey isə C-də idi).

Daşıma Qt əsasında layihənin rəhbəri və Transmissiya interfeysinin müəllifi Çarlz Kerr tərəfindən həyata keçirilib. Bütün layihəni C++-a keçirməyin əsas səbəbi, standart C++ kitabxanasında oxşar problemlər üçün hazır həllərin olmasına baxmayaraq, libtransmissiyaya dəyişiklik edərkən daim təkəri yenidən ixtira etməli olduğunuz hissidir (məsələn, lazım idi) std: :partial_sort() və std::vector() varlığında öz tr_quickfindFirstK() və tr_ptrArray() funksiyalarınızı yaratmaq, həmçinin C++ dilini daha təkmil tip yoxlama imkanları ilə təmin etmək.

Qeyd olunur ki, tərtibatçılar C++ dilində bütün libtransmissiyanı dərhal yenidən yazmağı qarşılarına məqsəd qoymurlar, lakin C++ kompilyatorundan istifadə etməklə layihənin kompilyasiyasına keçiddən başlayaraq C++ dilinə keçidi mərhələli şəkildə həyata keçirmək niyyətindədirlər. Hazırkı formada C kompilyatoru artıq montaj üçün istifadə edilə bilməz, çünki koda bəzi C++-a xas konstruksiyalar əlavə edilmişdir, məsələn, “auto” açar sözü və “static_cast” operatorundan istifadə edərək tip çevrilmələri. Uyğunluq üçün köhnə C funksiyalarına dəstəyin qalması planlaşdırılır, lakin tərtibatçılar indi qsort() əvəzinə std::sort() və tr_ptrArray əvəzinə std::vector istifadə etməyə təşviq edilir. tr_strdup() əvəzinə constexpr və tr_ptrArray əvəzinə std::vector.

Mənbə: opennet.ru

Добавить комментарий