BitTorrent հաճախորդը Փոխանցումը C-ից անցնում է C++

libtransmission գրադարանը, որը հանդիսանում է Transmission BitTorrent հաճախորդի հիմքը, թարգմանվել է C++։ Փոխանցումը դեռևս կապված է օգտատիրոջ միջերեսների (GTK ինտերֆեյս, դեմոն, CLI) ներդրման հետ, որը գրված է C լեզվով, բայց հավաքումը այժմ պահանջում է C++ կոմպիլյատոր: Նախկինում միայն Qt-ի վրա հիմնված ինտերֆեյսը գրված էր C++-ով (macOS-ի հաճախորդը Objective-C-ով էր, վեբ-ինտերֆեյսը JavaScript-ով էր, իսկ մնացած ամեն ինչ՝ C-ով):

Փոխադրումն իրականացվել է Չարլզ Քերի կողմից՝ նախագծի ղեկավար և Qt-ի վրա հիմնված Transmission ինտերֆեյսի հեղինակ: Ամբողջ նախագիծը 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-ի փոխարեն: tr_strdup()-ի փոխարեն constexpr և tr_ptrArray-ի փոխարեն std::vector:

Source: opennet.ru

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